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.

540 lines
25 KiB

3 weeks ago
  1. using Newtonsoft.Json.Linq;
  2. using Newtonsoft.Json;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Repository;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Configuration;
  10. using System.Data;
  11. using System.Data.Common;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Threading;
  16. using System.Reflection.Emit;
  17. namespace NFine.Application.DHAY
  18. {
  19. public class ICSCustomerSuppliedInApp : RepositoryFactory<ICSVendor>
  20. {
  21. public static DataTable Invmes = new DataTable();
  22. #region 获取单据类型
  23. /// <summary>
  24. /// 获取U9单据类型
  25. /// </summary>
  26. /// <returns></returns>
  27. public DataTable GetU9CodeType()
  28. {
  29. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  30. string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  31. string sql = @" select '' as Code,'' as Name
  32. union all
  33. SELECT a.Code,b.Name FROM {0}{1}.dbo.InvDoc_MiscRcvDocType a
  34. LEFT JOIN {0}{1}.dbo.InvDoc_MiscRcvDocType_Trl b ON a.ID=b.ID
  35. WHERE Effective_DisableDate>=GETDATE()";
  36. sql = string.Format(sql, DbHelper.GetErpIpU9(), DbHelper.GetErpNameU9());
  37. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  38. return dt;
  39. }
  40. #endregion
  41. #region 删除杂收单
  42. public string DeleteICSOtherIn(string keyValue)
  43. {
  44. //站点信息
  45. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  46. string msg = "";
  47. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  48. string sql = string.Empty;
  49. sql += string.Format(@"DELETE FROM dbo.ICSOtherIn WHERE InCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  50. try
  51. {
  52. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  53. {
  54. }
  55. }
  56. catch (Exception ex)
  57. {
  58. throw new Exception(ex.Message);
  59. }
  60. return msg;
  61. }
  62. #endregion
  63. #region 保存发料信息
  64. public string SaveICSOtherIn(string ICSASN)
  65. {
  66. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  67. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  68. string msg = "";
  69. List<JsonData> parsedData = JsonConvert.DeserializeObject<List<JsonData>>(ICSASN);
  70. string sql = "";
  71. string Colspan = "";
  72. string str1 = "";
  73. List<string> ExtensionIDList = new List<string>();
  74. // 获取解析后的数据
  75. JsonData data = parsedData[0];
  76. foreach (var detail in data.Detail)
  77. {
  78. #region 验证指定类型的单据类型批次必填
  79. string typecheckString = @"SELECT b.F_ItemCode FROM Sys_SRM_Items a
  80. INNER JOIN Sys_SRM_ItemsDetail b ON a.F_Id = b.F_ItemId
  81. WHERE a.F_EnCode = 'ICSOherIn' and b.F_EnabledMark='1' ";
  82. DataTable datatable = SqlHelper.CmdExecuteDataTable(typecheckString);
  83. if (datatable.Rows.Count > 0)
  84. {
  85. var typecheck = datatable.Select("F_ItemCode = '" + data.CodeType + "'");
  86. if (typecheck.Length > 0 && String.IsNullOrEmpty(detail.Batch))
  87. {
  88. throw new Exception("请填写批号");
  89. }
  90. }
  91. #endregion
  92. Colspan = "~" + detail.Batch + "~~~~~~~~~~~~";
  93. string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  94. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  95. bool flag = true;
  96. foreach (var item in ExtensionIDList)
  97. {
  98. if (item == Colspan + WorkPoint)
  99. {
  100. flag = false;
  101. }
  102. }
  103. if (ExtensionID == null && flag == true)
  104. {
  105. str1 = Guid.NewGuid().ToString();
  106. 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)
  107. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  108. str1, Colspan, "", detail.Batch, "", "", "", "", "", "", "", "", "", "", "", "",
  109. data.User, UserName, WorkPoint);
  110. }
  111. else if (ExtensionID != null)
  112. {
  113. str1 = ExtensionID.ToString();
  114. }
  115. ExtensionIDList.Add(Colspan + WorkPoint);
  116. sql += "INSERT INTO ICSOtherIn(ID,InCode,WHCode,Sequence,InvCode,Quantity,CreatePerson,CreateDateTime,WorkPoint,Status,InID,InDetailID,ExtensionID,MUSER,MUSERName,MTIME,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,InQuantity,EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13)" +
  117. " select '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}',newID(),newID(),'{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','客供入库',0,'{23}','{24}','{25}' ";
  118. sql = string.Format(sql, detail.ID, data.Code, detail.WHCode, detail.Sequence, detail.InvCode, detail.Quantity, data.User, data.MTIME, WorkPoint,'1', str1, data.User, UserName, data.MTIME,data.Dept, data.CodeType, data.ApplyNegCode, data.Custmer, data.Remarks,detail.DetailReamrk, detail.SYproject, data.Remarks2,detail.DetailReamrk2,data.CodeTypeName.Trim(),data.DeptName.Trim(),data.CustmerName.Trim());
  119. }
  120. try
  121. {
  122. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  123. {
  124. }
  125. }
  126. catch (Exception ex)
  127. {
  128. msg=ex.Message;
  129. }
  130. return msg;
  131. }
  132. #endregion
  133. #region 杂收单主表信息查询
  134. public DataTable GetICSOtherIn(ref Pagination jqgridparam,string queryJson)
  135. {
  136. DataTable dt = new DataTable();
  137. var queryParam = queryJson.ToJObject();
  138. List<DbParameter> parameter = new List<DbParameter>();
  139. string sql = @" SELECT DISTINCT
  140. a.InCode
  141. ,a.Status
  142. ,a.CreatePerson
  143. ,a.CreateDateTime
  144. ,a.MUSER
  145. ,a.MUSERName
  146. ,a.EATTRIBUTE1
  147. ,a.EATTRIBUTE2
  148. ,a.EATTRIBUTE3
  149. ,a.EATTRIBUTE4
  150. ,a.EATTRIBUTE5
  151. --,a.EATTRIBUTE7
  152. ,a.EATTRIBUTE8
  153. --,a.EATTRIBUTE9
  154. ,a.EATTRIBUTE10
  155. ,a.EATTRIBUTE11
  156. ,a.EATTRIBUTE12
  157. ,a.EATTRIBUTE13
  158. from dbo.ICSOtherIn a
  159. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint where 1=1";
  160. if (!string.IsNullOrWhiteSpace(queryJson))
  161. {
  162. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  163. {
  164. sql += " and a.InCode like '%" + queryParam["POCode"].ToString() + "%' ";
  165. }
  166. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  167. {
  168. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  169. }
  170. if (!string.IsNullOrWhiteSpace(queryParam["CreatedBy"].ToString()))
  171. {
  172. sql += " and a.CreatePerson like '%" + queryParam["CreatedBy"].ToString() + "%' ";
  173. }
  174. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  175. {
  176. sql += " and convert(nvarchar(20),a.CreateDateTime,23) >= '" + queryParam["TimeFrom"].ToString() + "' ";
  177. }
  178. if (!string.IsNullOrWhiteSpace(queryParam["TimeArrive"].ToString()))
  179. {
  180. sql += " and convert(nvarchar(20),a.CreateDateTime,23) <= '" + queryParam["TimeArrive"].ToString() + "' ";
  181. }
  182. }
  183. sql = string.Format(sql);
  184. DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  185. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  186. }
  187. #endregion
  188. #region 杂收单主表信息查询
  189. public DataTable GetICSOtherInByInCode(string InCode)
  190. {
  191. DataTable dt = new DataTable();
  192. List<DbParameter> parameter = new List<DbParameter>();
  193. string sql = @" SELECT DISTINCT
  194. a.InCode
  195. ,a.Status
  196. ,a.CreatePerson
  197. ,a.CreateDateTime
  198. ,a.MUSER
  199. ,a.MUSERName
  200. ,a.EATTRIBUTE1
  201. ,a.EATTRIBUTE2
  202. ,a.EATTRIBUTE3
  203. ,a.EATTRIBUTE4
  204. ,a.EATTRIBUTE5
  205. ,a.EATTRIBUTE7
  206. ,a.EATTRIBUTE8
  207. ,a.EATTRIBUTE9
  208. ,a.EATTRIBUTE10
  209. ,a.EATTRIBUTE11
  210. ,a.EATTRIBUTE12
  211. ,a.EATTRIBUTE13
  212. from dbo.ICSOtherIn a
  213. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  214. WHERE a.InCode='{0}'";
  215. sql = string.Format(sql, InCode);
  216. return Repository().FindTableBySql(sql.ToString());
  217. }
  218. #endregion
  219. #region 主页面子表信息查询
  220. public DataTable GetICSOtherInDetail(string InCode,string queryJson, ref Pagination jqgridparam)
  221. {
  222. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  223. DataTable dt = new DataTable();
  224. var queryParam = queryJson.ToJObject();
  225. //var queryParam = queryJson.ToJObject();
  226. List<DbParameter> parameter = new List<DbParameter>();
  227. string sql = @" select a.ID
  228. ,a.InCode
  229. ,a.Sequence
  230. ,a.InvCode
  231. ,a.Quantity
  232. ,a.Amount
  233. ,a.ExtensionID
  234. ,a.MUSER
  235. ,a.MUSERName
  236. ,a.MTIME
  237. ,a.InQuantity
  238. ,f.Colspan
  239. ,f.ProjectCode
  240. ,f.BatchCode
  241. ,f.Version
  242. ,f.Brand
  243. ,f.cFree1
  244. ,f.cFree2
  245. ,f.cFree3
  246. ,f.cFree4
  247. ,f.cFree5
  248. ,f.cFree6
  249. ,f.cFree7
  250. ,f.cFree8
  251. ,f.cFree9
  252. ,f.cFree10
  253. ,a.EATTRIBUTE1
  254. ,a.EATTRIBUTE2
  255. ,a.EATTRIBUTE3
  256. ,a.EATTRIBUTE4
  257. ,a.EATTRIBUTE5
  258. ,a.EATTRIBUTE6
  259. ,a.EATTRIBUTE7
  260. ,a.EATTRIBUTE8
  261. ,a.EATTRIBUTE9
  262. ,a.EATTRIBUTE10
  263. from ICSOtherIn a
  264. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  265. WHERE a.InCode='" + InCode + "' ";
  266. if (!string.IsNullOrWhiteSpace(queryJson))
  267. {
  268. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  269. {
  270. sql += " and a.InCode like '%" + queryParam["POCode"].ToString() + "%' ";
  271. }
  272. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  273. {
  274. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  275. }
  276. if (!string.IsNullOrWhiteSpace(queryParam["CreatedBy"].ToString()))
  277. {
  278. sql += " and a.CreatePerson like '%" + queryParam["CreatedBy"].ToString() + "%' ";
  279. }
  280. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  281. {
  282. sql += " and convert(nvarchar(20),a.CreateDateTime,23) >= '" + queryParam["TimeFrom"].ToString() + "' ";
  283. }
  284. if (!string.IsNullOrWhiteSpace(queryParam["TimeArrive"].ToString()))
  285. {
  286. sql += " and convert(nvarchar(20),a.CreateDateTime,23) <= '" + queryParam["TimeArrive"].ToString() + "' ";
  287. }
  288. }
  289. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  290. }
  291. #endregion
  292. public string DeleteICSOtherInByCode(string keyValue)
  293. {
  294. //站点信息
  295. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  296. string msg = "";
  297. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  298. string sql = string.Empty;
  299. sql += string.Format(@"DELETE FROM dbo.ICSOtherIn WHERE InCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  300. try
  301. {
  302. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  303. {
  304. }
  305. }
  306. catch (Exception ex)
  307. {
  308. throw new Exception(ex.Message);
  309. }
  310. return msg;
  311. }
  312. public string GetBidCode(string WorkPoint)
  313. {
  314. WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  315. string BidCide = string.Empty;
  316. if (!string.IsNullOrEmpty(WorkPoint))
  317. {
  318. string DateString = DateTime.Now.ToString("yyyyMMdd");
  319. string Pre = "ZS" + DateString;
  320. BidCide = GetSerialCode(WorkPoint, "ICSOtherIn", "InCode", Pre, 4);
  321. }
  322. if (!string.IsNullOrWhiteSpace(BidCide))
  323. {
  324. string sqlISHave = @"SELECT InCode FROM ICSOtherIn a
  325. WHERE a.InCode = '{0}'";
  326. sqlISHave = string.Format(sqlISHave, BidCide);
  327. DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
  328. if (dtIsHave.Rows.Count > 0)
  329. {
  330. throw new Exception("单号已存在!");
  331. }
  332. }
  333. return BidCide;
  334. }
  335. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  336. {
  337. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  338. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  339. //return Repository().FindTableBySql(sql.ToString());
  340. return SqlHelper.ExecuteScalar(sql).ToString();
  341. //return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  342. }
  343. /// <summary>
  344. /// 更新客供入库单
  345. /// </summary>
  346. /// <param name="ICSASN"></param>
  347. /// <returns></returns>
  348. public string UpdateICSOtherIn(string ICSASN)
  349. {
  350. string msg = "";
  351. try
  352. {
  353. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  354. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  355. JsonData data = JsonConvert.DeserializeObject<JsonData>(ICSASN);
  356. List<string> ExtensionIDList = new List<string>();
  357. //已经生成条码的单据,修改单据前请先删除条码信息
  358. string checksql = $@"SELECT * FROM ICSInventoryLotDetail WHERE TransCode='{data.Code}';";
  359. DataTable checkdt = SqlHelper.CmdExecuteDataTable(checksql);
  360. if (checkdt.Rows.Count > 0)
  361. {
  362. throw new Exception("该单据已经生成条码,请先删除已经生成的条码信息再修改单据信息!");
  363. }
  364. // 获取解析后的数据
  365. string sql = $@"delete from ICSOtherIn where INCode='{data.Code}';";
  366. foreach (var detail in data.Detail)
  367. {
  368. #region 验证指定类型的单据类型批次必填
  369. string typecheckString = @"SELECT b.F_ItemCode FROM Sys_SRM_Items a
  370. INNER JOIN Sys_SRM_ItemsDetail b ON a.F_Id = b.F_ItemId
  371. WHERE a.F_EnCode = 'ICSOherIn' ";
  372. DataTable datatable = SqlHelper.CmdExecuteDataTable(typecheckString);
  373. if (datatable.Rows.Count > 0)
  374. {
  375. var typecheck = datatable.Select("F_ItemCode = '" + data.CodeType + "'");
  376. if (typecheck.Length > 0 && String.IsNullOrEmpty(detail.Batch))
  377. {
  378. throw new Exception("请填写批号");
  379. }
  380. }
  381. #endregion
  382. string str1 = "";
  383. string Colspan = "~" + detail.Batch + "~~~~~~~~~~~~";
  384. string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  385. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  386. bool flag = true;
  387. foreach (var item in ExtensionIDList)
  388. {
  389. if (item == Colspan + WorkPoint)
  390. {
  391. flag = false;
  392. }
  393. }
  394. if (ExtensionID == null && flag == true)
  395. {
  396. str1 = Guid.NewGuid().ToString();
  397. 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)
  398. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  399. str1, Colspan, "", detail.Batch, "", "", "", "", "", "", "", "", "", "", "", "",
  400. data.User, UserName, WorkPoint);
  401. }
  402. else if (ExtensionID != null)
  403. {
  404. str1 = ExtensionID.ToString();
  405. }
  406. ExtensionIDList.Add(Colspan + WorkPoint);
  407. sql += "INSERT INTO ICSOtherIn(ID,InCode,WHCode,Sequence,InvCode,Quantity,CreatePerson,CreateDateTime,WorkPoint,Status,InID,InDetailID,ExtensionID,MUSER,MUSERName,MTIME,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,InQuantity,EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13)" +
  408. " select '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}',newID(),newID(),'{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','客供入库',0,'{23}','{24}','{25}' ";
  409. sql = string.Format(sql, detail.ID, data.Code, detail.WHCode, detail.Sequence, detail.InvCode, detail.Quantity, data.User, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), WorkPoint, '1', str1, data.User, UserName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), data.Dept, data.CodeType, data.ApplyNegCode, data.Custmer, data.Remarks, detail.DetailReamrk, detail.SYproject, data.Remarks2, detail.DetailReamrk2,data.CodeTypeName.Trim(),data.DeptName.Trim(), data.CustmerName.Trim());
  410. }
  411. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  412. {
  413. }
  414. }
  415. catch (Exception ex)
  416. {
  417. msg = ex.Message;
  418. }
  419. return msg;
  420. }
  421. public DataTable GetICSReturnTemporary(string rfqno)
  422. {
  423. string sql = @"SELECT
  424. a.ID,
  425. a.InCode,
  426. a.InvCode,
  427. b.InvName as INVNAME,
  428. b.InvStd,
  429. a.Quantity,
  430. a.WHCode,
  431. a.WHCode as WHCodeHHH,
  432. a.EATTRIBUTE6,
  433. a.EATTRIBUTE7 as SYproject,
  434. a.EATTRIBUTE8,
  435. a.EATTRIBUTE9,
  436. a.Quantity
  437. ,f.BatchCode as Batch
  438. ,c.WarehouseName as WHCodeName
  439. FROM ICSOtherIn a
  440. LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode
  441. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  442. LEFT JOIN dbo.ICSWarehouse c ON a.WHCode=c.WarehouseCode AND a.WorkPoint=c.WorkPoint
  443. where a.InCode='" + rfqno + "'";
  444. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  445. DataTable dtCloned = table.Clone();
  446. foreach (DataColumn col in dtCloned.Columns)
  447. {
  448. col.DataType = typeof(string);
  449. }
  450. foreach (DataRow row in table.Rows)
  451. {
  452. DataRow newrow = dtCloned.NewRow();
  453. foreach (DataColumn column in dtCloned.Columns)
  454. {
  455. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  456. }
  457. dtCloned.Rows.Add(newrow);
  458. }
  459. if (Invmes.Rows.Count > 0)
  460. {
  461. dtCloned.Merge(Invmes, false);
  462. }
  463. return dtCloned;
  464. }
  465. #region 定义一个类来表示 JSON 数据的结构
  466. /// <summary>
  467. /// 主表数据
  468. /// </summary>
  469. public class JsonData
  470. {
  471. public string Dept { get; set; }
  472. public string DeptName { get; set; }
  473. public string CodeType { get; set; }
  474. public string CodeTypeName { get; set; }
  475. public string ApplyNegCode { get; set; }
  476. public string Custmer { get; set; }
  477. public string CustmerName { get; set; }
  478. public string Remarks { get; set; }
  479. public string Remarks2 { get; set; }
  480. public string Code { get; set; }
  481. public string MTIME { get; set; }
  482. public string User { get; set; }
  483. /// <summary>
  484. /// 详情信息
  485. /// </summary>
  486. public List<JsonDetail> Detail { get; set; }
  487. }
  488. public class JsonDetail
  489. {
  490. public string ID;
  491. public int Sequence { get; set; }
  492. public string InvCode { get; set; }
  493. public decimal Quantity { get; set; }
  494. public string WHCode { get; set; }
  495. /// <summary>
  496. /// 备注1
  497. /// </summary>
  498. public string DetailReamrk { get; set; }
  499. /// <summary>
  500. /// 备注2
  501. /// </summary>
  502. public string DetailReamrk2 { get; set; }
  503. public string Batch { get; set; }
  504. /// <summary>
  505. /// 受益项目
  506. /// </summary>
  507. public string SYproject { get; set; }
  508. }
  509. #endregion
  510. }
  511. }