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.

11962 lines
706 KiB

3 weeks 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. namespace NFine.Application.MHWMS
  20. {
  21. public class WMSCreateItemLotApp : RepositoryFactory<ICSVendor>
  22. {
  23. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  24. {
  25. DataTable dt = new DataTable();
  26. var queryParam = queryJson.ToJObject();
  27. List<DbParameter> parameter = new List<DbParameter>();
  28. object Figure = GetDecimalDigits();
  29. #region [SQL]
  30. string sql = @"select a.ID,y.MOCode,a.ApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  31. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  32. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount , CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,
  33. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  34. ,b.EffectiveEnable,b.EffectiveDays
  35. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  36. ,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,
  37. a.EATTRIBUTE9,a.EATTRIBUTE10
  38. from ICSMOApplyNegDetail a
  39. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  40. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  41. left join (
  42. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  43. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='1'
  44. where isnull(ee.EATTRIBUTE1,'')=''
  45. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  46. )c
  47. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  48. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  49. inner JOIN ICSMOPick x ON a.SourceDetailID=x.PickID AND a.WorkPoint=x.WorkPoint
  50. left JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
  51. where d.Type='1' and d.Status='2' ";
  52. sql = string.Format(sql, Figure);
  53. #endregion
  54. if (!string.IsNullOrWhiteSpace(queryJson))
  55. {
  56. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  57. {
  58. sql += " and a.ApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  59. }
  60. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  61. {
  62. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  63. }
  64. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  65. {
  66. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  67. }
  68. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  69. {
  70. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  71. }
  72. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  73. {
  74. sql += " and a.MTIME >= '" + queryParam["FromTime"].ToString() + "' ";
  75. }
  76. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  77. {
  78. sql += " and a.MTIME <= '" + queryParam["ToTime"].ToString() + "' ";
  79. }
  80. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  81. {
  82. string POStatus = queryParam["POStatus"].ToString();
  83. if (POStatus == "0")
  84. {
  85. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  86. }
  87. else if (POStatus == "1")
  88. {
  89. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  90. }
  91. else
  92. {
  93. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  94. }
  95. }
  96. }
  97. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  98. {
  99. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  100. }
  101. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  102. {
  103. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  104. }
  105. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  106. }
  107. /// <summary>
  108. /// 领料子件信息
  109. /// </summary>
  110. /// <param name="MODetailID"></param>
  111. /// <param name="workpoint"></param>
  112. /// <param name="jqgridparam"></param>
  113. /// <returns></returns>
  114. public DataTable GetICSMOPick(string MODetailID, string workpoint, ref Pagination jqgridparam)
  115. {
  116. DataTable dt = new DataTable();
  117. List<DbParameter> parameter = new List<DbParameter>();
  118. object Figure = GetDecimalDigits();
  119. #region [SQL]
  120. string sql = @" SELECT b.InvCode,c.InvName,c.InvStd,InvUnit,b.ID,b.Quantity,b.IssueQuantity,d.WarehouseCode,d.WarehouseName FROM dbo.ICSMO a
  121. LEFT JOIN dbo.ICSMOPick b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
  122. LEFT JOIN dbo.ICSInventory c ON b.InvCode=c.InvCode AND b.WorkPoint=c.WorkPoint
  123. left join dbo.ICSWarehouse d on b.WHCode=d.WarehouseCode and b.WorkPoint=d.WorkPoint
  124. WHERE a.MODetailID='{0}'
  125. ";
  126. sql = string.Format(sql, MODetailID);
  127. #endregion
  128. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  129. }
  130. public DataTable GetSubGridJson(string ApplyNegCode, string Sequence, string Type, string isPrint, ref Pagination jqgridparam)
  131. {
  132. DataTable dt = new DataTable();
  133. object Figure = GetDecimalDigits();
  134. List<DbParameter> parameter = new List<DbParameter>();
  135. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  136. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo, CAST( a.Quantity AS DECIMAL(38,{0})) as Quantity ,a.MUSERName,a.MTIME
  137. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  138. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  139. case when isnull(d.ID,'')='' then '' else '' end as isStorage,
  140. case when g.InvIQC='1'and isnull(e.ID,'')='' then '' else '' end as isInspection,
  141. case when isnull(a.LastPrintUser,'')='' then '' else '' end as isPrint,
  142. case when Isnull(g.InvIQC,'0')='1' then '否' else '是' end as isExemption,a.Amount,
  143. convert(varchar(20),a.ProductDate,23) as ProductDate,convert(varchar(20),a.ExpirationDate,23) as ExpirationDate ,g.EffectiveDays,a.EATTRIBUTE4,a.EATTRIBUTE5
  144. from ICSInventoryLot a
  145. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  146. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  147. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  148. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  149. left join dbo.ICSWareHouseLotInfo d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  150. left join ICSInspection e on a.LotNo=e.LotNo and e.Enable='1' and a.WorkPoint=e.WorkPoint
  151. left join ICSInventory g on a.InvCode=g.InvCode and a.WorkPoint=g.WorkPoint
  152. WHERE isnull(a.EATTRIBUTE1,'')='' and a.Type='" + Type + "' and c.TransCode='" + ApplyNegCode + "' and c.TransSequence='" + Sequence + "' and a.WorkPoint in ('" + WorkPoint + "')";
  153. if (!string.IsNullOrWhiteSpace(isPrint))
  154. {
  155. if (isPrint == "0")
  156. {
  157. }
  158. else if (isPrint == "1")
  159. {
  160. sql += " and isnull(LastPrintUser,'')<>''";
  161. }
  162. else
  163. {
  164. sql += " and isnull(LastPrintUser,'')=''";
  165. }
  166. }
  167. sql = string.Format(sql, Figure);
  168. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  169. }
  170. /// <summary>
  171. /// 点击生成条码
  172. /// </summary>
  173. public DataTable GetSubGridJsonByCreate(string ApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  174. {
  175. DataTable dt = new DataTable();
  176. object Figure = GetDecimalDigits();
  177. List<DbParameter> parameter = new List<DbParameter>();
  178. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn017', " + Quantity + ",1,2,'')";
  179. object Num = SqlHelper.ExecuteScalar(SeachNum);
  180. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  181. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty ,
  182. CAST( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  183. 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' else b.EATTRIBUTE2 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,
  184. 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,
  185. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  186. from ICSMOApplyNegDetail a
  187. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  188. left join (
  189. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  190. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='1'
  191. where isnull(a.EATTRIBUTE1,'')=''
  192. group by b.TransCode,b.TransSequence
  193. ) c on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  194. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  195. WHERE 1 =1
  196. and a.ApplyNegCode='" + ApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  197. sql += " and a.WorkPoint='" + WorkPoint + "'";
  198. sql = string.Format(sql, Figure);
  199. return Repository().FindTableBySql(sql.ToString());
  200. }
  201. public DataTable GetVendorLotNo(string VenCode, string WorkPoint)
  202. {
  203. DataTable dt = new DataTable();
  204. //var queryParam = queryJson.ToJObject();
  205. List<DbParameter> parameter = new List<DbParameter>();
  206. string dtPre = DateTime.Now.ToString("yyyyMMdd");
  207. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSITEMLotNo','VendorLotNo','" + VenCode + dtPre + "',2";
  208. return Repository().FindTableBySql(sql.ToString());
  209. }
  210. /// <summary>
  211. /// 生产退料生成条码
  212. /// </summary>
  213. /// <param name="POCode"></param>
  214. /// <param name="PORow"></param>
  215. /// <param name="keyValue"></param>
  216. /// 已改
  217. /// <returns></returns>
  218. public int CreateItemLotNo(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  219. {
  220. var queryParam = keyValue.ToJObject();
  221. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  222. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  223. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  224. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  225. decimal LOTQTY = minPackQty;
  226. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  227. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  228. string Pre = "MDN" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  229. string sql = string.Empty;
  230. //string VendorLot = queryParam["VendorLot"].ToString();
  231. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  232. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  233. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  234. string InvCode = queryParam["ClassCode"].ToString();
  235. string Colspan = "";
  236. string sqls = string.Empty;
  237. string LotNo = string.Empty;
  238. string str1 = "";
  239. List<string> ExtensionIDList = new List<string>();
  240. #region 装箱的功能
  241. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  242. string VenCode = queryParam["VenCode"].ToString();
  243. int PackCount = 0;//每箱放的数量
  244. int Pack_YuShu = 0;//需要平摊的数量
  245. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  246. List<PackModel> List_Pack = new List<PackModel>();
  247. int ZQty = 0;
  248. if (createPackCount > 0)
  249. {
  250. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  251. if (Pack_YuShu == 0)
  252. {
  253. PackCount = (createPageCount / createPackCount);
  254. }
  255. else
  256. {
  257. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  258. }
  259. for (int jj = 0; jj < createPackCount; jj++)
  260. {
  261. object CARID = Guid.NewGuid();
  262. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  263. sql += @" INSERT INTO dbo.ICSContainer
  264. ( ID,ContainerCode ,
  265. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  266. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  267. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  268. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  269. PackModel PP = new PackModel();
  270. PP.ID = CARID.ToString();
  271. PP.PackCode = Carton;
  272. if (jj < Pack_YuShu)
  273. {
  274. PP.FristBarIndex = ZQty;
  275. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  276. }
  277. else
  278. {
  279. PP.FristBarIndex = ZQty;
  280. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  281. }
  282. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  283. List_Pack.Add(PP);
  284. }
  285. }
  286. #endregion
  287. for (int i = 0; i < createPageCount; i++)
  288. {
  289. if (i + 1 == createPageCount)
  290. {
  291. if (minPackQty * createPageCount > thisCreateQty)
  292. {
  293. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  294. }
  295. }
  296. 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();
  297. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  298. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  299. bool flag = true;
  300. foreach (var item in ExtensionIDList)
  301. {
  302. if (item == Colspan + WorkPoint)
  303. {
  304. flag = false;
  305. }
  306. }
  307. if (ExtensionID == null && flag == true)
  308. {
  309. str1 = Guid.NewGuid().ToString();
  310. 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)
  311. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  312. 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(),
  313. MUSER, MUSERNAME, WorkPoints);
  314. }
  315. else if (ExtensionID != null)
  316. {
  317. str1 = ExtensionID.ToString();
  318. }
  319. ExtensionIDList.Add(Colspan + WorkPoint);
  320. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  321. if (AMEnable == "true")
  322. {
  323. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  324. }
  325. else
  326. {
  327. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  328. }
  329. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  330. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  331. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  332. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  333. //{
  334. sql += string.Format(@"insert into ICSInventoryLot
  335. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  336. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  337. select
  338. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','1','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  339. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  340. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  341. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  342. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  343. sql += "\r\n";
  344. //装箱的功能
  345. if (List_Pack.Count > 0)
  346. {
  347. PackModel mm = new PackModel();
  348. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  349. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  350. ( ID ,ContainerID ,LotNo ,
  351. MUSER ,MUSERName ,MTIME ,WorkPoint )
  352. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  353. }
  354. //}
  355. }
  356. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  357. return count;
  358. }
  359. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  360. {
  361. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  362. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  363. //return Repository().FindTableBySql(sql.ToString());
  364. return SqlHelper.ExecuteScalar(sql).ToString();
  365. //return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  366. }
  367. /// <summary>
  368. /// 删除条码
  369. /// </summary>
  370. /// <param name="keyValue"></param>
  371. /// <returns></returns>
  372. public string DeleteItemLot(string keyValue)
  373. {
  374. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  375. string msg = string.Empty;
  376. string sql = string.Format(@"SELECT * FROM dbo.ICSInspection
  377. WHERE LotNo IN (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  378. DataTable dtASN = SqlHelper.GetDataTableBySql(sql);
  379. if (dtASN != null && dtASN.Rows.Count > 0)
  380. {
  381. msg = "所选条码已生成检验单,无法删除!";
  382. }
  383. sql = string.Format(@"SELECT * FROM dbo.ICSWareHouseLotInfo WHERE LotNO IN
  384. (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  385. DataTable dtCarton = SqlHelper.GetDataTableBySql(sql);
  386. if (dtCarton != null && dtCarton.Rows.Count > 0)
  387. {
  388. msg += "所选条码已入库,无法删除!";
  389. }
  390. if (string.IsNullOrEmpty(msg))
  391. {
  392. 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);
  393. 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);//删除箱子 条码对应关系
  394. sqls += string.Format("DELETE FROM dbo.ICSInventoryLot WHERE ID IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  395. SqlHelper.CmdExecuteNonQueryLi(sqls);
  396. }
  397. return msg;
  398. }
  399. public DataTable GetGridJsonWeiWai(string queryJson, ref Pagination jqgridparam)
  400. {
  401. DataTable dt = new DataTable();
  402. var queryParam = queryJson.ToJObject();
  403. List<DbParameter> parameter = new List<DbParameter>();
  404. object Figure = GetDecimalDigits();
  405. #region [SQL]
  406. string sql = @"select a.ID,a.OApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  407. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  408. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount , CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity,a.ExtensionID,a.MUSERName,a.MTIME ,
  409. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  410. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  411. ,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,
  412. a.EATTRIBUTE9,a.EATTRIBUTE10
  413. from ICSOApplyNegDetail a
  414. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  415. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  416. left join (
  417. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  418. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='2'
  419. where isnull(ee.EATTRIBUTE1,'')=''
  420. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  421. )c
  422. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  423. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  424. WHERE d.Type='1' ";
  425. sql = string.Format(sql, Figure);
  426. #endregion
  427. if (!string.IsNullOrWhiteSpace(queryJson))
  428. {
  429. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  430. {
  431. sql += " and a.OApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  432. }
  433. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  434. {
  435. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  436. }
  437. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  438. {
  439. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  440. }
  441. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  442. {
  443. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  444. }
  445. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  446. {
  447. sql += " and d.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  448. }
  449. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  450. {
  451. sql += " and d.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  452. }
  453. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  454. {
  455. sql += " and d.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  456. }
  457. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  458. {
  459. string POStatus = queryParam["POStatus"].ToString();
  460. if (POStatus == "0")
  461. {
  462. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  463. }
  464. else if (POStatus == "1")
  465. {
  466. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  467. }
  468. else
  469. {
  470. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  471. }
  472. }
  473. }
  474. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  475. {
  476. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  477. }
  478. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  479. {
  480. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  481. }
  482. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  483. }
  484. public DataTable GetSubGridJsonWeiWai(string OApplyNegCode, string Sequence, ref Pagination jqgridparam)
  485. {
  486. DataTable dt = new DataTable();
  487. object Figure = GetDecimalDigits();
  488. //var queryParam = queryJson.ToJObject();
  489. List<DbParameter> parameter = new List<DbParameter>();
  490. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  491. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo,CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity from ICSInventoryLot a
  492. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  493. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  494. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo
  495. WHERE c.TransCode='" + OApplyNegCode + "' and c.TransSequence='" + Sequence + "' and a.WorkPoint in (" + WorkPoint + ")";
  496. sql = string.Format(sql, Figure);
  497. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  498. }
  499. /// <summary>
  500. /// 点击委外退料生成条码
  501. /// </summary>
  502. public DataTable GetSubGridJsonWeiWaiByCreate(string OApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  503. {
  504. DataTable dt = new DataTable();
  505. object Figure = GetDecimalDigits();
  506. List<DbParameter> parameter = new List<DbParameter>();
  507. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn008', " + Quantity + ",1,2,'')";
  508. object Num = SqlHelper.ExecuteScalar(SeachNum);
  509. string sql = @" select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  510. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  511. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  512. 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' else b.EATTRIBUTE2 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
  513. ,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,
  514. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  515. from ICSOApplyNegDetail a
  516. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  517. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  518. left join (
  519. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  520. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='2'
  521. where isnull(a.EATTRIBUTE1,'')=''
  522. group by b.TransCode,b.TransSequence
  523. ) c on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  524. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  525. WHERE d.Type='1'
  526. and a.OApplyNegCode='" + OApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  527. sql += " and a.WorkPoint='" + WorkPoint + "'";
  528. sql = string.Format(sql, Figure);
  529. return Repository().FindTableBySql(sql.ToString());
  530. }
  531. /// <summary>
  532. /// 委外退料生成条码
  533. /// </summary>
  534. /// <param name="POCode"></param>
  535. /// <param name="PORow"></param>
  536. /// <param name="keyValue"></param>
  537. /// 已改
  538. /// <returns></returns>
  539. public int SubmitFormWeiWai(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  540. {
  541. var queryParam = keyValue.ToJObject();
  542. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  543. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  544. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  545. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  546. decimal LOTQTY = minPackQty;
  547. string Pre = "OI" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  548. string sql = string.Empty;
  549. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  550. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  551. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  552. string sqls = string.Empty;
  553. string Colspan = "";
  554. List<string> ExtensionIDList = new List<string>();
  555. string str1 = "";
  556. #region 装箱的功能
  557. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  558. string VenCode = queryParam["VenCode"].ToString();
  559. int PackCount = 0;//每箱放的数量
  560. int Pack_YuShu = 0;//需要平摊的数量
  561. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  562. List<PackModel> List_Pack = new List<PackModel>();
  563. int ZQty = 0;
  564. if (createPackCount > 0)
  565. {
  566. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  567. if (Pack_YuShu == 0)
  568. {
  569. PackCount = (createPageCount / createPackCount);
  570. }
  571. else
  572. {
  573. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  574. }
  575. for (int jj = 0; jj < createPackCount; jj++)
  576. {
  577. object CARID = Guid.NewGuid();
  578. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  579. sql += @" INSERT INTO dbo.ICSContainer
  580. ( ID,ContainerCode ,
  581. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  582. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  583. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  584. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  585. PackModel PP = new PackModel();
  586. PP.ID = CARID.ToString();
  587. PP.PackCode = Carton;
  588. if (jj < Pack_YuShu)
  589. {
  590. PP.FristBarIndex = ZQty;
  591. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  592. }
  593. else
  594. {
  595. PP.FristBarIndex = ZQty;
  596. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  597. }
  598. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  599. List_Pack.Add(PP);
  600. }
  601. }
  602. #endregion
  603. for (int i = 0; i < createPageCount; i++)
  604. {
  605. if (i + 1 == createPageCount)
  606. {
  607. if (minPackQty * createPageCount > thisCreateQty)
  608. {
  609. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  610. }
  611. }
  612. 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();
  613. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  614. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  615. bool flag = true;
  616. foreach (var item in ExtensionIDList)
  617. {
  618. if (item == Colspan + WorkPoint)
  619. {
  620. flag = false;
  621. }
  622. }
  623. if (ExtensionID == null && flag == true)
  624. {
  625. str1 = Guid.NewGuid().ToString();
  626. 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)
  627. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  628. 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(),
  629. MUSER, MUSERNAME, WorkPoints);
  630. }
  631. else if (ExtensionID != null)
  632. {
  633. str1 = ExtensionID.ToString();
  634. }
  635. ExtensionIDList.Add(Colspan + WorkPoint);
  636. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  637. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  638. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  639. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  640. sql += string.Format(@"insert into ICSInventoryLot
  641. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  642. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  643. select
  644. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','2','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  645. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  646. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  647. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  648. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  649. sql += "\r\n";
  650. //装箱的功能
  651. if (List_Pack.Count > 0)
  652. {
  653. PackModel mm = new PackModel();
  654. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  655. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  656. ( ID ,ContainerID ,LotNo ,
  657. MUSER ,MUSERName ,MTIME ,WorkPoint )
  658. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  659. }
  660. }
  661. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  662. return count;
  663. }
  664. /// <summary>
  665. /// 委外退料生成条码
  666. /// </summary>
  667. /// <param name="POCode"></param>
  668. /// <param name="PORow"></param>
  669. /// <param name="keyValue"></param>
  670. /// 已改
  671. /// <returns></returns>
  672. public int SubmitFormWeiWaiNew(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  673. {
  674. var queryParam = keyValue.ToJObject();
  675. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  676. // decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  677. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  678. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  679. List<decimal> lotQtys = new List<decimal>();
  680. foreach (var jLotno in jLotnos)
  681. {
  682. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  683. lotQtys.Add(qty);
  684. }
  685. int createPageCount = lotQtys.Count();
  686. string Pre = "OI" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  687. string sql = string.Empty;
  688. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  689. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  690. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  691. string sqls = string.Empty;
  692. string Colspan = "";
  693. List<string> ExtensionIDList = new List<string>();
  694. string str1 = "";
  695. #region 装箱的功能
  696. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  697. string VenCode = queryParam["VenCode"].ToString();
  698. int PackCount = 0;//每箱放的数量
  699. int Pack_YuShu = 0;//需要平摊的数量
  700. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  701. List<PackModel> List_Pack = new List<PackModel>();
  702. int ZQty = 0;
  703. if (createPackCount > 0)
  704. {
  705. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  706. if (Pack_YuShu == 0)
  707. {
  708. PackCount = (createPageCount / createPackCount);
  709. }
  710. else
  711. {
  712. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  713. }
  714. for (int jj = 0; jj < createPackCount; jj++)
  715. {
  716. object CARID = Guid.NewGuid();
  717. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  718. sql += @" INSERT INTO dbo.ICSContainer
  719. ( ID,ContainerCode ,
  720. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  721. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  722. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  723. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  724. PackModel PP = new PackModel();
  725. PP.ID = CARID.ToString();
  726. PP.PackCode = Carton;
  727. if (jj < Pack_YuShu)
  728. {
  729. PP.FristBarIndex = ZQty;
  730. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  731. }
  732. else
  733. {
  734. PP.FristBarIndex = ZQty;
  735. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  736. }
  737. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  738. List_Pack.Add(PP);
  739. }
  740. }
  741. #endregion
  742. for (int i = 0; i < createPageCount; i++)
  743. {
  744. decimal LOTQTY = lotQtys[i];
  745. 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();
  746. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  747. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  748. bool flag = true;
  749. foreach (var item in ExtensionIDList)
  750. {
  751. if (item == Colspan + WorkPoint)
  752. {
  753. flag = false;
  754. }
  755. }
  756. if (ExtensionID == null && flag == true)
  757. {
  758. str1 = Guid.NewGuid().ToString();
  759. 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)
  760. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  761. 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(),
  762. MUSER, MUSERNAME, WorkPoints);
  763. }
  764. else if (ExtensionID != null)
  765. {
  766. str1 = ExtensionID.ToString();
  767. }
  768. ExtensionIDList.Add(Colspan + WorkPoint);
  769. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  770. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  771. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  772. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  773. sql += string.Format(@"insert into ICSInventoryLot
  774. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  775. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  776. select
  777. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','2','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  778. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  779. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  780. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  781. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  782. sql += "\r\n";
  783. //装箱的功能
  784. if (List_Pack.Count > 0)
  785. {
  786. PackModel mm = new PackModel();
  787. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  788. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  789. ( ID ,ContainerID ,LotNo ,
  790. MUSER ,MUSERName ,MTIME ,WorkPoint )
  791. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  792. }
  793. }
  794. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  795. return count;
  796. }
  797. public DataTable GetGridJsonChengPing(string queryJson, ref Pagination jqgridparam)
  798. {
  799. DataTable dt = new DataTable();
  800. var queryParam = queryJson.ToJObject();
  801. List<DbParameter> parameter = new List<DbParameter>();
  802. object Figure = GetDecimalDigits();
  803. #region [SQL]
  804. string sql = @" select distinct a.ID, a.MODetailID,a.MOCode,a.Sequence,
  805. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity ,a.InvCode,b.EATTRIBUTE5 AS SupportCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  806. CAST( a.Quantity AS DECIMAL(38,{0})) as Quantity
  807. ,CAST(mesmo.GoodQty AS DECIMAL(38,{0})) as OKQuantity,CAST(mesmo.NGQty AS DECIMAL(38,{0})) as NGQuantity
  808. ,CAST( a.Amount as DECIMAL(38,{0})) as Amount,a.StartDate,a.WHCode,warehouse.WarehouseName as WHName
  809. ,a.DueDate,a.MOStatus,a.ExtensionID,a.MUSERName,a.MTIME ,
  810. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY ,
  811. CAST( mesmo.GoodQty 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
  812. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  813. ,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,
  814. 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,
  815. b.EATTRIBUTE9 as ICSInventoryEATTRIBUTE9,b.EATTRIBUTE10 as ICSInventoryEATTRIBUTE10
  816. from ICSMO a
  817. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  818. left join (
  819. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  820. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  821. where isnull(ee.EATTRIBUTE1,'')=''
  822. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  823. )c
  824. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  825. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  826. left join ICSDepartment dep ON dep.DepCode=a.DepCode and a.WorkPoint=dep.WorkPoint
  827. left join ICSWarehouse warehouse on a.WHCode=warehouse.WarehouseCode and a.WorkPoint=warehouse.WorkPoint
  828. LEFT JOIN MES_MO mesmo on mesmo.MoCode=a.MOCode and mesmo.MoSeq=a.Sequence ";
  829. sql += " WHERE 1=1 and a.MOStatus<>'3' ";
  830. sql = string.Format(sql, Figure);
  831. #endregion
  832. if (!string.IsNullOrWhiteSpace(queryJson))
  833. {
  834. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  835. {
  836. sql += " and a.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  837. }
  838. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  839. {
  840. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  841. }
  842. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  843. {
  844. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  845. }
  846. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  847. {
  848. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  849. }
  850. if (!string.IsNullOrWhiteSpace(queryParam["SelGDLX"].ToString()))
  851. {
  852. sql += " and a.MOType like '%" + queryParam["SelGDLX"].ToString() + "%' ";
  853. }
  854. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  855. {
  856. sql += " and b.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  857. }
  858. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  859. {
  860. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  861. }
  862. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  863. {
  864. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  865. }
  866. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  867. {
  868. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  869. }
  870. if (!string.IsNullOrWhiteSpace(queryParam["SupportCode"].ToString()))
  871. {
  872. sql += " and b.EATTRIBUTE5 like '%" + queryParam["SupportCode"].ToString() + "%' ";
  873. }
  874. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  875. {
  876. string POStatus = queryParam["POStatus"].ToString();
  877. if (POStatus == "0")
  878. {
  879. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  880. }
  881. else if (POStatus == "1")
  882. {
  883. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  884. }
  885. else
  886. {
  887. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)>0";
  888. }
  889. }
  890. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  891. {
  892. string WHStatus = queryParam["WHStatus"].ToString();
  893. if (WHStatus == "0")
  894. {
  895. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  896. }
  897. else if (WHStatus == "1")
  898. {
  899. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)>0 ";
  900. }
  901. else
  902. {
  903. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)=0 ";
  904. }
  905. }
  906. }
  907. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  908. {
  909. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  910. }
  911. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  912. {
  913. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  914. }
  915. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  916. }
  917. /// <summary>
  918. /// 点击成品生成条码(成品)
  919. /// </summary>
  920. public DataTable GetSubGridJsonChengPingByCreate(string MOCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  921. {
  922. DataTable dt = new DataTable();
  923. object Figure = GetDecimalDigits();
  924. List<DbParameter> parameter = new List<DbParameter>();
  925. // 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,
  926. //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
  927. // ,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
  928. // from ICSMO a
  929. // left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  930. // left join (
  931. // select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  932. // left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  933. // where isnull(a.EATTRIBUTE1,'')=''
  934. // group by b.TransCode,b.TransSequence
  935. // ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  936. // left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  937. // left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  938. // WHERE 1 =1 and a.MOStatus<>'3'
  939. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn011', " + Quantity + ",1,2,'')";
  940. object Num = SqlHelper.ExecuteScalar(SeachNum);
  941. string sql = @" select d.Enable, a.InvCode,b.ClassCode,b.InvName,b.InvStd,b.InvUnit,
  942. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  943. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  944. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  945. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  946. 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' else b.EATTRIBUTE2 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
  947. ,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,
  948. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  949. from ICSMO a
  950. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  951. left join (
  952. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  953. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  954. where isnull(a.EATTRIBUTE1,'')=''
  955. group by b.TransCode,b.TransSequence
  956. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  957. left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  958. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  959. WHERE 1 =1 and a.MOStatus<>'3'
  960. and a.MOCode='" + MOCode + "' and a.Sequence='" + Sequence + "'";
  961. sql += " and a.WorkPoint='" + WorkPoint + "'";
  962. sql = string.Format(sql, Figure);
  963. return Repository().FindTableBySql(sql.ToString());
  964. }
  965. /// <summary>
  966. /// 成品生成条码
  967. /// </summary>
  968. /// <param name="POCode"></param>
  969. /// <param name="PORow"></param>
  970. /// <param name="keyValue"></param>
  971. /// 已改
  972. /// <returns></returns>
  973. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  974. public int SubmitFormChengPing(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  975. {
  976. var queryParam = keyValue.ToJObject();
  977. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  978. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  979. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  980. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  981. decimal LOTQTY = minPackQty;
  982. string InvCode = queryParam["ClassCode"].ToString();
  983. string InvCodeLP = queryParam["InvCode"].ToString();
  984. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  985. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  986. //string Pre = InvCodeLP + "|" + MOCode + "|" + (int)Quantity + "|" + DateTime.Now.ToString("yyyyMMdd") + "|";
  987. string Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  988. string sql = string.Empty;
  989. //string VendorLot = queryParam["VendorLot"].ToString();
  990. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  991. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  992. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  993. string sqls = string.Empty;
  994. string Colspan = "";
  995. string str1 = "";
  996. string LotNo = string.Empty;
  997. List<string> ExtensionIDList = new List<string>();
  998. #region 装箱的功能
  999. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1000. string VenCode = queryParam["VenCode"].ToString();
  1001. int PackCount = 0;//每箱放的数量
  1002. int Pack_YuShu = 0;//需要平摊的数量
  1003. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1004. List<PackModel> List_Pack = new List<PackModel>();
  1005. int ZQty = 0;
  1006. if (createPackCount > 0)
  1007. {
  1008. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1009. if (Pack_YuShu == 0)
  1010. {
  1011. PackCount = (createPageCount / createPackCount);
  1012. }
  1013. else
  1014. {
  1015. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1016. }
  1017. for (int jj = 0; jj < createPackCount; jj++)
  1018. {
  1019. object CARID = Guid.NewGuid();
  1020. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1021. sql += @" INSERT INTO dbo.ICSContainer
  1022. ( ID,ContainerCode ,
  1023. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1024. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1025. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1026. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1027. PackModel PP = new PackModel();
  1028. PP.ID = CARID.ToString();
  1029. PP.PackCode = Carton;
  1030. if (jj < Pack_YuShu)
  1031. {
  1032. PP.FristBarIndex = ZQty;
  1033. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1034. }
  1035. else
  1036. {
  1037. PP.FristBarIndex = ZQty;
  1038. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1039. }
  1040. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1041. List_Pack.Add(PP);
  1042. }
  1043. }
  1044. #endregion
  1045. #region 明浩特殊逻辑,创建条码的同时将工单的数量更新成合格数量
  1046. sql += @"UPDATE A SET A.Quantity=B.GoodQty
  1047. FROM ICSMO A
  1048. INNER JOIN MES_MO B ON B.MoCode=A.MOCode
  1049. WHERE A.MOCode='" + MOCode + "' AND A.WorkPoint='" + WorkPoint + @"'
  1050. ";
  1051. #endregion
  1052. for (int i = 0; i < createPageCount; i++)
  1053. {
  1054. if (i + 1 == createPageCount)
  1055. {
  1056. if (minPackQty * createPageCount > thisCreateQty)
  1057. {
  1058. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1059. }
  1060. }
  1061. 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();
  1062. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1063. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1064. bool flag = true;
  1065. foreach (var item in ExtensionIDList)
  1066. {
  1067. if (item == Colspan + WorkPoint)
  1068. {
  1069. flag = false;
  1070. }
  1071. }
  1072. if (ExtensionID == null && flag == true)
  1073. {
  1074. str1 = Guid.NewGuid().ToString();
  1075. 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)
  1076. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1077. 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(),
  1078. MUSER, MUSERNAME, WorkPoints);
  1079. }
  1080. else if (ExtensionID != null)
  1081. {
  1082. str1 = ExtensionID.ToString();
  1083. }
  1084. ExtensionIDList.Add(Colspan + WorkPoint);
  1085. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1086. //if (AMEnable == "true")
  1087. //{
  1088. // LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1089. //}vvv
  1090. //else
  1091. //{
  1092. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1093. //}
  1094. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1095. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1096. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1097. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1098. //{
  1099. sql += string.Format(@"insert into ICSInventoryLot
  1100. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1101. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1102. select
  1103. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1104. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1105. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  1106. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1107. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1108. sql += "\r\n";
  1109. //装箱的功能
  1110. if (List_Pack.Count > 0)
  1111. {
  1112. PackModel mm = new PackModel();
  1113. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1114. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1115. ( ID ,ContainerID ,LotNo ,
  1116. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1117. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1118. }
  1119. //}
  1120. }
  1121. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1122. return count;
  1123. }
  1124. /// <summary>
  1125. /// 成品生成条码
  1126. /// </summary>
  1127. /// <param name="POCode"></param>
  1128. /// <param name="PORow"></param>
  1129. /// <param name="keyValue"></param>
  1130. /// 已改
  1131. /// <returns></returns>
  1132. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1133. public int SubmitFormChengPingNew(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  1134. {
  1135. var queryParam = keyValue.ToJObject();
  1136. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1137. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1138. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1139. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  1140. List<decimal> lotQtys = new List<decimal>();
  1141. foreach (var jLotno in jLotnos)
  1142. {
  1143. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  1144. lotQtys.Add(qty);
  1145. }
  1146. int createPageCount = lotQtys.Count();
  1147. string InvCode = queryParam["ClassCode"].ToString();
  1148. string InvCodeLP = queryParam["InvCode"].ToString();
  1149. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1150. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  1151. //string Pre = InvCodeLP + "|" + MOCode + "|" + (int)Quantity + "|" + DateTime.Now.ToString("yyyyMMdd") + "|";
  1152. string Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1153. string sql = string.Empty;
  1154. //string VendorLot = queryParam["VendorLot"].ToString();
  1155. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1156. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1157. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1158. string sqls = string.Empty;
  1159. string Colspan = "";
  1160. string str1 = "";
  1161. string LotNo = string.Empty;
  1162. List<string> ExtensionIDList = new List<string>();
  1163. #region 装箱的功能
  1164. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1165. string VenCode = queryParam["VenCode"].ToString();
  1166. int PackCount = 0;//每箱放的数量
  1167. int Pack_YuShu = 0;//需要平摊的数量
  1168. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1169. List<PackModel> List_Pack = new List<PackModel>();
  1170. int ZQty = 0;
  1171. if (createPackCount > 0)
  1172. {
  1173. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1174. if (Pack_YuShu == 0)
  1175. {
  1176. PackCount = (createPageCount / createPackCount);
  1177. }
  1178. else
  1179. {
  1180. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1181. }
  1182. for (int jj = 0; jj < createPackCount; jj++)
  1183. {
  1184. object CARID = Guid.NewGuid();
  1185. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1186. sql += @" INSERT INTO dbo.ICSContainer
  1187. ( ID,ContainerCode ,
  1188. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1189. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1190. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1191. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1192. PackModel PP = new PackModel();
  1193. PP.ID = CARID.ToString();
  1194. PP.PackCode = Carton;
  1195. if (jj < Pack_YuShu)
  1196. {
  1197. PP.FristBarIndex = ZQty;
  1198. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1199. }
  1200. else
  1201. {
  1202. PP.FristBarIndex = ZQty;
  1203. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1204. }
  1205. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1206. List_Pack.Add(PP);
  1207. }
  1208. }
  1209. #endregion
  1210. for (int i = 0; i < createPageCount; i++)
  1211. {
  1212. var LOTQTY = lotQtys[i];
  1213. 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();
  1214. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1215. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1216. bool flag = true;
  1217. foreach (var item in ExtensionIDList)
  1218. {
  1219. if (item == Colspan + WorkPoint)
  1220. {
  1221. flag = false;
  1222. }
  1223. }
  1224. if (ExtensionID == null && flag == true)
  1225. {
  1226. str1 = Guid.NewGuid().ToString();
  1227. 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)
  1228. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1229. 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(),
  1230. MUSER, MUSERNAME, WorkPoints);
  1231. }
  1232. else if (ExtensionID != null)
  1233. {
  1234. str1 = ExtensionID.ToString();
  1235. }
  1236. ExtensionIDList.Add(Colspan + WorkPoint);
  1237. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1238. //if (AMEnable == "true")
  1239. //{
  1240. // LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1241. //}vvv
  1242. //else
  1243. //{
  1244. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1245. //}
  1246. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1247. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1248. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1249. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1250. //{
  1251. sql += string.Format(@"insert into ICSInventoryLot
  1252. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1253. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1254. select
  1255. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1256. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1257. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  1258. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1259. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1260. sql += "\r\n";
  1261. //装箱的功能
  1262. if (List_Pack.Count > 0)
  1263. {
  1264. PackModel mm = new PackModel();
  1265. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1266. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1267. ( ID ,ContainerID ,LotNo ,
  1268. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1269. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1270. }
  1271. //}
  1272. }
  1273. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1274. return count;
  1275. }
  1276. /// <summary>
  1277. /// 成品生成条码
  1278. /// </summary>
  1279. /// <param name="POCode"></param>
  1280. /// <param name="PORow"></param>
  1281. /// <param name="keyValue"></param>
  1282. /// 已改
  1283. /// <returns></returns>
  1284. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1285. public int SubmitFormChengPingHG(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  1286. {
  1287. var queryParam = keyValue.ToJObject();
  1288. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1289. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1290. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1291. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1292. decimal LOTQTY = minPackQty;
  1293. string InvCode = queryParam["ClassCode"].ToString();
  1294. string InvCodeLP = queryParam["InvCode"].ToString();
  1295. //查询 物料编码~成品版本(料品表自定义20字段)~序列号~订单号~车号段(ICSExtension表batchcode字段)~供应商
  1296. string invsql = $"SELECT EATTRIBUTE20,ClassCode,InvStd FROM ICSInventory WITH(nolock) WHERE InvCode='{queryParam["InvCode"]}' AND WorkPoint='{WorkPoints}'";
  1297. var invdt = SqlHelper.CmdExecuteDataTable(invsql);
  1298. string date = DateTime.Now.ToString("yyMMdd");
  1299. //获取当前时段
  1300. string currentPeriod = GetPeriod(DateTime.Now);
  1301. string pattern = @"^P00[1-9].*";
  1302. string Pre = "";
  1303. if (InvCode.StartsWith("Y004"))
  1304. {
  1305. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}~{MOCode}{Sequence}";
  1306. }
  1307. else if (Regex.IsMatch(InvCode.Substring(0, 4), pattern))
  1308. {
  1309. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1310. {
  1311. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{date}2000061501700120000436017014{currentPeriod}";
  1312. }
  1313. else
  1314. {
  1315. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}~";
  1316. }
  1317. }
  1318. else
  1319. {
  1320. Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1321. }
  1322. string sql = string.Empty;
  1323. //string VendorLot = queryParam["VendorLot"].ToString();
  1324. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1325. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1326. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1327. string sqls = string.Empty;
  1328. string Colspan = "";
  1329. string str1 = "";
  1330. string LotNo = string.Empty;
  1331. List<string> ExtensionIDList = new List<string>();
  1332. #region 装箱的功能
  1333. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1334. string VenCode = queryParam["VenCode"].ToString();
  1335. int PackCount = 0;//每箱放的数量
  1336. int Pack_YuShu = 0;//需要平摊的数量
  1337. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1338. List<PackModel> List_Pack = new List<PackModel>();
  1339. int ZQty = 0;
  1340. if (createPackCount > 0)
  1341. {
  1342. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1343. if (Pack_YuShu == 0)
  1344. {
  1345. PackCount = (createPageCount / createPackCount);
  1346. }
  1347. else
  1348. {
  1349. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1350. }
  1351. for (int jj = 0; jj < createPackCount; jj++)
  1352. {
  1353. object CARID = Guid.NewGuid();
  1354. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1355. sql += @" INSERT INTO dbo.ICSContainer
  1356. ( ID,ContainerCode ,
  1357. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1358. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1359. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1360. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1361. PackModel PP = new PackModel();
  1362. PP.ID = CARID.ToString();
  1363. PP.PackCode = Carton;
  1364. if (jj < Pack_YuShu)
  1365. {
  1366. PP.FristBarIndex = ZQty;
  1367. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1368. }
  1369. else
  1370. {
  1371. PP.FristBarIndex = ZQty;
  1372. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1373. }
  1374. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1375. List_Pack.Add(PP);
  1376. }
  1377. }
  1378. #endregion
  1379. for (int i = 0; i < createPageCount; i++)
  1380. {
  1381. if (i + 1 == createPageCount)
  1382. {
  1383. if (minPackQty * createPageCount > thisCreateQty)
  1384. {
  1385. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1386. }
  1387. }
  1388. 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();
  1389. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1390. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1391. bool flag = true;
  1392. foreach (var item in ExtensionIDList)
  1393. {
  1394. if (item == Colspan + WorkPoint)
  1395. {
  1396. flag = false;
  1397. }
  1398. }
  1399. if (ExtensionID == null && flag == true)
  1400. {
  1401. str1 = Guid.NewGuid().ToString();
  1402. 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)
  1403. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1404. 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(),
  1405. MUSER, MUSERNAME, WorkPoints);
  1406. }
  1407. else if (ExtensionID != null)
  1408. {
  1409. str1 = ExtensionID.ToString();
  1410. }
  1411. ExtensionIDList.Add(Colspan + WorkPoint);
  1412. if (InvCode.StartsWith("Y004"))
  1413. {
  1414. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 2);
  1415. LotNo = LotNo + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1416. }
  1417. else if (Regex.IsMatch(InvCode.Substring(0, 4), pattern))
  1418. {
  1419. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1420. {
  1421. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{date}2000061501700120000436017014{currentPeriod}";
  1422. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", date, 5);
  1423. LotNo = Pre + LotNo.Substring(5, 5);
  1424. }
  1425. else
  1426. {
  1427. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", "NTM", 7);
  1428. LotNo = Pre + LotNo.Substring(3, 7) + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1429. }
  1430. }
  1431. else
  1432. {
  1433. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1434. }
  1435. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1436. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1437. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1438. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1439. //{
  1440. sql += string.Format(@"insert into ICSInventoryLot
  1441. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1442. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1443. select
  1444. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1445. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1446. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  1447. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1448. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1449. sql += "\r\n";
  1450. //装箱的功能
  1451. if (List_Pack.Count > 0)
  1452. {
  1453. PackModel mm = new PackModel();
  1454. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1455. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1456. ( ID ,ContainerID ,LotNo ,
  1457. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1458. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1459. }
  1460. //}
  1461. }
  1462. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1463. return count;
  1464. }
  1465. /// <summary>
  1466. /// 成品生成条码
  1467. /// </summary>
  1468. /// <param name="POCode"></param>
  1469. /// <param name="PORow"></param>
  1470. /// <param name="keyValue"></param>
  1471. /// 已改
  1472. /// <returns></returns>
  1473. ///传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1474. public int SubmitFormChengPingHG1(string MOCode, string Sequence, string keyValue, string WorkPoint, float Quantity)
  1475. {
  1476. var queryParam = keyValue.ToJObject();
  1477. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1478. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1479. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1480. //获取当前时段
  1481. string currentPeriod = GetPeriod(DateTime.Now);
  1482. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  1483. List<decimal> lotQtys = new List<decimal>();
  1484. foreach (var jLotno in jLotnos)
  1485. {
  1486. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  1487. lotQtys.Add(qty);
  1488. }
  1489. //查询 物料编码~成品版本(料品表自定义20字段)~序列号~订单号~车号段(ICSExtension表batchcode字段)~供应商
  1490. string invsql = $"SELECT EATTRIBUTE20,ClassCode,InvStd FROM ICSInventory WITH(nolock) WHERE InvCode='{queryParam["InvCode"]}' AND WorkPoint='{WorkPoints}'";
  1491. var invdt = SqlHelper.CmdExecuteDataTable(invsql);
  1492. int createPageCount = lotQtys.Count();
  1493. string InvCode = queryParam["ClassCode"].ToString();
  1494. string InvCodeLP = queryParam["InvCode"].ToString();
  1495. string date = DateTime.Now.ToString("yyMMdd");
  1496. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1497. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  1498. string Pre = "";
  1499. if (InvCode == "Y004")
  1500. {
  1501. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}~{MOCode}{Sequence}";
  1502. }
  1503. else if (InvCode.Length == 4 && InvCode.Contains("P00"))
  1504. {
  1505. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1506. {
  1507. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{date}2000061501700120000436017014{currentPeriod}";
  1508. }
  1509. else
  1510. {
  1511. Pre = $"{InvCodeLP}~{invdt.Rows[0]["EATTRIBUTE20"]}";
  1512. }
  1513. }
  1514. else
  1515. {
  1516. Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1517. }
  1518. string sql = string.Empty;
  1519. //string VendorLot = queryParam["VendorLot"].ToString();
  1520. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1521. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1522. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1523. string sqls = string.Empty;
  1524. string Colspan = "";
  1525. string str1 = "";
  1526. string LotNo = string.Empty;
  1527. List<string> ExtensionIDList = new List<string>();
  1528. #region 装箱的功能
  1529. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1530. string VenCode = queryParam["VenCode"].ToString();
  1531. int PackCount = 0;//每箱放的数量
  1532. int Pack_YuShu = 0;//需要平摊的数量
  1533. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1534. List<PackModel> List_Pack = new List<PackModel>();
  1535. int ZQty = 0;
  1536. if (createPackCount > 0)
  1537. {
  1538. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1539. if (Pack_YuShu == 0)
  1540. {
  1541. PackCount = (createPageCount / createPackCount);
  1542. }
  1543. else
  1544. {
  1545. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1546. }
  1547. for (int jj = 0; jj < createPackCount; jj++)
  1548. {
  1549. object CARID = Guid.NewGuid();
  1550. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1551. sql += @" INSERT INTO dbo.ICSContainer
  1552. ( ID,ContainerCode ,
  1553. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1554. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1555. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1556. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1557. PackModel PP = new PackModel();
  1558. PP.ID = CARID.ToString();
  1559. PP.PackCode = Carton;
  1560. if (jj < Pack_YuShu)
  1561. {
  1562. PP.FristBarIndex = ZQty;
  1563. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1564. }
  1565. else
  1566. {
  1567. PP.FristBarIndex = ZQty;
  1568. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1569. }
  1570. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1571. List_Pack.Add(PP);
  1572. }
  1573. }
  1574. #endregion
  1575. for (int i = 0; i < createPageCount; i++)
  1576. {
  1577. var LOTQTY = lotQtys[i];
  1578. 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();
  1579. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1580. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1581. bool flag = true;
  1582. foreach (var item in ExtensionIDList)
  1583. {
  1584. if (item == Colspan + WorkPoint)
  1585. {
  1586. flag = false;
  1587. }
  1588. }
  1589. if (ExtensionID == null && flag == true)
  1590. {
  1591. str1 = Guid.NewGuid().ToString();
  1592. 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)
  1593. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1594. 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(),
  1595. MUSER, MUSERNAME, WorkPoints);
  1596. }
  1597. else if (ExtensionID != null)
  1598. {
  1599. str1 = ExtensionID.ToString();
  1600. }
  1601. ExtensionIDList.Add(Colspan + WorkPoint);
  1602. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1603. //if (AMEnable == "true")
  1604. //{
  1605. // LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1606. //}vvv
  1607. //else
  1608. //{
  1609. if (InvCode == "Y004")
  1610. {
  1611. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 2);
  1612. LotNo = LotNo + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1613. }
  1614. else if (InvCode.Length == 4 && InvCode.Contains("P00"))
  1615. {
  1616. if (invdt.Rows[0]["InvStd"].ToString().StartsWith("DCDC-OBC-PDU"))
  1617. {
  1618. Pre = $"{invdt.Rows[0]["InvStd"]}2101145{DateTime.Now.ToString("yy-MM-dd")}2000061501700120000436017014{currentPeriod}";
  1619. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", date, 5);
  1620. LotNo = Pre + LotNo.Substring(5, 5);
  1621. }
  1622. else
  1623. {
  1624. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", "", 7);
  1625. LotNo = LotNo + $"~{MOCode}~{queryParam["BatchCode"]}~";
  1626. }
  1627. }
  1628. else
  1629. {
  1630. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1631. }
  1632. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 4);
  1633. //}
  1634. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1635. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  1636. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1637. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1638. //{
  1639. sql += string.Format(@"insert into ICSInventoryLot
  1640. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  1641. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1642. select
  1643. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1644. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1645. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  1646. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1647. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1648. sql += "\r\n";
  1649. //装箱的功能
  1650. if (List_Pack.Count > 0)
  1651. {
  1652. PackModel mm = new PackModel();
  1653. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1654. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1655. ( ID ,ContainerID ,LotNo ,
  1656. MUSER ,MUSERName ,MTIME ,WorkPoint )
  1657. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1658. }
  1659. //}
  1660. }
  1661. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1662. return count;
  1663. }
  1664. private static string GetPeriod(DateTime time)
  1665. {
  1666. int hour = time.Hour;
  1667. return hour >= 8 && hour < 20 ? "D" : "N";
  1668. }
  1669. public DataTable GetGridJsonXiaoShou(string queryJson, ref Pagination jqgridparam)
  1670. {
  1671. DataTable dt = new DataTable();
  1672. var queryParam = queryJson.ToJObject();
  1673. List<DbParameter> parameter = new List<DbParameter>();
  1674. object Figure = GetDecimalDigits();
  1675. #region [SQL]
  1676. 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
  1677. ,CAST(a.Quantity AS DECIMAL(38,{0})) as RQuantity
  1678. ,CAST(CASE WHEN a.EATTRIBUTE9='' THEN 0 ELSE a.EATTRIBUTE9 END AS DECIMAL(38,{0})) as Quantity
  1679. ,CAST(CASE WHEN a.EATTRIBUTE10='' THEN 0 ELSE a.EATTRIBUTE10 END AS DECIMAL(38,{0})) as NGQuantity
  1680. ,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
  1681. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1682. ,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,
  1683. a.EATTRIBUTE9,a.EATTRIBUTE10
  1684. from ICSSDN a
  1685. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  1686. left join (
  1687. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  1688. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='4'
  1689. where isnull(ee.EATTRIBUTE1,'')=''
  1690. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  1691. )c
  1692. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  1693. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1694. --left join ICSDepartment dep ON dep.DepCode=a.[Detp]
  1695. where a.Type='2'";
  1696. sql = string.Format(sql, Figure);
  1697. #endregion
  1698. if (!string.IsNullOrWhiteSpace(queryJson))
  1699. {
  1700. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1701. {
  1702. sql += " and a.SDNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  1703. }
  1704. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1705. {
  1706. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  1707. }
  1708. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  1709. {
  1710. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  1711. }
  1712. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  1713. {
  1714. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  1715. }
  1716. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  1717. {
  1718. string POStatus = queryParam["POStatus"].ToString();
  1719. if (POStatus == "0")
  1720. {
  1721. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  1722. }
  1723. else if (POStatus == "1")
  1724. {
  1725. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  1726. }
  1727. else
  1728. {
  1729. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  1730. }
  1731. }
  1732. }
  1733. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1734. {
  1735. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  1736. }
  1737. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  1738. {
  1739. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  1740. }
  1741. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1742. }
  1743. /// <summary>
  1744. /// 点击销售退货生成条码(销售退货)
  1745. /// </summary>
  1746. public DataTable GetSubGridJsonXiaoShouByCreate(string SDNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  1747. {
  1748. DataTable dt = new DataTable();
  1749. object Figure = GetDecimalDigits();
  1750. List<DbParameter> parameter = new List<DbParameter>();
  1751. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn020', " + Quantity + ",1,3,'')";
  1752. object Num = SqlHelper.ExecuteScalar(SeachNum);
  1753. 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,
  1754. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,
  1755. 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' else b.EATTRIBUTE2 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
  1756. ,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,
  1757. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  1758. from ICSSDN a
  1759. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  1760. left join (
  1761. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  1762. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='4'
  1763. where isnull(a.EATTRIBUTE1,'')=''
  1764. group by b.TransCode,b.TransSequence
  1765. ) c on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence
  1766. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  1767. WHERE 1 =1
  1768. and a.Type='2' and a.SDNCode='" + SDNCode + "' and a.Sequence='" + Sequence + "'";
  1769. sql += " and a.WorkPoint='" + WorkPoint + "'";
  1770. sql = string.Format(sql, Figure);
  1771. return Repository().FindTableBySql(sql.ToString());
  1772. }
  1773. /// <summary>
  1774. /// 销售退货生成条码
  1775. /// </summary>
  1776. /// <param name="POCode"></param>
  1777. /// <param name="PORow"></param>
  1778. /// <param name="keyValue"></param>
  1779. /// 已改
  1780. /// <returns></returns>
  1781. public int SubmitFormXiaoShou(string SDNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  1782. {
  1783. var queryParam = keyValue.ToJObject();
  1784. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1785. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1786. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1787. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1788. decimal LOTQTY = minPackQty;
  1789. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1790. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  1791. string Pre = "SR" + SDNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1792. string sql = string.Empty;
  1793. //string VendorLot = queryParam["VendorLot"].ToString();
  1794. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1795. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1796. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1797. string InvCode = queryParam["ClassCode"].ToString();
  1798. string sqls = string.Empty;
  1799. string Colspan = "";
  1800. string str1 = "";
  1801. string LotNo = string.Empty;
  1802. List<string> ExtensionIDList = new List<string>();
  1803. #region 装箱的功能
  1804. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1805. string VenCode = queryParam["VenCode"].ToString();
  1806. int PackCount = 0;//每箱放的数量
  1807. int Pack_YuShu = 0;//需要平摊的数量
  1808. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1809. List<PackModel> List_Pack = new List<PackModel>();
  1810. int ZQty = 0;
  1811. if (createPackCount > 0)
  1812. {
  1813. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1814. if (Pack_YuShu == 0)
  1815. {
  1816. PackCount = (createPageCount / createPackCount);
  1817. }
  1818. else
  1819. {
  1820. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1821. }
  1822. for (int jj = 0; jj < createPackCount; jj++)
  1823. {
  1824. object CARID = Guid.NewGuid();
  1825. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1826. sql += @" INSERT INTO dbo.ICSContainer
  1827. ( ID,ContainerCode ,
  1828. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1829. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1830. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1831. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1832. PackModel PP = new PackModel();
  1833. PP.ID = CARID.ToString();
  1834. PP.PackCode = Carton;
  1835. if (jj < Pack_YuShu)
  1836. {
  1837. PP.FristBarIndex = ZQty;
  1838. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1839. }
  1840. else
  1841. {
  1842. PP.FristBarIndex = ZQty;
  1843. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1844. }
  1845. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1846. List_Pack.Add(PP);
  1847. }
  1848. }
  1849. #endregion
  1850. for (int i = 0; i < createPageCount; i++)
  1851. {
  1852. if (i + 1 == createPageCount)
  1853. {
  1854. if (minPackQty * createPageCount > thisCreateQty)
  1855. {
  1856. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1857. }
  1858. }
  1859. 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();
  1860. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1861. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1862. bool flag = true;
  1863. foreach (var item in ExtensionIDList)
  1864. {
  1865. if (item == Colspan + WorkPoint)
  1866. {
  1867. flag = false;
  1868. }
  1869. }
  1870. if (ExtensionID == null && flag == true)
  1871. {
  1872. str1 = Guid.NewGuid().ToString();
  1873. 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)
  1874. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1875. 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(),
  1876. MUSER, MUSERNAME, WorkPoints);
  1877. }
  1878. else if (ExtensionID != null)
  1879. {
  1880. str1 = ExtensionID.ToString();
  1881. }
  1882. ExtensionIDList.Add(Colspan + WorkPoint);
  1883. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  1884. if (AMEnable == "true")
  1885. {
  1886. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  1887. }
  1888. else
  1889. {
  1890. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  1891. }
  1892. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  1893. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}')",
  1894. LotNo, SDNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  1895. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  1896. //{
  1897. sql += string.Format(@"
  1898. insert into ICSInventoryLot
  1899. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1900. select
  1901. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','4','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  1902. from ICSSDN where Type='2' and SDNCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  1903. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SDNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  1904. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1905. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1906. sql += "\r\n";
  1907. //}
  1908. //装箱的功能
  1909. if (List_Pack.Count > 0)
  1910. {
  1911. PackModel mm = new PackModel();
  1912. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1913. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1914. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  1915. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1916. }
  1917. }
  1918. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1919. return count;
  1920. }
  1921. /// <summary>
  1922. /// 销售退货生成条码
  1923. /// </summary>
  1924. /// <param name="POCode"></param>
  1925. /// <param name="PORow"></param>
  1926. /// <param name="keyValue"></param>
  1927. /// 已改
  1928. /// <returns></returns>
  1929. public int SubmitFormXiaoShouNew(string SDNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  1930. {
  1931. var queryParam = keyValue.ToJObject();
  1932. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1933. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1934. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1935. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  1936. List<decimal> lotQtys = new List<decimal>();
  1937. foreach (var jLotno in jLotnos)
  1938. {
  1939. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  1940. lotQtys.Add(qty);
  1941. }
  1942. int createPageCount = lotQtys.Count();
  1943. string Pre = "SR" + SDNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  1944. string sql = string.Empty;
  1945. //string VendorLot = queryParam["VendorLot"].ToString();
  1946. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1947. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1948. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1949. string InvCode = queryParam["ClassCode"].ToString();
  1950. string sqls = string.Empty;
  1951. string Colspan = "";
  1952. string str1 = "";
  1953. string LotNo = string.Empty;
  1954. List<string> ExtensionIDList = new List<string>();
  1955. #region 装箱的功能
  1956. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1957. string VenCode = queryParam["VenCode"].ToString();
  1958. int PackCount = 0;//每箱放的数量
  1959. int Pack_YuShu = 0;//需要平摊的数量
  1960. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1961. List<PackModel> List_Pack = new List<PackModel>();
  1962. int ZQty = 0;
  1963. if (createPackCount > 0)
  1964. {
  1965. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1966. if (Pack_YuShu == 0)
  1967. {
  1968. PackCount = (createPageCount / createPackCount);
  1969. }
  1970. else
  1971. {
  1972. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1973. }
  1974. for (int jj = 0; jj < createPackCount; jj++)
  1975. {
  1976. object CARID = Guid.NewGuid();
  1977. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1978. sql += @" INSERT INTO dbo.ICSContainer
  1979. ( ID,ContainerCode ,
  1980. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1981. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1982. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1983. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1984. PackModel PP = new PackModel();
  1985. PP.ID = CARID.ToString();
  1986. PP.PackCode = Carton;
  1987. if (jj < Pack_YuShu)
  1988. {
  1989. PP.FristBarIndex = ZQty;
  1990. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1991. }
  1992. else
  1993. {
  1994. PP.FristBarIndex = ZQty;
  1995. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1996. }
  1997. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1998. List_Pack.Add(PP);
  1999. }
  2000. }
  2001. #endregion
  2002. for (int i = 0; i < createPageCount; i++)
  2003. {
  2004. var LOTQTY = lotQtys[i];
  2005. 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();
  2006. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  2007. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  2008. bool flag = true;
  2009. foreach (var item in ExtensionIDList)
  2010. {
  2011. if (item == Colspan + WorkPoint)
  2012. {
  2013. flag = false;
  2014. }
  2015. }
  2016. if (ExtensionID == null && flag == true)
  2017. {
  2018. str1 = Guid.NewGuid().ToString();
  2019. 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)
  2020. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  2021. 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(),
  2022. MUSER, MUSERNAME, WorkPoints);
  2023. }
  2024. else if (ExtensionID != null)
  2025. {
  2026. str1 = ExtensionID.ToString();
  2027. }
  2028. ExtensionIDList.Add(Colspan + WorkPoint);
  2029. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  2030. if (AMEnable == "true")
  2031. {
  2032. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  2033. }
  2034. else
  2035. {
  2036. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  2037. }
  2038. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  2039. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}')",
  2040. LotNo, SDNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  2041. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  2042. //{
  2043. sql += string.Format(@"
  2044. insert into ICSInventoryLot
  2045. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  2046. select
  2047. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','4','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  2048. from ICSSDN where Type='2' and SDNCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  2049. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SDNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  2050. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  2051. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  2052. sql += "\r\n";
  2053. //}
  2054. //装箱的功能
  2055. if (List_Pack.Count > 0)
  2056. {
  2057. PackModel mm = new PackModel();
  2058. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  2059. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  2060. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  2061. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  2062. }
  2063. }
  2064. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  2065. return count;
  2066. }
  2067. public DataTable GetGridJsonQiTa(string queryJson, ref Pagination jqgridparam)
  2068. {
  2069. DataTable dt = new DataTable();
  2070. var queryParam = queryJson.ToJObject();
  2071. List<DbParameter> parameter = new List<DbParameter>();
  2072. object Figure = GetDecimalDigits();
  2073. #region [SQL]
  2074. string sql = @" select a.ID,a.InCode,a.Sequence,a.WHCode,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2075. 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
  2076. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  2077. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2078. ,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,
  2079. a.EATTRIBUTE9,a.EATTRIBUTE10
  2080. from ICSOtherIn a
  2081. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2082. left join (
  2083. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2084. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  2085. where isnull(ee.EATTRIBUTE1,'')=''
  2086. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2087. )c
  2088. on a.InCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2089. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2090. where a.Status='1' and ISNULL(a.Type,'1')='1' ";
  2091. sql = string.Format(sql, Figure);
  2092. #endregion
  2093. if (!string.IsNullOrWhiteSpace(queryJson))
  2094. {
  2095. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2096. {
  2097. sql += " and a.InCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2098. }
  2099. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2100. {
  2101. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2102. }
  2103. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2104. {
  2105. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2106. }
  2107. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2108. {
  2109. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2110. }
  2111. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  2112. {
  2113. sql += " and b.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  2114. }
  2115. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  2116. {
  2117. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  2118. }
  2119. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  2120. {
  2121. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  2122. }
  2123. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  2124. {
  2125. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  2126. }
  2127. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2128. {
  2129. string POStatus = queryParam["POStatus"].ToString();
  2130. if (POStatus == "0")
  2131. {
  2132. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2133. }
  2134. else if (POStatus == "1")
  2135. {
  2136. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2137. }
  2138. else
  2139. {
  2140. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2141. }
  2142. }
  2143. }
  2144. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2145. {
  2146. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2147. }
  2148. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2149. {
  2150. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2151. }
  2152. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2153. }
  2154. /// <summary>
  2155. /// 点击销售退货生成条码(其他入库)
  2156. /// </summary>
  2157. public DataTable GetSubGridJsonQiTaByCreate(string InCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2158. {
  2159. DataTable dt = new DataTable();
  2160. object Figure = GetDecimalDigits();
  2161. List<DbParameter> parameter = new List<DbParameter>();
  2162. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn021', " + Quantity + ",1,4,'')";
  2163. object Num = SqlHelper.ExecuteScalar(SeachNum);
  2164. 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,
  2165. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,
  2166. 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' else b.EATTRIBUTE2 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
  2167. ,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,
  2168. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  2169. from ICSOtherIn a
  2170. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2171. left join (
  2172. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2173. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='5'
  2174. where isnull(a.EATTRIBUTE1,'')=''
  2175. group by b.TransCode,b.TransSequence
  2176. ) c on a.InCode=c.TransCode and a.Sequence=c.TransSequence
  2177. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2178. WHERE 1 =1
  2179. and a.InCode='" + InCode + "' and a.Sequence='" + Sequence + "' and ISNULL(a.EATTRIBUTE2,'1')='1'";
  2180. sql += " and a.WorkPoint='" + WorkPoint + "'";
  2181. sql = string.Format(sql, Figure);
  2182. return Repository().FindTableBySql(sql.ToString());
  2183. }
  2184. /// <summary>
  2185. /// 其他入库生成条码
  2186. /// </summary>
  2187. /// <param name="POCode"></param>
  2188. /// <param name="PORow"></param>
  2189. /// <param name="keyValue"></param>
  2190. /// 已改
  2191. /// <returns></returns>
  2192. public int SubmitFormQiTa(string InCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  2193. {
  2194. var queryParam = keyValue.ToJObject();
  2195. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2196. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  2197. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  2198. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  2199. decimal LOTQTY = minPackQty;
  2200. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2201. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  2202. string Pre = "QT" + InCode + (Convert.ToInt32(Sequence)).ToString("D4");
  2203. string sql = string.Empty;
  2204. //string VendorLot = queryParam["VendorLot"].ToString();
  2205. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2206. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2207. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  2208. string InvCode = queryParam["ClassCode"].ToString();
  2209. string sqls = string.Empty;
  2210. string Colspan = "";
  2211. string str1 = "";
  2212. string LotNo = string.Empty;
  2213. List<string> ExtensionIDList = new List<string>();
  2214. #region 装箱的功能
  2215. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  2216. string VenCode = queryParam["VenCode"].ToString();
  2217. int PackCount = 0;//每箱放的数量
  2218. int Pack_YuShu = 0;//需要平摊的数量
  2219. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  2220. List<PackModel> List_Pack = new List<PackModel>();
  2221. int ZQty = 0;
  2222. if (createPackCount > 0)
  2223. {
  2224. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  2225. if (Pack_YuShu == 0)
  2226. {
  2227. PackCount = (createPageCount / createPackCount);
  2228. }
  2229. else
  2230. {
  2231. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  2232. }
  2233. for (int jj = 0; jj < createPackCount; jj++)
  2234. {
  2235. object CARID = Guid.NewGuid();
  2236. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  2237. sql += @" INSERT INTO dbo.ICSContainer
  2238. ( ID,ContainerCode ,
  2239. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  2240. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  2241. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  2242. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  2243. PackModel PP = new PackModel();
  2244. PP.ID = CARID.ToString();
  2245. PP.PackCode = Carton;
  2246. if (jj < Pack_YuShu)
  2247. {
  2248. PP.FristBarIndex = ZQty;
  2249. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  2250. }
  2251. else
  2252. {
  2253. PP.FristBarIndex = ZQty;
  2254. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  2255. }
  2256. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  2257. List_Pack.Add(PP);
  2258. }
  2259. }
  2260. #endregion
  2261. for (int i = 0; i < createPageCount; i++)
  2262. {
  2263. if (i + 1 == createPageCount)
  2264. {
  2265. if (minPackQty * createPageCount > thisCreateQty)
  2266. {
  2267. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  2268. }
  2269. }
  2270. 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();
  2271. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  2272. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  2273. bool flag = true;
  2274. foreach (var item in ExtensionIDList)
  2275. {
  2276. if (item == Colspan + WorkPoint)
  2277. {
  2278. flag = false;
  2279. }
  2280. }
  2281. if (ExtensionID == null && flag == true)
  2282. {
  2283. str1 = Guid.NewGuid().ToString();
  2284. 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)
  2285. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  2286. 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(),
  2287. MUSER, MUSERNAME, WorkPoints);
  2288. }
  2289. else if (ExtensionID != null)
  2290. {
  2291. str1 = ExtensionID.ToString();
  2292. }
  2293. ExtensionIDList.Add(Colspan + WorkPoint);
  2294. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  2295. if (AMEnable == "true")
  2296. {
  2297. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  2298. }
  2299. else
  2300. {
  2301. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  2302. }
  2303. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  2304. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  2305. LotNo, InCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  2306. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  2307. //{
  2308. sql += string.Format(@"
  2309. insert into ICSInventoryLot
  2310. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  2311. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  2312. select
  2313. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','5','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  2314. from ICSOtherIn where InCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and ISNULL(EATTRIBUTE2,'1')='1'",
  2315. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, InCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  2316. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  2317. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  2318. sql += "\r\n";
  2319. //装箱的功能
  2320. if (List_Pack.Count > 0)
  2321. {
  2322. PackModel mm = new PackModel();
  2323. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  2324. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  2325. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  2326. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  2327. }
  2328. //}
  2329. }
  2330. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  2331. return count;
  2332. }
  2333. public int SubmitFormQiTaNew(string InCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  2334. {
  2335. var queryParam = keyValue.ToJObject();
  2336. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  2337. //int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  2338. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  2339. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  2340. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  2341. List<decimal> lotQtys = new List<decimal>();
  2342. foreach (var jLotno in jLotnos)
  2343. {
  2344. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  2345. lotQtys.Add(qty);
  2346. }
  2347. int createPageCount = lotQtys.Count();
  2348. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2349. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  2350. string Pre = "QT" + InCode + (Convert.ToInt32(Sequence)).ToString("D4");
  2351. string sql = string.Empty;
  2352. //string VendorLot = queryParam["VendorLot"].ToString();
  2353. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2354. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2355. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  2356. string InvCode = queryParam["ClassCode"].ToString();
  2357. string sqls = string.Empty;
  2358. string Colspan = "";
  2359. string str1 = "";
  2360. string LotNo = string.Empty;
  2361. List<string> ExtensionIDList = new List<string>();
  2362. #region 装箱的功能
  2363. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  2364. string VenCode = queryParam["VenCode"].ToString();
  2365. int PackCount = 0;//每箱放的数量
  2366. int Pack_YuShu = 0;//需要平摊的数量
  2367. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  2368. List<PackModel> List_Pack = new List<PackModel>();
  2369. int ZQty = 0;
  2370. if (createPackCount > 0)
  2371. {
  2372. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  2373. if (Pack_YuShu == 0)
  2374. {
  2375. PackCount = (createPageCount / createPackCount);
  2376. }
  2377. else
  2378. {
  2379. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  2380. }
  2381. for (int jj = 0; jj < createPackCount; jj++)
  2382. {
  2383. object CARID = Guid.NewGuid();
  2384. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  2385. sql += @" INSERT INTO dbo.ICSContainer
  2386. ( ID,ContainerCode ,
  2387. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  2388. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  2389. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  2390. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  2391. PackModel PP = new PackModel();
  2392. PP.ID = CARID.ToString();
  2393. PP.PackCode = Carton;
  2394. if (jj < Pack_YuShu)
  2395. {
  2396. PP.FristBarIndex = ZQty;
  2397. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  2398. }
  2399. else
  2400. {
  2401. PP.FristBarIndex = ZQty;
  2402. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  2403. }
  2404. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  2405. List_Pack.Add(PP);
  2406. }
  2407. }
  2408. #endregion
  2409. for (int i = 0; i < createPageCount; i++)
  2410. {
  2411. var LOTQTY = lotQtys[i];
  2412. 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();
  2413. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  2414. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  2415. bool flag = true;
  2416. foreach (var item in ExtensionIDList)
  2417. {
  2418. if (item == Colspan + WorkPoint)
  2419. {
  2420. flag = false;
  2421. }
  2422. }
  2423. if (ExtensionID == null && flag == true)
  2424. {
  2425. str1 = Guid.NewGuid().ToString();
  2426. 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)
  2427. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  2428. 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(),
  2429. MUSER, MUSERNAME, WorkPoints);
  2430. }
  2431. else if (ExtensionID != null)
  2432. {
  2433. str1 = ExtensionID.ToString();
  2434. }
  2435. ExtensionIDList.Add(Colspan + WorkPoint);
  2436. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  2437. if (AMEnable == "true")
  2438. {
  2439. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  2440. }
  2441. else
  2442. {
  2443. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  2444. }
  2445. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  2446. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  2447. LotNo, InCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  2448. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  2449. //{
  2450. sql += string.Format(@"
  2451. insert into ICSInventoryLot
  2452. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  2453. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  2454. select
  2455. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','5','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  2456. from ICSOtherIn where InCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and ISNULL(EATTRIBUTE2,'1')='1'",
  2457. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, InCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  2458. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  2459. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  2460. sql += "\r\n";
  2461. //装箱的功能
  2462. if (List_Pack.Count > 0)
  2463. {
  2464. PackModel mm = new PackModel();
  2465. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  2466. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  2467. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  2468. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  2469. }
  2470. //}
  2471. }
  2472. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  2473. return count;
  2474. }
  2475. //归还
  2476. public DataTable GetGridJsonGuiHuan(string queryJson, ref Pagination jqgridparam)
  2477. {
  2478. DataTable dt = new DataTable();
  2479. var queryParam = queryJson.ToJObject();
  2480. List<DbParameter> parameter = new List<DbParameter>();
  2481. object Figure = GetDecimalDigits();
  2482. #region [SQL]
  2483. string sql = @"select a.ID,a.ReturnCode,a.Sequence,a.WHCode,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2484. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2485. CAST(a.ReturnQuantity AS DECIMAL(38,{0})) as ReturnQuantity,a.CreatePerson,a.CreateDateTime,
  2486. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  2487. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2488. ,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,
  2489. a.EATTRIBUTE9,a.EATTRIBUTE10
  2490. from ICSReturn a
  2491. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2492. left join (
  2493. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2494. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='6'
  2495. where isnull(ee.EATTRIBUTE1,'')=''
  2496. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2497. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2498. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2499. where a.Status='2'";
  2500. sql = string.Format(sql, Figure);
  2501. #endregion
  2502. if (!string.IsNullOrWhiteSpace(queryJson))
  2503. {
  2504. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2505. {
  2506. sql += " and a.ReturnCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2507. }
  2508. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2509. {
  2510. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2511. }
  2512. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2513. {
  2514. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2515. }
  2516. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2517. {
  2518. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2519. }
  2520. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2521. {
  2522. string POStatus = queryParam["POStatus"].ToString();
  2523. if (POStatus == "0")
  2524. {
  2525. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2526. }
  2527. else if (POStatus == "1")
  2528. {
  2529. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2530. }
  2531. else
  2532. {
  2533. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2534. }
  2535. }
  2536. }
  2537. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2538. {
  2539. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2540. }
  2541. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2542. {
  2543. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2544. }
  2545. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2546. }
  2547. //审核到货单(采购订单需与审核到货单一起同步)
  2548. public DataTable GetGridJsonSHDH(string queryJson, ref Pagination jqgridparam)
  2549. {
  2550. try
  2551. {
  2552. DataTable dt = new DataTable();
  2553. var queryParam = queryJson.ToJObject();
  2554. List<DbParameter> parameter = new List<DbParameter>();
  2555. object Figure = GetDecimalDigits();
  2556. #region [SQL]
  2557. string sql = @"select distinct a.ID, d.POCode,d.Sequence as POSequence,a.DNCode,a.Sequence,a.VenCode,e.VenName,a.InvCode,b.EATTRIBUTE5 AS SupprotCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2558. CAST(a.Quantity AS DECIMAL(38,{0})) as POQuantity
  2559. ,Convert(decimal(38,6),isnull(a.EATTRIBUTE9,0)) as Quantity ,
  2560. Convert(decimal(38,6),isnull(a.EATTRIBUTE10,0)) as NGQuantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2561. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity,CAST((a.Quantity-ISnull(a.RCVQuantity,0)) AS DECIMAL(38,{0})) as NRCVQuantity,
  2562. CAST(a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,a.MTIME,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY ,
  2563. Case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  2564. --,isnull(b.EffectiveEnable,0) as EffectiveEnable
  2565. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays ,Case when isnull(b.BatchEnable,0)='1' then '是' else '否' end as BatchEnable
  2566. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2567. ,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,
  2568. a.EATTRIBUTE9,a.EATTRIBUTE10
  2569. from ICSDeliveryNotice a
  2570. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2571. left join (
  2572. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2573. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='7'
  2574. where isnull(ee.EATTRIBUTE1,'')=''
  2575. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2576. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2577. left join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  2578. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  2579. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2580. where a.DNType='1' and a.Status='2' and a.ASNCode is null
  2581. ";
  2582. sql = string.Format(sql, Figure);
  2583. #endregion
  2584. if (!string.IsNullOrWhiteSpace(queryJson))
  2585. {
  2586. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2587. {
  2588. sql += " and a.DNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2589. }
  2590. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  2591. {
  2592. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  2593. }
  2594. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  2595. {
  2596. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  2597. }
  2598. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2599. {
  2600. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2601. }
  2602. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2603. {
  2604. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2605. }
  2606. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2607. {
  2608. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2609. }
  2610. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  2611. {
  2612. sql += " and a.MTIME >= '" + queryParam["FromTime"].ToString() + "' ";
  2613. }
  2614. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  2615. {
  2616. sql += " and a.MTIME <= '" + queryParam["ToTime"].ToString() + "' ";
  2617. }
  2618. if (!string.IsNullOrWhiteSpace(queryParam["Support"].ToString()))
  2619. {
  2620. sql += " and b.EATTRIBUTE5 like '%" + queryParam["Support"].ToString() + "%' ";
  2621. }
  2622. if (!string.IsNullOrWhiteSpace(queryParam["Creater"].ToString()))
  2623. {
  2624. sql += " and a.CreatePerson like '%" + queryParam["Creater"].ToString() + "%' ";
  2625. }
  2626. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2627. {
  2628. string POStatus = queryParam["POStatus"].ToString();
  2629. if (POStatus == "0")
  2630. {
  2631. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2632. }
  2633. else if (POStatus == "1")
  2634. {
  2635. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2636. }
  2637. else
  2638. {
  2639. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2640. }
  2641. }
  2642. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  2643. {
  2644. string WHStatus = queryParam["WHStatus"].ToString();
  2645. if (WHStatus == "0")
  2646. {
  2647. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2648. }
  2649. else if (WHStatus == "1")
  2650. {
  2651. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)>0";
  2652. }
  2653. else
  2654. {
  2655. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)=0";
  2656. }
  2657. }
  2658. }
  2659. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2660. {
  2661. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2662. }
  2663. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2664. {
  2665. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2666. }
  2667. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2668. }
  2669. catch (Exception ex)
  2670. {
  2671. throw new Exception(ex.Message);
  2672. }
  2673. }
  2674. //审核委外到货单
  2675. public DataTable GetGridJsonWWSHDH(string queryJson, ref Pagination jqgridparam)
  2676. {
  2677. DataTable dt = new DataTable();
  2678. var queryParam = queryJson.ToJObject();
  2679. List<DbParameter> parameter = new List<DbParameter>();
  2680. object Figure = GetDecimalDigits();
  2681. #region [SQL]
  2682. 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,
  2683. CAST(a.Quantity AS DECIMAL(38,{0})) as POQuantity ,
  2684. CAST(CASE WHEN a.EATTRIBUTE9='' THEN 0 ELSE a.EATTRIBUTE9 END AS DECIMAL(38,{0})) as Quantity ,
  2685. CAST(CASE WHEN a.EATTRIBUTE10='' THEN 0 ELSE a.EATTRIBUTE10 END AS DECIMAL(38,{0})) as NGQuantity ,
  2686. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2687. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity,
  2688. CAST((a.Quantity-ISnull(a.RCVQuantity,0)) AS DECIMAL(38,{0})) as NRCVQuantity,
  2689. CAST(a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,
  2690. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY ,d.OODetailID ,case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  2691. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays ,Case when isnull(b.BatchEnable,0)='1' then '是' else '否' end as BatchEnable
  2692. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2693. ,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,
  2694. a.EATTRIBUTE9,a.EATTRIBUTE10
  2695. from ICSODeliveryNotice a
  2696. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2697. left join (
  2698. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2699. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='8'
  2700. where isnull(ee.EATTRIBUTE1,'')=''
  2701. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2702. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2703. left join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  2704. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  2705. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2706. where a.ODNType='1' and a.Status='2' and a.OASNCode is null";
  2707. sql = string.Format(sql, Figure);
  2708. #endregion
  2709. if (!string.IsNullOrWhiteSpace(queryJson))
  2710. {
  2711. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2712. {
  2713. sql += " and a.ODNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2714. }
  2715. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  2716. {
  2717. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  2718. }
  2719. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  2720. {
  2721. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  2722. }
  2723. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2724. {
  2725. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2726. }
  2727. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2728. {
  2729. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2730. }
  2731. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2732. {
  2733. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2734. }
  2735. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  2736. {
  2737. sql += " and b.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  2738. }
  2739. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2740. {
  2741. string POStatus = queryParam["POStatus"].ToString();
  2742. if (POStatus == "0")
  2743. {
  2744. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2745. }
  2746. else if (POStatus == "1")
  2747. {
  2748. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2749. }
  2750. else
  2751. {
  2752. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2753. }
  2754. }
  2755. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  2756. {
  2757. string WHStatus = queryParam["WHStatus"].ToString();
  2758. if (WHStatus == "0")
  2759. {
  2760. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2761. }
  2762. else if (WHStatus == "1")
  2763. {
  2764. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)>0";
  2765. }
  2766. else
  2767. {
  2768. sql += " and a.Quantity-ISNULL(a.RCVQuantity,0)=0";
  2769. }
  2770. }
  2771. }
  2772. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2773. {
  2774. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2775. }
  2776. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2777. {
  2778. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2779. }
  2780. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2781. }
  2782. //开立得成品入库单
  2783. public DataTable GetGridJsonKLCPRK(string queryJson, ref Pagination jqgridparam)
  2784. {
  2785. DataTable dt = new DataTable();
  2786. var queryParam = queryJson.ToJObject();
  2787. List<DbParameter> parameter = new List<DbParameter>();
  2788. object Figure = GetDecimalDigits();
  2789. #region [SQL]
  2790. string sql = @"
  2791. select a.ID,a.RCVCode,a.Sequence,a.SourceCode as MOCode,a.WHCode,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  2792. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,
  2793. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  2794. CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity ,a.CreatePerson,a.CreateDateTime,
  2795. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  2796. ,case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable,b.EffectiveDays
  2797. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  2798. ,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,
  2799. a.EATTRIBUTE9,a.EATTRIBUTE10
  2800. from ICSManufactureReceive a
  2801. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2802. left join (
  2803. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  2804. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='9'
  2805. where isnull(ee.EATTRIBUTE1,'')=''
  2806. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  2807. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  2808. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  2809. --left join icsmo g on a.SourceCode=g.MOCode and a.WorkPoint=g.WorkPoint
  2810. where a.Status='1' and a.Type='1'";
  2811. sql = string.Format(sql, Figure);
  2812. #endregion
  2813. if (!string.IsNullOrWhiteSpace(queryJson))
  2814. {
  2815. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  2816. {
  2817. sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  2818. }
  2819. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  2820. {
  2821. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  2822. }
  2823. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  2824. {
  2825. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  2826. }
  2827. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  2828. {
  2829. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  2830. }
  2831. if (!string.IsNullOrWhiteSpace(queryParam["SCode"].ToString()))
  2832. {
  2833. sql += " and a.SourceCode like '%" + queryParam["SCode"].ToString() + "%' ";
  2834. }
  2835. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  2836. {
  2837. string POStatus = queryParam["POStatus"].ToString();
  2838. if (POStatus == "0")
  2839. {
  2840. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  2841. }
  2842. else if (POStatus == "1")
  2843. {
  2844. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  2845. }
  2846. else
  2847. {
  2848. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  2849. }
  2850. }
  2851. }
  2852. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  2853. {
  2854. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  2855. }
  2856. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  2857. {
  2858. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  2859. }
  2860. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  2861. }
  2862. /// <summary>
  2863. /// 点击审核委外到货单生成条码(审核委外到货单)
  2864. /// </summary>
  2865. public DataTable GetSubGridJsonWWSHDHByCreate(string ODNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2866. {
  2867. DataTable dt = new DataTable();
  2868. object Figure = GetDecimalDigits();
  2869. List<DbParameter> parameter = new List<DbParameter>();
  2870. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn005', " + Quantity + ",1,1,'')";
  2871. object Num = SqlHelper.ExecuteScalar(SeachNum);
  2872. //锐腾添加退补逻辑
  2873. string sql = @"select e.Enable, a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  2874. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  2875. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2876. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)+ISNULL(f.Quantity,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  2877. 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' else b.EATTRIBUTE2 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
  2878. ,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,
  2879. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  2880. from ICSODeliveryNotice a
  2881. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2882. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2883. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='8'
  2884. where isnull(a.EATTRIBUTE1,'')=''
  2885. group by b.TransCode,b.TransSequence
  2886. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence
  2887. left join ICSConfiguration e on e.Code='CompleteVerification002' and a.WorkPoint =e.WorkPoint
  2888. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2889. left join (select a.ODNCode,a.Sequence,a.WorkPoint, ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) as Quantity
  2890. from ICSODeliveryNotice a
  2891. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2892. left join ICSODeliveryNotice f ON a.ODNDetailID=Isnull(f.EATTRIBUTE4,'') and a.WorkPoint=f.WorkPoint and f.ODNType='2' and f.EATTRIBUTE3='退'
  2893. 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
  2894. WHERE 1 =1
  2895. and a.ODNCode='" + ODNCode + "' and a.Sequence='" + Sequence + "'";
  2896. sql += " and a.WorkPoint='" + WorkPoint + "'";
  2897. sql = string.Format(sql, Figure);
  2898. return Repository().FindTableBySql(sql.ToString());
  2899. }
  2900. /// <summary>
  2901. /// 点击开立成品入库生成条码(开立成品入库单)
  2902. /// </summary>
  2903. /// //--
  2904. public DataTable GetSubGridJsonKLCPRKByCreate(string RCVCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2905. {
  2906. DataTable dt = new DataTable();
  2907. object Figure = GetDecimalDigits();
  2908. List<DbParameter> parameter = new List<DbParameter>();
  2909. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn013', " + Quantity + ",1,2,'')";
  2910. object Num = SqlHelper.ExecuteScalar(SeachNum);
  2911. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  2912. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  2913. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  2914. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2915. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  2916. 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' else b.EATTRIBUTE2 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
  2917. ,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,
  2918. '' as EATTRIBUTE2,'' as EATTRIBUTE3,'' as EATTRIBUTE4,'' as EATTRIBUTE5,'' as EATTRIBUTE6,'' as EATTRIBUTE7,'' as EATTRIBUTE8,'' as EATTRIBUTE9,'' as EATTRIBUTE10
  2919. from ICSManufactureReceive a
  2920. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2921. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2922. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='9'
  2923. where isnull(a.EATTRIBUTE1,'')=''
  2924. group by b.TransCode,b.TransSequence
  2925. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence
  2926. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2927. WHERE 1 =1
  2928. and a.RCVCode='" + RCVCode + "' and a.Sequence='" + Sequence + "'";
  2929. sql += " and a.WorkPoint='" + WorkPoint + "'";
  2930. sql = string.Format(sql, Figure);
  2931. return Repository().FindTableBySql(sql.ToString());
  2932. }
  2933. /// <summary>
  2934. /// 点击审核到货单生成条码(审核到货单)
  2935. /// </summary>
  2936. public DataTable GetSubGridJsonSHDHByCreate(string DNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  2937. {
  2938. DataTable dt = new DataTable();
  2939. object Figure = GetDecimalDigits();
  2940. List<DbParameter> parameter = new List<DbParameter>();
  2941. /***
  2942. * 退退退退
  2943. * 退退
  2944. ***/
  2945. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn002', " + Quantity + ",1,1,'')";
  2946. object Num = SqlHelper.ExecuteScalar(SeachNum);
  2947. string checksql = $@"select a.ID from ICSDeliveryNotice a
  2948. inner join ICSDeliveryNotice b ON a.DNDetailID=Isnull(b.EATTRIBUTE8,'') and a.WorkPoint=b.WorkPoint and b.DNType='2' and b.EATTRIBUTE7='退'
  2949. where a.DNType='1' and a.DNCode='{DNCode}' and a.Sequence='{Sequence}' and a.WorkPoint='{WorkPoint}' ";
  2950. var checkdt = SqlHelper.CmdExecuteDataTable(checksql);
  2951. string sql = string.Empty;
  2952. if (checkdt.Rows.Count > 0)
  2953. {
  2954. sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  2955. CAST( " + Num + @"+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) AS DECIMAL(38,{0})) as Quantity,
  2956. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2957. 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,
  2958. 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' else b.EATTRIBUTE2 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
  2959. ,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,
  2960. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10,a.EATTRIBUTE11 AS EATTRIBUTE11
  2961. from ICSDeliveryNotice a
  2962. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2963. left join(select a.DNCode,a.Sequence,a.WorkPoint,
  2964. 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
  2965. from ICSDeliveryNotice a
  2966. 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
  2967. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2968. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='7'
  2969. where isnull(a.EATTRIBUTE1,'')=''
  2970. group by b.TransCode,b.TransSequence
  2971. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  2972. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2973. left join ICSDeliveryNotice f ON a.DNDetailID=Isnull(f.EATTRIBUTE8,'') and a.WorkPoint=f.WorkPoint and f.DNType='2' and f.EATTRIBUTE7='退'
  2974. 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
  2975. WHERE 1 =1
  2976. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  2977. }
  2978. else
  2979. {
  2980. sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  2981. CAST( " + Num + @"+ISNULL(j.Quantity,0) AS DECIMAL(38,{0})) as Quantity,
  2982. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  2983. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)+ISNULL(j.Quantity,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  2984. 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' else b.EATTRIBUTE2 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
  2985. ,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,
  2986. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10,a.EATTRIBUTE11 AS EATTRIBUTE11
  2987. from ICSDeliveryNotice a
  2988. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2989. left join(select a.DNCode,a.Sequence,a.WorkPoint,
  2990. 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
  2991. from ICSDeliveryNotice a
  2992. 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
  2993. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  2994. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='7'
  2995. where isnull(a.EATTRIBUTE1,'')=''
  2996. group by b.TransCode,b.TransSequence
  2997. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  2998. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  2999. 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
  3000. WHERE 1 =1
  3001. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  3002. }
  3003. sql += " and a.WorkPoint='" + WorkPoint + "'";
  3004. sql = string.Format(sql, Figure);
  3005. return Repository().FindTableBySql(sql.ToString());
  3006. }
  3007. /// <summary>
  3008. /// 点击归还生成条码(归还)
  3009. /// </summary>
  3010. public DataTable GetSubGridJsonGuiHuanByCreate(string ReturnCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  3011. {
  3012. DataTable dt = new DataTable();
  3013. object Figure = GetDecimalDigits();
  3014. List<DbParameter> parameter = new List<DbParameter>();
  3015. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn023', " + Quantity + ",1,4,'')";
  3016. object Num = SqlHelper.ExecuteScalar(SeachNum);
  3017. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  3018. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  3019. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  3020. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  3021. CAST( ( " + Num + @" -ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  3022. 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' else b.EATTRIBUTE2 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
  3023. ,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,
  3024. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  3025. from ICSReturn a
  3026. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3027. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  3028. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='6'
  3029. where isnull(a.EATTRIBUTE1,'')=''
  3030. group by b.TransCode,b.TransSequence
  3031. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence
  3032. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  3033. WHERE 1 =1
  3034. and a.ReturnCode='" + ReturnCode + "' and a.Sequence='" + Sequence + "'";
  3035. sql += " and a.WorkPoint='" + WorkPoint + "'";
  3036. sql = string.Format(sql, Figure);
  3037. return Repository().FindTableBySql(sql.ToString());
  3038. }
  3039. /// <summary>
  3040. /// 归还单生成条码
  3041. /// </summary>
  3042. /// <param name="POCode"></param>
  3043. /// <param name="PORow"></param>
  3044. /// <param name="keyValue"></param>
  3045. /// 已改
  3046. /// <returns></returns>
  3047. public int SubmitFormGuiHuan(string ReturnCode, string Sequence, string keyValue, string WorkPoint)
  3048. {
  3049. var queryParam = keyValue.ToJObject();
  3050. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3051. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3052. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3053. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3054. decimal LOTQTY = minPackQty;
  3055. string Pre = "GH" + ReturnCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3056. string sql = string.Empty;
  3057. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3058. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3059. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3060. string sqls = string.Empty;
  3061. string Colspan = "";
  3062. string str1 = "";
  3063. List<string> ExtensionIDList = new List<string>();
  3064. #region 装箱的功能
  3065. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3066. string VenCode = queryParam["VenCode"].ToString();
  3067. int PackCount = 0;//每箱放的数量
  3068. int Pack_YuShu = 0;//需要平摊的数量
  3069. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3070. List<PackModel> List_Pack = new List<PackModel>();
  3071. int ZQty = 0;
  3072. if (createPackCount > 0)
  3073. {
  3074. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3075. if (Pack_YuShu == 0)
  3076. {
  3077. PackCount = (createPageCount / createPackCount);
  3078. }
  3079. else
  3080. {
  3081. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3082. }
  3083. for (int jj = 0; jj < createPackCount; jj++)
  3084. {
  3085. object CARID = Guid.NewGuid();
  3086. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3087. sql += @" INSERT INTO dbo.ICSContainer
  3088. ( ID,ContainerCode ,
  3089. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3090. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3091. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3092. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3093. PackModel PP = new PackModel();
  3094. PP.ID = CARID.ToString();
  3095. PP.PackCode = Carton;
  3096. if (jj < Pack_YuShu)
  3097. {
  3098. PP.FristBarIndex = ZQty;
  3099. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3100. }
  3101. else
  3102. {
  3103. PP.FristBarIndex = ZQty;
  3104. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3105. }
  3106. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3107. List_Pack.Add(PP);
  3108. }
  3109. }
  3110. #endregion
  3111. for (int i = 0; i < createPageCount; i++)
  3112. {
  3113. if (i + 1 == createPageCount)
  3114. {
  3115. if (minPackQty * createPageCount > thisCreateQty)
  3116. {
  3117. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3118. }
  3119. }
  3120. 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();
  3121. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3122. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3123. bool flag = true;
  3124. foreach (var item in ExtensionIDList)
  3125. {
  3126. if (item == Colspan + WorkPoint)
  3127. {
  3128. flag = false;
  3129. }
  3130. }
  3131. if (ExtensionID == null && flag == true)
  3132. {
  3133. str1 = Guid.NewGuid().ToString();
  3134. 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)
  3135. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3136. 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(),
  3137. MUSER, MUSERNAME, WorkPoints);
  3138. }
  3139. else if (ExtensionID != null)
  3140. {
  3141. str1 = ExtensionID.ToString();
  3142. }
  3143. ExtensionIDList.Add(Colspan + WorkPoint);
  3144. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3145. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3146. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  3147. LotNo, ReturnCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3148. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  3149. //{
  3150. sql += string.Format(@"
  3151. insert into ICSInventoryLot
  3152. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3153. select
  3154. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','6','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3155. from ICSReturn where ReturnCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  3156. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ReturnCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3157. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3158. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3159. sql += "\r\n";
  3160. //装箱的功能
  3161. if (List_Pack.Count > 0)
  3162. {
  3163. PackModel mm = new PackModel();
  3164. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3165. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3166. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3167. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3168. }
  3169. //}
  3170. }
  3171. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3172. return count;
  3173. }
  3174. /// <summary>
  3175. /// 审核到货单生成条码
  3176. /// </summary>
  3177. /// <param name="POCode"></param>
  3178. /// <param name="PORow"></param>
  3179. /// <param name="keyValue"></param>
  3180. /// 2023 1117 传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则 lacy.xu
  3181. /// <returns></returns>
  3182. public int SubmitFormSHDH(string DNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  3183. {
  3184. var queryParam = keyValue.ToJObject();
  3185. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3186. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3187. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3188. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3189. decimal LOTQTY = minPackQty;
  3190. string Pre = "DN" + DNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3191. string sql = string.Empty;
  3192. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3193. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3194. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3195. string InvCode = queryParam["ClassCode"].ToString();
  3196. string sqls = string.Empty;
  3197. string Colspan = "";
  3198. string str1 = "";
  3199. string LotNo = string.Empty;
  3200. List<string> ExtensionIDList = new List<string>();
  3201. #region 装箱的功能
  3202. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3203. string VenCode = queryParam["VenCode"].ToString();
  3204. int PackCount = 0;//每箱放的数量
  3205. int Pack_YuShu = 0;//需要平摊的数量
  3206. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3207. List<PackModel> List_Pack = new List<PackModel>();
  3208. int ZQty = 0;
  3209. if (createPackCount > 0)
  3210. {
  3211. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3212. if (Pack_YuShu == 0)
  3213. {
  3214. PackCount = (createPageCount / createPackCount);
  3215. }
  3216. else
  3217. {
  3218. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3219. }
  3220. for (int jj = 0; jj < createPackCount; jj++)
  3221. {
  3222. object CARID = Guid.NewGuid();
  3223. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3224. sql += @" INSERT INTO dbo.ICSContainer
  3225. ( ID,ContainerCode ,
  3226. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3227. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3228. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3229. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3230. PackModel PP = new PackModel();
  3231. PP.ID = CARID.ToString();
  3232. PP.PackCode = Carton;
  3233. if (jj < Pack_YuShu)
  3234. {
  3235. PP.FristBarIndex = ZQty;
  3236. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3237. }
  3238. else
  3239. {
  3240. PP.FristBarIndex = ZQty;
  3241. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3242. }
  3243. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3244. List_Pack.Add(PP);
  3245. }
  3246. }
  3247. #endregion
  3248. for (int i = 0; i < createPageCount; i++)
  3249. {
  3250. if (i + 1 == createPageCount)
  3251. {
  3252. if (minPackQty * createPageCount > thisCreateQty)
  3253. {
  3254. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3255. }
  3256. }
  3257. 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();
  3258. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3259. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3260. bool flag = true;
  3261. foreach (var item in ExtensionIDList)
  3262. {
  3263. if (item == Colspan + WorkPoint)
  3264. {
  3265. flag = false;
  3266. }
  3267. }
  3268. if (ExtensionID == null && flag == true)
  3269. {
  3270. str1 = Guid.NewGuid().ToString();
  3271. 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)
  3272. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3273. 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(),
  3274. MUSER, MUSERNAME, WorkPoints);
  3275. }
  3276. else if (ExtensionID != null)
  3277. {
  3278. str1 = ExtensionID.ToString();
  3279. }
  3280. ExtensionIDList.Add(Colspan + WorkPoint);
  3281. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  3282. if (AMEnable == "true")
  3283. {
  3284. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  3285. }
  3286. else
  3287. {
  3288. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3289. }
  3290. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3291. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  3292. LotNo, DNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3293. sql += string.Format(@"
  3294. insert into ICSInventoryLot
  3295. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3296. select
  3297. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}'
  3298. ,'{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3299. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3300. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, DNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3301. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3302. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3303. sql += "\r\n";
  3304. //装箱的功能
  3305. if (List_Pack.Count > 0)
  3306. {
  3307. PackModel mm = new PackModel();
  3308. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3309. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3310. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3311. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3312. }
  3313. }
  3314. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3315. return count;
  3316. }
  3317. /// <summary>
  3318. /// 审核委外到货单生成条码
  3319. /// </summary>
  3320. /// <param name="POCode"></param>
  3321. /// <param name="PORow"></param>
  3322. /// <param name="keyValue"></param>
  3323. /// 已改
  3324. /// <returns></returns>
  3325. /// 2023 1117 传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则 lacy.xu
  3326. public int SubmitFormWWSHDH(string ODNCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  3327. {
  3328. var queryParam = keyValue.ToJObject();
  3329. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3330. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3331. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3332. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3333. decimal LOTQTY = minPackQty;
  3334. string Pre = "ODN" + ODNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3335. string sql = string.Empty;
  3336. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3337. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3338. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3339. string InvCode = queryParam["ClassCode"].ToString();
  3340. string sqls = string.Empty;
  3341. string Colspan = "";
  3342. string str1 = "";
  3343. string LotNo = string.Empty;
  3344. List<string> ExtensionIDList = new List<string>();
  3345. #region 装箱的功能
  3346. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3347. string VenCode = queryParam["VenCode"].ToString();
  3348. int PackCount = 0;//每箱放的数量
  3349. int Pack_YuShu = 0;//需要平摊的数量
  3350. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3351. List<PackModel> List_Pack = new List<PackModel>();
  3352. int ZQty = 0;
  3353. if (createPackCount > 0)
  3354. {
  3355. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3356. if (Pack_YuShu == 0)
  3357. {
  3358. PackCount = (createPageCount / createPackCount);
  3359. }
  3360. else
  3361. {
  3362. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3363. }
  3364. for (int jj = 0; jj < createPackCount; jj++)
  3365. {
  3366. object CARID = Guid.NewGuid();
  3367. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3368. sql += @" INSERT INTO dbo.ICSContainer
  3369. ( ID,ContainerCode ,
  3370. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3371. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3372. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3373. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3374. PackModel PP = new PackModel();
  3375. PP.ID = CARID.ToString();
  3376. PP.PackCode = Carton;
  3377. if (jj < Pack_YuShu)
  3378. {
  3379. PP.FristBarIndex = ZQty;
  3380. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3381. }
  3382. else
  3383. {
  3384. PP.FristBarIndex = ZQty;
  3385. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3386. }
  3387. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3388. List_Pack.Add(PP);
  3389. }
  3390. }
  3391. #endregion
  3392. for (int i = 0; i < createPageCount; i++)
  3393. {
  3394. if (i + 1 == createPageCount)
  3395. {
  3396. if (minPackQty * createPageCount > thisCreateQty)
  3397. {
  3398. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3399. }
  3400. }
  3401. 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();
  3402. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3403. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3404. bool flag = true;
  3405. foreach (var item in ExtensionIDList)
  3406. {
  3407. if (item == Colspan + WorkPoint)
  3408. {
  3409. flag = false;
  3410. }
  3411. }
  3412. if (ExtensionID == null && flag == true)
  3413. {
  3414. str1 = Guid.NewGuid().ToString();
  3415. 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)
  3416. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3417. 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(),
  3418. MUSER, MUSERNAME, WorkPoints);
  3419. }
  3420. else if (ExtensionID != null)
  3421. {
  3422. str1 = ExtensionID.ToString();
  3423. }
  3424. ExtensionIDList.Add(Colspan + WorkPoint);
  3425. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  3426. if (AMEnable == "true")
  3427. {
  3428. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  3429. }
  3430. else
  3431. {
  3432. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3433. }
  3434. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3435. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  3436. LotNo, ODNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3437. sql += string.Format(@"
  3438. insert into ICSInventoryLot
  3439. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3440. select
  3441. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','8','{3}','{4}', getdate(),'{5}','{9}'
  3442. ,'{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3443. from ICSODeliveryNotice where ODNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3444. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ODNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3445. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3446. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3447. sql += "\r\n";
  3448. //装箱的功能
  3449. if (List_Pack.Count > 0)
  3450. {
  3451. PackModel mm = new PackModel();
  3452. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3453. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3454. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3455. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3456. }
  3457. }
  3458. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3459. return count;
  3460. }
  3461. /// <summary>
  3462. /// 开立成品入库单
  3463. /// </summary>
  3464. /// <param name="POCode"></param>
  3465. /// <param name="PORow"></param>
  3466. /// <param name="keyValue"></param>
  3467. /// 已改
  3468. /// <returns></returns>
  3469. public int SubmitFormKLCPRK(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  3470. {
  3471. var queryParam = keyValue.ToJObject();
  3472. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3473. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3474. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3475. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3476. decimal LOTQTY = minPackQty;
  3477. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3478. string sql = string.Empty;
  3479. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3480. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3481. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3482. string sqls = string.Empty;
  3483. string Colspan = "";
  3484. string str1 = "";
  3485. List<string> ExtensionIDList = new List<string>();
  3486. #region 装箱的功能
  3487. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3488. string VenCode = queryParam["VenCode"].ToString();
  3489. int PackCount = 0;//每箱放的数量
  3490. int Pack_YuShu = 0;//需要平摊的数量
  3491. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3492. List<PackModel> List_Pack = new List<PackModel>();
  3493. int ZQty = 0;
  3494. if (createPackCount > 0)
  3495. {
  3496. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3497. if (Pack_YuShu == 0)
  3498. {
  3499. PackCount = (createPageCount / createPackCount);
  3500. }
  3501. else
  3502. {
  3503. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3504. }
  3505. for (int jj = 0; jj < createPackCount; jj++)
  3506. {
  3507. object CARID = Guid.NewGuid();
  3508. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3509. sql += @" INSERT INTO dbo.ICSContainer
  3510. ( ID,ContainerCode ,
  3511. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3512. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3513. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3514. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3515. PackModel PP = new PackModel();
  3516. PP.ID = CARID.ToString();
  3517. PP.PackCode = Carton;
  3518. if (jj < Pack_YuShu)
  3519. {
  3520. PP.FristBarIndex = ZQty;
  3521. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3522. }
  3523. else
  3524. {
  3525. PP.FristBarIndex = ZQty;
  3526. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3527. }
  3528. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3529. List_Pack.Add(PP);
  3530. }
  3531. }
  3532. #endregion
  3533. for (int i = 0; i < createPageCount; i++)
  3534. {
  3535. if (i + 1 == createPageCount)
  3536. {
  3537. if (minPackQty * createPageCount > thisCreateQty)
  3538. {
  3539. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3540. }
  3541. }
  3542. 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();
  3543. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3544. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3545. bool flag = true;
  3546. foreach (var item in ExtensionIDList)
  3547. {
  3548. if (item == Colspan + WorkPoint)
  3549. {
  3550. flag = false;
  3551. }
  3552. }
  3553. if (ExtensionID == null && flag == true)
  3554. {
  3555. str1 = Guid.NewGuid().ToString();
  3556. 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)
  3557. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3558. 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(),
  3559. MUSER, MUSERNAME, WorkPoints);
  3560. }
  3561. else if (ExtensionID != null)
  3562. {
  3563. str1 = ExtensionID.ToString();
  3564. }
  3565. ExtensionIDList.Add(Colspan + WorkPoint);
  3566. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3567. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3568. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  3569. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3570. sql += string.Format(@"
  3571. insert into ICSInventoryLot
  3572. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3573. select
  3574. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','9','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3575. from ICSManufactureReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3576. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3577. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3578. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3579. sql += "\r\n";
  3580. //装箱的功能
  3581. if (List_Pack.Count > 0)
  3582. {
  3583. PackModel mm = new PackModel();
  3584. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3585. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3586. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3587. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3588. }
  3589. }
  3590. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3591. return count;
  3592. }
  3593. //委外拒收单
  3594. public DataTable GetGridJsonWWJSD(string queryJson, ref Pagination jqgridparam)
  3595. {
  3596. DataTable dt = new DataTable();
  3597. var queryParam = queryJson.ToJObject();
  3598. List<DbParameter> parameter = new List<DbParameter>();
  3599. object Figure = GetDecimalDigits();
  3600. #region [SQL]
  3601. 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,
  3602. 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,
  3603. CAST(a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  3604. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  3605. ,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,
  3606. a.EATTRIBUTE9,a.EATTRIBUTE10
  3607. from ICSODeliveryNotice a
  3608. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3609. left join (
  3610. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  3611. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='11'
  3612. where isnull(ee.EATTRIBUTE1,'')=''
  3613. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  3614. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  3615. --inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  3616. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  3617. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  3618. where a.ODNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  3619. ";
  3620. sql = string.Format(sql, Figure);
  3621. #endregion
  3622. if (!string.IsNullOrWhiteSpace(queryJson))
  3623. {
  3624. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  3625. {
  3626. sql += " and a.ODNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  3627. }
  3628. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  3629. {
  3630. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  3631. }
  3632. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  3633. {
  3634. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  3635. }
  3636. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  3637. {
  3638. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  3639. }
  3640. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  3641. {
  3642. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  3643. }
  3644. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  3645. {
  3646. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  3647. }
  3648. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  3649. {
  3650. string POStatus = queryParam["POStatus"].ToString();
  3651. if (POStatus == "0")
  3652. {
  3653. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  3654. }
  3655. else if (POStatus == "1")
  3656. {
  3657. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  3658. }
  3659. else
  3660. {
  3661. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  3662. }
  3663. }
  3664. }
  3665. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  3666. {
  3667. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  3668. }
  3669. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  3670. {
  3671. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  3672. }
  3673. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  3674. }
  3675. //拒收单
  3676. public DataTable GetGridJsonJSD(string queryJson, ref Pagination jqgridparam)
  3677. {
  3678. DataTable dt = new DataTable();
  3679. var queryParam = queryJson.ToJObject();
  3680. List<DbParameter> parameter = new List<DbParameter>();
  3681. object Figure = GetDecimalDigits();
  3682. #region [SQL]
  3683. string sql = @"select a.ID,a.DNCode ,a.Sequence ,a.VenCode,e.VenName,a.InvCode, b.InvName,b.InvStd,b.InvDesc,b.InvUnit,
  3684. 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,
  3685. CAST( a.UnitPrice AS DECIMAL(38,{0})) as UnitPrice,a.Currency,a.CreatePerson,a.CreateDateTime,
  3686. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  3687. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  3688. ,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,
  3689. a.EATTRIBUTE9,a.EATTRIBUTE10
  3690. from ICSDeliveryNotice a
  3691. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3692. left join (
  3693. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  3694. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='10'
  3695. where isnull(ee.EATTRIBUTE1,'')=''
  3696. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  3697. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  3698. --inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  3699. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  3700. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  3701. where a.DNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  3702. ";
  3703. sql = string.Format(sql, Figure);
  3704. #endregion
  3705. if (!string.IsNullOrWhiteSpace(queryJson))
  3706. {
  3707. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  3708. {
  3709. sql += " and a.DNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  3710. }
  3711. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  3712. {
  3713. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  3714. }
  3715. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  3716. {
  3717. sql += " and e.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  3718. }
  3719. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  3720. {
  3721. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  3722. }
  3723. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  3724. {
  3725. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  3726. }
  3727. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  3728. {
  3729. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  3730. }
  3731. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  3732. {
  3733. string POStatus = queryParam["POStatus"].ToString();
  3734. if (POStatus == "0")
  3735. {
  3736. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  3737. }
  3738. else if (POStatus == "1")
  3739. {
  3740. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  3741. }
  3742. else
  3743. {
  3744. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  3745. }
  3746. }
  3747. }
  3748. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  3749. {
  3750. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  3751. }
  3752. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  3753. {
  3754. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  3755. }
  3756. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  3757. }
  3758. //领料申请退料
  3759. public DataTable GetGridJsonLLSQTL(string queryJson, ref Pagination jqgridparam)
  3760. {
  3761. DataTable dt = new DataTable();
  3762. var queryParam = queryJson.ToJObject();
  3763. List<DbParameter> parameter = new List<DbParameter>();
  3764. object Figure = GetDecimalDigits();
  3765. #region [SQL]
  3766. 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,
  3767. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount,
  3768. CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  3769. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  3770. ,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,
  3771. a.EATTRIBUTE9,a.EATTRIBUTE10
  3772. from ICSMOApplyNegDetail a
  3773. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  3774. left JOIN ICSMOApply bb ON a.SourceDetailID=bb.ApplyDetailID AND a.WorkPoint=bb.WorkPoint
  3775. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3776. left join (
  3777. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  3778. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='12'
  3779. where isnull(ee.EATTRIBUTE1,'')=''
  3780. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  3781. )c
  3782. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  3783. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  3784. WHERE d.Type='2' and d.Status='2' ";
  3785. sql = string.Format(sql, Figure);
  3786. #endregion
  3787. if (!string.IsNullOrWhiteSpace(queryJson))
  3788. {
  3789. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  3790. {
  3791. sql += " and a.ApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  3792. }
  3793. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  3794. {
  3795. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  3796. }
  3797. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  3798. {
  3799. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  3800. }
  3801. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  3802. {
  3803. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  3804. }
  3805. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  3806. {
  3807. sql += " and a.MTIME >= '" + queryParam["FromTime"].ToString() + "' ";
  3808. }
  3809. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  3810. {
  3811. sql += " and a.MTIME <= '" + queryParam["ToTime"].ToString() + "' ";
  3812. }
  3813. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  3814. {
  3815. string POStatus = queryParam["POStatus"].ToString();
  3816. if (POStatus == "0")
  3817. {
  3818. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  3819. }
  3820. else if (POStatus == "1")
  3821. {
  3822. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  3823. }
  3824. else
  3825. {
  3826. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  3827. }
  3828. }
  3829. }
  3830. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  3831. {
  3832. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  3833. }
  3834. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  3835. {
  3836. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  3837. }
  3838. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  3839. }
  3840. /// <summary>
  3841. /// 拒收生成条码
  3842. /// </summary>
  3843. /// <param name="POCode"></param>
  3844. /// <param name="PORow"></param>
  3845. /// <param name="keyValue"></param>
  3846. /// <returns></returns>
  3847. public int SubmitFormJSD(string DNCode, string Sequence, string keyValue, string WorkPoint)
  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 = "JS" + DNCode + (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 sqls = string.Empty;
  3861. string Colspan = "";
  3862. string str1 = "";
  3863. List<string> ExtensionIDList = new List<string>();
  3864. #region 装箱的功能
  3865. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  3866. string VenCode = queryParam["VenCode"].ToString();
  3867. int PackCount = 0;//每箱放的数量
  3868. int Pack_YuShu = 0;//需要平摊的数量
  3869. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  3870. List<PackModel> List_Pack = new List<PackModel>();
  3871. int ZQty = 0;
  3872. if (createPackCount > 0)
  3873. {
  3874. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  3875. if (Pack_YuShu == 0)
  3876. {
  3877. PackCount = (createPageCount / createPackCount);
  3878. }
  3879. else
  3880. {
  3881. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  3882. }
  3883. for (int jj = 0; jj < createPackCount; jj++)
  3884. {
  3885. object CARID = Guid.NewGuid();
  3886. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  3887. sql += @" INSERT INTO dbo.ICSContainer
  3888. ( ID,ContainerCode ,
  3889. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  3890. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  3891. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  3892. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  3893. PackModel PP = new PackModel();
  3894. PP.ID = CARID.ToString();
  3895. PP.PackCode = Carton;
  3896. if (jj < Pack_YuShu)
  3897. {
  3898. PP.FristBarIndex = ZQty;
  3899. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  3900. }
  3901. else
  3902. {
  3903. PP.FristBarIndex = ZQty;
  3904. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  3905. }
  3906. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  3907. List_Pack.Add(PP);
  3908. }
  3909. }
  3910. #endregion
  3911. for (int i = 0; i < createPageCount; i++)
  3912. {
  3913. if (i + 1 == createPageCount)
  3914. {
  3915. if (minPackQty * createPageCount > thisCreateQty)
  3916. {
  3917. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  3918. }
  3919. }
  3920. 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();
  3921. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  3922. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  3923. bool flag = true;
  3924. foreach (var item in ExtensionIDList)
  3925. {
  3926. if (item == Colspan + WorkPoint)
  3927. {
  3928. flag = false;
  3929. }
  3930. }
  3931. if (ExtensionID == null && flag == true)
  3932. {
  3933. str1 = Guid.NewGuid().ToString();
  3934. 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)
  3935. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  3936. 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(),
  3937. MUSER, MUSERNAME, WorkPoints);
  3938. }
  3939. else if (ExtensionID != null)
  3940. {
  3941. str1 = ExtensionID.ToString();
  3942. }
  3943. ExtensionIDList.Add(Colspan + WorkPoint);
  3944. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  3945. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  3946. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  3947. LotNo, DNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  3948. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  3949. //{
  3950. sql += string.Format(@"
  3951. insert into ICSInventoryLot
  3952. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  3953. select
  3954. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','10','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  3955. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  3956. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, DNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  3957. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  3958. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  3959. sql += "\r\n";
  3960. //装箱的功能
  3961. if (List_Pack.Count > 0)
  3962. {
  3963. PackModel mm = new PackModel();
  3964. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  3965. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  3966. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  3967. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  3968. }
  3969. //}
  3970. }
  3971. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  3972. return count;
  3973. }
  3974. /// <summary>
  3975. /// 委外拒收生成条码
  3976. /// </summary>
  3977. /// <param name="POCode"></param>
  3978. /// <param name="PORow"></param>
  3979. /// <param name="keyValue"></param>
  3980. /// <returns></returns>
  3981. public int SubmitFormWWJSD(string ODNCode, string Sequence, string keyValue, string WorkPoint)
  3982. {
  3983. var queryParam = keyValue.ToJObject();
  3984. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  3985. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  3986. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  3987. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  3988. decimal LOTQTY = minPackQty;
  3989. string Pre = "OJS" + ODNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  3990. string sql = string.Empty;
  3991. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3992. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3993. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  3994. string sqls = string.Empty;
  3995. string Colspan = "";
  3996. string str1 = "";
  3997. List<string> ExtensionIDList = new List<string>();
  3998. #region 装箱的功能
  3999. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4000. string VenCode = queryParam["VenCode"].ToString();
  4001. int PackCount = 0;//每箱放的数量
  4002. int Pack_YuShu = 0;//需要平摊的数量
  4003. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4004. List<PackModel> List_Pack = new List<PackModel>();
  4005. int ZQty = 0;
  4006. if (createPackCount > 0)
  4007. {
  4008. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4009. if (Pack_YuShu == 0)
  4010. {
  4011. PackCount = (createPageCount / createPackCount);
  4012. }
  4013. else
  4014. {
  4015. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4016. }
  4017. for (int jj = 0; jj < createPackCount; jj++)
  4018. {
  4019. object CARID = Guid.NewGuid();
  4020. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4021. sql += @" INSERT INTO dbo.ICSContainer
  4022. ( ID,ContainerCode ,
  4023. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4024. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4025. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4026. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4027. PackModel PP = new PackModel();
  4028. PP.ID = CARID.ToString();
  4029. PP.PackCode = Carton;
  4030. if (jj < Pack_YuShu)
  4031. {
  4032. PP.FristBarIndex = ZQty;
  4033. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4034. }
  4035. else
  4036. {
  4037. PP.FristBarIndex = ZQty;
  4038. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4039. }
  4040. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4041. List_Pack.Add(PP);
  4042. }
  4043. }
  4044. #endregion
  4045. for (int i = 0; i < createPageCount; i++)
  4046. {
  4047. if (i + 1 == createPageCount)
  4048. {
  4049. if (minPackQty * createPageCount > thisCreateQty)
  4050. {
  4051. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4052. }
  4053. }
  4054. 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();
  4055. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4056. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4057. bool flag = true;
  4058. foreach (var item in ExtensionIDList)
  4059. {
  4060. if (item == Colspan + WorkPoint)
  4061. {
  4062. flag = false;
  4063. }
  4064. }
  4065. if (ExtensionID == null && flag == true)
  4066. {
  4067. str1 = Guid.NewGuid().ToString();
  4068. 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)
  4069. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4070. 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(),
  4071. MUSER, MUSERNAME, WorkPoints);
  4072. }
  4073. else if (ExtensionID != null)
  4074. {
  4075. str1 = ExtensionID.ToString();
  4076. }
  4077. ExtensionIDList.Add(Colspan + WorkPoint);
  4078. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4079. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4080. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  4081. LotNo, ODNCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4082. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  4083. //{
  4084. sql += string.Format(@"
  4085. insert into ICSInventoryLot
  4086. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4087. select
  4088. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','11','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4089. from ICSODeliveryNotice where ODNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  4090. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ODNCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  4091. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4092. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4093. sql += "\r\n";
  4094. //装箱的功能
  4095. if (List_Pack.Count > 0)
  4096. {
  4097. PackModel mm = new PackModel();
  4098. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4099. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4100. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4101. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4102. }
  4103. //}
  4104. }
  4105. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4106. return count;
  4107. }
  4108. /// <summary>
  4109. /// 点击审核到货单生成条码(审核到货单)
  4110. /// </summary>
  4111. public DataTable GetSubGridJsonJSDByCreate(string DNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4112. {
  4113. DataTable dt = new DataTable();
  4114. object Figure = GetDecimalDigits();
  4115. List<DbParameter> parameter = new List<DbParameter>();
  4116. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn003', " + Quantity + ",1,1,'')";
  4117. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4118. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  4119. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4120. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4121. 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' else b.EATTRIBUTE2 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
  4122. ,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,
  4123. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4124. from ICSDeliveryNotice a
  4125. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4126. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4127. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='10'
  4128. where isnull(a.EATTRIBUTE1,'')=''
  4129. group by b.TransCode,b.TransSequence
  4130. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence
  4131. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  4132. WHERE a.DNType='3'
  4133. and a.DNCode='" + DNCode + "' and a.Sequence='" + Sequence + "'";
  4134. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4135. sql = string.Format(sql, Figure);
  4136. return Repository().FindTableBySql(sql.ToString());
  4137. }
  4138. /// <summary>
  4139. /// 点击审核委外到货单生成条码(审核委外到货单)
  4140. /// </summary>
  4141. public DataTable GetSubGridJsonWWJSDByCreate(string ODNCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4142. {
  4143. DataTable dt = new DataTable();
  4144. object Figure = GetDecimalDigits();
  4145. List<DbParameter> parameter = new List<DbParameter>();
  4146. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn006', " + Quantity + ",1,1,'')";
  4147. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4148. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  4149. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  4150. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  4151. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4152. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4153. 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' else b.EATTRIBUTE2 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
  4154. ,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,
  4155. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4156. from ICSODeliveryNotice a
  4157. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4158. left join (select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4159. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='11'
  4160. where isnull(a.EATTRIBUTE1,'')=''
  4161. group by b.TransCode,b.TransSequence
  4162. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence
  4163. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  4164. WHERE a.ODNType='3'
  4165. and a.ODNCode='" + ODNCode + "' and a.Sequence='" + Sequence + "'";
  4166. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4167. sql = string.Format(sql, Figure);
  4168. return Repository().FindTableBySql(sql.ToString());
  4169. }
  4170. //获取委外退料源头条码
  4171. public DataTable GetWeiWaiTLSrcLot(string OApplyNegCode, string Sequence, string WorkPoint)
  4172. {
  4173. DataTable dt = new DataTable();
  4174. List<DbParameter> parameter = new List<DbParameter>();
  4175. string sql = @"select C.LotNo from ICSOApplyNegDetail A
  4176. INNER JOIN ICSOIssue B ON B.PickID=A.SourceDetailID AND B.InvCode=A.InvCode
  4177. INNER JOIN ICSWareHouseLotInfoLog C
  4178. ON C.TransCode=B.SourceCode AND SUBSTRING(C.TransSequence,0,CharIndex('~',C.TransSequence))=B.SourceSequence
  4179. AND C.WorkPoint=B.WorkPoint
  4180. AND C.TransType=3 AND C.BusinessCode=5
  4181. where A.OApplyNegCode='" + OApplyNegCode + "' and A.Sequence='" + Sequence + "' and A.WorkPoint='" + WorkPoint + @"'
  4182. order by C.MTIME desc";
  4183. return Repository().FindTableBySql(sql.ToString());
  4184. }
  4185. //获取领料申请源头条码
  4186. public DataTable GetLLSQSrcLot(string ApplyNegCode, string Sequence, string WorkPoint)
  4187. {
  4188. DataTable dt = new DataTable();
  4189. List<DbParameter> parameter = new List<DbParameter>();
  4190. string sql = @"select C.LotNo from ICSMOApplyNegDetail A
  4191. INNER JOIN ICSMOApply B ON B.EATTRIBUTE30=A.SourceDetailID AND B.InvCode=A.InvCode
  4192. INNER JOIN ICSWareHouseLotInfoLog C ON C.TransCode=B.ApplyCode AND C.TransSequence=B.Sequence
  4193. AND C.TransType=3 AND C.BusinessCode=14
  4194. where A.ApplyNegCode='" + ApplyNegCode + "' and A.Sequence='" + Sequence + "' and A.WorkPoint='" + WorkPoint + @"'
  4195. order by C.MTIME desc";
  4196. return Repository().FindTableBySql(sql.ToString());
  4197. }
  4198. //获取条码备用字段568(派纳特殊需求---销售退货直接取单据备用字段信息)
  4199. public DataTable GetSSDDocEATTRIBUTEInfo(string SSDCode, string Sequence, string WorkPoint)
  4200. {
  4201. string sql = @"select A.CreateDateTime AS ProductDate,B.BatchCode AS BatchCode,A.EATTRIBUTE3,A.EATTRIBUTE5,A.EATTRIBUTE6,A.EATTRIBUTE8 from ICSSSD A
  4202. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID
  4203. where A.SSDCode='" + SSDCode + "' and A.Sequence='" + Sequence + "' and A.WorkPoint='" + WorkPoint + "'";
  4204. return Repository().FindTableBySql(sql.ToString());
  4205. }
  4206. //获取业务源头条码备用字段456(派纳特殊需求)
  4207. public DataTable GetSrcLotNoInfoPN(string LotNo, string WorkPoint)
  4208. {
  4209. try
  4210. {
  4211. string sql = "SELECT '' AS EATTRIBUTE3,'' AS EATTRIBUTE5,'' AS EATTRIBUTE6,'' AS EATTRIBUTE8 ";
  4212. DataTable dt = new DataTable();
  4213. List<DbParameter> parameter = new List<DbParameter>();
  4214. string lotsql = @" select A.Type,B.TransCode,B.TransSequence from ICSInventoryLot A
  4215. INNER JOIN ICSInventoryLotDetail B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  4216. WHERE A.LotNo='" + LotNo + "' AND A.WorkPoint='" + WorkPoint + "'";
  4217. dt = SqlHelper.GetDataTableBySql(lotsql);
  4218. if (dt.Rows.Count > 0)
  4219. {
  4220. if (dt.Rows[0]["Type"].ToString() == "101" || dt.Rows[0]["Type"].ToString() == "102")//分批合批或形态转换后条码 需要找到最初的原条码确认单据后再取备用字段
  4221. {
  4222. string OriginalLot = LotNo.Split('-')[0];
  4223. lotsql = @" select A.Type,B.TransCode,B.TransSequence from ICSInventoryLot A
  4224. INNER JOIN ICSInventoryLotDetail B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  4225. WHERE A.LotNo='" + OriginalLot + "' AND A.WorkPoint='" + WorkPoint + "'";
  4226. dt = SqlHelper.GetDataTableBySql(lotsql);
  4227. if (dt.Rows.Count == 0)
  4228. {
  4229. return Repository().FindTableBySql(sql.ToString());
  4230. }
  4231. else
  4232. {
  4233. LotNo = OriginalLot;
  4234. }
  4235. }
  4236. if (dt.Rows[0]["Type"].ToString() == "0" || dt.Rows[0]["Type"].ToString() == "2"
  4237. || dt.Rows[0]["Type"].ToString() == "12" || dt.Rows[0]["Type"].ToString() == "24")//期初条码 成品条码 生产退料条码 销售退货条码 取条码备用字段
  4238. {
  4239. sql = @"SELECT B.BatchCode AS BatchCode,A.ProductDate AS ProductDate,A.EATTRIBUTE3 as EATTRIBUTE3,A.EATTRIBUTE5 AS EATTRIBUTE5
  4240. ,A.EATTRIBUTE6 AS EATTRIBUTE6,A.EATTRIBUTE8 AS EATTRIBUTE8
  4241. from ICSInventoryLot A
  4242. LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID
  4243. where A.LotNo = '" + LotNo + "' and A.WorkPoint = '" + WorkPoint + "'";
  4244. }
  4245. else if (dt.Rows[0]["Type"].ToString() == "22")//采购入库(标准收货单)条码 取单据备用字段
  4246. {
  4247. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4248. LEFT JOIN ICSPurchaseReceive B ON B.RCVCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4249. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4250. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4251. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4252. }
  4253. else if (dt.Rows[0]["Type"].ToString() == "23")//委外入库(委外收货单)条码 取单据备用字段
  4254. {
  4255. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4256. LEFT JOIN ICSOutsourcingReceive B ON B.RCVCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4257. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4258. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4259. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4260. }
  4261. else if (dt.Rows[0]["Type"].ToString() == "3")//成品入库(完工申报单)条码 取单据备用字段
  4262. {
  4263. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4264. LEFT JOIN ICSMO B ON B.MOCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4265. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4266. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4267. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4268. }
  4269. else if (dt.Rows[0]["Type"].ToString() == "5")//杂收条码 取单据备用字段
  4270. {
  4271. sql = @"select C.ProductDate AS ProductDate,D.BatchCode AS BatchCode,B.EATTRIBUTE3,B.EATTRIBUTE5,B.EATTRIBUTE6,B.EATTRIBUTE8 from ICSInventoryLotDetail A
  4272. LEFT JOIN ICSOtherIn B ON B.InCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint
  4273. LEFT JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  4274. LEFT JOIN ICSExtension D ON D.ID=C.ExtensionID
  4275. WHERE A.LotNo='" + LotNo + "' AND B.WorkPoint='" + WorkPoint + "'";
  4276. }
  4277. }
  4278. return Repository().FindTableBySql(sql.ToString());
  4279. }
  4280. catch (Exception ex)
  4281. {
  4282. throw new Exception(ex.Message);
  4283. }
  4284. }
  4285. public DataTable GetSubGridJsonLLSQDByCreate(string ApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4286. {
  4287. DataTable dt = new DataTable();
  4288. object Figure = GetDecimalDigits();
  4289. List<DbParameter> parameter = new List<DbParameter>();
  4290. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn018', " + Quantity + ",1,2,'')";
  4291. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4292. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit,
  4293. CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  4294. CAST( a.Amount as DECIMAL(38,{0})) as Amount,
  4295. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4296. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4297. 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' else b.EATTRIBUTE2 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
  4298. ,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,
  4299. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4300. from ICSMOApplyNegDetail a
  4301. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  4302. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4303. left join (
  4304. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4305. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='12'
  4306. where isnull(a.EATTRIBUTE1,'')=''
  4307. group by b.TransCode,b.TransSequence
  4308. ) c on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  4309. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  4310. WHERE d.Type='2' and d.Status='2'
  4311. and a.ApplyNegCode='" + ApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  4312. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4313. sql = string.Format(sql, Figure);
  4314. return Repository().FindTableBySql(sql.ToString());
  4315. }
  4316. //领料申请退料生成条码
  4317. public int SubmitFormLLSQTL(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  4318. {
  4319. var queryParam = keyValue.ToJObject();
  4320. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4321. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  4322. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  4323. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4324. decimal LOTQTY = minPackQty;
  4325. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  4326. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  4327. string Pre = "MA" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4328. string sql = string.Empty;
  4329. //string VendorLot = queryParam["VendorLot"].ToString();
  4330. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4331. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4332. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4333. string sqls = string.Empty;
  4334. string Colspan = "";
  4335. string str1 = "";
  4336. List<string> ExtensionIDList = new List<string>();
  4337. #region 装箱的功能
  4338. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4339. string VenCode = queryParam["VenCode"].ToString();
  4340. int PackCount = 0;//每箱放的数量
  4341. int Pack_YuShu = 0;//需要平摊的数量
  4342. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4343. List<PackModel> List_Pack = new List<PackModel>();
  4344. int ZQty = 0;
  4345. if (createPackCount > 0)
  4346. {
  4347. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4348. if (Pack_YuShu == 0)
  4349. {
  4350. PackCount = (createPageCount / createPackCount);
  4351. }
  4352. else
  4353. {
  4354. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4355. }
  4356. for (int jj = 0; jj < createPackCount; jj++)
  4357. {
  4358. object CARID = Guid.NewGuid();
  4359. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4360. sql += @" INSERT INTO dbo.ICSContainer
  4361. ( ID,ContainerCode ,
  4362. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4363. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4364. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4365. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4366. PackModel PP = new PackModel();
  4367. PP.ID = CARID.ToString();
  4368. PP.PackCode = Carton;
  4369. if (jj < Pack_YuShu)
  4370. {
  4371. PP.FristBarIndex = ZQty;
  4372. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4373. }
  4374. else
  4375. {
  4376. PP.FristBarIndex = ZQty;
  4377. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4378. }
  4379. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4380. List_Pack.Add(PP);
  4381. }
  4382. }
  4383. #endregion
  4384. for (int i = 0; i < createPageCount; i++)
  4385. {
  4386. if (i + 1 == createPageCount)
  4387. {
  4388. if (minPackQty * createPageCount > thisCreateQty)
  4389. {
  4390. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4391. }
  4392. }
  4393. 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();
  4394. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4395. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4396. bool flag = true;
  4397. foreach (var item in ExtensionIDList)
  4398. {
  4399. if (item == Colspan + WorkPoint)
  4400. {
  4401. flag = false;
  4402. }
  4403. }
  4404. if (ExtensionID == null && flag == true)
  4405. {
  4406. str1 = Guid.NewGuid().ToString();
  4407. 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)
  4408. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4409. 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(),
  4410. MUSER, MUSERNAME, WorkPoints);
  4411. }
  4412. else if (ExtensionID != null)
  4413. {
  4414. str1 = ExtensionID.ToString();
  4415. }
  4416. ExtensionIDList.Add(Colspan + WorkPoint);
  4417. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4418. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4419. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  4420. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4421. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  4422. //{
  4423. sql += string.Format(@"insert into ICSInventoryLot
  4424. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4425. select
  4426. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','12','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4427. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  4428. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  4429. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4430. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4431. sql += "\r\n";
  4432. //装箱的功能
  4433. if (List_Pack.Count > 0)
  4434. {
  4435. PackModel mm = new PackModel();
  4436. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4437. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4438. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4439. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4440. }
  4441. //}
  4442. }
  4443. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4444. return count;
  4445. }
  4446. public int SubmitFormLLSQTLNew(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  4447. {
  4448. var queryParam = keyValue.ToJObject();
  4449. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4450. decimal minPackQty = 1;
  4451. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4452. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  4453. List<decimal> lotQtys = new List<decimal>();
  4454. foreach (var jLotno in jLotnos)
  4455. {
  4456. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  4457. lotQtys.Add(qty);
  4458. }
  4459. int createPageCount = lotQtys.Count();
  4460. string Pre = "MA" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4461. string sql = string.Empty;
  4462. //string VendorLot = queryParam["VendorLot"].ToString();
  4463. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4464. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4465. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4466. string sqls = string.Empty;
  4467. string Colspan = "";
  4468. string str1 = "";
  4469. List<string> ExtensionIDList = new List<string>();
  4470. #region 装箱的功能
  4471. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4472. string VenCode = queryParam["VenCode"].ToString();
  4473. int PackCount = 0;//每箱放的数量
  4474. int Pack_YuShu = 0;//需要平摊的数量
  4475. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4476. List<PackModel> List_Pack = new List<PackModel>();
  4477. int ZQty = 0;
  4478. if (createPackCount > 0)
  4479. {
  4480. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4481. if (Pack_YuShu == 0)
  4482. {
  4483. PackCount = (createPageCount / createPackCount);
  4484. }
  4485. else
  4486. {
  4487. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4488. }
  4489. for (int jj = 0; jj < createPackCount; jj++)
  4490. {
  4491. object CARID = Guid.NewGuid();
  4492. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4493. sql += @" INSERT INTO dbo.ICSContainer
  4494. ( ID,ContainerCode ,
  4495. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4496. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4497. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4498. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4499. PackModel PP = new PackModel();
  4500. PP.ID = CARID.ToString();
  4501. PP.PackCode = Carton;
  4502. if (jj < Pack_YuShu)
  4503. {
  4504. PP.FristBarIndex = ZQty;
  4505. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4506. }
  4507. else
  4508. {
  4509. PP.FristBarIndex = ZQty;
  4510. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4511. }
  4512. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4513. List_Pack.Add(PP);
  4514. }
  4515. }
  4516. #endregion
  4517. for (int i = 0; i < lotQtys.Count(); i++)
  4518. {
  4519. decimal LOTQTY = lotQtys[i];
  4520. 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();
  4521. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4522. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4523. bool flag = true;
  4524. foreach (var item in ExtensionIDList)
  4525. {
  4526. if (item == Colspan + WorkPoint)
  4527. {
  4528. flag = false;
  4529. }
  4530. }
  4531. if (ExtensionID == null && flag == true)
  4532. {
  4533. str1 = Guid.NewGuid().ToString();
  4534. 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)
  4535. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4536. 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(),
  4537. MUSER, MUSERNAME, WorkPoints);
  4538. }
  4539. else if (ExtensionID != null)
  4540. {
  4541. str1 = ExtensionID.ToString();
  4542. }
  4543. ExtensionIDList.Add(Colspan + WorkPoint);
  4544. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4545. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4546. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  4547. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4548. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  4549. //{
  4550. sql += string.Format(@"insert into ICSInventoryLot
  4551. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4552. select
  4553. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','12','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4554. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  4555. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  4556. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4557. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4558. sql += "\r\n";
  4559. //装箱的功能
  4560. if (List_Pack.Count > 0)
  4561. {
  4562. PackModel mm = new PackModel();
  4563. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4564. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4565. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4566. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4567. }
  4568. //}
  4569. }
  4570. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4571. return count;
  4572. }
  4573. //材料出库退料
  4574. public DataTable GetGridJsonCLCK(string queryJson, ref Pagination jqgridparam)
  4575. {
  4576. DataTable dt = new DataTable();
  4577. var queryParam = queryJson.ToJObject();
  4578. List<DbParameter> parameter = new List<DbParameter>();
  4579. object Figure = GetDecimalDigits();
  4580. #region [SQL]
  4581. string sql = @"
  4582. select a.ID,a.ApplyNegCode,a.Sequence,g.IssueCode as SCode,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  4583. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity , case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  4584. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,6)) as EffectiveDays ,
  4585. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.IssueNegQuantity AS DECIMAL(38,{0})) as IssueNegQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,
  4586. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  4587. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  4588. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  4589. from ICSMOApplyNegDetail a
  4590. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  4591. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4592. left join (
  4593. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  4594. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='13'
  4595. where isnull(ee.EATTRIBUTE1,'')=''
  4596. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  4597. )c
  4598. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  4599. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  4600. left join ICSMOIssue g on a.SourceDetailID=g.IssueDetailID and a.WorkPoint=g.WorkPoint
  4601. WHERE d.Type='3' and d.Status='2' ";
  4602. sql = string.Format(sql, Figure);
  4603. #endregion
  4604. if (!string.IsNullOrWhiteSpace(queryJson))
  4605. {
  4606. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  4607. {
  4608. sql += " and a.ApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  4609. }
  4610. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  4611. {
  4612. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  4613. }
  4614. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  4615. {
  4616. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  4617. }
  4618. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  4619. {
  4620. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  4621. }
  4622. if (!string.IsNullOrWhiteSpace(queryParam["SCode"].ToString()))
  4623. {
  4624. sql += " and g.IssueCode like '%" + queryParam["SCode"].ToString() + "%' ";
  4625. }
  4626. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  4627. {
  4628. string POStatus = queryParam["POStatus"].ToString();
  4629. if (POStatus == "0")
  4630. {
  4631. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  4632. }
  4633. else if (POStatus == "1")
  4634. {
  4635. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  4636. }
  4637. else
  4638. {
  4639. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  4640. }
  4641. }
  4642. }
  4643. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  4644. {
  4645. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  4646. }
  4647. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  4648. {
  4649. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  4650. }
  4651. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  4652. }
  4653. //材料出库退料
  4654. public DataTable GetSubGridJsonCLCKByCreate(string ApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4655. {
  4656. DataTable dt = new DataTable();
  4657. object Figure = GetDecimalDigits();
  4658. List<DbParameter> parameter = new List<DbParameter>();
  4659. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn019', " + Quantity + ",1,2,'')";
  4660. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4661. string sql = @"select a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, CAST( " + Num + @" AS DECIMAL(38,{0})) as Quantity,
  4662. CAST( a.Amount as DECIMAL(38,{0})) as Amount, CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4663. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4664. 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' else b.EATTRIBUTE2 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
  4665. ,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,
  4666. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4667. from ICSMOApplyNegDetail a
  4668. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  4669. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4670. left join (
  4671. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4672. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='13'
  4673. where isnull(a.EATTRIBUTE1,'')=''
  4674. group by b.TransCode,b.TransSequence
  4675. ) c on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  4676. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  4677. WHERE d.Type='3' and d.Status='2'
  4678. and a.ApplyNegCode='" + ApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  4679. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4680. sql = string.Format(sql, Figure);
  4681. return Repository().FindTableBySql(sql.ToString());
  4682. }
  4683. //材料出库退料生成条码
  4684. public int SubmitFormCLCKT(string ApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  4685. {
  4686. var queryParam = keyValue.ToJObject();
  4687. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4688. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  4689. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  4690. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4691. decimal LOTQTY = minPackQty;
  4692. string Pre = "MD" + ApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4693. string sql = string.Empty;
  4694. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4695. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4696. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4697. string sqls = string.Empty;
  4698. string Colspan = "";
  4699. string str1 = "";
  4700. List<string> ExtensionIDList = new List<string>();
  4701. //增加判断逻辑 未审核的单据不允许生成条码 25.3.26
  4702. string checkSql = $"SELECT * from ICSMOApplyNeg WHERE Type=3 and ApplyNegCode='{ApplyNegCode}' AND Status='2'";
  4703. var checkdt = SqlHelper.CmdExecuteDataTable(checkSql);
  4704. if (checkdt.Rows.Count <= 0)
  4705. {
  4706. return 0;
  4707. }
  4708. #region 装箱的功能
  4709. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4710. string VenCode = queryParam["VenCode"].ToString();
  4711. int PackCount = 0;//每箱放的数量
  4712. int Pack_YuShu = 0;//需要平摊的数量
  4713. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4714. List<PackModel> List_Pack = new List<PackModel>();
  4715. int ZQty = 0;
  4716. if (createPackCount > 0)
  4717. {
  4718. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4719. if (Pack_YuShu == 0)
  4720. {
  4721. PackCount = (createPageCount / createPackCount);
  4722. }
  4723. else
  4724. {
  4725. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4726. }
  4727. for (int jj = 0; jj < createPackCount; jj++)
  4728. {
  4729. object CARID = Guid.NewGuid();
  4730. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4731. sql += @" INSERT INTO dbo.ICSContainer
  4732. ( ID,ContainerCode ,
  4733. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4734. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4735. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4736. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4737. PackModel PP = new PackModel();
  4738. PP.ID = CARID.ToString();
  4739. PP.PackCode = Carton;
  4740. if (jj < Pack_YuShu)
  4741. {
  4742. PP.FristBarIndex = ZQty;
  4743. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4744. }
  4745. else
  4746. {
  4747. PP.FristBarIndex = ZQty;
  4748. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4749. }
  4750. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4751. List_Pack.Add(PP);
  4752. }
  4753. }
  4754. #endregion
  4755. for (int i = 0; i < createPageCount; i++)
  4756. {
  4757. if (i + 1 == createPageCount)
  4758. {
  4759. if (minPackQty * createPageCount > thisCreateQty)
  4760. {
  4761. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4762. }
  4763. }
  4764. 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();
  4765. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4766. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4767. bool flag = true;
  4768. foreach (var item in ExtensionIDList)
  4769. {
  4770. if (item == Colspan + WorkPoint)
  4771. {
  4772. flag = false;
  4773. }
  4774. }
  4775. if (ExtensionID == null && flag == true)
  4776. {
  4777. str1 = Guid.NewGuid().ToString();
  4778. 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)
  4779. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  4780. 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(),
  4781. MUSER, MUSERNAME, WorkPoints);
  4782. }
  4783. else if (ExtensionID != null)
  4784. {
  4785. str1 = ExtensionID.ToString();
  4786. }
  4787. ExtensionIDList.Add(Colspan + WorkPoint);
  4788. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  4789. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  4790. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  4791. LotNo, ApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  4792. sql += string.Format(@"insert into ICSInventoryLot
  4793. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  4794. select
  4795. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','13','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  4796. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  4797. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, ApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  4798. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  4799. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  4800. sql += "\r\n";
  4801. //装箱的功能
  4802. if (List_Pack.Count > 0)
  4803. {
  4804. PackModel mm = new PackModel();
  4805. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  4806. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  4807. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  4808. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  4809. }
  4810. }
  4811. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  4812. return count;
  4813. }
  4814. public DataTable GetGridJsonWWLLTL(string queryJson, ref Pagination jqgridparam)
  4815. {
  4816. DataTable dt = new DataTable();
  4817. var queryParam = queryJson.ToJObject();
  4818. List<DbParameter> parameter = new List<DbParameter>();
  4819. object Figure = GetDecimalDigits();
  4820. #region [SQL]
  4821. string sql = @"select a.ID,a.OApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  4822. 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 ,
  4823. a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  4824. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  4825. ,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,
  4826. a.EATTRIBUTE9,a.EATTRIBUTE10
  4827. from ICSOApplyNegDetail a
  4828. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  4829. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4830. left join (
  4831. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  4832. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='14'
  4833. where isnull(ee.EATTRIBUTE1,'')=''
  4834. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  4835. )c
  4836. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  4837. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  4838. WHERE d.Type='2'";
  4839. sql = string.Format(sql, Figure);
  4840. #endregion
  4841. if (!string.IsNullOrWhiteSpace(queryJson))
  4842. {
  4843. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  4844. {
  4845. sql += " and a.OApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  4846. }
  4847. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  4848. {
  4849. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  4850. }
  4851. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  4852. {
  4853. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  4854. }
  4855. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  4856. {
  4857. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  4858. }
  4859. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  4860. {
  4861. string POStatus = queryParam["POStatus"].ToString();
  4862. if (POStatus == "0")
  4863. {
  4864. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  4865. }
  4866. else if (POStatus == "1")
  4867. {
  4868. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  4869. }
  4870. else
  4871. {
  4872. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  4873. }
  4874. }
  4875. }
  4876. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  4877. {
  4878. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  4879. }
  4880. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  4881. {
  4882. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  4883. }
  4884. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  4885. }
  4886. /// <summary>
  4887. /// 点击委外领料退料生成条码
  4888. /// </summary>
  4889. public DataTable GetSubGridJsonWWLLByCreate(string OApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  4890. {
  4891. DataTable dt = new DataTable();
  4892. object Figure = GetDecimalDigits();
  4893. List<DbParameter> parameter = new List<DbParameter>();
  4894. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn009', " + Quantity + ",1,1,'')";
  4895. object Num = SqlHelper.ExecuteScalar(SeachNum);
  4896. string sql = @"
  4897. 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,
  4898. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  4899. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  4900. 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' else b.EATTRIBUTE2 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
  4901. ,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,
  4902. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  4903. from ICSOApplyNegDetail a
  4904. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  4905. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  4906. left join (
  4907. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  4908. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='14'
  4909. where isnull(a.EATTRIBUTE1,'')=''
  4910. group by b.TransCode,b.TransSequence
  4911. ) c on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  4912. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  4913. WHERE d.Type='2'
  4914. and a.OApplyNegCode='" + OApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  4915. sql += " and a.WorkPoint='" + WorkPoint + "'";
  4916. sql = string.Format(sql, Figure);
  4917. return Repository().FindTableBySql(sql.ToString());
  4918. }
  4919. //委外领料申请退料
  4920. public int SubmitFormWWLL(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  4921. {
  4922. var queryParam = keyValue.ToJObject();
  4923. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  4924. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  4925. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  4926. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  4927. decimal LOTQTY = minPackQty;
  4928. string Pre = "OMA" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  4929. string sql = string.Empty;
  4930. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  4931. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  4932. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  4933. string sqls = string.Empty;
  4934. string Colspan = "";
  4935. string str1 = "";
  4936. List<string> ExtensionIDList = new List<string>();
  4937. #region 装箱的功能
  4938. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  4939. string VenCode = queryParam["VenCode"].ToString();
  4940. int PackCount = 0;//每箱放的数量
  4941. int Pack_YuShu = 0;//需要平摊的数量
  4942. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  4943. List<PackModel> List_Pack = new List<PackModel>();
  4944. int ZQty = 0;
  4945. if (createPackCount > 0)
  4946. {
  4947. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  4948. if (Pack_YuShu == 0)
  4949. {
  4950. PackCount = (createPageCount / createPackCount);
  4951. }
  4952. else
  4953. {
  4954. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  4955. }
  4956. for (int jj = 0; jj < createPackCount; jj++)
  4957. {
  4958. object CARID = Guid.NewGuid();
  4959. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  4960. sql += @" INSERT INTO dbo.ICSContainer
  4961. ( ID,ContainerCode ,
  4962. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  4963. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  4964. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  4965. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  4966. PackModel PP = new PackModel();
  4967. PP.ID = CARID.ToString();
  4968. PP.PackCode = Carton;
  4969. if (jj < Pack_YuShu)
  4970. {
  4971. PP.FristBarIndex = ZQty;
  4972. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  4973. }
  4974. else
  4975. {
  4976. PP.FristBarIndex = ZQty;
  4977. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  4978. }
  4979. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  4980. List_Pack.Add(PP);
  4981. }
  4982. }
  4983. #endregion
  4984. for (int i = 0; i < createPageCount; i++)
  4985. {
  4986. if (i + 1 == createPageCount)
  4987. {
  4988. if (minPackQty * createPageCount > thisCreateQty)
  4989. {
  4990. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  4991. }
  4992. }
  4993. 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();
  4994. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  4995. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  4996. bool flag = true;
  4997. foreach (var item in ExtensionIDList)
  4998. {
  4999. if (item == Colspan + WorkPoint)
  5000. {
  5001. flag = false;
  5002. }
  5003. }
  5004. if (ExtensionID == null && flag == true)
  5005. {
  5006. str1 = Guid.NewGuid().ToString();
  5007. 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)
  5008. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5009. 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(),
  5010. MUSER, MUSERNAME, WorkPoints);
  5011. }
  5012. else if (ExtensionID != null)
  5013. {
  5014. str1 = ExtensionID.ToString();
  5015. }
  5016. ExtensionIDList.Add(Colspan + WorkPoint);
  5017. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5018. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5019. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  5020. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5021. sql += string.Format(@"insert into ICSInventoryLot
  5022. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5023. select
  5024. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','14','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5025. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  5026. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  5027. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5028. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5029. sql += "\r\n";
  5030. //装箱的功能
  5031. if (List_Pack.Count > 0)
  5032. {
  5033. PackModel mm = new PackModel();
  5034. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5035. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5036. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5037. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5038. }
  5039. }
  5040. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5041. return count;
  5042. }
  5043. //委外材料出库
  5044. public DataTable GetGridJsonWWCLCK(string queryJson, ref Pagination jqgridparam)
  5045. {
  5046. DataTable dt = new DataTable();
  5047. var queryParam = queryJson.ToJObject();
  5048. List<DbParameter> parameter = new List<DbParameter>();
  5049. object Figure = GetDecimalDigits();
  5050. #region [SQL]
  5051. string sql = @"select a.ID,a.OApplyNegCode,a.Sequence,a.SourceDetailID,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  5052. 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 ,
  5053. a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  5054. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5055. ,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,
  5056. a.EATTRIBUTE9,a.EATTRIBUTE10
  5057. from ICSOApplyNegDetail a
  5058. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  5059. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5060. left join (
  5061. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5062. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='15'
  5063. where isnull(ee.EATTRIBUTE1,'')=''
  5064. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5065. )c
  5066. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5067. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5068. WHERE d.Type='3'";
  5069. sql = string.Format(sql, Figure);
  5070. #endregion
  5071. if (!string.IsNullOrWhiteSpace(queryJson))
  5072. {
  5073. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  5074. {
  5075. sql += " and a.OApplyNegCode like '%" + queryParam["POCode"].ToString() + "%' ";
  5076. }
  5077. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  5078. {
  5079. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  5080. }
  5081. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  5082. {
  5083. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  5084. }
  5085. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  5086. {
  5087. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  5088. }
  5089. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  5090. {
  5091. string POStatus = queryParam["POStatus"].ToString();
  5092. if (POStatus == "0")
  5093. {
  5094. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  5095. }
  5096. else if (POStatus == "1")
  5097. {
  5098. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  5099. }
  5100. else
  5101. {
  5102. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  5103. }
  5104. }
  5105. }
  5106. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  5107. {
  5108. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  5109. }
  5110. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  5111. {
  5112. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  5113. }
  5114. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  5115. }
  5116. //委外材料出库
  5117. public DataTable GetSubGridJsonWWCLByCreate(string OApplyNegCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  5118. {
  5119. DataTable dt = new DataTable();
  5120. object Figure = GetDecimalDigits();
  5121. List<DbParameter> parameter = new List<DbParameter>();
  5122. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn010', " + Quantity + ",1,1,'')";
  5123. object Num = SqlHelper.ExecuteScalar(SeachNum);
  5124. string sql = @"
  5125. 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,
  5126. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  5127. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  5128. 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' else b.EATTRIBUTE2 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
  5129. ,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,
  5130. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  5131. from ICSOApplyNegDetail a
  5132. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  5133. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5134. left join (
  5135. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5136. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='15'
  5137. where isnull(a.EATTRIBUTE1,'')=''
  5138. group by b.TransCode,b.TransSequence
  5139. ) c on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence
  5140. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5141. WHERE d.Type='3'
  5142. and a.OApplyNegCode='" + OApplyNegCode + "' and a.Sequence='" + Sequence + "'";
  5143. sql += " and a.WorkPoint='" + WorkPoint + "'";
  5144. sql = string.Format(sql, Figure);
  5145. return Repository().FindTableBySql(sql.ToString());
  5146. }
  5147. //委外材料出库
  5148. public int SubmitFormWWCL(string OApplyNegCode, string Sequence, string keyValue, string WorkPoint)
  5149. {
  5150. var queryParam = keyValue.ToJObject();
  5151. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5152. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  5153. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  5154. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  5155. decimal LOTQTY = minPackQty;
  5156. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  5157. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  5158. string Pre = "OMD" + OApplyNegCode + (Convert.ToInt32(Sequence)).ToString("D4");
  5159. string sql = string.Empty;
  5160. //string VendorLot = queryParam["VendorLot"].ToString();
  5161. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  5162. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  5163. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  5164. string sqls = string.Empty;
  5165. string Colspan = "";
  5166. string str1 = "";
  5167. List<string> ExtensionIDList = new List<string>();
  5168. #region 装箱的功能
  5169. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  5170. string VenCode = queryParam["VenCode"].ToString();
  5171. int PackCount = 0;//每箱放的数量
  5172. int Pack_YuShu = 0;//需要平摊的数量
  5173. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  5174. List<PackModel> List_Pack = new List<PackModel>();
  5175. int ZQty = 0;
  5176. if (createPackCount > 0)
  5177. {
  5178. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5179. if (Pack_YuShu == 0)
  5180. {
  5181. PackCount = (createPageCount / createPackCount);
  5182. }
  5183. else
  5184. {
  5185. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5186. }
  5187. for (int jj = 0; jj < createPackCount; jj++)
  5188. {
  5189. object CARID = Guid.NewGuid();
  5190. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5191. sql += @" INSERT INTO dbo.ICSContainer
  5192. ( ID,ContainerCode ,
  5193. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5194. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5195. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5196. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5197. PackModel PP = new PackModel();
  5198. PP.ID = CARID.ToString();
  5199. PP.PackCode = Carton;
  5200. if (jj < Pack_YuShu)
  5201. {
  5202. PP.FristBarIndex = ZQty;
  5203. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5204. }
  5205. else
  5206. {
  5207. PP.FristBarIndex = ZQty;
  5208. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  5209. }
  5210. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  5211. List_Pack.Add(PP);
  5212. }
  5213. }
  5214. #endregion
  5215. for (int i = 0; i < createPageCount; i++)
  5216. {
  5217. if (i + 1 == createPageCount)
  5218. {
  5219. if (minPackQty * createPageCount > thisCreateQty)
  5220. {
  5221. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  5222. }
  5223. }
  5224. 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();
  5225. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  5226. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  5227. bool flag = true;
  5228. foreach (var item in ExtensionIDList)
  5229. {
  5230. if (item == Colspan + WorkPoint)
  5231. {
  5232. flag = false;
  5233. }
  5234. }
  5235. if (ExtensionID == null && flag == true)
  5236. {
  5237. str1 = Guid.NewGuid().ToString();
  5238. 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)
  5239. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5240. 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(),
  5241. MUSER, MUSERNAME, WorkPoints);
  5242. }
  5243. else if (ExtensionID != null)
  5244. {
  5245. str1 = ExtensionID.ToString();
  5246. }
  5247. ExtensionIDList.Add(Colspan + WorkPoint);
  5248. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5249. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5250. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  5251. LotNo, OApplyNegCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5252. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  5253. //{
  5254. sql += string.Format(@"insert into ICSInventoryLot
  5255. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5256. select
  5257. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','15','{3}','{4}', getdate(),'{5}','{9}'
  5258. ,'{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5259. from ICSOApplyNegDetail where OApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  5260. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OApplyNegCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  5261. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5262. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5263. sql += "\r\n";
  5264. //装箱的功能
  5265. if (List_Pack.Count > 0)
  5266. {
  5267. PackModel mm = new PackModel();
  5268. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5269. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5270. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5271. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5272. }
  5273. //}
  5274. }
  5275. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5276. return count;
  5277. }
  5278. public DataTable SelectICSExtensionEnable()
  5279. {
  5280. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5281. string sql = @"select ColCode from ICSExtensionEnable
  5282. where Enable=0 and WorkPoint='" + WorkPoints + "' order by cast(EATTRIBUTE1 as int)";
  5283. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  5284. return dt;
  5285. }
  5286. public DataTable GetComplete()
  5287. {
  5288. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5289. string sql = @"select Enable from ICSConfiguration where Code='CompleteVerification001' and WorkPoint='" + WorkPoints + "'";
  5290. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  5291. return dt;
  5292. }
  5293. public DataTable GetWWComplete()
  5294. {
  5295. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5296. string sql = @"select Enable from ICSConfiguration where Code='CompleteVerification004' and WorkPoint='" + WorkPoints + "'";
  5297. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  5298. return dt;
  5299. }
  5300. //返工工单
  5301. public DataTable GetGridJsonFGGD(string queryJson, ref Pagination jqgridparam)
  5302. {
  5303. DataTable dt = new DataTable();
  5304. var queryParam = queryJson.ToJObject();
  5305. List<DbParameter> parameter = new List<DbParameter>();
  5306. object Figure = GetDecimalDigits();
  5307. #region [SQL]
  5308. 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,
  5309. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,
  5310. CAST(a.Amount AS DECIMAL(38,{0})) as Amount,CAST(a.IssueQuantity AS DECIMAL(38,{0})) as IssueQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,
  5311. CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY
  5312. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5313. ,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,
  5314. a.EATTRIBUTE9,a.EATTRIBUTE10
  5315. from ICSMOPick a
  5316. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  5317. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5318. left join (
  5319. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5320. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='16'
  5321. where isnull(ee.EATTRIBUTE1,'')=''
  5322. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5323. )c
  5324. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5325. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5326. where a.EATTRIBUTE1='1' and d.EATTRIBUTE1='1'";
  5327. sql = string.Format(sql, Figure);
  5328. #endregion
  5329. if (!string.IsNullOrWhiteSpace(queryJson))
  5330. {
  5331. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  5332. {
  5333. sql += " and d.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  5334. }
  5335. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  5336. {
  5337. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  5338. }
  5339. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  5340. {
  5341. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  5342. }
  5343. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  5344. {
  5345. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  5346. }
  5347. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  5348. {
  5349. string POStatus = queryParam["POStatus"].ToString();
  5350. if (POStatus == "0")
  5351. {
  5352. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  5353. }
  5354. else if (POStatus == "1")
  5355. {
  5356. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  5357. }
  5358. else
  5359. {
  5360. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  5361. }
  5362. }
  5363. }
  5364. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  5365. {
  5366. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  5367. }
  5368. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  5369. {
  5370. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  5371. }
  5372. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  5373. }
  5374. public DataTable GetSubGridJsonFGGDCreate(string FGGDMOCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  5375. {
  5376. DataTable dt = new DataTable();
  5377. object Figure = GetDecimalDigits();
  5378. List<DbParameter> parameter = new List<DbParameter>();
  5379. // string sql = @"
  5380. //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,
  5381. //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
  5382. //,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
  5383. // from ICSMOPick a
  5384. // left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  5385. // left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5386. // left join (
  5387. // select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5388. // left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='16'
  5389. //where isnull(a.EATTRIBUTE1,'')=''
  5390. // group by b.TransCode,b.TransSequence
  5391. // ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  5392. // left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  5393. // WHERE 1=1
  5394. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn015', " + Quantity + ",1,2,'')";
  5395. object Num = SqlHelper.ExecuteScalar(SeachNum);
  5396. string sql = @"
  5397. 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,
  5398. CAST( isnull(c.LOTQTY,0) as DECIMAL(38,{0})) as CreatedQty,
  5399. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,isnull(b.EffectiveEnable,0) as EffectiveEnable,
  5400. 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' else b.EATTRIBUTE2 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
  5401. ,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,
  5402. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  5403. from ICSMOPick a
  5404. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  5405. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5406. left join (
  5407. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  5408. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='16'
  5409. where isnull(a.EATTRIBUTE1,'')=''
  5410. group by b.TransCode,b.TransSequence
  5411. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  5412. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  5413. WHERE 1=1
  5414. and d.MOCode='" + FGGDMOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "'";
  5415. sql += " and a.WorkPoint='" + WorkPoint + "'";
  5416. sql = string.Format(sql, Figure);
  5417. return Repository().FindTableBySql(sql.ToString());
  5418. }
  5419. //返工工单
  5420. public int SubmitFormFGGD(string FGGDMOCode, string Sequence, string keyValue, string WorkPoint)
  5421. {
  5422. var queryParam = keyValue.ToJObject();
  5423. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5424. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  5425. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  5426. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  5427. decimal LOTQTY = minPackQty;
  5428. Sequence = Sequence.Replace("~", "");
  5429. string Pre = "FG" + FGGDMOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  5430. string sql = string.Empty;
  5431. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  5432. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  5433. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  5434. string sqls = string.Empty;
  5435. string Colspan = "";
  5436. string str1 = "";
  5437. List<string> ExtensionIDList = new List<string>();
  5438. #region 装箱的功能
  5439. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  5440. string VenCode = queryParam["VenCode"].ToString();
  5441. int PackCount = 0;//每箱放的数量
  5442. int Pack_YuShu = 0;//需要平摊的数量
  5443. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  5444. List<PackModel> List_Pack = new List<PackModel>();
  5445. int ZQty = 0;
  5446. if (createPackCount > 0)
  5447. {
  5448. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5449. if (Pack_YuShu == 0)
  5450. {
  5451. PackCount = (createPageCount / createPackCount);
  5452. }
  5453. else
  5454. {
  5455. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5456. }
  5457. for (int jj = 0; jj < createPackCount; jj++)
  5458. {
  5459. object CARID = Guid.NewGuid();
  5460. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5461. sql += @" INSERT INTO dbo.ICSContainer
  5462. ( ID,ContainerCode ,
  5463. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5464. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5465. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5466. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5467. PackModel PP = new PackModel();
  5468. PP.ID = CARID.ToString();
  5469. PP.PackCode = Carton;
  5470. if (jj < Pack_YuShu)
  5471. {
  5472. PP.FristBarIndex = ZQty;
  5473. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5474. }
  5475. else
  5476. {
  5477. PP.FristBarIndex = ZQty;
  5478. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  5479. }
  5480. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  5481. List_Pack.Add(PP);
  5482. }
  5483. }
  5484. #endregion
  5485. for (int i = 0; i < createPageCount; i++)
  5486. {
  5487. if (i + 1 == createPageCount)
  5488. {
  5489. if (minPackQty * createPageCount > thisCreateQty)
  5490. {
  5491. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  5492. }
  5493. }
  5494. 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();
  5495. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  5496. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  5497. bool flag = true;
  5498. foreach (var item in ExtensionIDList)
  5499. {
  5500. if (item == Colspan + WorkPoint)
  5501. {
  5502. flag = false;
  5503. }
  5504. }
  5505. if (ExtensionID == null && flag == true)
  5506. {
  5507. str1 = Guid.NewGuid().ToString();
  5508. 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)
  5509. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5510. 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(),
  5511. MUSER, MUSERNAME, WorkPoints);
  5512. }
  5513. else if (ExtensionID != null)
  5514. {
  5515. str1 = ExtensionID.ToString();
  5516. }
  5517. ExtensionIDList.Add(Colspan + WorkPoint);
  5518. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5519. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5520. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  5521. LotNo, FGGDMOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5522. sql += string.Format(@"insert into ICSInventoryLot
  5523. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5524. select
  5525. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','16','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5526. 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}' ",
  5527. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, FGGDMOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  5528. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5529. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5530. sql += "\r\n";
  5531. //装箱的功能
  5532. if (List_Pack.Count > 0)
  5533. {
  5534. PackModel mm = new PackModel();
  5535. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5536. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5537. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5538. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5539. }
  5540. }
  5541. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5542. return count;
  5543. }
  5544. /// <summary>
  5545. /// 锐腾获取单据信息
  5546. /// </summary>
  5547. /// <param name="FGGDMOCode"></param>
  5548. /// <param name="Sequence"></param>
  5549. /// <param name="WorkPoint"></param>
  5550. /// <returns></returns>
  5551. public DataTable GetSubGridJsonTransferByCreate(string TransferNO, string Sequence, string WorkPoint, string Quantity, string InvCode)
  5552. {
  5553. try
  5554. {
  5555. DataTable dt = new DataTable();
  5556. object Figure = GetDecimalDigits();
  5557. List<DbParameter> parameter = new List<DbParameter>();
  5558. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn025', " + Quantity + ",1,2,'')";
  5559. object Num = SqlHelper.ExecuteScalar(SeachNum);
  5560. 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 ,
  5561. case when CAST( (" + Num + @"-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( (" + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) end as MPQ
  5562. ,
  5563. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  5564. FROM
  5565. ICSTransfer a
  5566. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  5567. LEFT JOIN (
  5568. SELECT
  5569. b.TransCode,
  5570. b.TransSequence,
  5571. SUM ( isnull( Quantity, 0 ) ) LOTQTY
  5572. FROM
  5573. ICSInventoryLot a
  5574. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo
  5575. AND a.Type= '19'
  5576. WHERE
  5577. isnull( a.EATTRIBUTE1, '' ) = ''
  5578. GROUP BY
  5579. b.TransCode,
  5580. b.TransSequence
  5581. ) c ON a.TransferNO= c.TransCode
  5582. AND a.Sequence= c.TransSequence
  5583. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID
  5584. AND a.WorkPoint= e.WorkPoint
  5585. WHERE
  5586. 1 = 1
  5587. and a.TransferNO='{1}' and a.Sequence='{2}'
  5588. and a.WorkPoint='{3}'";
  5589. sql = string.Format(sql, Figure, TransferNO, Sequence, WorkPoint);
  5590. return Repository().FindTableBySql(sql.ToString());
  5591. }
  5592. catch (Exception ex)
  5593. {
  5594. throw new Exception(ex.Message.ToString());
  5595. }
  5596. }
  5597. /// <summary>
  5598. /// 锐腾两步调入单生成条码
  5599. /// </summary>
  5600. /// <param name="TransferNO"></param>
  5601. /// <param name="Sequence"></param>
  5602. /// <param name="keyValue"></param>
  5603. /// <param name="WorkPoint"></param>
  5604. /// <returns></returns>
  5605. public int SubmitFormTransfer(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  5606. {
  5607. var queryParam = keyValue.ToJObject();
  5608. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5609. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  5610. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  5611. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  5612. decimal LOTQTY = minPackQty;
  5613. Sequence = Sequence.Replace("~", "");
  5614. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  5615. string sql = string.Empty;
  5616. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  5617. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  5618. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  5619. string sqls = string.Empty;
  5620. string Colspan = "";
  5621. string str1 = "";
  5622. List<string> ExtensionIDList = new List<string>();
  5623. #region 装箱的功能
  5624. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  5625. string VenCode = queryParam["VenCode"].ToString();
  5626. int PackCount = 0;//每箱放的数量
  5627. int Pack_YuShu = 0;//需要平摊的数量
  5628. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  5629. List<PackModel> List_Pack = new List<PackModel>();
  5630. int ZQty = 0;
  5631. if (createPackCount > 0)
  5632. {
  5633. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  5634. if (Pack_YuShu == 0)
  5635. {
  5636. PackCount = (createPageCount / createPackCount);
  5637. }
  5638. else
  5639. {
  5640. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  5641. }
  5642. for (int jj = 0; jj < createPackCount; jj++)
  5643. {
  5644. object CARID = Guid.NewGuid();
  5645. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  5646. sql += @" INSERT INTO dbo.ICSContainer
  5647. ( ID,ContainerCode ,
  5648. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  5649. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  5650. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  5651. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  5652. PackModel PP = new PackModel();
  5653. PP.ID = CARID.ToString();
  5654. PP.PackCode = Carton;
  5655. if (jj < Pack_YuShu)
  5656. {
  5657. PP.FristBarIndex = ZQty;
  5658. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  5659. }
  5660. else
  5661. {
  5662. PP.FristBarIndex = ZQty;
  5663. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  5664. }
  5665. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  5666. List_Pack.Add(PP);
  5667. }
  5668. }
  5669. #endregion
  5670. for (int i = 0; i < createPageCount; i++)
  5671. {
  5672. if (i + 1 == createPageCount)
  5673. {
  5674. if (minPackQty * createPageCount > thisCreateQty)
  5675. {
  5676. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  5677. }
  5678. }
  5679. 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();
  5680. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  5681. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  5682. bool flag = true;
  5683. foreach (var item in ExtensionIDList)
  5684. {
  5685. if (item == Colspan + WorkPoint)
  5686. {
  5687. flag = false;
  5688. }
  5689. }
  5690. if (ExtensionID == null && flag == true)
  5691. {
  5692. str1 = Guid.NewGuid().ToString();
  5693. 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)
  5694. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  5695. 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(),
  5696. MUSER, MUSERNAME, WorkPoints);
  5697. }
  5698. else if (ExtensionID != null)
  5699. {
  5700. str1 = ExtensionID.ToString();
  5701. }
  5702. ExtensionIDList.Add(Colspan + WorkPoint);
  5703. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  5704. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  5705. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  5706. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  5707. sql += string.Format(@"insert into ICSInventoryLot
  5708. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  5709. select
  5710. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','20','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  5711. from ICSTransfer a where a.TransferNO='{6}' and a.Sequence='{7}' and a.WorkPoint='{5}' ",
  5712. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  5713. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  5714. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  5715. sql += "\r\n";
  5716. //装箱的功能
  5717. if (List_Pack.Count > 0)
  5718. {
  5719. PackModel mm = new PackModel();
  5720. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  5721. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  5722. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  5723. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  5724. }
  5725. }
  5726. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  5727. return count;
  5728. }
  5729. public object GetDecimalDigits()
  5730. {
  5731. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5732. try
  5733. {
  5734. string sql = string.Empty;
  5735. sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
  5736. object Figure = SqlHelper.ExecuteScalar(sql);
  5737. return Figure;
  5738. }
  5739. catch (Exception ex)
  5740. {
  5741. throw new Exception(ex.Message.ToString());
  5742. }
  5743. }
  5744. /// <summary>
  5745. /// 生成条码导出
  5746. /// </summary>
  5747. /// <param name="ProductBrand"></param>
  5748. /// <param name="cCusName"></param>
  5749. /// <param name="DesignAddRate"></param>
  5750. /// <returns></returns>
  5751. public DataTable StatementExportAll(string Type, string ID)
  5752. {
  5753. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  5754. string sql = string.Empty;
  5755. object Figure = GetDecimalDigits();
  5756. string TableCode = string.Empty;
  5757. #region sql语句
  5758. if (Type == "1") //生产退料
  5759. {
  5760. 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 数量
  5761. ,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
  5762. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5763. ,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,
  5764. a.EATTRIBUTE9,a.EATTRIBUTE10
  5765. from ICSMOApplyNegDetail a
  5766. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  5767. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5768. left join (
  5769. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5770. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='1'
  5771. where isnull(ee.EATTRIBUTE1,'')=''
  5772. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5773. )c
  5774. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5775. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5776. where d.Type='1' and d.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  5777. TableCode = "ICSMOApplyNegDetail";
  5778. }
  5779. if (Type == "2") //委外退料
  5780. {
  5781. 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 数量
  5782. ,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
  5783. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5784. ,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,
  5785. a.EATTRIBUTE9,a.EATTRIBUTE10
  5786. from ICSOApplyNegDetail a
  5787. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  5788. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5789. left join (
  5790. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5791. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='2'
  5792. where isnull(ee.EATTRIBUTE1,'')=''
  5793. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5794. )c
  5795. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5796. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5797. WHERE d.Type='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  5798. TableCode = "ICSOApplyNegDetail";
  5799. }
  5800. if (Type == "3")//工单成品生成条码
  5801. {
  5802. sql = @"select a.MOCode as 工单号,a.Sequence as 工单行号 ,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvStd as 规格型号,b.InvUnit as 单位
  5803. ,CAST( a.Quantity AS DECIMAL(38,{0})) as ,CAST( a.Amount as DECIMAL(38,{0})) as
  5804. ,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  5805. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5806. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  5807. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  5808. a.EATTRIBUTE9,a.EATTRIBUTE10
  5809. from ICSMO a
  5810. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5811. left join (
  5812. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5813. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  5814. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5815. )c
  5816. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5817. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5818. WHERE 1=1 and a.MOStatus<>'3' and a.Quantity-ISNULL(c.LOTQTY,0)<>0 and a.ID in (" + ID.TrimEnd(',') + ")";
  5819. TableCode = "ICSMO";
  5820. }
  5821. if (Type == "4")//销售退货
  5822. {
  5823. 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 数量
  5824. ,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
  5825. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5826. ,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,
  5827. a.EATTRIBUTE9,a.EATTRIBUTE10
  5828. from ICSSDN a
  5829. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5830. left join (
  5831. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5832. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='4'
  5833. where isnull(ee.EATTRIBUTE1,'')=''
  5834. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5835. )c
  5836. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5837. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5838. where a.Type='2'and a.ID in (" + ID.TrimEnd(',') + ")";
  5839. TableCode = "ICSSDN";
  5840. }
  5841. if (Type == "5")//其它入库生成条码
  5842. {
  5843. 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 料品单位,
  5844. 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
  5845. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5846. ,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,
  5847. a.EATTRIBUTE9,a.EATTRIBUTE10
  5848. from ICSOtherIn a
  5849. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5850. left join (
  5851. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5852. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  5853. where isnull(ee.EATTRIBUTE1,'')=''
  5854. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5855. )c
  5856. on a.InCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5857. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5858. where a.Status='1' and ISNULL(a.EATTRIBUTE2,'1')='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  5859. TableCode = "ICSOtherIn";
  5860. }
  5861. if (Type == "6")//归还单生成条码
  5862. {
  5863. 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 料品单位
  5864. ,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
  5865. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5866. ,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,
  5867. a.EATTRIBUTE9,a.EATTRIBUTE10
  5868. from ICSReturn a
  5869. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5870. left join (
  5871. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5872. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='6'
  5873. where isnull(ee.EATTRIBUTE1,'')=''
  5874. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5875. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5876. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5877. where a.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  5878. TableCode = "ICSReturn";
  5879. }
  5880. if (Type == "7")//*审核到货单生成条码
  5881. {
  5882. 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 料品单位,
  5883. 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
  5884. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5885. ,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,
  5886. a.EATTRIBUTE9,a.EATTRIBUTE10
  5887. from ICSDeliveryNotice a
  5888. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5889. left join (
  5890. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5891. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='7'
  5892. where isnull(ee.EATTRIBUTE1,'')=''
  5893. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5894. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5895. inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  5896. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  5897. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5898. where a.DNType='1' and a.Status='2' and a.ASNCode is null and a.ID in (" + ID.TrimEnd(',') + ")";
  5899. TableCode = "ICSDeliveryNotice";
  5900. }
  5901. if (Type == "8")//审核委外到货单生成条码
  5902. {
  5903. 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 创建时间,
  5904. CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  5905. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5906. ,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,
  5907. a.EATTRIBUTE9,a.EATTRIBUTE10
  5908. from ICSODeliveryNotice a
  5909. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5910. left join (
  5911. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5912. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='8'
  5913. where isnull(ee.EATTRIBUTE1,'')=''
  5914. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5915. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5916. inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  5917. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  5918. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5919. where a.ODNType='1' and a.Status='2' and a.OASNCode is null and a.ID in (" + ID.TrimEnd(',') + ")";
  5920. TableCode = "ICSODeliveryNotice";
  5921. }
  5922. if (Type == "9")//开立得成品入库单 生成条码
  5923. {
  5924. 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 数量 ,
  5925. 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
  5926. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5927. ,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,
  5928. a.EATTRIBUTE9,a.EATTRIBUTE10
  5929. from ICSManufactureReceive a
  5930. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5931. left join (
  5932. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5933. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='9'
  5934. where isnull(ee.EATTRIBUTE1,'')=''
  5935. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5936. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5937. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5938. where a.Status='1' and a.Type='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  5939. TableCode = "ICSManufactureReceive";
  5940. }
  5941. if (Type == "10")//采购拒收单
  5942. {
  5943. 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 料品单位,
  5944. 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 ,
  5945. CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  5946. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5947. ,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,
  5948. a.EATTRIBUTE9,a.EATTRIBUTE10
  5949. from ICSDeliveryNotice a
  5950. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5951. left join (
  5952. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5953. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='10'
  5954. where isnull(ee.EATTRIBUTE1,'')=''
  5955. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5956. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5957. --inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  5958. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  5959. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5960. where a.DNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null and a.ID in (" + ID.TrimEnd(',') + ")";
  5961. TableCode = "ICSDeliveryNotice";
  5962. }
  5963. if (Type == "11") //委外拒收单生成条码
  5964. {
  5965. 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 料品单位,
  5966. 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
  5967. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5968. ,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,
  5969. a.EATTRIBUTE9,a.EATTRIBUTE10
  5970. from ICSODeliveryNotice a
  5971. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5972. left join (
  5973. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5974. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='11'
  5975. where isnull(ee.EATTRIBUTE1,'')=''
  5976. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5977. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  5978. --inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  5979. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  5980. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  5981. where a.ODNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null and a.ID in (" + ID.TrimEnd(',') + ")";
  5982. TableCode = "ICSODeliveryNotice";
  5983. }
  5984. if (Type == "12")//领料申请退料生成条码
  5985. {
  5986. sql = @"select a.ApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品编码,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  5987. 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
  5988. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  5989. ,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,
  5990. a.EATTRIBUTE9,a.EATTRIBUTE10
  5991. from ICSMOApplyNegDetail a
  5992. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  5993. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  5994. left join (
  5995. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  5996. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='12'
  5997. where isnull(ee.EATTRIBUTE1,'')=''
  5998. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  5999. )c
  6000. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6001. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6002. WHERE d.Type='2' and d.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6003. TableCode = "ICSMOApplyNegDetail";
  6004. }
  6005. if (Type == "13")//材料出库退料
  6006. {
  6007. sql = @" select a.ApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6008. CAST(a.Quantity AS DECIMAL(38,{0})) as ,
  6009. 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
  6010. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6011. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  6012. from ICSMOApplyNegDetail a
  6013. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  6014. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6015. left join (
  6016. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6017. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='13'
  6018. where isnull(ee.EATTRIBUTE1,'')=''
  6019. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6020. )c
  6021. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6022. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6023. WHERE d.Type='3' and d.Status='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6024. TableCode = "ICSMOApplyNegDetail";
  6025. }
  6026. if (Type == "14")//委外领料申请退料
  6027. {
  6028. sql = @" select a.OApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6029. 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
  6030. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6031. ,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,
  6032. a.EATTRIBUTE9,a.EATTRIBUTE10
  6033. from ICSOApplyNegDetail a
  6034. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  6035. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6036. left join (
  6037. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6038. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='14'
  6039. where isnull(ee.EATTRIBUTE1,'')=''
  6040. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6041. )c
  6042. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6043. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6044. WHERE d.Type='2' and a.ID in (" + ID.TrimEnd(',') + ")";
  6045. TableCode = "ICSOApplyNegDetail";
  6046. }
  6047. if (Type == "15")//委外材料出库退料
  6048. {
  6049. sql = @" select a.OApplyNegCode as 退料单号,a.Sequence as 退料单行号,a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6050. 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
  6051. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6052. ,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,
  6053. a.EATTRIBUTE9,a.EATTRIBUTE10
  6054. from ICSOApplyNegDetail a
  6055. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  6056. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6057. left join (
  6058. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6059. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='15'
  6060. where isnull(ee.EATTRIBUTE1,'')=''
  6061. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6062. )c
  6063. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6064. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6065. WHERE d.Type='3' and a.ID in (" + ID.TrimEnd(',') + ")";
  6066. TableCode = "ICSOApplyNegDetail";
  6067. }
  6068. if (Type == "16") //返工工单
  6069. {
  6070. 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 单位,
  6071. CAST(a.Quantity AS DECIMAL(38,{0})) as ,
  6072. 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
  6073. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6074. ,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,
  6075. a.EATTRIBUTE9,a.EATTRIBUTE10
  6076. from ICSMOPick a
  6077. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  6078. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6079. left join (
  6080. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6081. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='16'
  6082. where isnull(ee.EATTRIBUTE1,'')=''
  6083. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6084. )c
  6085. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6086. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6087. where a.EATTRIBUTE1='1' and d.EATTRIBUTE1='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  6088. TableCode = "ICSMOPick";
  6089. }
  6090. if (Type == "17")//检验不合格条码重新生成
  6091. {
  6092. sql = @"select a.LotNo as 不合格条码, a.InvCode as 料品编码,b.InvName as 料品名称,b.InvDesc as 料品描述,b.InvStd as 规格型号,b.InvUnit as 单位,
  6093. CAST(a.Quantity AS DECIMAL(38,{0})) as ,
  6094. CAST(c.Amount AS DECIMAL(38,{0})) as ,a.MUSERName,a.MUSERName as ,a.MTIME as ,CAST(c.LOTQTY AS DECIMAL(38,{0})) as
  6095. ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6096. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  6097. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  6098. a.EATTRIBUTE9,a.EATTRIBUTE10
  6099. from ICSInspection a
  6100. left join dbo.ICSInventoryLot d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  6101. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6102. left join (
  6103. select ee.LotNo,ee.EATTRIBUTE1,ee.Amount,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6104. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='17'
  6105. group by ee.LotNo,ee.EATTRIBUTE1,ee.Amount,ee.WorkPoint
  6106. )c
  6107. on c.EATTRIBUTE1=d.LotNo and a.WorkPoint=c.WorkPoint
  6108. left join ICSExtension f on d.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6109. where a.UnqualifiedQuantity>0 and a.Enable='1' and a.ID in (" + ID.TrimEnd(',') + ")";
  6110. TableCode = "ICSInspection";
  6111. }
  6112. #endregion
  6113. sql = sql + " and a.WorkPoint='{1}'";
  6114. sql = string.Format(sql, Figure, WorkPoint);
  6115. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  6116. string sqls = @"SELECT ColCode,ColName,Enable
  6117. from ICSExtensionEnable where WorkPoint='" + WorkPoint + "'";
  6118. DataTable dtExtension = SqlHelper.GetDataTableBySql(sqls);
  6119. foreach (DataRow drE in dtExtension.Rows)
  6120. {
  6121. if (dt.Columns.Contains(drE["ColCode"].ToString()))
  6122. {
  6123. if (!Convert.ToBoolean(drE["Enable"]))
  6124. {
  6125. dt.Columns.Remove(drE["ColCode"].ToString());
  6126. }
  6127. else if (Convert.ToBoolean(drE["Enable"]))
  6128. {
  6129. dt.Columns[drE["ColCode"].ToString()].ColumnName = drE["ColName"].ToString();
  6130. }
  6131. }
  6132. }
  6133. DataTable dtColumn = ColumnEnable(TableCode);
  6134. foreach (DataRow drC in dtColumn.Rows)
  6135. {
  6136. if (dt.Columns.Contains(drC["ColumnCode"].ToString()))
  6137. {
  6138. if (!Convert.ToBoolean(drC["Enable"]))
  6139. {
  6140. dt.Columns.Remove(drC["ColumnCode"].ToString());
  6141. }
  6142. else if (Convert.ToBoolean(drC["Enable"]))
  6143. {
  6144. dt.Columns[drC["ColumnCode"].ToString()].ColumnName = drC["Name"].ToString();
  6145. }
  6146. }
  6147. }
  6148. return dt;
  6149. }
  6150. public DataTable ColumnEnable(string TableCode)
  6151. {
  6152. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6153. string sql = string.Empty;
  6154. sql = @"select ColumnCode,Name,Enable from ICSColumnEnable where TableCode='{0}' and WorkPoint='{1}'";
  6155. sql = string.Format(sql, TableCode, WorkPoint);
  6156. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  6157. return dt;
  6158. }
  6159. public object GetQiSetNum(string keyValue)
  6160. {
  6161. decimal Num = 0;
  6162. string msg = "";
  6163. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "Complete/Approve";
  6164. string result = HttpPost(APIURL, keyValue);
  6165. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  6166. string MessAge = Obj["Message"].ToString();
  6167. string Success = Obj["Success"].ToString();
  6168. if (Success.ToUpper() == "FALSE")
  6169. {
  6170. msg = MessAge;
  6171. }
  6172. else
  6173. {
  6174. if (MessAge == "U9")
  6175. {
  6176. decimal Date = Convert.ToDecimal(Obj["Data"].ToString());
  6177. int date = Convert.ToInt32(Date);
  6178. Num = date;
  6179. }
  6180. else
  6181. {
  6182. if (msg == "")
  6183. {
  6184. JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  6185. foreach (var item in res)
  6186. {
  6187. JObject jo = (JObject)item;
  6188. //var aa= jo["min_lotqty"].ToString();
  6189. Num = Convert.ToDecimal(jo["min_lotqty"].ToString());
  6190. }
  6191. }
  6192. }
  6193. }
  6194. var Header = new
  6195. {
  6196. msg = msg,
  6197. Num = Num,
  6198. };
  6199. return Header;
  6200. }
  6201. //接口api解析
  6202. public static string HttpPost(string url, string body)
  6203. {
  6204. try
  6205. {
  6206. Encoding encoding = Encoding.UTF8;
  6207. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  6208. request.Method = "POST";
  6209. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  6210. request.ContentType = "application/json; charset=utf-8";
  6211. byte[] buffer = encoding.GetBytes(body);
  6212. request.ContentLength = buffer.Length;
  6213. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  6214. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  6215. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  6216. {
  6217. return reader.ReadToEnd();
  6218. }
  6219. }
  6220. catch (WebException ex)
  6221. {
  6222. throw new Exception(ex.Message);
  6223. }
  6224. }
  6225. public DataTable GetLoadShow()
  6226. {
  6227. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6228. string sql = @"
  6229. select * from ICSExtensionEnable where WorkPoint='" + WorkPoints + "' order by cast(EATTRIBUTE1 as int) ";
  6230. return Repository().FindTableBySql(sql.ToString());
  6231. }
  6232. //不合格条码重新生成入库
  6233. public DataTable GetGridJsonBHGTM(string queryJson, ref Pagination jqgridparam)
  6234. {
  6235. DataTable dt = new DataTable();
  6236. var queryParam = queryJson.ToJObject();
  6237. List<DbParameter> parameter = new List<DbParameter>();
  6238. object Figure = GetDecimalDigits();
  6239. #region [SQL]
  6240. string sql = @"select a.ID,a.LotNo, a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  6241. CAST(a.UnqualifiedQuantity AS DECIMAL(38,{0})) as Quantity ,
  6242. CAST(c.Amount AS DECIMAL(38,{0})) as Amount,a.MUSERName,a.MTIME,CAST(c.LOTQTY AS DECIMAL(38,{0})) as LOTQTY,d.ExtensionID
  6243. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6244. ,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,
  6245. a.EATTRIBUTE9,a.EATTRIBUTE10
  6246. from ICSInspection a
  6247. left join dbo.ICSInventoryLot d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  6248. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6249. left join (
  6250. select ee.LotNo,ee.EATTRIBUTE1,ee.Amount,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6251. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='17'
  6252. group by ee.LotNo,ee.EATTRIBUTE1,ee.Amount,ee.WorkPoint
  6253. )c
  6254. on c.EATTRIBUTE1=d.LotNo and a.WorkPoint=c.WorkPoint
  6255. left join ICSExtension f on d.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6256. where a.UnqualifiedQuantity>0 and a.Enable='1'";
  6257. sql = string.Format(sql, Figure);
  6258. #endregion
  6259. if (!string.IsNullOrWhiteSpace(queryJson))
  6260. {
  6261. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  6262. {
  6263. sql += " and a.LotNo like '%" + queryParam["POCode"].ToString() + "%' ";
  6264. }
  6265. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  6266. {
  6267. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  6268. }
  6269. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  6270. {
  6271. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  6272. }
  6273. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  6274. {
  6275. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  6276. }
  6277. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  6278. {
  6279. string POStatus = queryParam["POStatus"].ToString();
  6280. if (POStatus == "0")
  6281. {
  6282. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  6283. }
  6284. else if (POStatus == "1")
  6285. {
  6286. sql += " and a.UnqualifiedQuantity-ISNULL(c.LOTQTY,0)=0";
  6287. }
  6288. else
  6289. {
  6290. sql += " and a.UnqualifiedQuantity-ISNULL(c.LOTQTY,0)<>0";
  6291. }
  6292. }
  6293. }
  6294. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  6295. {
  6296. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  6297. }
  6298. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6299. }
  6300. public DataTable GetSubGridJsonBHGTM(string LotNo, string Type, ref Pagination jqgridparam)
  6301. {
  6302. DataTable dt = new DataTable();
  6303. object Figure = GetDecimalDigits();
  6304. List<DbParameter> parameter = new List<DbParameter>();
  6305. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6306. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo, CAST( a.Quantity AS DECIMAL(38,{0})) as Quantity ,a.MUSERName,a.MTIME
  6307. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6308. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  6309. case when isnull(d.ID,'')='' then '' else '' end as isStorage,
  6310. case when isnull(e.ID,'')='' then '' else '' end as isInspection,
  6311. case when g.InvIQC='1' then '是' else '否' end as isExemption
  6312. from ICSInventoryLot a
  6313. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  6314. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  6315. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  6316. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6317. left join dbo.ICSWareHouseLotInfo d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  6318. left join ICSInspection e on a.LotNo=e.LotNo and e.Enable='1' and a.WorkPoint=e.WorkPoint
  6319. left join ICSInventory g on a.InvCode=g.InvCode and a.WorkPoint=g.WorkPoint
  6320. WHERE isnull(a.EATTRIBUTE1,'')='" + LotNo + "' and a.Type='" + Type + "' and a.WorkPoint in ('" + WorkPoint + "')";
  6321. sql = string.Format(sql, Figure);
  6322. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6323. }
  6324. public int SubmitFormBHGTM(string OldLotNo, string keyValue, string WorkPoint)
  6325. {
  6326. var queryParam = keyValue.ToJObject();
  6327. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6328. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  6329. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  6330. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  6331. decimal LOTQTY = minPackQty;
  6332. // string Pre = "DN" + DNCode + (Convert.ToInt32(Sequence)).ToString("D4");
  6333. string sql = string.Empty;
  6334. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  6335. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  6336. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  6337. string sqls = string.Empty;
  6338. string Colspan = "";
  6339. string str1 = "";
  6340. List<string> ExtensionIDList = new List<string>();
  6341. for (int i = 0; i < createPageCount; i++)
  6342. {
  6343. if (i + 1 == createPageCount)
  6344. {
  6345. if (minPackQty * createPageCount > thisCreateQty)
  6346. {
  6347. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  6348. }
  6349. }
  6350. string LotNo = GetNewLotNo(OldLotNo);
  6351. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  6352. select '{0}',TransCode,TransSequence,'{1}','{2}',getdate(),'{3}',TransID from ICSInventoryLotDetail where LotNo='{4}'",
  6353. LotNo, MUSER, MUSERNAME, WorkPoints, OldLotNo);
  6354. sql += string.Format(@"
  6355. insert into ICSInventoryLot
  6356. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount,EATTRIBUTE1)
  6357. select
  6358. newid(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,b.UnqualifiedQuantity,a.ExtensionID,'17','{1}','{2}',getdate(),'{3}',a.Amount,'{4}'
  6359. from ICSInventoryLot a
  6360. inner join ICSInspection b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint and b.Enable='1'
  6361. where a.LotNo='{4}' and a.WorkPoint='{3}'",
  6362. LotNo, MUSER, MUSERNAME, WorkPoints, OldLotNo);
  6363. sql += "\r\n";
  6364. }
  6365. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  6366. return count;
  6367. }
  6368. public string GetNewLotNo(string LotNO)
  6369. {
  6370. DataTable dt = new DataTable();
  6371. List<DbParameter> parameter = new List<DbParameter>();
  6372. //string sql = @"select max(LotNo) as NewLotNo from ICSInventoryLot where EATTRIBUTE1='{0}' ";
  6373. string sql = @"SELECT TOP 1 LotNO as NewLotNo FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}'
  6374. ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
  6375. sql = string.Format(sql, LotNO);
  6376. dt = Repository().FindTableBySql(sql.ToString());
  6377. if (dt == null || dt.Rows.Count == 0 || dt.Rows[0]["NewLotNo"].ToString() == "")
  6378. {
  6379. return LotNO + "-1";
  6380. }
  6381. else
  6382. {
  6383. string newLotNO = dt.Rows[0]["NewLotNo"].ToString();
  6384. int COUNT = Convert.ToInt32(newLotNO.Substring(newLotNO.LastIndexOf('-') + 1)) + 1;
  6385. return LotNO + "-" + COUNT.ToString();
  6386. }
  6387. }
  6388. public DataTable SelGDLX()
  6389. {
  6390. string sql = string.Empty;
  6391. DataTable dt = null;
  6392. sql = string.Format(@"select distinct isnull(MOType,'') as Code ,isnull(MOType,'') as Name from dbo.ICSMO where isnull(MOType,'')<>''");
  6393. dt = SqlHelper.GetDataTableBySql(sql);
  6394. return dt;
  6395. }
  6396. public DataTable GetFreeEnble()
  6397. {
  6398. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6399. string sql = @"
  6400. select * from ICSExtensionEnable where WorkPoint='" + WorkPoints + "' order by cast(EATTRIBUTE1 as int) ";
  6401. return Repository().FindTableBySql(sql.ToString());
  6402. }
  6403. public DataTable GetInvBatchEnable(string InvCode)
  6404. {
  6405. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6406. string sql = @"select distinct BatchEnable from ICSInventory where InvCode='{0}' and WorkPoint='{1}'";
  6407. sql = string.Format(sql, InvCode, WorkPoints);
  6408. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  6409. return dt;
  6410. }
  6411. //副产品
  6412. public DataTable GetGridJsonFCP(string queryJson, ref Pagination jqgridparam)
  6413. {
  6414. DataTable dt = new DataTable();
  6415. var queryParam = queryJson.ToJObject();
  6416. List<DbParameter> parameter = new List<DbParameter>();
  6417. object Figure = GetDecimalDigits();
  6418. #region [SQL]
  6419. 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,
  6420. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity ,
  6421. 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
  6422. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6423. ,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,
  6424. a.EATTRIBUTE9,a.EATTRIBUTE10
  6425. from ICSMOPick a
  6426. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  6427. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6428. left join (
  6429. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6430. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='18'
  6431. where isnull(ee.EATTRIBUTE1,'')=''
  6432. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6433. )c
  6434. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6435. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6436. where a.EATTRIBUTE1='1' ";
  6437. sql = string.Format(sql, Figure);
  6438. #endregion
  6439. if (!string.IsNullOrWhiteSpace(queryJson))
  6440. {
  6441. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  6442. {
  6443. sql += " and d.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  6444. }
  6445. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  6446. {
  6447. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  6448. }
  6449. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  6450. {
  6451. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  6452. }
  6453. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  6454. {
  6455. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  6456. }
  6457. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  6458. {
  6459. string POStatus = queryParam["POStatus"].ToString();
  6460. if (POStatus == "0")
  6461. {
  6462. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  6463. }
  6464. else if (POStatus == "1")
  6465. {
  6466. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  6467. }
  6468. else
  6469. {
  6470. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  6471. }
  6472. }
  6473. }
  6474. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  6475. {
  6476. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  6477. }
  6478. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  6479. {
  6480. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  6481. }
  6482. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6483. }
  6484. /// <summary>
  6485. /// 锐腾调入单生成条码
  6486. /// </summary>
  6487. /// <param name="queryJson"></param>
  6488. /// <param name="jqgridparam"></param>
  6489. /// <returns></returns>
  6490. public DataTable GetGridJsonTransfer(string queryJson, ref Pagination jqgridparam)
  6491. {
  6492. DataTable dt = new DataTable();
  6493. var queryParam = queryJson.ToJObject();
  6494. List<DbParameter> parameter = new List<DbParameter>();
  6495. object Figure = GetDecimalDigits();
  6496. #region [SQL]
  6497. 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
  6498. FROM ICSTransfer a
  6499. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  6500. LEFT JOIN (SELECT c.TransCode,c.WorkPoint,c.TransSequence,sum(d.Quantity) Quantity FROM ICSInventoryLotDetail c
  6501. LEFT JOIN ICSInventoryLot d ON c.LotNo=d.LotNo AND d.WorkPoint=c.WorkPoint
  6502. WHERE ISNULL(d.EATTRIBUTE1, '')=''
  6503. GROUP BY c.TransCode,c.WorkPoint,c.TransSequence ) c ON a.TransferNO=c.TransCode AND c.WorkPoint=a.WorkPoint AND a.Sequence=c.TransSequence
  6504. left JOIN ICSExtension f ON f.Id=a.ExtensionID AND f.WorkPoint=a.WorkPoint
  6505. WHERE a.Type='2'
  6506. AND Isnull(a.Status,'')<>3
  6507. ";
  6508. sql = string.Format(sql, Figure);
  6509. #endregion
  6510. if (!string.IsNullOrWhiteSpace(queryJson))
  6511. {
  6512. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  6513. {
  6514. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  6515. }
  6516. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  6517. {
  6518. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  6519. }
  6520. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  6521. {
  6522. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  6523. }
  6524. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  6525. {
  6526. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  6527. }
  6528. }
  6529. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  6530. {
  6531. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  6532. }
  6533. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  6534. {
  6535. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  6536. }
  6537. 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
  6538. where 1=1 ";
  6539. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  6540. {
  6541. string POStatus = queryParam["POStatus"].ToString();
  6542. if (POStatus == "0")
  6543. {
  6544. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  6545. }
  6546. else if (POStatus == "1")
  6547. {
  6548. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  6549. }
  6550. else
  6551. {
  6552. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  6553. }
  6554. }
  6555. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6556. }
  6557. /// <summary>
  6558. /// 采购入库生成条码
  6559. /// </summary>
  6560. /// <param name="queryJson"></param>
  6561. /// <param name="jqgridparam"></param>
  6562. /// <returns></returns>
  6563. ///
  6564. public DataTable GetGridJsonPurchaseReceive(string queryJson, ref Pagination jqgridparam)
  6565. {
  6566. DataTable dt = new DataTable();
  6567. var queryParam = queryJson.ToJObject();
  6568. List<DbParameter> parameter = new List<DbParameter>();
  6569. object Figure = GetDecimalDigits();
  6570. #region [SQL]
  6571. 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,
  6572. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  6573. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  6574. ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity
  6575. ,c.LOTQTY
  6576. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  6577. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6578. ,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,
  6579. 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,
  6580. b.EATTRIBUTE9 as ICSInventoryEATTRIBUTE9,b.EATTRIBUTE10 as ICSInventoryEATTRIBUTE10,
  6581. isnull(b.EATTRIBUTE2,'') as MPQ
  6582. from ICSPurchaseReceive a
  6583. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6584. left join (
  6585. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6586. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='22'
  6587. where isnull(ee.EATTRIBUTE1,'')=''
  6588. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6589. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6590. left join ICSPurchaseOrder d on a.SourceCode = d.POCode and a.SourceSequence = d.Sequence and a.WorkPoint=d.WorkPoint
  6591. left join ICSWarehouse e on a.WHCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  6592. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6593. where a.Type='1' ";
  6594. sql = string.Format(sql, Figure);
  6595. #endregion
  6596. if (!string.IsNullOrWhiteSpace(queryJson))
  6597. {
  6598. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  6599. {
  6600. sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  6601. }
  6602. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  6603. {
  6604. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  6605. }
  6606. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  6607. {
  6608. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  6609. }
  6610. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  6611. {
  6612. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  6613. }
  6614. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  6615. {
  6616. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  6617. }
  6618. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  6619. {
  6620. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  6621. }
  6622. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  6623. {
  6624. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  6625. }
  6626. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  6627. {
  6628. string POStatus = queryParam["POStatus"].ToString();
  6629. if (POStatus == "0")
  6630. {
  6631. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  6632. }
  6633. else if (POStatus == "1")
  6634. {
  6635. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  6636. }
  6637. else
  6638. {
  6639. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  6640. }
  6641. }
  6642. }
  6643. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  6644. {
  6645. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  6646. }
  6647. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  6648. {
  6649. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  6650. }
  6651. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6652. }
  6653. // public DataTable GetGridJsonPurchaseReceive(string queryJson, ref Pagination jqgridparam)
  6654. // {
  6655. // DataTable dt = new DataTable();
  6656. // var queryParam = queryJson.ToJObject();
  6657. // List<DbParameter> parameter = new List<DbParameter>();
  6658. // object Figure = GetDecimalDigits();
  6659. // #region [SQL]
  6660. // 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,
  6661. // CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  6662. // ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  6663. // ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity
  6664. // ,c.LOTQTY
  6665. // ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  6666. // ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  6667. // ,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,
  6668. // a.EATTRIBUTE9,a.EATTRIBUTE10,
  6669. // isnull(b.EATTRIBUTE2,'') as MPQ
  6670. // from ICSPurchaseReceive a
  6671. // left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  6672. // left join (
  6673. // select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  6674. // left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='22'
  6675. // where isnull(ee.EATTRIBUTE1,'')=''
  6676. // group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  6677. // ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  6678. // left join ICSPurchaseOrder d on a.SourceCode = d.POCode and a.SourceSequence = d.Sequence and a.WorkPoint=d.WorkPoint
  6679. // left join ICSWarehouse e on a.WHCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  6680. // left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  6681. // where a.Type='1' ";
  6682. // sql = string.Format(sql, Figure);
  6683. // #endregion
  6684. // if (!string.IsNullOrWhiteSpace(queryJson))
  6685. // {
  6686. // if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  6687. // {
  6688. // sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  6689. // }
  6690. // if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  6691. // {
  6692. // sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  6693. // }
  6694. // if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  6695. // {
  6696. // sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  6697. // }
  6698. // if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  6699. // {
  6700. // sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  6701. // }
  6702. // }
  6703. // if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  6704. // {
  6705. // sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  6706. // }
  6707. // if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  6708. // {
  6709. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  6710. // }
  6711. // 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,
  6712. //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
  6713. // where 1=1 ";
  6714. // if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  6715. // {
  6716. // string POStatus = queryParam["POStatus"].ToString();
  6717. // if (POStatus == "0")
  6718. // {
  6719. // //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  6720. // }
  6721. // else if (POStatus == "1")
  6722. // {
  6723. // sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  6724. // }
  6725. // else
  6726. // {
  6727. // sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  6728. // }
  6729. // }
  6730. // return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  6731. // }
  6732. /// <summary>
  6733. /// 采购入库获取单据信息
  6734. /// </summary>
  6735. /// <param name="FGGDMOCode"></param>
  6736. /// <param name="Sequence"></param>
  6737. /// <param name="WorkPoint"></param>
  6738. /// <returns></returns>
  6739. public DataTable GetSubGridJsonPurchaseReceiveByCreate(string RCVCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  6740. {
  6741. DataTable dt = new DataTable();
  6742. object Figure = GetDecimalDigits();
  6743. List<DbParameter> parameter = new List<DbParameter>();
  6744. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn001', " + Quantity + ",1,1,'')";
  6745. object Num = SqlHelper.ExecuteScalar(SeachNum);
  6746. string sql = $@"SELECT a.InvCode, " + Num + @" as Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  6747. , CAST ( a.Amount AS DECIMAL ( 38,6 )) AS Amount
  6748. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  6749. , CAST ( ( " + Num + @"- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  6750. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  6751. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays
  6752. , 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
  6753. , 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 ,
  6754. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  6755. FROM ICSPurchaseReceive a
  6756. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  6757. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  6758. FROM ICSInventoryLot a
  6759. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '22'
  6760. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  6761. GROUP BY
  6762. b.TransCode,
  6763. b.TransSequence
  6764. ) c ON a.RCVCode = c.TransCode AND a.Sequence = c.TransSequence
  6765. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  6766. WHERE 1 = 1
  6767. and a.RCVCode='" + RCVCode + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoint + "'";
  6768. // sql = string.Format(sql, Figure);
  6769. return Repository().FindTableBySql(sql.ToString());
  6770. }
  6771. /// <summary>
  6772. /// 采购入库单生成条码 保存
  6773. /// </summary>
  6774. /// <param name="RCVCode"></param>
  6775. /// <param name="Sequence"></param>
  6776. /// <param name="keyValue"></param>
  6777. /// <param name="WorkPoint"></param>
  6778. /// <returns></returns>
  6779. public int SubmitFormCGRKDSC(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  6780. {
  6781. var queryParam = keyValue.ToJObject();
  6782. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6783. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  6784. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  6785. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  6786. decimal LOTQTY = minPackQty;
  6787. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  6788. string sql = string.Empty;
  6789. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  6790. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  6791. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  6792. string sqls = string.Empty;
  6793. string Colspan = "";
  6794. string str1 = "";
  6795. List<string> ExtensionIDList = new List<string>();
  6796. #region 装箱的功能
  6797. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  6798. string VenCode = queryParam["VenCode"].ToString();
  6799. int PackCount = 0;//每箱放的数量
  6800. int Pack_YuShu = 0;//需要平摊的数量
  6801. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  6802. List<PackModel> List_Pack = new List<PackModel>();
  6803. int ZQty = 0;
  6804. if (createPackCount > 0)
  6805. {
  6806. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  6807. if (Pack_YuShu == 0)
  6808. {
  6809. PackCount = (createPageCount / createPackCount);
  6810. }
  6811. else
  6812. {
  6813. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  6814. }
  6815. for (int jj = 0; jj < createPackCount; jj++)
  6816. {
  6817. object CARID = Guid.NewGuid();
  6818. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  6819. sql += @" INSERT INTO dbo.ICSContainer
  6820. ( ID,ContainerCode ,
  6821. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  6822. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  6823. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  6824. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  6825. PackModel PP = new PackModel();
  6826. PP.ID = CARID.ToString();
  6827. PP.PackCode = Carton;
  6828. if (jj < Pack_YuShu)
  6829. {
  6830. PP.FristBarIndex = ZQty;
  6831. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  6832. }
  6833. else
  6834. {
  6835. PP.FristBarIndex = ZQty;
  6836. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  6837. }
  6838. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  6839. List_Pack.Add(PP);
  6840. }
  6841. }
  6842. #endregion
  6843. for (int i = 0; i < createPageCount; i++)
  6844. {
  6845. if (i + 1 == createPageCount)
  6846. {
  6847. if (minPackQty * createPageCount > thisCreateQty)
  6848. {
  6849. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  6850. }
  6851. }
  6852. 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();
  6853. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  6854. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  6855. bool flag = true;
  6856. foreach (var item in ExtensionIDList)
  6857. {
  6858. if (item == Colspan + WorkPoint)
  6859. {
  6860. flag = false;
  6861. }
  6862. }
  6863. if (ExtensionID == null && flag == true)
  6864. {
  6865. str1 = Guid.NewGuid().ToString();
  6866. 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)
  6867. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  6868. 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(),
  6869. MUSER, MUSERNAME, WorkPoints);
  6870. }
  6871. else if (ExtensionID != null)
  6872. {
  6873. str1 = ExtensionID.ToString();
  6874. }
  6875. ExtensionIDList.Add(Colspan + WorkPoint);
  6876. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  6877. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  6878. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  6879. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  6880. sql += string.Format(@"
  6881. insert into ICSInventoryLot
  6882. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  6883. select
  6884. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','22','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  6885. from ICSPurchaseReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  6886. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  6887. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  6888. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  6889. sql += "\r\n";
  6890. //装箱的功能
  6891. if (List_Pack.Count > 0)
  6892. {
  6893. PackModel mm = new PackModel();
  6894. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  6895. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  6896. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  6897. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  6898. }
  6899. }
  6900. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  6901. return count;
  6902. }
  6903. /// <summary>
  6904. /// 采购入库单生成条码 保存(新)
  6905. /// </summary>
  6906. /// <param name="RCVCode"></param>
  6907. /// <param name="Sequence"></param>
  6908. /// <param name="keyValue"></param>
  6909. /// <param name="WorkPoint"></param>
  6910. /// <returns></returns>
  6911. public int SubmitFormCGRKDSCNew(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  6912. {
  6913. var queryParam = keyValue.ToJObject();
  6914. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  6915. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  6916. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  6917. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  6918. List<decimal> lotQtys = new List<decimal>();
  6919. foreach (var jLotno in jLotnos)
  6920. {
  6921. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  6922. lotQtys.Add(qty);
  6923. }
  6924. int createPageCount = lotQtys.Count();
  6925. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  6926. string sql = string.Empty;
  6927. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  6928. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  6929. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  6930. string sqls = string.Empty;
  6931. string Colspan = "";
  6932. string str1 = "";
  6933. List<string> ExtensionIDList = new List<string>();
  6934. #region 装箱的功能
  6935. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  6936. string VenCode = queryParam["VenCode"].ToString();
  6937. int PackCount = 0;//每箱放的数量
  6938. int Pack_YuShu = 0;//需要平摊的数量
  6939. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  6940. List<PackModel> List_Pack = new List<PackModel>();
  6941. int ZQty = 0;
  6942. if (createPackCount > 0)
  6943. {
  6944. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  6945. if (Pack_YuShu == 0)
  6946. {
  6947. PackCount = (createPageCount / createPackCount);
  6948. }
  6949. else
  6950. {
  6951. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  6952. }
  6953. for (int jj = 0; jj < createPackCount; jj++)
  6954. {
  6955. object CARID = Guid.NewGuid();
  6956. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  6957. sql += @" INSERT INTO dbo.ICSContainer
  6958. ( ID,ContainerCode ,
  6959. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  6960. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  6961. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  6962. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  6963. PackModel PP = new PackModel();
  6964. PP.ID = CARID.ToString();
  6965. PP.PackCode = Carton;
  6966. if (jj < Pack_YuShu)
  6967. {
  6968. PP.FristBarIndex = ZQty;
  6969. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  6970. }
  6971. else
  6972. {
  6973. PP.FristBarIndex = ZQty;
  6974. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  6975. }
  6976. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  6977. List_Pack.Add(PP);
  6978. }
  6979. }
  6980. #endregion
  6981. for (int i = 0; i < createPageCount; i++)
  6982. {
  6983. //if (i + 1 == createPageCount)
  6984. //{
  6985. // if (minPackQty * createPageCount > thisCreateQty)
  6986. // {
  6987. // LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  6988. // }
  6989. //}
  6990. decimal LOTQTY = lotQtys[i];
  6991. 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();
  6992. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  6993. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  6994. bool flag = true;
  6995. foreach (var item in ExtensionIDList)
  6996. {
  6997. if (item == Colspan + WorkPoint)
  6998. {
  6999. flag = false;
  7000. }
  7001. }
  7002. if (ExtensionID == null && flag == true)
  7003. {
  7004. str1 = Guid.NewGuid().ToString();
  7005. 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)
  7006. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7007. 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(),
  7008. MUSER, MUSERNAME, WorkPoints);
  7009. }
  7010. else if (ExtensionID != null)
  7011. {
  7012. str1 = ExtensionID.ToString();
  7013. }
  7014. ExtensionIDList.Add(Colspan + WorkPoint);
  7015. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7016. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7017. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7018. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7019. try
  7020. {
  7021. sql += string.Format(@"
  7022. insert into ICSInventoryLot
  7023. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7024. select
  7025. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','22','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7026. from ICSPurchaseReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7027. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  7028. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7029. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7030. sql += "\r\n";
  7031. }
  7032. catch (Exception EX)
  7033. {
  7034. throw EX;
  7035. }
  7036. //装箱的功能
  7037. if (List_Pack.Count > 0)
  7038. {
  7039. PackModel mm = new PackModel();
  7040. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7041. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7042. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7043. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7044. }
  7045. }
  7046. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7047. return count;
  7048. }
  7049. /// <summary>
  7050. /// 委外采购入库生成条码
  7051. /// </summary>
  7052. /// <param name="queryJson"></param>
  7053. /// <param name="jqgridparam"></param>
  7054. /// <returns></returns>
  7055. public DataTable GetGridJsonOutPurchaseReceive(string queryJson, ref Pagination jqgridparam)
  7056. {
  7057. DataTable dt = new DataTable();
  7058. var queryParam = queryJson.ToJObject();
  7059. List<DbParameter> parameter = new List<DbParameter>();
  7060. object Figure = GetDecimalDigits();
  7061. #region [SQL]
  7062. 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,
  7063. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  7064. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  7065. ,CAST(a.RCVQuantity AS DECIMAL(38,{0})) as RCVQuantity
  7066. ,c.LOTQTY
  7067. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  7068. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  7069. ,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,
  7070. a.EATTRIBUTE9,a.EATTRIBUTE10
  7071. from ICSOutsourcingReceive a
  7072. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  7073. left join (
  7074. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  7075. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='23'
  7076. where isnull(ee.EATTRIBUTE1,'')=''
  7077. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  7078. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  7079. left join ICSPurchaseOrder d on a.SourceCode = d.POCode and a.SourceSequence = d.Sequence and a.WorkPoint=d.WorkPoint
  7080. left join ICSWarehouse e on a.WHCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  7081. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  7082. where a.Type='1' ";
  7083. sql = string.Format(sql, Figure);
  7084. #endregion
  7085. if (!string.IsNullOrWhiteSpace(queryJson))
  7086. {
  7087. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  7088. {
  7089. sql += " and a.RCVCode like '%" + queryParam["POCode"].ToString() + "%' ";
  7090. }
  7091. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  7092. {
  7093. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  7094. }
  7095. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  7096. {
  7097. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  7098. }
  7099. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  7100. {
  7101. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  7102. }
  7103. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  7104. {
  7105. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  7106. }
  7107. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  7108. {
  7109. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  7110. }
  7111. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  7112. {
  7113. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  7114. }
  7115. }
  7116. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  7117. {
  7118. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  7119. }
  7120. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  7121. {
  7122. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  7123. }
  7124. 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,
  7125. 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
  7126. where 1=1 ";
  7127. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  7128. {
  7129. string POStatus = queryParam["POStatus"].ToString();
  7130. if (POStatus == "0")
  7131. {
  7132. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  7133. }
  7134. else if (POStatus == "1")
  7135. {
  7136. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  7137. }
  7138. else
  7139. {
  7140. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  7141. }
  7142. }
  7143. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  7144. }
  7145. /// <summary>
  7146. /// 委外采购入库获取单据信息
  7147. /// </summary>
  7148. /// <param name="FGGDMOCode"></param>
  7149. /// <param name="Sequence"></param>
  7150. /// <param name="WorkPoint"></param>
  7151. /// <returns></returns>
  7152. public DataTable GetSubGridJsonOutPurchaseReceiveByCreate(string RCVCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  7153. {
  7154. DataTable dt = new DataTable();
  7155. object Figure = GetDecimalDigits();
  7156. List<DbParameter> parameter = new List<DbParameter>();
  7157. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn001', " + Quantity + ",1,1,'')";
  7158. object Num = SqlHelper.ExecuteScalar(SeachNum);
  7159. string sql = $@"SELECT a.InvCode, " + Num + @" as Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  7160. , CAST ( a.Amount AS DECIMAL ( 38,6 )) AS Amount
  7161. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  7162. , CAST ( ( " + Num + @"- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  7163. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  7164. , 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' else b.EATTRIBUTE2 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
  7165. , 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 ,
  7166. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  7167. FROM ICSOutsourcingReceive a
  7168. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  7169. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  7170. FROM ICSInventoryLot a
  7171. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '23'
  7172. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  7173. GROUP BY
  7174. b.TransCode,
  7175. b.TransSequence
  7176. ) c ON a.RCVCode = c.TransCode AND a.Sequence = c.TransSequence
  7177. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  7178. WHERE 1 = 1
  7179. and a.RCVCode='" + RCVCode + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoint + "'";
  7180. sql = string.Format(sql, Figure);
  7181. return Repository().FindTableBySql(sql.ToString());
  7182. }
  7183. /// <summary>
  7184. /// 委外采购入库单生成条码 保存
  7185. /// </summary>
  7186. /// <param name="RCVCode"></param>
  7187. /// <param name="Sequence"></param>
  7188. /// <param name="keyValue"></param>
  7189. /// <param name="WorkPoint"></param>
  7190. /// <returns></returns>
  7191. public int SubmitFormWWCGRKDSC(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  7192. {
  7193. var queryParam = keyValue.ToJObject();
  7194. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7195. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  7196. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7197. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7198. decimal LOTQTY = minPackQty;
  7199. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  7200. string sql = string.Empty;
  7201. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7202. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7203. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7204. string sqls = string.Empty;
  7205. string Colspan = "";
  7206. string str1 = "";
  7207. List<string> ExtensionIDList = new List<string>();
  7208. #region 装箱的功能
  7209. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7210. string VenCode = queryParam["VenCode"].ToString();
  7211. int PackCount = 0;//每箱放的数量
  7212. int Pack_YuShu = 0;//需要平摊的数量
  7213. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7214. List<PackModel> List_Pack = new List<PackModel>();
  7215. int ZQty = 0;
  7216. if (createPackCount > 0)
  7217. {
  7218. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7219. if (Pack_YuShu == 0)
  7220. {
  7221. PackCount = (createPageCount / createPackCount);
  7222. }
  7223. else
  7224. {
  7225. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7226. }
  7227. for (int jj = 0; jj < createPackCount; jj++)
  7228. {
  7229. object CARID = Guid.NewGuid();
  7230. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7231. sql += @" INSERT INTO dbo.ICSContainer
  7232. ( ID,ContainerCode ,
  7233. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7234. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7235. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7236. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7237. PackModel PP = new PackModel();
  7238. PP.ID = CARID.ToString();
  7239. PP.PackCode = Carton;
  7240. if (jj < Pack_YuShu)
  7241. {
  7242. PP.FristBarIndex = ZQty;
  7243. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7244. }
  7245. else
  7246. {
  7247. PP.FristBarIndex = ZQty;
  7248. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7249. }
  7250. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7251. List_Pack.Add(PP);
  7252. }
  7253. }
  7254. #endregion
  7255. for (int i = 0; i < createPageCount; i++)
  7256. {
  7257. if (i + 1 == createPageCount)
  7258. {
  7259. if (minPackQty * createPageCount > thisCreateQty)
  7260. {
  7261. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7262. }
  7263. }
  7264. 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();
  7265. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7266. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7267. bool flag = true;
  7268. foreach (var item in ExtensionIDList)
  7269. {
  7270. if (item == Colspan + WorkPoint)
  7271. {
  7272. flag = false;
  7273. }
  7274. }
  7275. if (ExtensionID == null && flag == true)
  7276. {
  7277. str1 = Guid.NewGuid().ToString();
  7278. 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)
  7279. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7280. 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(),
  7281. MUSER, MUSERNAME, WorkPoints);
  7282. }
  7283. else if (ExtensionID != null)
  7284. {
  7285. str1 = ExtensionID.ToString();
  7286. }
  7287. ExtensionIDList.Add(Colspan + WorkPoint);
  7288. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7289. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7290. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7291. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7292. sql += string.Format(@"
  7293. insert into ICSInventoryLot
  7294. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7295. select
  7296. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','23','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7297. from ICSOutsourcingReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7298. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  7299. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7300. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7301. sql += "\r\n";
  7302. //装箱的功能
  7303. if (List_Pack.Count > 0)
  7304. {
  7305. PackModel mm = new PackModel();
  7306. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7307. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7308. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7309. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7310. }
  7311. }
  7312. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7313. return count;
  7314. }
  7315. /// <summary>
  7316. /// 委外采购入库单生成条码 保存(新)
  7317. /// </summary>
  7318. /// <param name="RCVCode"></param>
  7319. /// <param name="Sequence"></param>
  7320. /// <param name="keyValue"></param>
  7321. /// <param name="WorkPoint"></param>
  7322. /// <returns></returns>
  7323. public int SubmitFormWWCGRKDSCNew(string RCVCode, string Sequence, string keyValue, string WorkPoint)
  7324. {
  7325. var queryParam = keyValue.ToJObject();
  7326. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7327. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7328. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7329. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  7330. List<decimal> lotQtys = new List<decimal>();
  7331. foreach (var jLotno in jLotnos)
  7332. {
  7333. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  7334. lotQtys.Add(qty);
  7335. }
  7336. int createPageCount = lotQtys.Count();
  7337. string Pre = "KCP" + RCVCode + (Convert.ToInt32(Sequence)).ToString("D4");
  7338. string sql = string.Empty;
  7339. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7340. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7341. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7342. string sqls = string.Empty;
  7343. string Colspan = "";
  7344. string str1 = "";
  7345. List<string> ExtensionIDList = new List<string>();
  7346. #region 装箱的功能
  7347. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7348. string VenCode = queryParam["VenCode"].ToString();
  7349. int PackCount = 0;//每箱放的数量
  7350. int Pack_YuShu = 0;//需要平摊的数量
  7351. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7352. List<PackModel> List_Pack = new List<PackModel>();
  7353. int ZQty = 0;
  7354. if (createPackCount > 0)
  7355. {
  7356. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7357. if (Pack_YuShu == 0)
  7358. {
  7359. PackCount = (createPageCount / createPackCount);
  7360. }
  7361. else
  7362. {
  7363. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7364. }
  7365. for (int jj = 0; jj < createPackCount; jj++)
  7366. {
  7367. object CARID = Guid.NewGuid();
  7368. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7369. sql += @" INSERT INTO dbo.ICSContainer
  7370. ( ID,ContainerCode ,
  7371. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7372. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7373. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7374. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7375. PackModel PP = new PackModel();
  7376. PP.ID = CARID.ToString();
  7377. PP.PackCode = Carton;
  7378. if (jj < Pack_YuShu)
  7379. {
  7380. PP.FristBarIndex = ZQty;
  7381. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7382. }
  7383. else
  7384. {
  7385. PP.FristBarIndex = ZQty;
  7386. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7387. }
  7388. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7389. List_Pack.Add(PP);
  7390. }
  7391. }
  7392. #endregion
  7393. for (int i = 0; i < createPageCount; i++)
  7394. {
  7395. //if (i + 1 == createPageCount)
  7396. //{
  7397. // if (minPackQty * createPageCount > thisCreateQty)
  7398. // {
  7399. // LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7400. // }
  7401. //}
  7402. decimal LOTQTY = lotQtys[i];
  7403. 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();
  7404. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7405. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7406. bool flag = true;
  7407. foreach (var item in ExtensionIDList)
  7408. {
  7409. if (item == Colspan + WorkPoint)
  7410. {
  7411. flag = false;
  7412. }
  7413. }
  7414. if (ExtensionID == null && flag == true)
  7415. {
  7416. str1 = Guid.NewGuid().ToString();
  7417. 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)
  7418. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7419. 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(),
  7420. MUSER, MUSERNAME, WorkPoints);
  7421. }
  7422. else if (ExtensionID != null)
  7423. {
  7424. str1 = ExtensionID.ToString();
  7425. }
  7426. ExtensionIDList.Add(Colspan + WorkPoint);
  7427. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7428. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7429. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7430. LotNo, RCVCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7431. try
  7432. {
  7433. sql += string.Format(@"
  7434. insert into ICSInventoryLot
  7435. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7436. select
  7437. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','23','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7438. from ICSOutsourcingReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7439. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, RCVCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / LOTQTY, queryParam["ExpirationDate"].ToString()
  7440. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7441. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7442. sql += "\r\n";
  7443. }
  7444. catch (Exception EX)
  7445. {
  7446. throw EX;
  7447. }
  7448. //装箱的功能
  7449. if (List_Pack.Count > 0)
  7450. {
  7451. PackModel mm = new PackModel();
  7452. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7453. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7454. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7455. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7456. }
  7457. }
  7458. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7459. return count;
  7460. }
  7461. /// <summary>
  7462. /// 铭锋 退货调拨申请单生成条码
  7463. /// </summary>
  7464. /// <param name="queryJson"></param>
  7465. /// <param name="jqgridparam"></param>
  7466. /// <returns></returns>
  7467. public DataTable GetGridJsonTransferApplication(string queryJson, ref Pagination jqgridparam)
  7468. {
  7469. DataTable dt = new DataTable();
  7470. var queryParam = queryJson.ToJObject();
  7471. List<DbParameter> parameter = new List<DbParameter>();
  7472. object Figure = GetDecimalDigits();
  7473. #region [SQL]
  7474. string sql = @" select * from (select distinct a.ID,a.TransferNO,a.Sequence
  7475. ,a.FromWarehouseCode as FromWHCode,e.WarehouseName as FromWHName,a.FromLocationCode as FromLotCode,h.LocationName as FromLotName,
  7476. a.ToWarehouseCode as ToWHCode,g.WarehouseName as ToWHName,a.ToLocationCode as ToLotCode,i.LocationName as ToLotName,
  7477. a.InvCode, b.InvName,b.InvStd,b.InvUnit,
  7478. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  7479. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  7480. ,CAST(a.TransferQuantity AS DECIMAL(38,{0})) as TransferQuantity
  7481. ,c.LOTQTY
  7482. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  7483. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  7484. ,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,
  7485. a.EATTRIBUTE9,a.EATTRIBUTE10
  7486. from ICSTransferApplication a
  7487. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  7488. left join (
  7489. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  7490. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='202'
  7491. where isnull(ee.EATTRIBUTE1,'')=''
  7492. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  7493. ) c on a.TransferNO=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  7494. left join ICSWarehouse e on a.FromWarehouseCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  7495. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  7496. left join ICSWarehouse g on a.ToWarehouseCode=g.WarehouseCode and a.WorkPoint=g.WorkPoint
  7497. left join ICSLocation h on a.FromLocationCode=h.LocationCode and a.WorkPoint=h.WorkPoint
  7498. left join ICSLocation i on a.ToLocationCode=i.LocationCode and a.WorkPoint=i.WorkPoint
  7499. where 1 = 1";
  7500. sql = string.Format(sql, Figure);
  7501. #endregion
  7502. if (!string.IsNullOrWhiteSpace(queryJson))
  7503. {
  7504. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  7505. {
  7506. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  7507. }
  7508. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  7509. {
  7510. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  7511. }
  7512. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  7513. {
  7514. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  7515. }
  7516. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  7517. {
  7518. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  7519. }
  7520. }
  7521. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  7522. {
  7523. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  7524. }
  7525. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  7526. //{
  7527. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  7528. //}
  7529. 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,
  7530. a.ToWarehouseCode,g.WarehouseName,a.ToLocationCode,i.LocationName,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,c.LOTQTY,
  7531. 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
  7532. where 1=1 ";
  7533. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  7534. {
  7535. string POStatus = queryParam["POStatus"].ToString();
  7536. if (POStatus == "0")
  7537. {
  7538. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  7539. }
  7540. else if (POStatus == "1")
  7541. {
  7542. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  7543. }
  7544. else
  7545. {
  7546. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  7547. }
  7548. }
  7549. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  7550. }
  7551. /// <summary>
  7552. /// 铭锋 退货调拨申请单获取单据信息
  7553. /// </summary>
  7554. /// <param name="TransferNO"></param>
  7555. /// <param name="Sequence"></param>
  7556. /// <param name="WorkPoint"></param>
  7557. /// <returns></returns>
  7558. public DataTable GetSubGridJsonTransferApplicationByCreate(string TransferNO, string Sequence, string WorkPoint)
  7559. {
  7560. DataTable dt = new DataTable();
  7561. object Figure = GetDecimalDigits();
  7562. List<DbParameter> parameter = new List<DbParameter>();
  7563. string sql = $@" SELECT a.InvCode,a.Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  7564. , CAST ( xx.Quantity AS DECIMAL ( 38,6 )) AS Amount
  7565. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  7566. , CAST ( ( xx.Quantity- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  7567. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  7568. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays,isnull(b.EATTRIBUTE2,'') as MPQ
  7569. , 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 ,
  7570. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  7571. FROM ICSTransferApplication a
  7572. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  7573. 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
  7574. END AS Quantity
  7575. FROM ICSTransferApplication a
  7576. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode
  7577. AND a.WorkPoint= b.WorkPoint
  7578. ) xx ON xx.Id= a.Id
  7579. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  7580. FROM ICSInventoryLot a
  7581. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '202'
  7582. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  7583. GROUP BY
  7584. b.TransCode,
  7585. b.TransSequence
  7586. ) c ON a.TransferNO = c.TransCode AND a.Sequence = c.TransSequence
  7587. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  7588. WHERE 1 = 1
  7589. and a.TransferNO='{TransferNO}' and a.Sequence='{Sequence}'
  7590. and a.WorkPoint='{WorkPoint}'";
  7591. sql = string.Format(sql, Figure);
  7592. return Repository().FindTableBySql(sql.ToString());
  7593. }
  7594. /// <summary>
  7595. /// 铭锋 退货调拨申请单生成条码 保存
  7596. /// </summary>
  7597. /// <param name="TransferNO"></param>
  7598. /// <param name="Sequence"></param>
  7599. /// <param name="keyValue"></param>
  7600. /// <param name="WorkPoint"></param>
  7601. /// <returns></returns>
  7602. public int SubmitFormTransferApplicatioSave(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  7603. {
  7604. var queryParam = keyValue.ToJObject();
  7605. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7606. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  7607. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7608. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7609. decimal LOTQTY = minPackQty;
  7610. string Pre = "KCP" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  7611. string sql = string.Empty;
  7612. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7613. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7614. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7615. string sqls = string.Empty;
  7616. string Colspan = "";
  7617. string str1 = "";
  7618. List<string> ExtensionIDList = new List<string>();
  7619. #region 装箱的功能
  7620. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7621. string VenCode = queryParam["VenCode"].ToString();
  7622. int PackCount = 0;//每箱放的数量
  7623. int Pack_YuShu = 0;//需要平摊的数量
  7624. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7625. List<PackModel> List_Pack = new List<PackModel>();
  7626. int ZQty = 0;
  7627. if (createPackCount > 0)
  7628. {
  7629. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7630. if (Pack_YuShu == 0)
  7631. {
  7632. PackCount = (createPageCount / createPackCount);
  7633. }
  7634. else
  7635. {
  7636. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7637. }
  7638. for (int jj = 0; jj < createPackCount; jj++)
  7639. {
  7640. object CARID = Guid.NewGuid();
  7641. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7642. sql += @" INSERT INTO dbo.ICSContainer
  7643. ( ID,ContainerCode ,
  7644. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7645. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7646. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7647. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7648. PackModel PP = new PackModel();
  7649. PP.ID = CARID.ToString();
  7650. PP.PackCode = Carton;
  7651. if (jj < Pack_YuShu)
  7652. {
  7653. PP.FristBarIndex = ZQty;
  7654. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7655. }
  7656. else
  7657. {
  7658. PP.FristBarIndex = ZQty;
  7659. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7660. }
  7661. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7662. List_Pack.Add(PP);
  7663. }
  7664. }
  7665. #endregion
  7666. for (int i = 0; i < createPageCount; i++)
  7667. {
  7668. if (i + 1 == createPageCount)
  7669. {
  7670. if (minPackQty * createPageCount > thisCreateQty)
  7671. {
  7672. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7673. }
  7674. }
  7675. 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();
  7676. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7677. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7678. bool flag = true;
  7679. foreach (var item in ExtensionIDList)
  7680. {
  7681. if (item == Colspan + WorkPoint)
  7682. {
  7683. flag = false;
  7684. }
  7685. }
  7686. if (ExtensionID == null && flag == true)
  7687. {
  7688. str1 = Guid.NewGuid().ToString();
  7689. 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)
  7690. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7691. 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(),
  7692. MUSER, MUSERNAME, WorkPoints);
  7693. }
  7694. else if (ExtensionID != null)
  7695. {
  7696. str1 = ExtensionID.ToString();
  7697. }
  7698. ExtensionIDList.Add(Colspan + WorkPoint);
  7699. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7700. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7701. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7702. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7703. sql += string.Format(@"
  7704. insert into ICSInventoryLot
  7705. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7706. select
  7707. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','202','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7708. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7709. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  7710. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7711. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7712. sql += "\r\n";
  7713. //装箱的功能
  7714. if (List_Pack.Count > 0)
  7715. {
  7716. PackModel mm = new PackModel();
  7717. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7718. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7719. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7720. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7721. }
  7722. }
  7723. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7724. return count;
  7725. }
  7726. public int SubmitFormTransferApplicatioSaveNew(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  7727. {
  7728. var queryParam = keyValue.ToJObject();
  7729. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7730. //decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7731. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7732. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  7733. List<decimal> lotQtys = new List<decimal>();
  7734. foreach (var jLotno in jLotnos)
  7735. {
  7736. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  7737. lotQtys.Add(qty);
  7738. }
  7739. int createPageCount = lotQtys.Count();
  7740. string Pre = "KCP" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  7741. string sql = string.Empty;
  7742. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7743. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7744. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7745. string sqls = string.Empty;
  7746. string Colspan = "";
  7747. string str1 = "";
  7748. List<string> ExtensionIDList = new List<string>();
  7749. #region 装箱的功能
  7750. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7751. string VenCode = queryParam["VenCode"].ToString();
  7752. int PackCount = 0;//每箱放的数量
  7753. int Pack_YuShu = 0;//需要平摊的数量
  7754. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7755. List<PackModel> List_Pack = new List<PackModel>();
  7756. int ZQty = 0;
  7757. if (createPackCount > 0)
  7758. {
  7759. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7760. if (Pack_YuShu == 0)
  7761. {
  7762. PackCount = (createPageCount / createPackCount);
  7763. }
  7764. else
  7765. {
  7766. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7767. }
  7768. for (int jj = 0; jj < createPackCount; jj++)
  7769. {
  7770. object CARID = Guid.NewGuid();
  7771. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7772. sql += @" INSERT INTO dbo.ICSContainer
  7773. ( ID,ContainerCode ,
  7774. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7775. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7776. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7777. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7778. PackModel PP = new PackModel();
  7779. PP.ID = CARID.ToString();
  7780. PP.PackCode = Carton;
  7781. if (jj < Pack_YuShu)
  7782. {
  7783. PP.FristBarIndex = ZQty;
  7784. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7785. }
  7786. else
  7787. {
  7788. PP.FristBarIndex = ZQty;
  7789. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7790. }
  7791. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7792. List_Pack.Add(PP);
  7793. }
  7794. }
  7795. #endregion
  7796. for (int i = 0; i < createPageCount; i++)
  7797. {
  7798. var LOTQTY = lotQtys[i];
  7799. 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();
  7800. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7801. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7802. bool flag = true;
  7803. foreach (var item in ExtensionIDList)
  7804. {
  7805. if (item == Colspan + WorkPoint)
  7806. {
  7807. flag = false;
  7808. }
  7809. }
  7810. if (ExtensionID == null && flag == true)
  7811. {
  7812. str1 = Guid.NewGuid().ToString();
  7813. 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)
  7814. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7815. 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(),
  7816. MUSER, MUSERNAME, WorkPoints);
  7817. }
  7818. else if (ExtensionID != null)
  7819. {
  7820. str1 = ExtensionID.ToString();
  7821. }
  7822. ExtensionIDList.Add(Colspan + WorkPoint);
  7823. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7824. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7825. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  7826. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7827. sql += string.Format(@"
  7828. insert into ICSInventoryLot
  7829. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7830. select
  7831. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','202','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7832. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  7833. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  7834. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7835. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7836. sql += "\r\n";
  7837. //装箱的功能
  7838. if (List_Pack.Count > 0)
  7839. {
  7840. PackModel mm = new PackModel();
  7841. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7842. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7843. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7844. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7845. }
  7846. }
  7847. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  7848. return count;
  7849. }
  7850. public DataTable GetSubGridJsonFCPCreate(string FCPMOCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  7851. {
  7852. DataTable dt = new DataTable();
  7853. object Figure = GetDecimalDigits();
  7854. List<DbParameter> parameter = new List<DbParameter>();
  7855. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn014', " + Quantity + ",1,2,'')";
  7856. object Num = SqlHelper.ExecuteScalar(SeachNum);
  7857. string sql = @"
  7858. 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,
  7859. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,{0})) as thisCreateQty,
  7860. 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' else b.EATTRIBUTE2 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
  7861. ,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,
  7862. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  7863. from ICSMOPick a
  7864. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  7865. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  7866. left join (
  7867. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  7868. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  7869. where isnull(a.EATTRIBUTE1,'')=''
  7870. group by b.TransCode,b.TransSequence
  7871. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  7872. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  7873. WHERE 1=1
  7874. and d.MOCode='" + FCPMOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "'";
  7875. sql += " and a.WorkPoint='" + WorkPoint + "'";
  7876. sql = string.Format(sql, Figure);
  7877. return Repository().FindTableBySql(sql.ToString());
  7878. }
  7879. //副产品
  7880. public int SubmitFormFCP(string FCPMOCode, string Sequence, string keyValue, string WorkPoint)
  7881. {
  7882. var queryParam = keyValue.ToJObject();
  7883. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  7884. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  7885. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  7886. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  7887. decimal LOTQTY = minPackQty;
  7888. string Sequences = Sequence.Replace("~", "");
  7889. string Pre = "FCP" + FCPMOCode + (Convert.ToInt32(Sequences)).ToString("D4");
  7890. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  7891. string sql = string.Empty;
  7892. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  7893. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  7894. string sqls = string.Empty;
  7895. string Colspan = "";
  7896. string str1 = "";
  7897. List<string> ExtensionIDList = new List<string>();
  7898. #region 装箱的功能
  7899. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  7900. string VenCode = queryParam["VenCode"].ToString();
  7901. int PackCount = 0;//每箱放的数量
  7902. int Pack_YuShu = 0;//需要平摊的数量
  7903. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  7904. List<PackModel> List_Pack = new List<PackModel>();
  7905. int ZQty = 0;
  7906. if (createPackCount > 0)
  7907. {
  7908. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  7909. if (Pack_YuShu == 0)
  7910. {
  7911. PackCount = (createPageCount / createPackCount);
  7912. }
  7913. else
  7914. {
  7915. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  7916. }
  7917. for (int jj = 0; jj < createPackCount; jj++)
  7918. {
  7919. object CARID = Guid.NewGuid();
  7920. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  7921. sql += @" INSERT INTO dbo.ICSContainer
  7922. ( ID,ContainerCode ,
  7923. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  7924. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  7925. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  7926. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  7927. PackModel PP = new PackModel();
  7928. PP.ID = CARID.ToString();
  7929. PP.PackCode = Carton;
  7930. if (jj < Pack_YuShu)
  7931. {
  7932. PP.FristBarIndex = ZQty;
  7933. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  7934. }
  7935. else
  7936. {
  7937. PP.FristBarIndex = ZQty;
  7938. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  7939. }
  7940. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  7941. List_Pack.Add(PP);
  7942. }
  7943. }
  7944. #endregion
  7945. for (int i = 0; i < createPageCount; i++)
  7946. {
  7947. if (i + 1 == createPageCount)
  7948. {
  7949. if (minPackQty * createPageCount > thisCreateQty)
  7950. {
  7951. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  7952. }
  7953. }
  7954. 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();
  7955. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  7956. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  7957. bool flag = true;
  7958. foreach (var item in ExtensionIDList)
  7959. {
  7960. if (item == Colspan + WorkPoint)
  7961. {
  7962. flag = false;
  7963. }
  7964. }
  7965. if (ExtensionID == null && flag == true)
  7966. {
  7967. str1 = Guid.NewGuid().ToString();
  7968. 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)
  7969. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  7970. 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(),
  7971. MUSER, MUSERNAME, WorkPoints);
  7972. }
  7973. else if (ExtensionID != null)
  7974. {
  7975. str1 = ExtensionID.ToString();
  7976. }
  7977. ExtensionIDList.Add(Colspan + WorkPoint);
  7978. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  7979. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  7980. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  7981. LotNo, FCPMOCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  7982. sql += string.Format(@"insert into ICSInventoryLot
  7983. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  7984. select
  7985. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','18','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  7986. 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}' ",
  7987. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, FCPMOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  7988. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  7989. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  7990. sql += "\r\n";
  7991. //装箱的功能
  7992. if (List_Pack.Count > 0)
  7993. {
  7994. PackModel mm = new PackModel();
  7995. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  7996. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  7997. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  7998. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  7999. }
  8000. }
  8001. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8002. return count;
  8003. }
  8004. public bool GetGeneratedNum(string Code, string Sequence, string Type, string thisCreateQty, string InvCode, string Quantitys)
  8005. {
  8006. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8007. DataTable dt = new DataTable();
  8008. List<DbParameter> parameter = new List<DbParameter>();
  8009. string sql = string.Empty;
  8010. bool flag = true;
  8011. if (Type == "1")
  8012. {
  8013. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn017', " + Quantitys + ",1,2,'')";
  8014. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8015. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8016. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8017. from ICSMOApplyNegDetail a
  8018. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  8019. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8020. left join (
  8021. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8022. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='1'
  8023. where isnull(ee.EATTRIBUTE1,'')=''
  8024. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8025. )c
  8026. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8027. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8028. where d.Type='1' and d.Status='2'
  8029. and a.ApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8030. }
  8031. if (Type == "2")
  8032. {
  8033. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn008', " + Quantitys + ",1,2,'')";
  8034. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8035. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8036. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8037. from ICSOApplyNegDetail a
  8038. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  8039. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8040. left join (
  8041. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8042. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='2'
  8043. where isnull(ee.EATTRIBUTE1,'')=''
  8044. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8045. )c
  8046. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8047. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8048. WHERE d.Type='1' and a.OApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8049. }
  8050. if (Type == "3")
  8051. {
  8052. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn011', " + Quantitys + ",1,2,'')";
  8053. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8054. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8055. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8056. from ICSMO a
  8057. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8058. left join (
  8059. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8060. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  8061. where isnull(ee.EATTRIBUTE1,'')=''
  8062. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8063. )c
  8064. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8065. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8066. WHERE 1=1 and a.MOStatus<>'3' and a.MOCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8067. }
  8068. if (Type == "4")
  8069. {
  8070. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn020', " + Quantitys + ",1,3,'')";
  8071. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8072. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8073. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8074. from ICSSDN a
  8075. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8076. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8077. left join(select a.SDNCode,a.Sequence,a.WorkPoint,
  8078. 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
  8079. from ICSSDN a
  8080. 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
  8081. left join (
  8082. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8083. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='4'
  8084. where isnull(ee.EATTRIBUTE1,'')=''
  8085. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8086. )c
  8087. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8088. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8089. where a.Type='2'
  8090. and a.SDNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8091. }
  8092. if (Type == "5")
  8093. {
  8094. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn021', " + Quantitys + ",1,4,'')";
  8095. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8096. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8097. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8098. from ICSOtherIn a
  8099. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8100. left join(select a.InCode,a.Sequence,a.WorkPoint,
  8101. 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
  8102. from ICSOtherIn a
  8103. 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
  8104. left join (
  8105. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8106. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  8107. where isnull(ee.EATTRIBUTE1,'')=''
  8108. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8109. )c
  8110. on a.InCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8111. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8112. where a.Status='1' and ISNULL(a.EATTRIBUTE2,'1')='1'
  8113. and a.InCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8114. }
  8115. if (Type == "6")
  8116. {
  8117. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn023', " + Quantitys + ",1,4,'')";
  8118. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8119. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8120. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8121. from ICSReturn a
  8122. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8123. left join(select a.ReturnCode,a.Sequence,a.WorkPoint,
  8124. 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
  8125. from ICSReturn a
  8126. 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
  8127. left join (
  8128. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8129. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='6'
  8130. where isnull(ee.EATTRIBUTE1,'')=''
  8131. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8132. ) c on a.ReturnCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8133. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8134. where a.Status='2'
  8135. and a.ReturnCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8136. }
  8137. if (Type == "7")
  8138. {
  8139. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn002', " + Quantitys + ",1,1,'')";
  8140. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8141. //锐腾添加退补逻辑
  8142. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8143. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8144. from ICSDeliveryNotice a
  8145. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8146. left join(select a.DNCode,a.Sequence,a.WorkPoint,
  8147. " + Num + @"+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) as Quantity
  8148. from ICSDeliveryNotice a
  8149. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8150. left join ICSDeliveryNotice f ON a.DNDetailID=Isnull(f.EATTRIBUTE8,'') and a.WorkPoint=f.WorkPoint and f.DNType='2' and f.EATTRIBUTE7='退'
  8151. 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
  8152. left join (
  8153. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8154. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='7'
  8155. where isnull(ee.EATTRIBUTE1,'')=''
  8156. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8157. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8158. inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  8159. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8160. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8161. where a.DNType='1' and a.Status='2' and a.ASNCode is null
  8162. and a.DNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8163. }
  8164. if (Type == "8")
  8165. {
  8166. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn005', " + Quantitys + ",1,1,'')";
  8167. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8168. //锐腾添加退补逻辑
  8169. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8170. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8171. from ICSODeliveryNotice a
  8172. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8173. left join(select a.ODNCode,a.Sequence,a.WorkPoint, " + Num + @"+ISNULL(f.Quantity,0)+ISNULL(j.Quantity,0) as Quantity
  8174. from ICSODeliveryNotice a
  8175. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8176. left join ICSODeliveryNotice f ON a.ODNDetailID=Isnull(f.EATTRIBUTE4,'') and a.WorkPoint=f.WorkPoint and f.ODNType='2' and f.EATTRIBUTE3='退'
  8177. 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
  8178. left join (
  8179. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8180. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='8'
  8181. where isnull(ee.EATTRIBUTE1,'')=''
  8182. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8183. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8184. inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  8185. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8186. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8187. where a.ODNType='1' and a.Status='2' and a.OASNCode is null
  8188. and a.ODNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8189. }
  8190. if (Type == "9")
  8191. {
  8192. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn013', " + Quantitys + ",1,2,'')";
  8193. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8194. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8195. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8196. from ICSManufactureReceive a
  8197. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8198. left join (
  8199. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8200. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='9'
  8201. where isnull(ee.EATTRIBUTE1,'')=''
  8202. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8203. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8204. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8205. where a.Status='1' and a.Type='1'
  8206. and a.RCVCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8207. }
  8208. if (Type == "10")
  8209. {
  8210. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn003', " + Quantitys + ",1,1,'')";
  8211. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8212. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8213. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8214. from ICSDeliveryNotice a
  8215. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8216. left join (
  8217. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8218. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='10'
  8219. where isnull(ee.EATTRIBUTE1,'')=''
  8220. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8221. ) c on a.DNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8222. --inner join ICSPurchaseOrder d on a.POID=d.POID and a.PODetailID=d.PODetailID and a.WorkPoint=d.WorkPoint
  8223. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8224. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8225. where a.DNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  8226. and a.DNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8227. }
  8228. if (Type == "11")
  8229. {
  8230. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn006', " + Quantitys + ",1,1,'')";
  8231. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8232. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8233. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8234. from ICSODeliveryNotice a
  8235. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8236. left join (
  8237. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8238. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='11'
  8239. where isnull(ee.EATTRIBUTE1,'')=''
  8240. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8241. ) c on a.ODNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8242. --inner join ICSOutsourcingOrder d on a.OOID=d.OOID and a.OODetailID=d.OODetailID and a.WorkPoint=d.WorkPoint
  8243. left join ICSVendor e on a.VenCode=e.VenCode and a.WorkPoint=e.WorkPoint
  8244. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8245. where a.ODNType='3' and a.Status='2' and a.EATTRIBUTE1 is NOT null
  8246. and a.ODNCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8247. }
  8248. if (Type == "12")
  8249. {
  8250. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn018', " + Quantitys + ",1,2,'')";
  8251. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8252. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8253. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8254. from ICSMOApplyNegDetail a
  8255. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  8256. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8257. left join (
  8258. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8259. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='12'
  8260. where isnull(ee.EATTRIBUTE1,'')=''
  8261. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8262. )c
  8263. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8264. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8265. WHERE d.Type='2' and d.Status='2'
  8266. and a.ApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8267. }
  8268. if (Type == "13")
  8269. {
  8270. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn019', " + Quantitys + ",1,2,'')";
  8271. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8272. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8273. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8274. from ICSMOApplyNegDetail a
  8275. left join ICSMOApplyNeg d on a.ApplyNegCode=d.ApplyNegCode and a.WorkPoint=d.WorkPoint
  8276. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8277. left join (
  8278. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8279. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='13'
  8280. where isnull(ee.EATTRIBUTE1,'')=''
  8281. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8282. )c
  8283. on a.ApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8284. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8285. WHERE d.Type='3' and d.Status='2'
  8286. and a.ApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8287. }
  8288. if (Type == "14")
  8289. {
  8290. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn009', " + Quantitys + ",1,1,'')";
  8291. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8292. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8293. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8294. from ICSOApplyNegDetail a
  8295. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  8296. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8297. left join (
  8298. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8299. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='14'
  8300. where isnull(ee.EATTRIBUTE1,'')=''
  8301. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8302. )c
  8303. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8304. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8305. WHERE d.Type='2'
  8306. and a.OApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8307. }
  8308. if (Type == "15")
  8309. {
  8310. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn010', " + Quantitys + ",1,1,'')";
  8311. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8312. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8313. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8314. from ICSOApplyNegDetail a
  8315. left join ICSOApplyNeg d on a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
  8316. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8317. left join (
  8318. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8319. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='15'
  8320. where isnull(ee.EATTRIBUTE1,'')=''
  8321. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8322. )c
  8323. on a.OApplyNegCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8324. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8325. WHERE d.Type='3'
  8326. and a.OApplyNegCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8327. }
  8328. if (Type == "16")
  8329. {
  8330. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn015', " + Quantitys + ",1,2,'')";
  8331. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8332. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8333. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8334. from ICSMOPick a
  8335. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  8336. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8337. left join (
  8338. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8339. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='16'
  8340. where isnull(ee.EATTRIBUTE1,'')=''
  8341. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8342. )c
  8343. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8344. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8345. where a.EATTRIBUTE1='1' and d.EATTRIBUTE1='1'
  8346. and d.MOCode='" + Code + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8347. }
  8348. if (Type == "18")
  8349. {
  8350. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn014', " + Quantitys + ",1,2,'')";
  8351. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8352. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8353. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8354. from ICSMOPick a
  8355. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  8356. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8357. left join (
  8358. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8359. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='18'
  8360. where isnull(ee.EATTRIBUTE1,'')=''
  8361. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8362. )c
  8363. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8364. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8365. where a.EATTRIBUTE1='1'
  8366. and d.MOCode='" + Code + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8367. }
  8368. if (Type == "22")
  8369. {
  8370. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8371. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8372. from ICSPurchaseReceive a
  8373. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8374. left join(select a.RCVCode,a.Sequence,a.WorkPoint,
  8375. 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
  8376. from ICSPurchaseReceive a
  8377. 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
  8378. left join (
  8379. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8380. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='22'
  8381. where isnull(ee.EATTRIBUTE1,'')=''
  8382. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8383. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8384. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8385. where a.Status='1'
  8386. and a.RCVCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8387. }
  8388. if (Type == "23")
  8389. {
  8390. sql = @" select distinct CAST(isnull(xx.Quantity,0) AS DECIMAL(38,8)) as Quantity ,
  8391. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8392. from ICSOutsourcingReceive a
  8393. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8394. left join(select a.RCVCode,a.Sequence,a.WorkPoint,
  8395. 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
  8396. from ICSOutsourcingReceive a
  8397. 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
  8398. left join (
  8399. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8400. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='23'
  8401. where isnull(ee.EATTRIBUTE1,'')=''
  8402. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8403. ) c on a.RCVCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8404. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8405. where a.Status='1'
  8406. and a.RCVCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8407. }
  8408. if (Type == "24")
  8409. {
  8410. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoints + "','OverIn026', " + Quantitys + ",1,3,'')";
  8411. object Num = SqlHelper.ExecuteScalar(SeachNum);
  8412. sql = @" select distinct CAST(isnull( " + Num + @",0) AS DECIMAL(38,8)) as Quantity ,
  8413. CAST(isnull(c.LOTQTY,0) AS DECIMAL(38,8)) as LOTQTY
  8414. from ICSSSD a
  8415. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8416. left join(select a.SDNCode,a.SDNSequence Sequence,a.WorkPoint,
  8417. 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
  8418. from ICSSSD a
  8419. 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
  8420. left join (
  8421. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  8422. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='5'
  8423. where isnull(ee.EATTRIBUTE1,'')=''
  8424. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  8425. )c
  8426. on a.SDNCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  8427. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  8428. where a.Status='1' and a.Type='2'
  8429. and a.SSDCode='" + Code + "' and a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoints + "'";
  8430. }
  8431. dt = SqlHelper.GetDataTableBySql(sql);
  8432. decimal Quantity = Convert.ToDecimal(dt.Rows[0]["Quantity"].ToString());
  8433. decimal LOTQTY = Convert.ToDecimal(dt.Rows[0]["LOTQTY"].ToString());
  8434. decimal thisQty = Convert.ToDecimal(thisCreateQty);
  8435. if (LOTQTY + thisQty > Quantity)
  8436. {
  8437. flag = false;
  8438. }
  8439. return flag;
  8440. }
  8441. /// <summary>
  8442. /// 开立成品入库单(一键生成)
  8443. /// </summary>
  8444. public int SubmitFormKLCPRKALL(string keyValue)
  8445. {
  8446. string sql = string.Empty;
  8447. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8448. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8449. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8450. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  8451. foreach (var item in res)
  8452. {
  8453. JObject jo = (JObject)item;
  8454. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  8455. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  8456. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  8457. decimal LOTQTY = minPackQty;
  8458. string Pre = "KCP" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  8459. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  8460. string sqls = string.Empty;
  8461. string Colspan = "";
  8462. string str1 = "";
  8463. List<string> ExtensionIDList = new List<string>();
  8464. for (int i = 0; i < createPageCount; i++)
  8465. {
  8466. if (i + 1 == createPageCount)
  8467. {
  8468. if (minPackQty * createPageCount > thisCreateQty)
  8469. {
  8470. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  8471. }
  8472. }
  8473. 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();
  8474. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  8475. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  8476. bool flag = true;
  8477. foreach (var items in ExtensionIDList)
  8478. {
  8479. if (items == Colspan + WorkPoint)
  8480. {
  8481. flag = false;
  8482. }
  8483. }
  8484. if (ExtensionID == null && flag == true)
  8485. {
  8486. str1 = Guid.NewGuid().ToString();
  8487. 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)
  8488. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  8489. 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(),
  8490. MUSER, MUSERNAME, WorkPoint);
  8491. }
  8492. else if (ExtensionID != null)
  8493. {
  8494. str1 = ExtensionID.ToString();
  8495. }
  8496. ExtensionIDList.Add(Colspan + WorkPoint);
  8497. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  8498. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  8499. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  8500. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  8501. sql += string.Format(@"
  8502. insert into ICSInventoryLot
  8503. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  8504. select
  8505. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','9','{3}','{4}', getdate(),'{5}','{9}'
  8506. from ICSManufactureReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  8507. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  8508. sql += "\r\n";
  8509. }
  8510. }
  8511. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8512. return count;
  8513. }
  8514. /// <summary>
  8515. /// 审核到货单生成条码(一键生成)
  8516. /// </summary>
  8517. /// <param name="POCode"></param>
  8518. /// <param name="PORow"></param>
  8519. /// <param name="keyValue"></param>
  8520. /// 已改
  8521. /// <returns></returns>
  8522. public int SubmitFormSHDHALL(string keyValue)
  8523. {
  8524. string sql = string.Empty;
  8525. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8526. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8527. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8528. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  8529. foreach (var resItem in res)
  8530. {
  8531. JObject jo = (JObject)resItem;
  8532. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  8533. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  8534. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  8535. decimal LOTQTY = minPackQty;
  8536. string Pre = "DN" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  8537. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  8538. string sqls = string.Empty;
  8539. string Colspan = "";
  8540. string str1 = "";
  8541. List<string> ExtensionIDList = new List<string>();
  8542. for (int i = 0; i < createPageCount; i++)
  8543. {
  8544. if (i + 1 == createPageCount)
  8545. {
  8546. if (minPackQty * createPageCount > thisCreateQty)
  8547. {
  8548. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  8549. }
  8550. }
  8551. 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();
  8552. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  8553. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  8554. bool flag = true;
  8555. foreach (var item in ExtensionIDList)
  8556. {
  8557. if (item == Colspan + WorkPoint)
  8558. {
  8559. flag = false;
  8560. }
  8561. }
  8562. if (ExtensionID == null && flag == true)
  8563. {
  8564. str1 = Guid.NewGuid().ToString();
  8565. 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)
  8566. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  8567. 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(),
  8568. MUSER, MUSERNAME, WorkPoint);
  8569. }
  8570. else if (ExtensionID != null)
  8571. {
  8572. str1 = ExtensionID.ToString();
  8573. }
  8574. ExtensionIDList.Add(Colspan + WorkPoint);
  8575. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  8576. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  8577. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  8578. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  8579. sql += string.Format(@"
  8580. insert into ICSInventoryLot
  8581. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  8582. select
  8583. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}'
  8584. from ICSDeliveryNotice where DNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  8585. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  8586. sql += "\r\n";
  8587. }
  8588. }
  8589. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8590. return count;
  8591. }
  8592. /// <summary>
  8593. /// 审核委外到货单生成条码(一键生成)
  8594. /// </summary>
  8595. /// <param name="POCode"></param>
  8596. /// <param name="PORow"></param>
  8597. /// <param name="keyValue"></param>
  8598. /// 已改
  8599. /// <returns></returns>
  8600. public int SubmitFormWWSHDHALL(string keyValue)
  8601. {
  8602. string sql = string.Empty;
  8603. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8604. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8605. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8606. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  8607. foreach (var resItem in res)
  8608. {
  8609. JObject jo = (JObject)resItem;
  8610. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  8611. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  8612. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  8613. decimal LOTQTY = minPackQty;
  8614. string Pre = "ODN" + jo["Code"] + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  8615. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  8616. string sqls = string.Empty;
  8617. string Colspan = "";
  8618. string str1 = "";
  8619. List<string> ExtensionIDList = new List<string>();
  8620. for (int i = 0; i < createPageCount; i++)
  8621. {
  8622. if (i + 1 == createPageCount)
  8623. {
  8624. if (minPackQty * createPageCount > thisCreateQty)
  8625. {
  8626. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  8627. }
  8628. }
  8629. 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();
  8630. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  8631. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  8632. bool flag = true;
  8633. foreach (var item in ExtensionIDList)
  8634. {
  8635. if (item == Colspan + WorkPoint)
  8636. {
  8637. flag = false;
  8638. }
  8639. }
  8640. if (ExtensionID == null && flag == true)
  8641. {
  8642. str1 = Guid.NewGuid().ToString();
  8643. 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)
  8644. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  8645. 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(),
  8646. MUSER, MUSERNAME, WorkPoint);
  8647. }
  8648. else if (ExtensionID != null)
  8649. {
  8650. str1 = ExtensionID.ToString();
  8651. }
  8652. ExtensionIDList.Add(Colspan + WorkPoint);
  8653. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  8654. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  8655. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  8656. LotNo, jo["Code"], jo["Sequence"], MUSER, MUSERNAME, WorkPoint, jo["ID"]);
  8657. sql += string.Format(@"
  8658. insert into ICSInventoryLot
  8659. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  8660. select
  8661. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','8','{3}','{4}', getdate(),'{5}','{9}'
  8662. from ICSODeliveryNotice where ODNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  8663. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"], jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  8664. sql += "\r\n";
  8665. }
  8666. }
  8667. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8668. return count;
  8669. }
  8670. public DataTable SelectICSColumnEnableForLotEnable()
  8671. {
  8672. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8673. string sql = @" select ColumnCode from ICSColumnEnable
  8674. where Enable='0' and TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoints + "' order by cast(Code as int)";
  8675. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  8676. return dt;
  8677. }
  8678. public DataTable GetLoadShowForColumn()
  8679. {
  8680. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8681. string sql = @"
  8682. select * from ICSColumnEnable where TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoints + "' order by cast(code as int) ";
  8683. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  8684. return dt;
  8685. }
  8686. public string GetAMEnable()
  8687. {
  8688. string Code = SqlHelper.GetItemsDetailEnabledMark("LotNoMaintenance");
  8689. return Code;
  8690. }
  8691. public DataTable SeachMeasure()
  8692. {
  8693. DataTable dt = new DataTable();
  8694. List<DbParameter> parameter = new List<DbParameter>();
  8695. string sql = @" SELECT Top 1 a.F_ItemCode as Code
  8696. FROM [dbo].[Sys_SRM_ItemsDetail] a
  8697. LEFT JOIN [dbo].[Sys_SRM_Items] b ON a.F_ItemId=b.F_Id
  8698. WHERE b.F_EnCode='CrtLot001' AND a.F_EnabledMark='1' ORDER BY a.F_ItemCode";
  8699. return Repository().FindTableBySql(sql.ToString());
  8700. }
  8701. public DataTable SeachLableofDisable()
  8702. {
  8703. DataTable dt = new DataTable();
  8704. List<DbParameter> parameter = new List<DbParameter>();
  8705. string sql = @"
  8706. SELECT a.F_ItemCode as Code,a.F_EnabledMark as Enable
  8707. FROM [dbo].[Sys_SRM_ItemsDetail] a
  8708. LEFT JOIN [dbo].[Sys_SRM_Items] b ON a.F_ItemId=b.F_Id
  8709. WHERE b.F_EnCode='Lot0001' ORDER BY a.F_SortCode";
  8710. return Repository().FindTableBySql(sql.ToString());
  8711. }
  8712. public DataTable SeachAmountEnablebyInvCode(string InvCode)
  8713. {
  8714. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8715. DataTable dt = new DataTable();
  8716. List<DbParameter> parameter = new List<DbParameter>();
  8717. string sql = @"
  8718. select isnull(AmountEnable,0) as AmountEnable from dbo.ICSInventory where InvCode='" + InvCode + "' and WorkPoint='" + WorkPoint + "'";
  8719. return Repository().FindTableBySql(sql.ToString());
  8720. }
  8721. public DataTable SeachDatabyInvCode(string InvCode)
  8722. {
  8723. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8724. DataTable dt = new DataTable();
  8725. List<DbParameter> parameter = new List<DbParameter>();
  8726. string sql = @"
  8727. select isnull(AmountEnable,0) as AmountEnable,
  8728. isnull(ContainerEnable,0) ContainerEnable
  8729. from dbo.ICSInventory where InvCode='" + InvCode + "' and WorkPoint='" + WorkPoint + "'";
  8730. return Repository().FindTableBySql(sql.ToString());
  8731. }
  8732. public string LotBindCode(String savePath, string Code, string Sequence)
  8733. {
  8734. //数据获取
  8735. try
  8736. {
  8737. int index = 1;
  8738. string msg = "";
  8739. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8740. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8741. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  8742. SqlConnection conn = SqlHelper.GetDataCenterConn();
  8743. string sql = "";
  8744. int count = 0;
  8745. DataTable data = FileToExcel.ExcelToTable(savePath);
  8746. int totalNum = data.AsEnumerable().Sum(row => int.Parse(row.Field<string>("条码数量")));
  8747. string sqlCode = @" select a.MOCode,a.Sequence, a.Quantity,a.Amount,a.InvCode,isnull(c.LOTQTY,0) as LOTQTY,
  8748. case when b.EffectiveEnable='1' then getdate()+b.EffectiveDays else '2999-12-31 00:00:00.000' end as ExpirationDate,
  8749. a.ExtensionID
  8750. from ICSMO a
  8751. left join (
  8752. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  8753. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  8754. where isnull(a.EATTRIBUTE1,'')=''
  8755. group by b.TransCode,b.TransSequence
  8756. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  8757. 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}'";
  8758. sqlCode = string.Format(sqlCode, Code, Sequence, WorkPoint);
  8759. DataTable dd = SqlHelper.CmdExecuteDataTable(sqlCode);
  8760. string ExtensionID = dd.Rows[0]["ExtensionID"].ToString();
  8761. string ExpirationDate = dd.Rows[0]["ExpirationDate"].ToString();
  8762. string InvCode = dd.Rows[0]["InvCode"].ToString();
  8763. decimal CQuantity = Convert.ToDecimal(dd.Rows[0]["Quantity"].ToString());
  8764. decimal CAmount = Convert.ToDecimal(dd.Rows[0]["Amount"].ToString());
  8765. decimal CLOTQTY = Convert.ToDecimal(dd.Rows[0]["LOTQTY"].ToString());
  8766. decimal SQTY = CQuantity - CLOTQTY;
  8767. if (totalNum > SQTY)
  8768. {
  8769. throw new Exception("单号: " + Code + "行号" + Sequence + " 所导入条码数量超出该单据可生成数量,该单据剩余可生成数量为" + SQTY + "!");
  8770. }
  8771. // string CodeSequence = "";
  8772. foreach (DataRow dr in data.Rows)
  8773. {
  8774. index++;
  8775. //string GUID = Guid.NewGuid().ToString();
  8776. // string Code = dr["单据号"].ToString().Trim().ToUpper();
  8777. // string Sequence = dr["单据行号"].ToString().Trim().ToUpper();
  8778. string LotNo = dr["条码"].ToString().Trim().ToUpper();
  8779. string Quantity = dr["条码数量"].ToString().Trim().ToUpper();
  8780. //if (CodeSequence != "" && CodeSequence != Code + Sequence)
  8781. //{
  8782. // throw new Exception("一次只能导入同一单据数据!");
  8783. //}
  8784. //else
  8785. //{
  8786. // CodeSequence = Code + Sequence;
  8787. //}
  8788. if (Code == "" || Code == null)
  8789. {
  8790. throw new Exception("第 " + index + " 行单据号不能为空!");
  8791. }
  8792. if (Sequence == "" || Sequence == null)
  8793. {
  8794. throw new Exception("第 " + index + " 行单据行号不能为空!");
  8795. }
  8796. if (LotNo == "" || LotNo == null)
  8797. {
  8798. throw new Exception("第 " + index + " 行条码不能为空!");
  8799. }
  8800. if (Quantity == "" || Quantity == null)
  8801. {
  8802. throw new Exception("第 " + index + " 行条码数量不能为空!");
  8803. }
  8804. //if (Convert.ToDecimal(Quantity) > (CQuantity - CLOTQTY))
  8805. //{
  8806. // decimal SQTY = CQuantity - CLOTQTY;
  8807. // throw new Exception("第 " + index + "行单号: " + Code + "行号" + Sequence + " 所输入条码数量超出该单据可生成数量,该单据剩余可生成数量为"+ SQTY + "!");
  8808. //}
  8809. var Amount = CAmount / CQuantity * Convert.ToDecimal(Quantity);
  8810. sql += @"Insert INto ICSInventoryLot
  8811. ( ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint)
  8812. Values (newid(),'{0}','{1}',getdate(),'{2}','{3}','{4}','{5}','3','{6}','{7}',getdate(),'{8}')
  8813. ";
  8814. sql += @" Insert INto ICSInventoryLotDetail
  8815. ( LotNo,TransID,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  8816. Values ('{0}','','{9}','{10}','{6}','{7}',getdate(),'{8}')";
  8817. sql = string.Format(sql, LotNo, InvCode, ExpirationDate, Quantity, Amount, ExtensionID, MUSER, MUSERNAME, WorkPoint, Code, Sequence);
  8818. }
  8819. count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8820. if (count > 0)
  8821. {
  8822. msg = "导入成功";
  8823. }
  8824. else
  8825. {
  8826. return "无有效的导入数据。";
  8827. }
  8828. return msg;
  8829. }
  8830. catch (Exception ex)
  8831. {
  8832. return ex.Message;
  8833. }
  8834. }
  8835. /// <summary>
  8836. /// 生产退料(一键生成)
  8837. /// </summary>
  8838. public int SubmitFormGDTLALL(string keyValue)
  8839. {
  8840. string sql = string.Empty;
  8841. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8842. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  8843. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  8844. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  8845. foreach (var item in res)
  8846. {
  8847. JObject jo = (JObject)item;
  8848. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  8849. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  8850. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  8851. decimal LOTQTY = minPackQty;
  8852. string Pre = "MDN" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  8853. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  8854. string sqls = string.Empty;
  8855. string Colspan = "";
  8856. string str1 = "";
  8857. List<string> ExtensionIDList = new List<string>();
  8858. for (int i = 0; i < createPageCount; i++)
  8859. {
  8860. if (i + 1 == createPageCount)
  8861. {
  8862. if (minPackQty * createPageCount > thisCreateQty)
  8863. {
  8864. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  8865. }
  8866. }
  8867. 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();
  8868. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  8869. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  8870. bool flag = true;
  8871. foreach (var items in ExtensionIDList)
  8872. {
  8873. if (items == Colspan + WorkPoint)
  8874. {
  8875. flag = false;
  8876. }
  8877. }
  8878. if (ExtensionID == null && flag == true)
  8879. {
  8880. str1 = Guid.NewGuid().ToString();
  8881. 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)
  8882. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  8883. 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(),
  8884. MUSER, MUSERNAME, WorkPoint);
  8885. }
  8886. else if (ExtensionID != null)
  8887. {
  8888. str1 = ExtensionID.ToString();
  8889. }
  8890. ExtensionIDList.Add(Colspan + WorkPoint);
  8891. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  8892. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  8893. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  8894. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  8895. sql += string.Format(@"
  8896. insert into ICSInventoryLot
  8897. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  8898. select
  8899. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','1','{3}','{4}', getdate(),'{5}','{9}'
  8900. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  8901. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  8902. sql += "\r\n";
  8903. }
  8904. }
  8905. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  8906. return count;
  8907. }
  8908. /// <summary>
  8909. /// 自动生成批次信息
  8910. /// </summary>
  8911. /// <param name="InvCode"></param>
  8912. /// <param name="WorkPoint"></param>
  8913. /// <returns></returns>
  8914. public DataTable GetVendorBatch()
  8915. {
  8916. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  8917. string pre = "C" + DateTime.Now.ToString("yyyyMMdd");
  8918. //var queryParam = queryJson.ToJObject();
  8919. //List<DbParameter> parameter = new List<DbParameter>();
  8920. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  8921. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSInventoryLot','BatchCode','" + pre + "',4";
  8922. return Repository().FindTableBySql(sql.ToString());
  8923. }
  8924. public DataTable GetVendorBatchBYInvCode(string InvCode, string WorkPoint)
  8925. {
  8926. DataTable dt = new DataTable();
  8927. string sqlClass = "SELECT EATTRIBUTE1 FROM ICSInventory WHERE InvCode='{0}'and WorkPoint='{1}'";
  8928. sqlClass = string.Format(sqlClass, InvCode, WorkPoint);
  8929. DataTable dtClass = SqlHelper.GetDataTableBySql(sqlClass);
  8930. string pre = dtClass.Rows[0]["EATTRIBUTE1"].ToString() + DateTime.Now.ToString("yyyyMMdd");
  8931. //var queryParam = queryJson.ToJObject();
  8932. //List<DbParameter> parameter = new List<DbParameter>();
  8933. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  8934. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSInventoryLot','BatchCode','" + pre + "',4";
  8935. return Repository().FindTableBySql(sql.ToString());
  8936. }
  8937. public DataTable GetReworkMo(string invcode, string Code, string SourceCode, ref Pagination jqgridparam)
  8938. {
  8939. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  8940. List<DbParameter> parameter = new List<DbParameter>();
  8941. DataTable table = new DataTable();
  8942. string wherestr = "";
  8943. if (!string.IsNullOrEmpty(invcode))
  8944. {
  8945. wherestr += " and a.InvCode like '%" + invcode + "%'";
  8946. }
  8947. if (!string.IsNullOrEmpty(Code))
  8948. {
  8949. wherestr += " and a.MOCode like '%" + Code + "%'";
  8950. }
  8951. string sql = @"SELECT
  8952. a.ID,
  8953. a.MOCode,
  8954. a.Sequence,
  8955. a.InvCode,
  8956. a.Quantity,
  8957. a.Amount,
  8958. a.RCVQuantity,
  8959. a.DepCode,
  8960. a.WHCode,
  8961. a.StartDate,
  8962. a.DueDate,
  8963. a.MOType,
  8964. a.MOStatus,
  8965. a.MOMemo,
  8966. a.CreatePerson,
  8967. a.CreateDateTime,
  8968. a.ERPStatus,
  8969. a.MOID,
  8970. a.MODetailID,
  8971. a.ExtensionID,
  8972. a.MUSER,
  8973. a.MUSERName,
  8974. a.MTIME,
  8975. a.WorkPoint,
  8976. a.EATTRIBUTE1,
  8977. a.EATTRIBUTE2,
  8978. a.EATTRIBUTE3,
  8979. a.EATTRIBUTE4,
  8980. a.EATTRIBUTE5,
  8981. a.EATTRIBUTE6,
  8982. a.EATTRIBUTE7,
  8983. a.EATTRIBUTE8,
  8984. a.EATTRIBUTE9,
  8985. a.EATTRIBUTE10,
  8986. b.InvName,
  8987. b.InvStd,
  8988. b.InvUnit
  8989. from
  8990. dbo.ICSMO a
  8991. left join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  8992. where a.EATTRIBUTE1='1' and a.MOStatus<>'3' and a.WorkPoint = '" + WorkPoint + "'" + wherestr;
  8993. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  8994. }
  8995. //修改形态转换
  8996. public string LotReworkBind(string LotNo, string Code, string Sequence, string ExtensionID)
  8997. {
  8998. string Colspan = "";
  8999. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9000. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9001. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9002. string msg = "";
  9003. string MTDOCCode = "";
  9004. DateTime TimeNow = DateTime.Now;
  9005. string sql = string.Empty;
  9006. //修改条码绑定关系
  9007. sql += @"update dbo.ICSInventoryLotDetail set TransCode='{0}' ,TransSequence='{1}' where LotNo in({2}) and WorkPoint='{3}'";
  9008. //修改条码批次
  9009. sql += @"update dbo.ICSInventoryLot set ExtensionID='{4}' where LotNo in({2}) and WorkPoint='{3}'";
  9010. //删除条码库存
  9011. sql += @"delete dbo.ICSWareHouseLotInfo where LotNo in({2}) and WorkPoint='{3}' ";
  9012. sql = string.Format(sql, Code, Sequence, LotNo, WorkPoint, ExtensionID);
  9013. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  9014. {
  9015. msg = "";
  9016. }
  9017. else
  9018. {
  9019. msg = "条码重新绑定失败!";
  9020. }
  9021. return msg;
  9022. }
  9023. /// <summary>
  9024. /// 一键退库(咖博士新增需求:根据生产退料单,B2、C类物料可以实现一键退库操作),调用PDA上架接口
  9025. /// </summary>
  9026. /// <param name="IDs"></param>
  9027. /// <returns></returns>
  9028. public string PostInWareHouse(string IDs)
  9029. {
  9030. string Colspan = "";
  9031. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9032. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9033. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9034. string msg = "";
  9035. DateTime TimeNow = DateTime.Now;
  9036. string sql = string.Empty;
  9037. try
  9038. {
  9039. IDs = IDs.Substring(1, IDs.Length - 2);
  9040. //1.获取退料单中的B2和C类物料,检验是否全部生成条码,没有生成条码的单据需要先生成条码后一键退库
  9041. 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' ;
  9042. 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' ";
  9043. string whereSql2 = @"
  9044. 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' ";
  9045. DataTable dataTable1 = SqlHelper.CmdExecuteDataTable(whereSql1);
  9046. DataTable dataTable2 = SqlHelper.CmdExecuteDataTable(whereSql2);
  9047. if (dataTable1.Rows.Count <= 0)
  9048. {
  9049. throw new Exception("请先再自定义档案配置需要一键退库的物料信息!");
  9050. }
  9051. if (dataTable2.Rows.Count <= 0)
  9052. {
  9053. throw new Exception("请先再自定义档案配置需要一键退库的仓库库位信息!");
  9054. }
  9055. //判断是否全部生成条码
  9056. string isCreate = $@" SELECT a.ApplyNegCode,a.Sequence,a.Quantity,sum(isnull(c.Quantity,0)) as LotQuantity
  9057. FROM ICSMOApplyNegDetail a
  9058. left JOIN ICSInventoryLotDetail b ON a.ApplyNegCode=b.TransCode AND a.Sequence=b.TransSequence AND a.WorkPoint=b.WorkPoint
  9059. left JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint AND a.InvCode=c.InvCode
  9060. INNER JOIN ICSInventory e ON a.InvCode=e.InvCode AND a.WorkPoint=e.WorkPoint
  9061. WHERE a.ID IN ({IDs}) {dataTable1.Rows[0]["Conditions"]}
  9062. GROUP BY a.Quantity,a.Id,a.ApplyNegCode,a.Sequence ";
  9063. DataTable isCreatedt = SqlHelper.CmdExecuteDataTable(isCreate);
  9064. if (isCreatedt.Rows.Count <= 0)
  9065. {
  9066. throw new Exception("请先确认退料单物料类别信息,然后确认自定义档案配置可以自动出库的物料信息!");
  9067. }
  9068. else
  9069. {
  9070. for (int i = 0; i < isCreatedt.Rows.Count; i++)
  9071. {
  9072. if (isCreatedt.Rows[i]["Quantity"].ToDecimal() != isCreatedt.Rows[i]["LotQuantity"].ToDecimal())
  9073. {
  9074. throw new Exception($"请先将单据:{isCreatedt.Rows[i]["ApplyNegCode"]},行号:{isCreatedt.Rows[i]["Sequence"]} ,全部生成条码!");
  9075. }
  9076. }
  9077. }
  9078. //查询需要入库的条码信息
  9079. sql = $@" SELECT a.ApplyNegCode,a.Sequence,c.LotNo,c.Quantity,c.InvCode FROM ICSMOApplyNegDetail a
  9080. INNER JOIN ICSInventoryLotDetail b ON a.ApplyNegCode=b.TransCode AND a.Sequence=b.TransSequence AND a.WorkPoint=b.WorkPoint
  9081. INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint AND a.InvCode=c.InvCode
  9082. LEFT JOIN ICSWareHouseLotInfo d ON d.LotNo=c.LotNo AND d.WorkPoint=c.WorkPoint
  9083. INNER JOIN ICSInventory e ON a.InvCode=e.InvCode AND a.WorkPoint=e.WorkPoint
  9084. WHERE
  9085. a.ID IN ({IDs}) {dataTable1.Rows[0]["Conditions"]} AND
  9086. d.ID is null ";
  9087. //2.查询退料的条码和退料的条码数量,拼接参数,调用PDA接口
  9088. var getSql = SqlHelper.CmdExecuteDataTable(sql);
  9089. if (getSql.Rows.Count > 0)
  9090. {
  9091. List<LOTStockUpCreateIModel> models = new List<LOTStockUpCreateIModel>();
  9092. LOTStockUpCreateIModel model = new LOTStockUpCreateIModel
  9093. {
  9094. User = MUSER,
  9095. MTime = TimeNow.ToString("yyyy-MM-dd HH:mm:ss"),
  9096. WorkPoint = WorkPoint,
  9097. TransType = "生产退料-生产退料单"
  9098. };
  9099. model.detail = new List<LOTStockUpCreateIModelList>();
  9100. for (int i = 0; i < getSql.Rows.Count; i++)
  9101. {
  9102. LOTStockUpCreateIModelList detail = new LOTStockUpCreateIModelList
  9103. {
  9104. LotNo = getSql.Rows[i]["LotNo"].ToString(),
  9105. WarehouseCode = dataTable2.Rows[0]["F_Define1"].ToString(),
  9106. LocationCode = dataTable2.Rows[0]["F_Define2"].ToString(),
  9107. TransCode = getSql.Rows[i]["ApplyNegCode"].ToString(),
  9108. TransSequence = getSql.Rows[i]["Sequence"].ToString(),
  9109. Quantity = getSql.Rows[i]["Quantity"].ToString(),
  9110. InvCode = getSql.Rows[i]["InvCode"].ToString()
  9111. };
  9112. model.detail.Add(detail);
  9113. }
  9114. models.Add(model);
  9115. var input = models.ToJson();
  9116. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "LOTStockUp/Create";
  9117. string result = HttpPost(APIURL, input);
  9118. Result res = result.ToObject<Result>();
  9119. if (!res.Success)
  9120. {
  9121. throw new Exception(res.Message);
  9122. }
  9123. msg = "";
  9124. }
  9125. return msg;
  9126. }
  9127. catch (Exception ex)
  9128. {
  9129. throw new Exception(ex.Message);
  9130. }
  9131. }
  9132. /// <summary>
  9133. /// 红字销售出库单生成条码列表数据
  9134. /// </summary>
  9135. /// <param name="queryJson"></param>
  9136. /// <param name="jqgridparam"></param>
  9137. /// <returns></returns>
  9138. public DataTable GetGridJsonWMSSSD(string queryJson, ref Pagination jqgridparam)
  9139. {
  9140. DataTable dt = new DataTable();
  9141. var queryParam = queryJson.ToJObject();
  9142. List<DbParameter> parameter = new List<DbParameter>();
  9143. object Figure = GetDecimalDigits();
  9144. #region [SQL]
  9145. 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,
  9146. CAST(c.LOTQTY AS DECIMAL(38,6)) as LOTQTY ,case when isnull(b.EffectiveEnable,0)='1' then '是' else '否' end as EffectiveEnable
  9147. , CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,6)) as EffectiveDays ,Case when isnull(b.BatchEnable,0)='1' then '是' else '否' end as BatchEnable
  9148. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  9149. ,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,
  9150. a.EATTRIBUTE9,a.EATTRIBUTE10
  9151. from ICSSSD a
  9152. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  9153. left join (
  9154. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  9155. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='24'
  9156. where isnull(ee.EATTRIBUTE1,'')=''
  9157. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  9158. ) c on a.SSDCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  9159. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  9160. where a.Type='2' and a.Status='1' ";
  9161. sql = string.Format(sql, Figure);
  9162. #endregion
  9163. if (!string.IsNullOrWhiteSpace(queryJson))
  9164. {
  9165. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  9166. {
  9167. sql += " and a.SSDCode like '%" + queryParam["POCode"].ToString() + "%' ";
  9168. }
  9169. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  9170. {
  9171. sql += " and a.CusCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  9172. }
  9173. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  9174. {
  9175. sql += " and a.CusName like '%" + queryParam["VenName"].ToString() + "%' ";
  9176. }
  9177. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  9178. {
  9179. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  9180. }
  9181. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  9182. {
  9183. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  9184. }
  9185. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  9186. {
  9187. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  9188. }
  9189. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  9190. {
  9191. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  9192. }
  9193. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  9194. {
  9195. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  9196. }
  9197. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  9198. {
  9199. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  9200. }
  9201. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  9202. {
  9203. string POStatus = queryParam["POStatus"].ToString();
  9204. if (POStatus == "0")
  9205. {
  9206. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  9207. }
  9208. else if (POStatus == "1")
  9209. {
  9210. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)=0";
  9211. }
  9212. else
  9213. {
  9214. sql += " and a.Quantity-ISNULL(c.LOTQTY,0)<>0";
  9215. }
  9216. }
  9217. if (!string.IsNullOrWhiteSpace(queryParam["WHStatus"].ToString()))
  9218. {
  9219. string WHStatus = queryParam["WHStatus"].ToString();
  9220. if (WHStatus == "0")
  9221. {
  9222. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  9223. }
  9224. else if (WHStatus == "1")
  9225. {
  9226. sql += " and a.Quantity-ISNULL(a.SSDQuantity,0)>0";
  9227. }
  9228. else
  9229. {
  9230. sql += " and a.Quantity-ISNULL(a.SSDQuantity,0)=0";
  9231. }
  9232. }
  9233. }
  9234. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  9235. {
  9236. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  9237. }
  9238. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  9239. {
  9240. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  9241. }
  9242. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  9243. }
  9244. /// <summary>
  9245. /// 红字销售出库单生成条码
  9246. /// </summary>
  9247. /// <param name="SDNCode"></param>
  9248. /// <param name="Sequence"></param>
  9249. /// <param name="keyValue"></param>
  9250. /// <param name="WorkPoint"></param>
  9251. /// <param name="AMEnable"></param>
  9252. /// <returns></returns>
  9253. public int SubmitFormSSD(string SSDCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  9254. {
  9255. var queryParam = keyValue.ToJObject();
  9256. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9257. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  9258. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  9259. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  9260. decimal LOTQTY = minPackQty;
  9261. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9262. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  9263. string Pre = "SSD" + SSDCode + (Convert.ToInt32(Sequence)).ToString("D4");
  9264. string sql = string.Empty;
  9265. //string VendorLot = queryParam["VendorLot"].ToString();
  9266. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9267. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9268. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  9269. string InvCode = queryParam["ClassCode"].ToString();
  9270. string sqls = string.Empty;
  9271. string Colspan = "";
  9272. string str1 = "";
  9273. string LotNo = string.Empty;
  9274. List<string> ExtensionIDList = new List<string>();
  9275. #region 装箱的功能
  9276. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  9277. string VenCode = queryParam["VenCode"].ToString();
  9278. int PackCount = 0;//每箱放的数量
  9279. int Pack_YuShu = 0;//需要平摊的数量
  9280. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  9281. List<PackModel> List_Pack = new List<PackModel>();
  9282. int ZQty = 0;
  9283. if (createPackCount > 0)
  9284. {
  9285. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  9286. if (Pack_YuShu == 0)
  9287. {
  9288. PackCount = (createPageCount / createPackCount);
  9289. }
  9290. else
  9291. {
  9292. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  9293. }
  9294. for (int jj = 0; jj < createPackCount; jj++)
  9295. {
  9296. object CARID = Guid.NewGuid();
  9297. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  9298. sql += @" INSERT INTO dbo.ICSContainer
  9299. ( ID,ContainerCode ,
  9300. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  9301. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  9302. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  9303. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  9304. PackModel PP = new PackModel();
  9305. PP.ID = CARID.ToString();
  9306. PP.PackCode = Carton;
  9307. if (jj < Pack_YuShu)
  9308. {
  9309. PP.FristBarIndex = ZQty;
  9310. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  9311. }
  9312. else
  9313. {
  9314. PP.FristBarIndex = ZQty;
  9315. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  9316. }
  9317. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  9318. List_Pack.Add(PP);
  9319. }
  9320. }
  9321. #endregion
  9322. for (int i = 0; i < createPageCount; i++)
  9323. {
  9324. if (i + 1 == createPageCount)
  9325. {
  9326. if (minPackQty * createPageCount > thisCreateQty)
  9327. {
  9328. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  9329. }
  9330. }
  9331. 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();
  9332. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9333. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9334. bool flag = true;
  9335. foreach (var item in ExtensionIDList)
  9336. {
  9337. if (item == Colspan + WorkPoint)
  9338. {
  9339. flag = false;
  9340. }
  9341. }
  9342. if (ExtensionID == null && flag == true)
  9343. {
  9344. str1 = Guid.NewGuid().ToString();
  9345. 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)
  9346. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9347. 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(),
  9348. MUSER, MUSERNAME, WorkPoints);
  9349. }
  9350. else if (ExtensionID != null)
  9351. {
  9352. str1 = ExtensionID.ToString();
  9353. }
  9354. ExtensionIDList.Add(Colspan + WorkPoint);
  9355. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  9356. if (AMEnable == "true")
  9357. {
  9358. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  9359. }
  9360. else
  9361. {
  9362. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9363. }
  9364. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9365. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  9366. LotNo, SSDCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  9367. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  9368. //{
  9369. sql += string.Format(@"
  9370. insert into ICSInventoryLot
  9371. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  9372. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  9373. select
  9374. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','24','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  9375. from ICSSSD where SSDCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and Type='2' and Status='1' ",
  9376. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SSDCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  9377. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  9378. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  9379. sql += "\r\n";
  9380. //装箱的功能
  9381. if (List_Pack.Count > 0)
  9382. {
  9383. PackModel mm = new PackModel();
  9384. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  9385. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  9386. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  9387. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  9388. }
  9389. //}
  9390. }
  9391. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9392. return count;
  9393. }
  9394. /// <summary>
  9395. /// 红字销售出库单生成条码
  9396. /// </summary>
  9397. /// <param name="SDNCode"></param>
  9398. /// <param name="Sequence"></param>
  9399. /// <param name="keyValue"></param>
  9400. /// <param name="WorkPoint"></param>
  9401. /// <param name="AMEnable"></param>
  9402. /// <returns></returns>
  9403. public int SubmitFormSSDNew(string SSDCode, string Sequence, string keyValue, string WorkPoint, string AMEnable)
  9404. {
  9405. var queryParam = keyValue.ToJObject();
  9406. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9407. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  9408. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  9409. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  9410. List<decimal> lotQtys = new List<decimal>();
  9411. foreach (var jLotno in jLotnos)
  9412. {
  9413. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  9414. lotQtys.Add(qty);
  9415. }
  9416. int createPageCount = lotQtys.Count();
  9417. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  9418. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  9419. string Pre = "SSD" + SSDCode + (Convert.ToInt32(Sequence)).ToString("D4");
  9420. string sql = string.Empty;
  9421. //string VendorLot = queryParam["VendorLot"].ToString();
  9422. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9423. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9424. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  9425. string InvCode = queryParam["ClassCode"].ToString();
  9426. string sqls = string.Empty;
  9427. string Colspan = "";
  9428. string str1 = "";
  9429. string LotNo = string.Empty;
  9430. List<string> ExtensionIDList = new List<string>();
  9431. #region 装箱的功能
  9432. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  9433. string VenCode = queryParam["VenCode"].ToString();
  9434. int PackCount = 0;//每箱放的数量
  9435. int Pack_YuShu = 0;//需要平摊的数量
  9436. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  9437. List<PackModel> List_Pack = new List<PackModel>();
  9438. int ZQty = 0;
  9439. if (createPackCount > 0)
  9440. {
  9441. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  9442. if (Pack_YuShu == 0)
  9443. {
  9444. PackCount = (createPageCount / createPackCount);
  9445. }
  9446. else
  9447. {
  9448. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  9449. }
  9450. for (int jj = 0; jj < createPackCount; jj++)
  9451. {
  9452. object CARID = Guid.NewGuid();
  9453. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  9454. sql += @" INSERT INTO dbo.ICSContainer
  9455. ( ID,ContainerCode ,
  9456. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  9457. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  9458. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  9459. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  9460. PackModel PP = new PackModel();
  9461. PP.ID = CARID.ToString();
  9462. PP.PackCode = Carton;
  9463. if (jj < Pack_YuShu)
  9464. {
  9465. PP.FristBarIndex = ZQty;
  9466. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  9467. }
  9468. else
  9469. {
  9470. PP.FristBarIndex = ZQty;
  9471. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  9472. }
  9473. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  9474. List_Pack.Add(PP);
  9475. }
  9476. }
  9477. #endregion
  9478. for (int i = 0; i < createPageCount; i++)
  9479. {
  9480. var LOTQTY = lotQtys[i];
  9481. 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();
  9482. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9483. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9484. bool flag = true;
  9485. foreach (var item in ExtensionIDList)
  9486. {
  9487. if (item == Colspan + WorkPoint)
  9488. {
  9489. flag = false;
  9490. }
  9491. }
  9492. if (ExtensionID == null && flag == true)
  9493. {
  9494. str1 = Guid.NewGuid().ToString();
  9495. 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)
  9496. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9497. 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(),
  9498. MUSER, MUSERNAME, WorkPoints);
  9499. }
  9500. else if (ExtensionID != null)
  9501. {
  9502. str1 = ExtensionID.ToString();
  9503. }
  9504. ExtensionIDList.Add(Colspan + WorkPoint);
  9505. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  9506. if (AMEnable == "true")
  9507. {
  9508. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  9509. }
  9510. else
  9511. {
  9512. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9513. }
  9514. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9515. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  9516. LotNo, SSDCode, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  9517. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  9518. //{
  9519. sql += string.Format(@"
  9520. insert into ICSInventoryLot
  9521. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  9522. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  9523. select
  9524. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','24','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  9525. from ICSSSD where SSDCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and Type='2' and Status='1' ",
  9526. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, SSDCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  9527. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  9528. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  9529. sql += "\r\n";
  9530. //装箱的功能
  9531. if (List_Pack.Count > 0)
  9532. {
  9533. PackModel mm = new PackModel();
  9534. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  9535. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  9536. ( ID ,ContainerID ,LotNo ,MUSER ,MUSERName ,MTIME ,WorkPoint )
  9537. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  9538. }
  9539. //}
  9540. }
  9541. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9542. return count;
  9543. }
  9544. /// <summary>
  9545. /// 红字销售出库单查询
  9546. /// </summary>
  9547. /// <param name="SSDCode"></param>
  9548. /// <param name="Sequence"></param>
  9549. /// <param name="WorkPoint"></param>
  9550. /// <returns></returns>
  9551. public DataTable GetSubGridJsonSSDByCreate(string SSDCode, string Sequence, string WorkPoint, string Quantity, string InvCode)
  9552. {
  9553. DataTable dt = new DataTable();
  9554. object Figure = GetDecimalDigits();
  9555. List<DbParameter> parameter = new List<DbParameter>();
  9556. string SeachNum = @"SELECT dbo.GetExcessINQty('" + InvCode + "', '" + WorkPoint + "','OverIn026', " + Quantity + ",1,3,'')";
  9557. object Num = SqlHelper.ExecuteScalar(SeachNum);
  9558. 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,
  9559. CAST( ( " + Num + @"-ISNULL(c.LOTQTY,0)) as DECIMAL(38,6)) as thisCreateQty,
  9560. 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' else b.EATTRIBUTE2 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
  9561. ,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,
  9562. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  9563. from ICSSSD a
  9564. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  9565. left join (
  9566. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  9567. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='24'
  9568. where isnull(a.EATTRIBUTE1,'')=''
  9569. group by b.TransCode,b.TransSequence
  9570. ) c on a.SSDCode=c.TransCode and a.Sequence=c.TransSequence
  9571. left join ICSExtension d on a.ExtensionID=d.ID and a.WorkPoint=d.WorkPoint
  9572. WHERE a.Status='1'
  9573. and a.Type='2' and a.SSDCode='" + SSDCode + "' and a.Sequence='" + Sequence + "'";
  9574. sql += " and a.WorkPoint='" + WorkPoint + "'";
  9575. sql = string.Format(sql, Figure);
  9576. return Repository().FindTableBySql(sql.ToString());
  9577. }
  9578. /// <summary>
  9579. /// 派纳 线边仓调拨申请单生成条码
  9580. /// </summary>
  9581. /// <param name="queryJson"></param>
  9582. /// <param name="jqgridparam"></param>
  9583. /// <returns></returns>
  9584. public DataTable GetGridJsonTransferApplicationPN(string queryJson, ref Pagination jqgridparam)
  9585. {
  9586. DataTable dt = new DataTable();
  9587. var queryParam = queryJson.ToJObject();
  9588. List<DbParameter> parameter = new List<DbParameter>();
  9589. object Figure = GetDecimalDigits();
  9590. #region [SQL]
  9591. string sql = @" select * from (select distinct a.ID,a.TransferNO,a.Sequence
  9592. ,a.FromWarehouseCode as FromWHCode,e.WarehouseName as FromWHName,a.FromLocationCode as FromLotCode,h.LocationName as FromLotName,
  9593. a.ToWarehouseCode as ToWHCode,g.WarehouseName as ToWHName,a.ToLocationCode as ToLotCode,i.LocationName as ToLotName,
  9594. a.InvCode, b.InvName,b.InvStd,b.InvUnit,
  9595. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  9596. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  9597. ,CAST(a.TransferQuantity AS DECIMAL(38,{0})) as TransferQuantity
  9598. ,c.LOTQTY
  9599. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  9600. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  9601. ,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,
  9602. a.EATTRIBUTE9,a.EATTRIBUTE10
  9603. from ICSTransferApplication a
  9604. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  9605. left join (
  9606. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  9607. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='202'
  9608. where isnull(ee.EATTRIBUTE1,'')=''
  9609. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  9610. ) c on a.TransferNO=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  9611. left join ICSWarehouse e on a.FromWarehouseCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  9612. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  9613. left join ICSWarehouse g on a.ToWarehouseCode=g.WarehouseCode and a.WorkPoint=g.WorkPoint
  9614. left join ICSLocation h on a.FromLocationCode=h.LocationCode and a.WorkPoint=h.WorkPoint
  9615. left join ICSLocation i on a.ToLocationCode=i.LocationCode and a.WorkPoint=i.WorkPoint
  9616. where 1 = 1 and a.FromWarehouseCode in (select B.F_ItemCode from Sys_SRM_Items A
  9617. LEFT JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
  9618. where A.F_EnCode='WorkLineWHConfig')";
  9619. sql = string.Format(sql, Figure);
  9620. #endregion
  9621. if (!string.IsNullOrWhiteSpace(queryJson))
  9622. {
  9623. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  9624. {
  9625. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  9626. }
  9627. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  9628. {
  9629. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  9630. }
  9631. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  9632. {
  9633. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  9634. }
  9635. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  9636. {
  9637. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  9638. }
  9639. }
  9640. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  9641. {
  9642. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  9643. }
  9644. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  9645. //{
  9646. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  9647. //}
  9648. 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,
  9649. a.ToWarehouseCode,g.WarehouseName,a.ToLocationCode,i.LocationName,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,c.LOTQTY,
  9650. 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
  9651. where 1=1 ";
  9652. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  9653. {
  9654. string POStatus = queryParam["POStatus"].ToString();
  9655. if (POStatus == "0")
  9656. {
  9657. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  9658. }
  9659. else if (POStatus == "1")
  9660. {
  9661. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  9662. }
  9663. else
  9664. {
  9665. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  9666. }
  9667. }
  9668. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  9669. }
  9670. /// <summary>
  9671. /// 派纳 线边仓一步调入单生成条码
  9672. /// </summary>
  9673. /// <param name="queryJson"></param>
  9674. /// <param name="jqgridparam"></param>
  9675. /// <returns></returns>
  9676. public DataTable GetGridJsonOneSetpTransPN(string queryJson, ref Pagination jqgridparam)
  9677. {
  9678. DataTable dt = new DataTable();
  9679. var queryParam = queryJson.ToJObject();
  9680. List<DbParameter> parameter = new List<DbParameter>();
  9681. object Figure = GetDecimalDigits();
  9682. #region [SQL]
  9683. string sql = @" select * from (select distinct a.ID,a.TransferNO,a.Sequence
  9684. ,a.FromWarehouseCode as FromWHCode,e.WarehouseName as FromWHName,a.FromLocationCode as FromLotCode,h.LocationName as FromLotName,
  9685. a.ToWarehouseCode as ToWHCode,g.WarehouseName as ToWHName,a.ToLocationCode as ToLotCode,i.LocationName as ToLotName,
  9686. a.InvCode, b.InvName,b.InvStd,b.InvUnit,
  9687. CAST(a.Quantity AS DECIMAL(38,{0})) as Quantity
  9688. ,CAST(a.Amount AS DECIMAL(38,{0})) as Amount
  9689. ,CAST(a.TransferQuantity AS DECIMAL(38,{0})) as TransferQuantity
  9690. ,c.LOTQTY
  9691. ,isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(38,{0})) as EffectiveDays
  9692. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  9693. ,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,
  9694. a.EATTRIBUTE9,a.EATTRIBUTE10
  9695. from ICSTransfer a
  9696. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  9697. left join (
  9698. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  9699. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='203'
  9700. where isnull(ee.EATTRIBUTE1,'')=''
  9701. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  9702. ) c on a.TransferNO=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  9703. left join ICSWarehouse e on a.FromWarehouseCode=e.WarehouseCode and a.WorkPoint=e.WorkPoint
  9704. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  9705. left join ICSWarehouse g on a.ToWarehouseCode=g.WarehouseCode and a.WorkPoint=g.WorkPoint
  9706. left join ICSLocation h on a.FromLocationCode=h.LocationCode and a.WorkPoint=h.WorkPoint
  9707. left join ICSLocation i on a.ToLocationCode=i.LocationCode and a.WorkPoint=i.WorkPoint
  9708. where 1 = 1 and a.Type=1 and a.FromWarehouseCode in (select B.F_ItemCode from Sys_SRM_Items A
  9709. LEFT JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
  9710. where A.F_EnCode='WorkLineWHConfig')";
  9711. sql = string.Format(sql, Figure);
  9712. #endregion
  9713. if (!string.IsNullOrWhiteSpace(queryJson))
  9714. {
  9715. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  9716. {
  9717. sql += " and a.TransferNO like '%" + queryParam["POCode"].ToString() + "%' ";
  9718. }
  9719. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  9720. {
  9721. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  9722. }
  9723. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  9724. {
  9725. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  9726. }
  9727. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  9728. {
  9729. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  9730. }
  9731. if (!string.IsNullOrWhiteSpace(queryParam["FromTime"].ToString()))
  9732. {
  9733. sql += " and a.CreateDateTime >= '" + queryParam["FromTime"].ToString() + "' ";
  9734. }
  9735. if (!string.IsNullOrWhiteSpace(queryParam["ToTime"].ToString()))
  9736. {
  9737. sql += " and a.CreateDateTime <= '" + queryParam["ToTime"].ToString() + "' ";
  9738. }
  9739. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  9740. {
  9741. sql += " and a.FromWarehouseCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  9742. }
  9743. }
  9744. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  9745. {
  9746. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  9747. }
  9748. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  9749. //{
  9750. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  9751. //}
  9752. 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,
  9753. a.ToWarehouseCode,g.WarehouseName,a.ToLocationCode,i.LocationName,b.InvStd,b.InvUnit,b.EffectiveEnable,b.EffectiveDays,c.LOTQTY,
  9754. 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
  9755. where 1=1 ";
  9756. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  9757. {
  9758. string POStatus = queryParam["POStatus"].ToString();
  9759. if (POStatus == "0")
  9760. {
  9761. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  9762. }
  9763. else if (POStatus == "1")
  9764. {
  9765. sql += " and Quantity-ISNULL(LOTQTY,0)=0";
  9766. }
  9767. else
  9768. {
  9769. sql += " and Quantity-ISNULL(LOTQTY,0)<>0";
  9770. }
  9771. }
  9772. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  9773. }
  9774. /// <summary>
  9775. /// 派纳 线边仓调拨申请单生成条码 保存(生成条码的同时入库)
  9776. /// </summary>
  9777. /// <param name="TransferNO"></param>
  9778. /// <param name="Sequence"></param>
  9779. /// <param name="keyValue"></param>
  9780. /// <param name="WorkPoint"></param>
  9781. /// <returns></returns>
  9782. public int SubmitFormTransferApplicatioPNSave(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  9783. {
  9784. var queryParam = keyValue.ToJObject();
  9785. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9786. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  9787. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  9788. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  9789. decimal LOTQTY = minPackQty;
  9790. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  9791. string sql = string.Empty;
  9792. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9793. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9794. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  9795. string Identification = Guid.NewGuid().ToString();
  9796. string sqls = string.Empty;
  9797. string Colspan = "";
  9798. string str1 = "";
  9799. List<string> ExtensionIDList = new List<string>();
  9800. #region 装箱的功能
  9801. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  9802. string VenCode = queryParam["VenCode"].ToString();
  9803. int PackCount = 0;//每箱放的数量
  9804. int Pack_YuShu = 0;//需要平摊的数量
  9805. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  9806. List<PackModel> List_Pack = new List<PackModel>();
  9807. int ZQty = 0;
  9808. if (createPackCount > 0)
  9809. {
  9810. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  9811. if (Pack_YuShu == 0)
  9812. {
  9813. PackCount = (createPageCount / createPackCount);
  9814. }
  9815. else
  9816. {
  9817. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  9818. }
  9819. for (int jj = 0; jj < createPackCount; jj++)
  9820. {
  9821. object CARID = Guid.NewGuid();
  9822. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  9823. sql += @" INSERT INTO dbo.ICSContainer
  9824. ( ID,ContainerCode ,
  9825. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  9826. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  9827. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  9828. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  9829. PackModel PP = new PackModel();
  9830. PP.ID = CARID.ToString();
  9831. PP.PackCode = Carton;
  9832. if (jj < Pack_YuShu)
  9833. {
  9834. PP.FristBarIndex = ZQty;
  9835. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  9836. }
  9837. else
  9838. {
  9839. PP.FristBarIndex = ZQty;
  9840. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  9841. }
  9842. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  9843. List_Pack.Add(PP);
  9844. }
  9845. }
  9846. #endregion
  9847. for (int i = 0; i < createPageCount; i++)
  9848. {
  9849. if (i + 1 == createPageCount)
  9850. {
  9851. if (minPackQty * createPageCount > thisCreateQty)
  9852. {
  9853. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  9854. }
  9855. }
  9856. 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();
  9857. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  9858. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  9859. bool flag = true;
  9860. foreach (var item in ExtensionIDList)
  9861. {
  9862. if (item == Colspan + WorkPoint)
  9863. {
  9864. flag = false;
  9865. }
  9866. }
  9867. if (ExtensionID == null && flag == true)
  9868. {
  9869. str1 = Guid.NewGuid().ToString();
  9870. 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)
  9871. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  9872. 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(),
  9873. MUSER, MUSERNAME, WorkPoints);
  9874. }
  9875. else if (ExtensionID != null)
  9876. {
  9877. str1 = ExtensionID.ToString();
  9878. }
  9879. ExtensionIDList.Add(Colspan + WorkPoint);
  9880. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  9881. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  9882. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  9883. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  9884. sql += string.Format(@"
  9885. insert into ICSInventoryLot
  9886. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  9887. select
  9888. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  9889. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  9890. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  9891. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  9892. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  9893. //派纳调拨申请单生成的条码需要自动入库
  9894. sql += string.Format(@"
  9895. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  9896. SELECT NEWID(),a.LotNo
  9897. ,(SELECT FromWarehouseCode FROM ICSTransferApplication WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  9898. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  9899. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  9900. INNER JOIN ICSTransferApplication C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  9901. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  9902. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  9903. FROM ICSInventoryLot a
  9904. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  9905. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  9906. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  9907. sql += string.Format(@"
  9908. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  9909. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  9910. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  9911. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  9912. MTIME,WorkPoint)
  9913. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  9914. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  9915. '','0','6','75','1',D.TransferID,
  9916. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  9917. SYSDATETIME() ,a.WorkPoint
  9918. FROM ICSInventoryLot a
  9919. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  9920. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  9921. INNER JOIN ICSTransferApplication D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  9922. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  9923. LotNo, WorkPoint, Identification);
  9924. sql += "\r\n";
  9925. //装箱的功能
  9926. if (List_Pack.Count > 0)
  9927. {
  9928. PackModel mm = new PackModel();
  9929. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  9930. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  9931. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  9932. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  9933. }
  9934. }
  9935. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  9936. return count;
  9937. }
  9938. /// <summary>
  9939. /// 派纳 线边仓一步调入单生成条码 保存(生成条码的同时入库)
  9940. /// </summary>
  9941. /// <param name="TransferNO"></param>
  9942. /// <param name="Sequence"></param>
  9943. /// <param name="keyValue"></param>
  9944. /// <param name="WorkPoint"></param>
  9945. /// <returns></returns>
  9946. public int SubmitFormOneStepTransPNSave(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  9947. {
  9948. var queryParam = keyValue.ToJObject();
  9949. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  9950. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  9951. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  9952. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  9953. decimal LOTQTY = minPackQty;
  9954. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  9955. string sql = string.Empty;
  9956. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  9957. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  9958. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  9959. string Identification = Guid.NewGuid().ToString();
  9960. string sqls = string.Empty;
  9961. string Colspan = "";
  9962. string str1 = "";
  9963. List<string> ExtensionIDList = new List<string>();
  9964. #region 装箱的功能
  9965. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  9966. string VenCode = queryParam["VenCode"].ToString();
  9967. int PackCount = 0;//每箱放的数量
  9968. int Pack_YuShu = 0;//需要平摊的数量
  9969. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  9970. List<PackModel> List_Pack = new List<PackModel>();
  9971. int ZQty = 0;
  9972. if (createPackCount > 0)
  9973. {
  9974. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  9975. if (Pack_YuShu == 0)
  9976. {
  9977. PackCount = (createPageCount / createPackCount);
  9978. }
  9979. else
  9980. {
  9981. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  9982. }
  9983. for (int jj = 0; jj < createPackCount; jj++)
  9984. {
  9985. object CARID = Guid.NewGuid();
  9986. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  9987. sql += @" INSERT INTO dbo.ICSContainer
  9988. ( ID,ContainerCode ,
  9989. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  9990. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  9991. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  9992. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  9993. PackModel PP = new PackModel();
  9994. PP.ID = CARID.ToString();
  9995. PP.PackCode = Carton;
  9996. if (jj < Pack_YuShu)
  9997. {
  9998. PP.FristBarIndex = ZQty;
  9999. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10000. }
  10001. else
  10002. {
  10003. PP.FristBarIndex = ZQty;
  10004. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10005. }
  10006. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10007. List_Pack.Add(PP);
  10008. }
  10009. }
  10010. #endregion
  10011. for (int i = 0; i < createPageCount; i++)
  10012. {
  10013. if (i + 1 == createPageCount)
  10014. {
  10015. if (minPackQty * createPageCount > thisCreateQty)
  10016. {
  10017. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  10018. }
  10019. }
  10020. 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();
  10021. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10022. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10023. bool flag = true;
  10024. foreach (var item in ExtensionIDList)
  10025. {
  10026. if (item == Colspan + WorkPoint)
  10027. {
  10028. flag = false;
  10029. }
  10030. }
  10031. if (ExtensionID == null && flag == true)
  10032. {
  10033. str1 = Guid.NewGuid().ToString();
  10034. 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)
  10035. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10036. 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(),
  10037. MUSER, MUSERNAME, WorkPoints);
  10038. }
  10039. else if (ExtensionID != null)
  10040. {
  10041. str1 = ExtensionID.ToString();
  10042. }
  10043. ExtensionIDList.Add(Colspan + WorkPoint);
  10044. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10045. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10046. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10047. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10048. sql += string.Format(@"
  10049. insert into ICSInventoryLot
  10050. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10051. select
  10052. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','203','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10053. from ICSTransfer where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10054. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  10055. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10056. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10057. //派纳调拨申请单生成的条码需要自动入库
  10058. sql += string.Format(@"
  10059. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  10060. SELECT NEWID(),a.LotNo
  10061. ,(SELECT FromWarehouseCode FROM ICSTransfer WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  10062. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  10063. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  10064. INNER JOIN ICSTransfer C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  10065. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  10066. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  10067. FROM ICSInventoryLot a
  10068. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10069. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10070. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  10071. sql += string.Format(@"
  10072. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  10073. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  10074. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  10075. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  10076. MTIME,WorkPoint)
  10077. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  10078. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  10079. '','0','6','75','1',D.TransferID,
  10080. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  10081. SYSDATETIME() ,a.WorkPoint
  10082. FROM ICSInventoryLot a
  10083. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10084. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  10085. INNER JOIN ICSTransfer D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  10086. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10087. LotNo, WorkPoint, Identification);
  10088. sql += "\r\n";
  10089. //装箱的功能
  10090. if (List_Pack.Count > 0)
  10091. {
  10092. PackModel mm = new PackModel();
  10093. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10094. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10095. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  10096. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10097. }
  10098. }
  10099. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10100. return count;
  10101. }
  10102. /// <summary>
  10103. /// 派纳 线边仓调拨申请单生成条码 保存(生成条码的同时入库)
  10104. /// </summary>
  10105. /// <param name="TransferNO"></param>
  10106. /// <param name="Sequence"></param>
  10107. /// <param name="keyValue"></param>
  10108. /// <param name="WorkPoint"></param>
  10109. /// <returns></returns>
  10110. public int SubmitFormTransferApplicatioPNSaveNew(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  10111. {
  10112. var queryParam = keyValue.ToJObject();
  10113. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10114. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  10115. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  10116. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  10117. List<decimal> lotQtys = new List<decimal>();
  10118. foreach (var jLotno in jLotnos)
  10119. {
  10120. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  10121. lotQtys.Add(qty);
  10122. }
  10123. int createPageCount = lotQtys.Count();
  10124. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  10125. string sql = string.Empty;
  10126. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10127. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10128. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  10129. string Identification = Guid.NewGuid().ToString();
  10130. string sqls = string.Empty;
  10131. string Colspan = "";
  10132. string str1 = "";
  10133. List<string> ExtensionIDList = new List<string>();
  10134. #region 装箱的功能
  10135. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  10136. string VenCode = queryParam["VenCode"].ToString();
  10137. int PackCount = 0;//每箱放的数量
  10138. int Pack_YuShu = 0;//需要平摊的数量
  10139. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  10140. List<PackModel> List_Pack = new List<PackModel>();
  10141. int ZQty = 0;
  10142. if (createPackCount > 0)
  10143. {
  10144. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  10145. if (Pack_YuShu == 0)
  10146. {
  10147. PackCount = (createPageCount / createPackCount);
  10148. }
  10149. else
  10150. {
  10151. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  10152. }
  10153. for (int jj = 0; jj < createPackCount; jj++)
  10154. {
  10155. object CARID = Guid.NewGuid();
  10156. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  10157. sql += @" INSERT INTO dbo.ICSContainer
  10158. ( ID,ContainerCode ,
  10159. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  10160. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  10161. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  10162. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  10163. PackModel PP = new PackModel();
  10164. PP.ID = CARID.ToString();
  10165. PP.PackCode = Carton;
  10166. if (jj < Pack_YuShu)
  10167. {
  10168. PP.FristBarIndex = ZQty;
  10169. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10170. }
  10171. else
  10172. {
  10173. PP.FristBarIndex = ZQty;
  10174. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10175. }
  10176. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10177. List_Pack.Add(PP);
  10178. }
  10179. }
  10180. #endregion
  10181. for (int i = 0; i < createPageCount; i++)
  10182. {
  10183. var LOTQTY = lotQtys[i];
  10184. 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();
  10185. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10186. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10187. bool flag = true;
  10188. foreach (var item in ExtensionIDList)
  10189. {
  10190. if (item == Colspan + WorkPoint)
  10191. {
  10192. flag = false;
  10193. }
  10194. }
  10195. if (ExtensionID == null && flag == true)
  10196. {
  10197. str1 = Guid.NewGuid().ToString();
  10198. 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)
  10199. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10200. 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(),
  10201. MUSER, MUSERNAME, WorkPoints);
  10202. }
  10203. else if (ExtensionID != null)
  10204. {
  10205. str1 = ExtensionID.ToString();
  10206. }
  10207. ExtensionIDList.Add(Colspan + WorkPoint);
  10208. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10209. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10210. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10211. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10212. sql += string.Format(@"
  10213. insert into ICSInventoryLot
  10214. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10215. select
  10216. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10217. from ICSTransferApplication where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10218. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  10219. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10220. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10221. //派纳调拨申请单生成的条码需要自动入库
  10222. sql += string.Format(@"
  10223. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  10224. SELECT NEWID(),a.LotNo
  10225. ,(SELECT FromWarehouseCode FROM ICSTransferApplication WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  10226. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  10227. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  10228. INNER JOIN ICSTransferApplication C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  10229. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  10230. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  10231. FROM ICSInventoryLot a
  10232. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10233. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10234. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  10235. sql += string.Format(@"
  10236. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  10237. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  10238. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  10239. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  10240. MTIME,WorkPoint)
  10241. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  10242. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  10243. '','0','6','75','1',D.TransferID,
  10244. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  10245. SYSDATETIME() ,a.WorkPoint
  10246. FROM ICSInventoryLot a
  10247. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10248. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  10249. INNER JOIN ICSTransferApplication D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  10250. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10251. LotNo, WorkPoint, Identification);
  10252. sql += "\r\n";
  10253. //装箱的功能
  10254. if (List_Pack.Count > 0)
  10255. {
  10256. PackModel mm = new PackModel();
  10257. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10258. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10259. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  10260. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10261. }
  10262. }
  10263. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10264. return count;
  10265. }
  10266. /// <summary>
  10267. /// 派纳 线边仓一步调入单生成条码 保存(生成条码的同时入库---非规则生成条码)
  10268. /// </summary>
  10269. /// <param name="TransferNO"></param>
  10270. /// <param name="Sequence"></param>
  10271. /// <param name="keyValue"></param>
  10272. /// <param name="WorkPoint"></param>
  10273. /// <returns></returns>
  10274. public int SubmitFormOneStepTransferPNSaveNew(string TransferNO, string Sequence, string keyValue, string WorkPoint)
  10275. {
  10276. var queryParam = keyValue.ToJObject();
  10277. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10278. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  10279. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  10280. JArray jLotnos = (JArray)queryParam["lotNoArrary"];//添加的条码对象
  10281. List<decimal> lotQtys = new List<decimal>();
  10282. foreach (var jLotno in jLotnos)
  10283. {
  10284. decimal qty = Convert.ToDecimal(jLotno["qty"]);
  10285. lotQtys.Add(qty);
  10286. }
  10287. int createPageCount = lotQtys.Count();
  10288. string Pre = "Tra" + TransferNO + (Convert.ToInt32(Sequence)).ToString("D4");
  10289. string sql = string.Empty;
  10290. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10291. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10292. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  10293. string Identification = Guid.NewGuid().ToString();
  10294. string sqls = string.Empty;
  10295. string Colspan = "";
  10296. string str1 = "";
  10297. List<string> ExtensionIDList = new List<string>();
  10298. #region 装箱的功能
  10299. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  10300. string VenCode = queryParam["VenCode"].ToString();
  10301. int PackCount = 0;//每箱放的数量
  10302. int Pack_YuShu = 0;//需要平摊的数量
  10303. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  10304. List<PackModel> List_Pack = new List<PackModel>();
  10305. int ZQty = 0;
  10306. if (createPackCount > 0)
  10307. {
  10308. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  10309. if (Pack_YuShu == 0)
  10310. {
  10311. PackCount = (createPageCount / createPackCount);
  10312. }
  10313. else
  10314. {
  10315. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  10316. }
  10317. for (int jj = 0; jj < createPackCount; jj++)
  10318. {
  10319. object CARID = Guid.NewGuid();
  10320. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  10321. sql += @" INSERT INTO dbo.ICSContainer
  10322. ( ID,ContainerCode ,
  10323. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  10324. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  10325. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  10326. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  10327. PackModel PP = new PackModel();
  10328. PP.ID = CARID.ToString();
  10329. PP.PackCode = Carton;
  10330. if (jj < Pack_YuShu)
  10331. {
  10332. PP.FristBarIndex = ZQty;
  10333. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  10334. }
  10335. else
  10336. {
  10337. PP.FristBarIndex = ZQty;
  10338. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  10339. }
  10340. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  10341. List_Pack.Add(PP);
  10342. }
  10343. }
  10344. #endregion
  10345. for (int i = 0; i < createPageCount; i++)
  10346. {
  10347. var LOTQTY = lotQtys[i];
  10348. 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();
  10349. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10350. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10351. bool flag = true;
  10352. foreach (var item in ExtensionIDList)
  10353. {
  10354. if (item == Colspan + WorkPoint)
  10355. {
  10356. flag = false;
  10357. }
  10358. }
  10359. if (ExtensionID == null && flag == true)
  10360. {
  10361. str1 = Guid.NewGuid().ToString();
  10362. 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)
  10363. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10364. 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(),
  10365. MUSER, MUSERNAME, WorkPoints);
  10366. }
  10367. else if (ExtensionID != null)
  10368. {
  10369. str1 = ExtensionID.ToString();
  10370. }
  10371. ExtensionIDList.Add(Colspan + WorkPoint);
  10372. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10373. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10374. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10375. LotNo, TransferNO, Sequence, MUSER, MUSERNAME, WorkPoints, queryParam["ID"].ToString());
  10376. sql += string.Format(@"
  10377. insert into ICSInventoryLot
  10378. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  10379. select
  10380. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  10381. from ICSTransfer where TransferNO='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10382. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, TransferNO, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) * LOTQTY, queryParam["ExpirationDate"].ToString()
  10383. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  10384. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  10385. //派纳调拨申请单生成的条码需要自动入库
  10386. sql += string.Format(@"
  10387. INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  10388. SELECT NEWID(),a.LotNo
  10389. ,(SELECT FromWarehouseCode FROM ICSTransfer WHERE TransferNO='{2}' AND Sequence='{3}' AND WorkPoint='{1}')
  10390. ,(SELECT TOP 1 A.LocationCode FROM ICSLocation A
  10391. INNER JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  10392. INNER JOIN ICSTransfer C ON C.FromWarehouseCode=B.WarehouseCode AND C.WorkPoint=B.WorkPoint
  10393. WHERE C.TransferNO='{2}' AND C.Sequence='{3}' AND C.WorkPoint='{1}')
  10394. ,a.InvCode ,a.Quantity,SYSDATETIME(),'0','{4}' ,'{5}' ,SYSDATETIME() ,a.WorkPoint
  10395. FROM ICSInventoryLot a
  10396. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10397. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10398. LotNo, WorkPoint, TransferNO, Sequence, MUSER, MUSERNAME);
  10399. sql += string.Format(@"
  10400. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  10401. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  10402. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  10403. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  10404. MTIME,WorkPoint)
  10405. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  10406. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  10407. '','0','6','75','1',D.TransferID,
  10408. D.TransferDetailID,D.TransferNO,D.Sequence,'MUSER' ,'MUSERNAME' ,
  10409. SYSDATETIME() ,a.WorkPoint
  10410. FROM ICSInventoryLot a
  10411. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  10412. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  10413. INNER JOIN ICSTransfer D ON D.TransferNO=B.TransCode AND D.Sequence=B.TransSequence AND D.WorkPoint=B.WorkPoint
  10414. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  10415. LotNo, WorkPoint, Identification);
  10416. sql += "\r\n";
  10417. //装箱的功能
  10418. if (List_Pack.Count > 0)
  10419. {
  10420. PackModel mm = new PackModel();
  10421. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  10422. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  10423. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  10424. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  10425. }
  10426. }
  10427. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10428. return count;
  10429. }
  10430. /// <summary>
  10431. /// 派纳 线边仓调拨申请单获取单据信息
  10432. /// </summary>
  10433. /// <param name="TransferNO"></param>
  10434. /// <param name="Sequence"></param>
  10435. /// <param name="WorkPoint"></param>
  10436. /// <returns></returns>
  10437. public DataTable GetSubGridJsonTransferApplicationByCreatePN(string TransferNO, string Sequence, string WorkPoint)
  10438. {
  10439. DataTable dt = new DataTable();
  10440. object Figure = GetDecimalDigits();
  10441. List<DbParameter> parameter = new List<DbParameter>();
  10442. string sql = $@" SELECT a.InvCode,a.Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  10443. , CAST ( xx.Quantity AS DECIMAL ( 38,6 )) AS Amount
  10444. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  10445. , CAST ( ( xx.Quantity- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  10446. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  10447. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays,isnull(b.EATTRIBUTE2,'') as MPQ
  10448. , 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 ,
  10449. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  10450. FROM ICSTransferApplication a
  10451. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  10452. 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
  10453. END AS Quantity
  10454. FROM ICSTransferApplication a
  10455. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode
  10456. AND a.WorkPoint= b.WorkPoint
  10457. ) xx ON xx.Id= a.Id
  10458. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  10459. FROM ICSInventoryLot a
  10460. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '202'
  10461. WHERE isnull( a.EATTRIBUTE1, '' ) = ''
  10462. GROUP BY
  10463. b.TransCode,
  10464. b.TransSequence
  10465. ) c ON a.TransferNO = c.TransCode AND a.Sequence = c.TransSequence
  10466. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  10467. WHERE 1 = 1
  10468. and a.TransferNO='{TransferNO}' and a.Sequence='{Sequence}'
  10469. and a.WorkPoint='{WorkPoint}'";
  10470. sql = string.Format(sql, Figure);
  10471. return Repository().FindTableBySql(sql.ToString());
  10472. }
  10473. /// <summary>
  10474. /// 派纳 线边仓一步调入单获取单据信息
  10475. /// </summary>
  10476. /// <param name="TransferNO"></param>
  10477. /// <param name="Sequence"></param>
  10478. /// <param name="WorkPoint"></param>
  10479. /// <returns></returns>
  10480. public DataTable GetSubGridJsonOneSetpTransByCreatePN(string TransferNO, string Sequence, string WorkPoint)
  10481. {
  10482. DataTable dt = new DataTable();
  10483. object Figure = GetDecimalDigits();
  10484. List<DbParameter> parameter = new List<DbParameter>();
  10485. string sql = $@" SELECT a.InvCode,a.Quantity, b.InvName, b.ClassCode, b.InvStd, b.InvUnit
  10486. , CAST ( xx.Quantity AS DECIMAL ( 38,6 )) AS Amount
  10487. , CAST ( isnull( c.LOTQTY, 0 ) AS DECIMAL ( 38,6 ) ) AS CreatedQty
  10488. , CAST ( ( xx.Quantity- ISNULL( c.LOTQTY, 0 ) ) AS DECIMAL ( 38,6 ) ) AS thisCreateQty
  10489. , isnull( b.EffectiveEnable, 0 ) AS EffectiveEnable
  10490. , CAST ( isnull( b.EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays,isnull(b.EATTRIBUTE2,'') as MPQ
  10491. , 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 ,
  10492. '' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  10493. FROM ICSTransfer a
  10494. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode AND a.WorkPoint= b.WorkPoint
  10495. 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
  10496. END AS Quantity
  10497. FROM ICSTransfer a
  10498. LEFT JOIN ICSInventory b ON a.InvCode= b.InvCode
  10499. AND a.WorkPoint= b.WorkPoint
  10500. ) xx ON xx.Id= a.Id
  10501. LEFT JOIN ( SELECT b.TransCode,b.TransSequence, SUM ( isnull( Quantity, 0 ) ) LOTQTY
  10502. FROM ICSInventoryLot a
  10503. LEFT JOIN ICSInventoryLotDetail b ON a.LotNo= b.LotNo AND a.Type= '203'
  10504. WHERE isnull( a.EATTRIBUTE1, '' ) = '' AND a.Type=1
  10505. GROUP BY
  10506. b.TransCode,
  10507. b.TransSequence
  10508. ) c ON a.TransferNO = c.TransCode AND a.Sequence = c.TransSequence
  10509. LEFT JOIN ICSExtension e ON a.ExtensionID= e.ID AND a.WorkPoint= e.WorkPoint
  10510. WHERE 1 = 1
  10511. and a.TransferNO='{TransferNO}' and a.Sequence='{Sequence}'
  10512. and a.WorkPoint='{WorkPoint}'";
  10513. sql = string.Format(sql, Figure);
  10514. return Repository().FindTableBySql(sql.ToString());
  10515. }
  10516. public int SubmitFormCGRKALL(string keyValue)
  10517. {
  10518. string sql = string.Empty;
  10519. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10520. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10521. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10522. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  10523. foreach (var item in res)
  10524. {
  10525. JObject jo = (JObject)item;
  10526. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  10527. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  10528. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  10529. decimal LOTQTY = minPackQty;
  10530. string Pre = "KCP" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  10531. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  10532. string sqls = string.Empty;
  10533. string Colspan = "";
  10534. string str1 = "";
  10535. List<string> ExtensionIDList = new List<string>();
  10536. for (int i = 0; i < createPageCount; i++)
  10537. {
  10538. if (i + 1 == createPageCount)
  10539. {
  10540. if (minPackQty * createPageCount > thisCreateQty)
  10541. {
  10542. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  10543. }
  10544. }
  10545. 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();
  10546. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10547. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10548. bool flag = true;
  10549. foreach (var items in ExtensionIDList)
  10550. {
  10551. if (items == Colspan + WorkPoint)
  10552. {
  10553. flag = false;
  10554. }
  10555. }
  10556. if (ExtensionID == null && flag == true)
  10557. {
  10558. str1 = Guid.NewGuid().ToString();
  10559. 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)
  10560. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10561. 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(),
  10562. MUSER, MUSERNAME, WorkPoint);
  10563. }
  10564. else if (ExtensionID != null)
  10565. {
  10566. str1 = ExtensionID.ToString();
  10567. }
  10568. ExtensionIDList.Add(Colspan + WorkPoint);
  10569. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10570. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10571. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10572. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  10573. sql += string.Format(@"
  10574. insert into ICSInventoryLot
  10575. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  10576. select
  10577. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','22','{3}','{4}', getdate(),'{5}','{9}'
  10578. from ICSPurchaseReceive where RCVCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10579. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  10580. sql += "\r\n";
  10581. }
  10582. }
  10583. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10584. return count;
  10585. }
  10586. /// <summary>
  10587. /// 销售退货生成条码(一键生成)
  10588. /// </summary>
  10589. /// <param name="POCode"></param>
  10590. /// <param name="PORow"></param>
  10591. /// <param name="keyValue"></param>
  10592. /// 已改
  10593. /// <returns></returns>
  10594. public int SubmitFormXSTHALL(string keyValue)
  10595. {
  10596. string sql = string.Empty;
  10597. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10598. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10599. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10600. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  10601. foreach (var resItem in res)
  10602. {
  10603. JObject jo = (JObject)resItem;
  10604. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  10605. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  10606. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  10607. decimal LOTQTY = minPackQty;
  10608. string Pre = "SR" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  10609. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  10610. string sqls = string.Empty;
  10611. string Colspan = "";
  10612. string str1 = "";
  10613. List<string> ExtensionIDList = new List<string>();
  10614. for (int i = 0; i < createPageCount; i++)
  10615. {
  10616. if (i + 1 == createPageCount)
  10617. {
  10618. if (minPackQty * createPageCount > thisCreateQty)
  10619. {
  10620. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  10621. }
  10622. }
  10623. 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();
  10624. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10625. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10626. bool flag = true;
  10627. foreach (var item in ExtensionIDList)
  10628. {
  10629. if (item == Colspan + WorkPoint)
  10630. {
  10631. flag = false;
  10632. }
  10633. }
  10634. if (ExtensionID == null && flag == true)
  10635. {
  10636. str1 = Guid.NewGuid().ToString();
  10637. 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)
  10638. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10639. 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(),
  10640. MUSER, MUSERNAME, WorkPoint);
  10641. }
  10642. else if (ExtensionID != null)
  10643. {
  10644. str1 = ExtensionID.ToString();
  10645. }
  10646. ExtensionIDList.Add(Colspan + WorkPoint);
  10647. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10648. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10649. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  10650. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  10651. sql += string.Format(@"
  10652. insert into ICSInventoryLot
  10653. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  10654. select
  10655. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','7','{3}','{4}', getdate(),'{5}','{9}'
  10656. from ICSSDN where Type='2' and SDNCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10657. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  10658. sql += "\r\n";
  10659. }
  10660. }
  10661. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10662. return count;
  10663. }
  10664. /// <summary>
  10665. /// 其他入库生成条码(一键生成)
  10666. /// </summary>
  10667. /// <param name="POCode"></param>
  10668. /// <param name="PORow"></param>
  10669. /// <param name="keyValue"></param>
  10670. /// 已改
  10671. /// <returns></returns>
  10672. public int SubmitFormQiTaALL(string keyValue)
  10673. {
  10674. string sql = string.Empty;
  10675. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10676. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10677. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10678. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  10679. foreach (var resItem in res)
  10680. {
  10681. JObject jo = (JObject)resItem;
  10682. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  10683. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  10684. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  10685. decimal LOTQTY = minPackQty;
  10686. string Pre = "QT" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"])).ToString("D4");
  10687. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  10688. string sqls = string.Empty;
  10689. string Colspan = "";
  10690. string str1 = "";
  10691. List<string> ExtensionIDList = new List<string>();
  10692. for (int i = 0; i < createPageCount; i++)
  10693. {
  10694. if (i + 1 == createPageCount)
  10695. {
  10696. if (minPackQty * createPageCount > thisCreateQty)
  10697. {
  10698. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  10699. }
  10700. }
  10701. 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();
  10702. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10703. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10704. bool flag = true;
  10705. foreach (var item in ExtensionIDList)
  10706. {
  10707. if (item == Colspan + WorkPoint)
  10708. {
  10709. flag = false;
  10710. }
  10711. }
  10712. if (ExtensionID == null && flag == true)
  10713. {
  10714. str1 = Guid.NewGuid().ToString();
  10715. 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)
  10716. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10717. 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(),
  10718. MUSER, MUSERNAME, WorkPoint);
  10719. }
  10720. else if (ExtensionID != null)
  10721. {
  10722. str1 = ExtensionID.ToString();
  10723. }
  10724. ExtensionIDList.Add(Colspan + WorkPoint);
  10725. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10726. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10727. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' ,'{6}')",
  10728. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  10729. sql += string.Format(@"
  10730. insert into ICSInventoryLot
  10731. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  10732. select
  10733. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','5','{3}','{4}', getdate(),'{5}','{9}'
  10734. from ICSOtherIn where InCode='{6}' and Sequence='{7}' and WorkPoint='{5}' and ISNULL(EATTRIBUTE2,'1')='1'",
  10735. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"], str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  10736. sql += "\r\n";
  10737. }
  10738. }
  10739. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10740. return count;
  10741. }
  10742. /// <summary>
  10743. /// 材料出库退料(一键生成)
  10744. /// </summary>
  10745. public int SubmitFormCLCKTLALL(string keyValue)
  10746. {
  10747. string sql = string.Empty;
  10748. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  10749. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  10750. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  10751. JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
  10752. foreach (var item in res)
  10753. {
  10754. JObject jo = (JObject)item;
  10755. int createPageCount = Convert.ToInt32(jo["createPageCount"].ToString());
  10756. decimal minPackQty = Convert.ToDecimal(jo["minPackQty"].ToString());
  10757. decimal thisCreateQty = Convert.ToDecimal(jo["thisCreateQty"].ToString());
  10758. decimal LOTQTY = minPackQty;
  10759. string Pre = "MD" + jo["Code"].ToString() + (Convert.ToInt32(jo["Sequence"].ToString())).ToString("D4");
  10760. string PRODUCTDATE = jo["PRODUCTDATE"].ToString();
  10761. string sqls = string.Empty;
  10762. string Colspan = "";
  10763. string str1 = "";
  10764. List<string> ExtensionIDList = new List<string>();
  10765. for (int i = 0; i < createPageCount; i++)
  10766. {
  10767. if (i + 1 == createPageCount)
  10768. {
  10769. if (minPackQty * createPageCount > thisCreateQty)
  10770. {
  10771. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  10772. }
  10773. }
  10774. 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();
  10775. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  10776. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  10777. bool flag = true;
  10778. foreach (var items in ExtensionIDList)
  10779. {
  10780. if (items == Colspan + WorkPoint)
  10781. {
  10782. flag = false;
  10783. }
  10784. }
  10785. if (ExtensionID == null && flag == true)
  10786. {
  10787. str1 = Guid.NewGuid().ToString();
  10788. 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)
  10789. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  10790. 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(),
  10791. MUSER, MUSERNAME, WorkPoint);
  10792. }
  10793. else if (ExtensionID != null)
  10794. {
  10795. str1 = ExtensionID.ToString();
  10796. }
  10797. ExtensionIDList.Add(Colspan + WorkPoint);
  10798. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  10799. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
  10800. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
  10801. LotNo, jo["Code"].ToString(), jo["Sequence"].ToString(), MUSER, MUSERNAME, WorkPoint, jo["ID"].ToString());
  10802. sql += string.Format(@"
  10803. insert into ICSInventoryLot
  10804. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount)
  10805. select
  10806. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','13','{3}','{4}', getdate(),'{5}','{9}'
  10807. from ICSMOApplyNegDetail where ApplyNegCode='{6}' and Sequence='{7}' and WorkPoint='{5}'",
  10808. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, jo["Code"].ToString(), jo["Sequence"].ToString(), str1, Convert.ToDecimal(jo["Amount"].ToString()) / minPackQty * LOTQTY, jo["ExpirationDate"].ToString());
  10809. sql += "\r\n";
  10810. }
  10811. }
  10812. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  10813. return count;
  10814. }
  10815. }
  10816. public class PackModel
  10817. {
  10818. public string ID { get; set; }
  10819. public string PackCode { get; set; }
  10820. public int FristBarIndex { get; set; }
  10821. public int LastBarIndex { get; set; }
  10822. }
  10823. }