frmWmsInArrival.cs 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  1. using ComponentFactory.Krypton.Toolkit;
  2. using NXWMS.Client.Code.Extends;
  3. using NXWMS.Client.Interface.Instock;
  4. using NXWMS.Client.Model.AppModels.Condition;
  5. using NXWMS.Client.Model.AppModels.Condition.Base;
  6. using NXWMS.Client.Model.AppModels.Condition.Common;
  7. using NXWMS.Client.Model.AppModels.Condition.Instock;
  8. using NXWMS.Client.Model.AppModels.Result;
  9. using NXWMS.Client.Model.AppModels.Result.Base;
  10. using NXWMS.Client.Model.AppModels.Result.Common;
  11. using NXWMS.Client.Model.AppModels.Result.Instock;
  12. using NXWMS.Client.Model.CoreModels;
  13. using NXWMS.Client.WebApiService.Routers.Instock;
  14. using NXWMS.Commons;
  15. using NXWMS.Forms.Instock.frmInstockChild;
  16. using NXWMS.Services;
  17. using System;
  18. using System.Collections.Generic;
  19. using System.ComponentModel;
  20. using System.Data;
  21. using System.Drawing;
  22. using System.Linq;
  23. using System.Text;
  24. using System.Text.RegularExpressions;
  25. using System.Web.UI.WebControls;
  26. using System.Windows.Forms;
  27. namespace NXWMS.Forms.Instock
  28. {
  29. /// <summary>
  30. /// 到货通知单窗体
  31. /// </summary>
  32. public partial class frmWmsInArrival : KryptonForm
  33. {
  34. /// <summary>
  35. /// 窗体构造函数
  36. /// </summary>
  37. public frmWmsInArrival()
  38. {
  39. InitializeComponent();
  40. // 获取窗体的全类名
  41. _CrrentClassName = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName;
  42. }
  43. #region 全局变量
  44. /// <summary>
  45. /// 客户端字段排序列表(到货通知单主表)
  46. /// </summary>
  47. private List<ClientFieldOrderResult> _clientFieldOrderList;
  48. /// <summary>
  49. /// 客户端字段排序列表(到货通知单明细表)
  50. /// </summary>
  51. private List<ClientFieldOrderResult> _clientFieldOrderDtlList;
  52. /// <summary>
  53. /// 当前窗体类名
  54. /// </summary>
  55. private string _CrrentClassName;
  56. /// <summary>
  57. /// 到货通知单主键ID,用于记录主表选中行的主键信息。
  58. /// 目前由于 加载控件不能传递具有参数的函数,所以临时使用全局变量。
  59. /// ToDo:后续修改优化加载控件的实现方式,支持传递具有参数的函数。
  60. /// 孙亚龙 舍弃于2020年9月7日
  61. /// </summary>
  62. //string arrivalId = string.Empty;
  63. /// <summary>
  64. /// 用于控制明细表数据的加载时机。
  65. /// 由于主表DataGridView数据加载时,会默认触发选中项更改事件。这时候加载明细表数据会发生异常。
  66. /// 使用全局变量,控制明细表的数据的加载时机,只能在主表数据全部初始化完成后,并且选中了一行主表数据的时候。
  67. /// </summary>
  68. bool isControlArrivalDtlShow = false;
  69. /// <summary>
  70. /// 定义委托
  71. /// 用于执行刷新页面数据的函数
  72. /// </summary>
  73. public delegate void dlgRefreshFrmHost();
  74. /// <summary>
  75. /// 定义委托变量
  76. /// 用于绑定刷新页面数据的函数
  77. /// </summary>
  78. public static dlgRefreshFrmHost RefreshFrmHost;
  79. #region 分页控件
  80. /// <summary>
  81. /// 每页标签
  82. /// </summary>
  83. KryptonLabel lbEveryPage;
  84. /// <summary>
  85. /// 每页记录数列表控件
  86. /// </summary>
  87. KryptonComboBox cmbEveryPageRecordNum;
  88. /// <summary>
  89. /// 记录标签
  90. /// </summary>
  91. KryptonLabel lbRecordsNum;
  92. /// <summary>
  93. /// 分割线
  94. /// </summary>
  95. KryptonSeparator separator;
  96. /// <summary>
  97. /// 首页按钮
  98. /// </summary>
  99. KryptonButton btFirstPage;
  100. /// <summary>
  101. /// 上一页按钮
  102. /// </summary>
  103. KryptonButton btPrePage;
  104. /// <summary>
  105. /// 当前页标签
  106. /// </summary>
  107. KryptonLabel lbCurrentPage;
  108. /// <summary>
  109. /// 总页数标签
  110. /// </summary>
  111. KryptonLabel lbTotalPage;
  112. /// <summary>
  113. /// 数据记录总数标签
  114. /// </summary>
  115. KryptonLabel lbTotalDataRecords;
  116. /// <summary>
  117. /// 下一页按钮
  118. /// </summary>
  119. KryptonButton btNextPage;
  120. /// <summary>
  121. /// 尾页按钮
  122. /// </summary>
  123. KryptonButton btLastPage;
  124. /// <summary>
  125. /// 分割线
  126. /// </summary>
  127. KryptonSeparator separator1;
  128. /// <summary>
  129. /// 页码标签控件
  130. /// </summary>
  131. KryptonLabel lbPageNum;
  132. /// <summary>
  133. /// 页码列表控件
  134. /// </summary>
  135. KryptonComboBox cmbPageNumEnum;
  136. /// <summary>
  137. /// 分割线
  138. /// </summary>
  139. KryptonSeparator separator2;
  140. /// <summary>
  141. /// 跳转页码按钮
  142. /// </summary>
  143. KryptonButton btGotoPage;
  144. #endregion
  145. #endregion
  146. #region 初始化数据
  147. private bool isIniData;
  148. /// <summary>
  149. /// 窗体加载事件函数
  150. /// </summary>
  151. /// <param name="sender"></param>
  152. /// <param name="e"></param>
  153. private void frmWmsInArrival_Load(object sender, EventArgs e)
  154. {
  155. this.isIniData = true;
  156. #region 获取主、明细表的显示列信息
  157. //获取到货通知单主表数据源配置
  158. var result = ConfigServices.configService.GetDataViewOrderList(new ClientFieldOrderCondition { SourceCode = $"{_CrrentClassName}" });
  159. if (result.Status == OperateStatus.Success)
  160. {
  161. _clientFieldOrderList = result.Data;
  162. }
  163. //获取到货通知单明细表表数据源配置
  164. var resultDtl = ConfigServices.configService.GetDataViewOrderList(new ClientFieldOrderCondition { SourceCode = $"{_CrrentClassName}_Dtl" });
  165. if (resultDtl.Status == OperateStatus.Success)
  166. {
  167. _clientFieldOrderDtlList = resultDtl.Data;
  168. }
  169. #endregion
  170. InitComboBoxItemData();
  171. dtp_startTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
  172. dtp_endTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
  173. dtp_startTime.Checked = false;
  174. dtp_endTime.Checked = false;
  175. //InitPageControl();
  176. RefreshFrmHost = new dlgRefreshFrmHost(RefreshArrivalSearchData);
  177. #region 分页按钮
  178. //btFirstPage.Enabled = false;
  179. //btPrePage.Enabled = false;
  180. //btNextPage.Enabled = false;
  181. //btLastPage.Enabled = false;
  182. //btGotoPage.Enabled = false;
  183. #endregion
  184. this.isIniData = false;
  185. }
  186. /// <summary>
  187. /// 初始化下拉列表数据
  188. /// </summary>
  189. private void InitComboBoxItemData()
  190. {
  191. /*
  192. ToDo:后续把下拉列表转为 后台获取数据,目前是写死的。
  193. */
  194. List<BasDictionaryResult> results = new List<BasDictionaryResult>();
  195. #region 单据类型
  196. results = BasDictionaryUtil.basDictionaryResultLst.FindAll(x => x.DICTIONARY_CODE == "ArrivalTypeDesc");
  197. if (results.Count > 0)
  198. {
  199. cmb_arrivalType.Items.Clear();
  200. cmb_arrivalType.Items.Add(new ListItem
  201. {
  202. Value = "",
  203. Text = "请选择",
  204. });
  205. foreach (var item in results)
  206. {
  207. cmb_arrivalType.Items.Add(new ListItem
  208. {
  209. Value = item.DICTIONARY_ITEM_CODE,
  210. Text = item.DICTIONARY_ITEM_NAME,
  211. });
  212. }
  213. cmb_arrivalType.SelectedIndex = 0;
  214. }
  215. else
  216. {
  217. KryptonMessageBox.Show("未找到到货通知单类型的字典项数据!");
  218. }
  219. #endregion
  220. #region 单据状态
  221. results = BasDictionaryUtil.basDictionaryResultLst.FindAll(x => x.DICTIONARY_CODE == "ArrivalOrderStatusDesc");
  222. if (results.Count > 0)
  223. {
  224. cmb_arrivalStatus.Items.Clear();
  225. cmb_arrivalStatus.Items.Add(new ListItem
  226. {
  227. Value = "",
  228. Text = "请选择",
  229. });
  230. foreach (var item in results)
  231. {
  232. cmb_arrivalStatus.Items.Add(new ListItem
  233. {
  234. Value = item.DICTIONARY_ITEM_CODE,
  235. Text = item.DICTIONARY_ITEM_NAME,
  236. });
  237. }
  238. cmb_arrivalStatus.SelectedIndex = 0;
  239. }
  240. else
  241. {
  242. KryptonMessageBox.Show("未找到到货通知单状态的字典项数据!");
  243. }
  244. #endregion
  245. #region 仓库信息
  246. var warehouseResult = BaseServices.warehouseService.GetList(new WarehouseSearchCondition { IsUsed = true, ItemSQL = "WAREHOUSE_CODE,WAREHOUSE_NAME" });
  247. if (warehouseResult.Status == OperateStatus.Success)
  248. {
  249. cmb_targetWarehouse.Items.Clear();
  250. cmb_targetWarehouse.Items.Add(new ListItem
  251. {
  252. Value = "",
  253. Text = "请选择",
  254. });
  255. foreach (WarehouseResult item in warehouseResult.Data.RowData.ToList())
  256. {
  257. cmb_targetWarehouse.Items.Add(new ListItem
  258. {
  259. Value = item.WAREHOUSE_CODE,
  260. Text = item.WAREHOUSE_NAME,
  261. });
  262. }
  263. cmb_targetWarehouse.SelectedIndex = 0;
  264. }
  265. else
  266. {
  267. cmb_targetWarehouse.Items.Clear();
  268. KryptonMessageBox.Show(warehouseResult.Message);
  269. }
  270. #endregion
  271. #region 供应商信息
  272. var result = BaseServices.supplierService.GetList(new SupplierSearchCondition
  273. {
  274. IsUsed = true,
  275. PageIndex = 1,
  276. PageSize = 10000
  277. });
  278. if (result.Status == OperateStatus.Success)
  279. {
  280. cmb_supplierMsg.Items.Clear();
  281. cmb_supplierMsg.Items.Add(new ListItem
  282. {
  283. Value = "",
  284. Text = "请选择",
  285. });
  286. foreach (SupplierResult item in result.Data.RowData.ToList())
  287. {
  288. cmb_supplierMsg.Items.Add(new ListItem
  289. {
  290. Value = item.SUPPLIER_CODE,
  291. Text = item.SUPPLIER_NAME,
  292. });
  293. }
  294. cmb_supplierMsg.SelectedIndex = 0;
  295. }
  296. else
  297. {
  298. cmb_supplierMsg.Items.Clear();
  299. KryptonMessageBox.Show(result.Message);
  300. }
  301. #endregion
  302. }
  303. #endregion
  304. #region 查询到货通知单数据
  305. /// <summary>
  306. /// 查询按钮事件函数
  307. /// </summary>
  308. /// <param name="sender"></param>
  309. /// <param name="e"></param>
  310. private void btnSearch_Click(object sender, EventArgs e)
  311. {
  312. var loadfrm = new frmLoading();
  313. loadfrm.Show();
  314. var message = loadfrm.EventCalExec(LoadWmsInArrivalData);
  315. // setButtonEnable();
  316. }
  317. /// <summary>
  318. /// 刷新到货通知单的查询数据
  319. /// </summary>
  320. private void RefreshArrivalSearchData()
  321. {
  322. var loadfrm = new frmLoading();
  323. loadfrm.Show();
  324. var message =loadfrm.EventCalExec(LoadWmsInArrivalData);
  325. if (!string.IsNullOrWhiteSpace(message))
  326. {
  327. KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  328. }
  329. }
  330. /// <summary>
  331. /// 调用服务端接口,请求到货通知单主表数据
  332. /// </summary>
  333. /// <returns></returns>
  334. private string LoadWmsInArrivalData()
  335. {
  336. var result = WmsInstockService.wmsInArrivalService.GetWmsInArrivalListForPage(new WmsInArrivalSearchMd
  337. {
  338. ArrivalNoMsg = tb_arrivalNo.Text,
  339. SourceNoMsg = tb_sourceNo.Text,
  340. PurchaseStaffMsg = tb_purchaseStaffMsg.Text,
  341. MaterialMsg = tb_materialMsg.Text,
  342. ArrivalTypeMsg = ((ListItem)cmb_arrivalType.SelectedItem).Value,
  343. ArrivalStatus = ((ListItem)cmb_arrivalStatus.SelectedItem).Value,
  344. SupplierMsg = ((ListItem)cmb_supplierMsg.SelectedItem).Value,
  345. WarehouseMsg = ((ListItem)cmb_targetWarehouse.SelectedItem).Value,
  346. StartCreateTime = dtp_startTime.Checked ? dtp_startTime.Value.ToString() : null,
  347. EndCreateTime = dtp_endTime.Checked ? dtp_endTime.Value.ToString() : null,
  348. PageNum = this.pageToolbar1.PageIndex, //Convert.ToInt32(lbCurrentPage.Tag),
  349. EveryPageQty = this.pageToolbar1.PageSize// Convert.ToInt32(cmbEveryPageRecordNum.Text),
  350. });
  351. if (result.Status == OperateStatus.Success)
  352. {
  353. dgv_WmsInArrival.Columns.Clear();
  354. dgv_WmsInArrivalDtl.DataSource = null;
  355. //arrivalId = string.Empty;
  356. isControlArrivalDtlShow = false;
  357. dgv_WmsInArrival.DataSource = result.Data;
  358. dgv_WmsInArrival.BuildDataGridView(_clientFieldOrderList.GetFieldOrderDic());
  359. dgv_WmsInArrival.ClearSelection();
  360. isControlArrivalDtlShow = true;
  361. SetStatusCellBackColor(dgv_WmsInArrival, "ARRIVAL_STATUS_NAME");
  362. #region 分页赋值
  363. this.pageToolbar1.DataCount = result.DataCount;
  364. //if (result.Data.Count > 0)
  365. //{
  366. // lbTotalPage.Tag = result.DataCount % Convert.ToInt32(cmbEveryPageRecordNum.Text) != 0 ? result.DataCount / Convert.ToInt32(cmbEveryPageRecordNum.Text) + 1 : result.DataCount / Convert.ToInt32(cmbEveryPageRecordNum.Text);
  367. // cmbPageNumEnum.Items.Clear();
  368. // cmbPageNumEnum.Text = lbCurrentPage.Tag.ToString();
  369. // for (int i = 0; i < Convert.ToInt32(lbTotalPage.Tag); i++)
  370. // {
  371. // cmbPageNumEnum.Items.Add(i + 1);
  372. // }
  373. // lbCurrentPage.Text = "第" + Convert.ToInt32(lbCurrentPage.Tag) + "页";
  374. // lbTotalPage.Text = "共" + Convert.ToInt32(lbTotalPage.Tag) + "页";
  375. // lbTotalDataRecords.Text = "总计:" + result.DataCount + "条数据记录";
  376. //}
  377. //else
  378. //{
  379. // lbCurrentPage.Text = "第" + Convert.ToInt32(lbCurrentPage.Tag) + "页";
  380. // //lbCurrentPage.Tag = 1;
  381. // //lbTotalPage.Tag = 0;
  382. // //lbTotalPage.Text = "共0页";
  383. // lbTotalDataRecords.Text = "总计:0条数据记录";
  384. // cmbPageNumEnum.Items.Clear();
  385. // cmbPageNumEnum.Text = string.Empty;
  386. //}
  387. #endregion
  388. tb_arrivalNo.Focus();
  389. return string.Empty;
  390. }
  391. else
  392. {
  393. tb_arrivalNo.Focus();
  394. return result.Message;
  395. }
  396. }
  397. #endregion
  398. #region 查询到货通知单明细表数据
  399. /// <summary>
  400. /// 到货通知单主表选中行事件
  401. /// </summary>
  402. /// <param name="sender"></param>
  403. /// <param name="e"></param>
  404. private void dgv_WmsInArrival_SelectionChanged(object sender, EventArgs e)
  405. {
  406. if (dgv_WmsInArrival.SelectedRows.Count > 0 && isControlArrivalDtlShow)
  407. {
  408. //int rowIndec = dgv_WmsInArrival.CurrentCell.RowIndex;
  409. //int columnIndex = dgv_WmsInArrival.CurrentCell.RowIndex;
  410. //arrivalId = dgv_WmsInArrival.SelectedRows[0].Cells[1].Value.ToString();
  411. int mainTableId = Convert.ToInt32(dgv_WmsInArrival.SelectedRows[0].Cells[1].Value);
  412. var loadfrm = new frmLoading();
  413. loadfrm.Show();
  414. var message = loadfrm.EventCalExecExt1(LoadWmsInArrivalDtlData, mainTableId);
  415. if (!string.IsNullOrWhiteSpace(message))
  416. {
  417. KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  418. }
  419. }
  420. }
  421. /// <summary>
  422. /// 调用服务端接口,请求到货通知单明细表数据
  423. /// </summary>
  424. /// <returns></returns>
  425. private string LoadWmsInArrivalDtlData(int mainTableId)
  426. {
  427. //if (string.IsNullOrEmpty(arrivalId))
  428. //{
  429. // return "请选择记录!";
  430. //}
  431. var result = WmsInstockService.wmsInArrivalService.GetWmsInArrivalDtlListForId(new WmsInArrivalResult { ARRIVAL_ID = Convert.ToInt32(mainTableId), REMARKS1 = "查询已删除明细数据" });
  432. if (result.Status == OperateStatus.Success)
  433. {
  434. dgv_WmsInArrivalDtl.Columns.Clear();
  435. dgv_WmsInArrivalDtl.DataSource = result.Data.WmsInArrivalDtlList;
  436. dgv_WmsInArrivalDtl.BuildDataGridView(_clientFieldOrderDtlList.GetFieldOrderDic(), true, false);
  437. dgv_WmsInArrivalDtl.ClearSelection();
  438. SetStatusCellBackColor(dgv_WmsInArrivalDtl, "ARRIVAL_DTL_STATUS_NAME");
  439. return string.Empty;
  440. }
  441. else
  442. {
  443. return result.Message;
  444. }
  445. }
  446. #endregion
  447. #region 到货通知单增、删、改、重置条件操作
  448. /// <summary>
  449. /// 新增到货通知单事件函数
  450. /// </summary>
  451. /// <param name="sender"></param>
  452. /// <param name="e"></param>
  453. private void btnAdd_Click(object sender, EventArgs e)
  454. {
  455. frmChildAddWmsInArrival frm = new frmChildAddWmsInArrival();
  456. frm.ShowDialog();
  457. }
  458. /// <summary>
  459. /// 编辑到货通知单事件
  460. /// </summary>
  461. /// <param name="sender"></param>
  462. /// <param name="e"></param>
  463. private void btnEdit_Click(object sender, EventArgs e)
  464. {
  465. int rowsSelectedNum = 0;
  466. string arrivalId = string.Empty;
  467. int rowSelectIndex = 0;
  468. foreach (DataGridViewRow item in dgv_WmsInArrival.Rows)
  469. {
  470. DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0];
  471. object obj = checkCell.EditedFormattedValue;
  472. if (Convert.ToBoolean(obj))
  473. {
  474. rowsSelectedNum++;
  475. arrivalId = item.Cells[1].Value.ToString();
  476. rowSelectIndex = item.Index;
  477. }
  478. }
  479. if (rowsSelectedNum > 0)
  480. {
  481. if (rowsSelectedNum == 1)
  482. {
  483. int arrivalStatus = Convert.ToInt32(dgv_WmsInArrival.Rows[rowSelectIndex].Cells["ARRIVAL_STATUS"].Value);
  484. if (arrivalStatus == (int)ArrivalStatus.初始创建)
  485. {
  486. frmChildEditWmsInArrival frm = new frmChildEditWmsInArrival();
  487. frm.ArrivalId = arrivalId;
  488. frm.ShowDialog();
  489. }
  490. else if (arrivalStatus < (int)ArrivalStatus.已完成)
  491. {
  492. KryptonMessageBox.Show($"第【{rowSelectIndex + 1}】行的到货通知单不处于【初始创建】状态,无法再次进行编辑!");
  493. }
  494. else if (arrivalStatus == (int)ArrivalStatus.强制完成)
  495. {
  496. KryptonMessageBox.Show($"第【{rowSelectIndex + 1}】行的到货通知单已被【强制完成】,无法再次进行编辑!");
  497. }
  498. else if (arrivalStatus == (int)ArrivalStatus.已删除)
  499. {
  500. KryptonMessageBox.Show($"第【{rowSelectIndex + 1}】行的到货通知单【已被删除】,无法再次进行编辑!");
  501. }
  502. else if (arrivalStatus == (int)ArrivalStatus.已完成)
  503. {
  504. KryptonMessageBox.Show($"第【{rowSelectIndex + 1}】行的到货通知单【已完成】,无法再次进行编辑!");
  505. }
  506. else
  507. {
  508. KryptonMessageBox.Show($"第【{rowSelectIndex + 1}】行的到货通知单状态【{arrivalStatus}】是未知的,无法进行编辑!");
  509. }
  510. }
  511. else
  512. {
  513. KryptonMessageBox.Show("不能对勾选的多行数据进行编辑,请重新勾选一行数据!");
  514. }
  515. }
  516. else
  517. {
  518. KryptonMessageBox.Show("请勾选要编辑的数据行!");
  519. }
  520. }
  521. /// <summary>
  522. /// 删除到货通知单按钮事件
  523. /// </summary>
  524. /// <param name="sender"></param>
  525. /// <param name="e"></param>
  526. private void btnRemove_Click(object sender, EventArgs e)
  527. {
  528. int rowsSelected = 0;
  529. string arrivalId = string.Empty;
  530. Dictionary<int, int> dic_IndexAndArrivalStatus = new Dictionary<int, int>();
  531. foreach (DataGridViewRow item in dgv_WmsInArrival.Rows)
  532. {
  533. DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0];
  534. object obj = checkCell.EditedFormattedValue;
  535. if (Convert.ToBoolean(obj))
  536. {
  537. rowsSelected++;
  538. arrivalId += item.Cells[1].Value.ToString() + ",";
  539. int arrivalStatus = Convert.ToInt32(item.Cells["ARRIVAL_STATUS"].Value);
  540. dic_IndexAndArrivalStatus.Add(item.Index, arrivalStatus);
  541. }
  542. }
  543. if (rowsSelected > 0)
  544. {
  545. DialogResult dr = KryptonMessageBox.Show("确定要删除所勾选的到货通知单数据吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
  546. if (dr == DialogResult.OK)
  547. {
  548. foreach (var item in dic_IndexAndArrivalStatus)
  549. {
  550. if (item.Value == (int)ArrivalStatus.初始创建)
  551. {
  552. }
  553. else if (item.Value < (int)ArrivalStatus.已完成)
  554. {
  555. KryptonMessageBox.Show($"不能对第【{item.Key + 1}】行不处于【初始创建】状态的到货通知单,执行删除操作!");
  556. return;
  557. }
  558. else if (item.Value == (int)ArrivalStatus.强制完成)
  559. {
  560. KryptonMessageBox.Show($"不能对第【{item.Key + 1}】行处于【强制完成】状态的到货通知单,执行删除操作!");
  561. return;
  562. }
  563. else if (item.Value == (int)ArrivalStatus.已删除)
  564. {
  565. KryptonMessageBox.Show($"不能对第【{item.Key + 1}】行处于【已删除】状态的到货通知单,执行删除操作!");
  566. return;
  567. }
  568. else if (item.Value == (int)ArrivalStatus.已完成)
  569. {
  570. KryptonMessageBox.Show($"不能对第【{item.Key + 1}】行处于【已完成】状态的到货通知单,执行删除操作!");
  571. return;
  572. }
  573. else
  574. {
  575. KryptonMessageBox.Show($"不能对第【{item.Key + 1}】行处于未知状态【{item.Value}】的到货通知单,执行删除操作!");
  576. return;
  577. }
  578. }
  579. arrivalId = arrivalId.Substring(0, arrivalId.Length - 1);
  580. var result = WmsInstockService.wmsInArrivalService.DeleteWmsInArrivalData(new WmsInArrivalResult { ARRIVAL_NO = arrivalId, UPDATE_BY = AppConfig.UserLoginResult.UserInfo.UserId });
  581. if (result.Status == OperateStatus.Success)
  582. {
  583. KryptonMessageBox.Show(result.Message);
  584. RefreshArrivalSearchData();
  585. }
  586. else
  587. {
  588. KryptonMessageBox.Show(result.Message);
  589. }
  590. }
  591. }
  592. else
  593. {
  594. KryptonMessageBox.Show("请勾选要删除的到货通知单数据行!");
  595. }
  596. }
  597. /// <summary>
  598. /// 重置查询条件
  599. /// </summary>
  600. /// <param name="sender"></param>
  601. /// <param name="e"></param>
  602. private void btnReset_Click(object sender, EventArgs e)
  603. {
  604. tb_arrivalNo.Text = "";
  605. tb_sourceNo.Text = "";
  606. tb_materialMsg.Text = "";
  607. tb_purchaseStaffMsg.Text = "";
  608. cmb_arrivalStatus.SelectedIndex = 0;
  609. cmb_arrivalType.SelectedIndex = 0;
  610. cmb_supplierMsg.SelectedIndex = 0;
  611. cmb_targetWarehouse.SelectedIndex = 0;
  612. dtp_startTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
  613. dtp_startTime.Checked = false;
  614. dtp_endTime.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
  615. dtp_endTime.Checked = false;
  616. }
  617. #endregion
  618. #region 导入、导出、打印到货通知单数据
  619. /// <summary>
  620. /// 导出到货通知单数据
  621. /// </summary>
  622. /// <param name="sender"></param>
  623. /// <param name="e"></param>
  624. private void btnExport_Click(object sender, EventArgs e)
  625. {
  626. List<string> arrIdList = new List<string>();
  627. foreach (DataGridViewRow item in dgv_WmsInArrival.Rows)
  628. {
  629. DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0];
  630. object obj = checkCell.EditedFormattedValue;
  631. if (Convert.ToBoolean(obj))
  632. {
  633. arrIdList.Add(item.Cells[1].Value.ToString());
  634. }
  635. }
  636. if (arrIdList.Count > 0)
  637. {
  638. List<WmsInArrivalResult> wmsInArrivalList = new List<WmsInArrivalResult>();
  639. foreach (string item in arrIdList)
  640. {
  641. var result = WmsInstockService.wmsInArrivalService.GetWmsInArrivalDtlListForId(new WmsInArrivalResult { ARRIVAL_ID = Convert.ToInt32(item) });
  642. if (result.Status == OperateStatus.Success)
  643. {
  644. wmsInArrivalList.Add(result.Data);
  645. }
  646. }
  647. NxExcelHelper.ExportToExcel(GetWmsArrivalExportExcelData(wmsInArrivalList), "到货通知单数据");
  648. }
  649. else
  650. {
  651. KryptonMessageBox.Show("请勾选要导出的数据行!");
  652. }
  653. }
  654. private DataTable GetWmsArrivalExportExcelData(List<WmsInArrivalResult> wmsInArrivalList)
  655. {
  656. DataTable dt = new DataTable();
  657. #region 准备导出列名
  658. DataColumn dc = new DataColumn("到货通知单号");
  659. dt.Columns.Add(dc);
  660. dc = new DataColumn("参考单号");
  661. dt.Columns.Add(dc);
  662. dc = new DataColumn("单据类型");
  663. dt.Columns.Add(dc);
  664. dc = new DataColumn("采购单号");
  665. dt.Columns.Add(dc);
  666. dc = new DataColumn("采购人员");
  667. dt.Columns.Add(dc);
  668. dc = new DataColumn("采购时间");
  669. dt.Columns.Add(dc);
  670. dc = new DataColumn("仓库编码");
  671. dt.Columns.Add(dc);
  672. dc = new DataColumn("仓库名称");
  673. dt.Columns.Add(dc);
  674. dc = new DataColumn("预计到货时间");
  675. dt.Columns.Add(dc);
  676. dc = new DataColumn("实际到货时间");
  677. dt.Columns.Add(dc);
  678. dc = new DataColumn("物料类型编码");
  679. dt.Columns.Add(dc);
  680. dc = new DataColumn("物料类型名称");
  681. dt.Columns.Add(dc);
  682. dc = new DataColumn("物料编码");
  683. dt.Columns.Add(dc);
  684. dc = new DataColumn("物料名称");
  685. dt.Columns.Add(dc);
  686. dc = new DataColumn("物料条码");
  687. dt.Columns.Add(dc);
  688. dc = new DataColumn("规格");
  689. dt.Columns.Add(dc);
  690. dc = new DataColumn("单位");
  691. dt.Columns.Add(dc);
  692. dc = new DataColumn("批次号");
  693. dt.Columns.Add(dc);
  694. dc = new DataColumn("到货数量");
  695. dt.Columns.Add(dc);
  696. dc = new DataColumn("已收货数量");
  697. dt.Columns.Add(dc);
  698. dc = new DataColumn("供应商编码");
  699. dt.Columns.Add(dc);
  700. dc = new DataColumn("供应商名称");
  701. dt.Columns.Add(dc);
  702. dc = new DataColumn("生产日期");
  703. dt.Columns.Add(dc);
  704. dc = new DataColumn("失效日期");
  705. dt.Columns.Add(dc);
  706. #endregion
  707. foreach (WmsInArrivalResult arrivalMd in wmsInArrivalList)
  708. {
  709. foreach (WmsInArrivalDtlResult arrivalDtlMd in arrivalMd.WmsInArrivalDtlList)
  710. {
  711. DataRow dr = dt.NewRow();
  712. dr["到货通知单号"] = arrivalMd.ARRIVAL_NO;
  713. dr["参考单号"] = arrivalMd.SOURCE_BILL_NO;
  714. dr["单据类型"] = arrivalMd.ARRIVAL_TYPE_NAME;
  715. dr["采购单号"] = arrivalMd.PURCHASE_ORDER_NO;
  716. dr["采购人员"] = arrivalMd.PURCHASE_STAFF;
  717. dr["采购时间"] = arrivalMd.PURCHASE_TIME;
  718. dr["仓库编码"] = arrivalMd.WAREHOUSE_CODE;
  719. dr["仓库名称"] = arrivalMd.WAREHOUSE_NAME;
  720. dr["预计到货时间"] = arrivalMd.EXPECT_ARRIVAL_TIME;
  721. dr["实际到货时间"] = arrivalMd.ACTUAL_ARRIVAL_TIME;
  722. dr["物料类型编码"] = arrivalDtlMd.MATERIEL_TYPE_CODE;
  723. dr["物料类型名称"] = arrivalDtlMd.MATERIEL_TYPE_NAME;
  724. dr["物料编码"] = arrivalDtlMd.MATERIEL_CODE;
  725. dr["物料名称"] = arrivalDtlMd.MATERIEL_NAME;
  726. dr["物料条码"] = arrivalDtlMd.MATERIEL_BARCODE;
  727. dr["规格"] = arrivalDtlMd.MATERIEL_SPEC;
  728. dr["单位"] = arrivalDtlMd.UNIT_CODE;
  729. dr["批次号"] = arrivalDtlMd.BATCH_NO;
  730. dr["到货数量"] = arrivalDtlMd.ARRIVAL_QTY;
  731. dr["已收货数量"] = arrivalDtlMd.RECEIPT_QTY;
  732. dr["供应商编码"] = arrivalDtlMd.SUPPLIER_CODE;
  733. dr["供应商名称"] = arrivalDtlMd.SUPPLIER_NAME;
  734. dr["生产日期"] = arrivalDtlMd.PRODUCT_DATE;
  735. dr["失效日期"] = arrivalDtlMd.EXP_DATE;
  736. dt.Rows.Add(dr);
  737. }
  738. }
  739. return dt;
  740. }
  741. /// <summary>
  742. /// Excel导入到货通知单数据
  743. /// </summary>
  744. /// <param name="sender"></param>
  745. /// <param name="e"></param>
  746. private void btnImport_Click(object sender, EventArgs e)
  747. {
  748. }
  749. /// <summary>
  750. /// 打印到货通知单
  751. /// </summary>
  752. /// <param name="sender"></param>
  753. /// <param name="e"></param>
  754. private void btnPrint_Click(object sender, EventArgs e)
  755. {
  756. }
  757. #endregion
  758. #region DatatGridView 事件
  759. /// <summary>
  760. /// 设置DatatGridView的第一列复选框的背景色
  761. /// </summary>
  762. /// <param name="sender"></param>
  763. /// <param name="e"></param>
  764. private void dgv_WmsInArrival_CellContentClick(object sender, DataGridViewCellEventArgs e)
  765. {
  766. #region 由于删除,导出可能存在多行勾选,所以注释掉下面的代码
  767. // 由于删除,导出可能存在多行勾选,所以注释掉下面的代码
  768. //if (e.ColumnIndex == 0)
  769. //{
  770. // DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)dgv_WmsInArrival.CurrentCell;
  771. // if (Convert.ToBoolean(checkCell.EditedFormattedValue))
  772. // {
  773. // foreach (DataGridViewRow item in dgv_WmsInArrival.Rows)
  774. // {
  775. // if (!item.IsNewRow && item != dgv_WmsInArrival.CurrentRow)
  776. // {
  777. // item.Cells[0].Value = false;
  778. // }
  779. // }
  780. // }
  781. //}
  782. #endregion
  783. if (e.ColumnIndex == 0)
  784. {
  785. DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)dgv_WmsInArrival.CurrentCell;
  786. if (Convert.ToBoolean(checkCell.EditedFormattedValue))
  787. {
  788. dgv_WmsInArrival.CurrentCell.Style.BackColor = Color.FromArgb(51, 153, 255);
  789. }
  790. else
  791. {
  792. dgv_WmsInArrival.CurrentCell.Style.BackColor = Color.Transparent;
  793. }
  794. }
  795. }
  796. /// <summary>
  797. /// 设置状态列的背景色
  798. /// </summary>
  799. /// <param name="dataGridView">dataGridView控件</param>
  800. /// <param name="columnName">状态列的列名称</param>
  801. private void SetStatusCellBackColor(KryptonDataGridView dataGridView, string columnName)
  802. {
  803. foreach (DataGridViewRow item in dataGridView.Rows)
  804. {
  805. string arrivalDtlStatus = item.Cells[columnName].Value.ToString();
  806. switch (Enum.Parse(typeof(ArrivalStatus), arrivalDtlStatus))
  807. {
  808. case ArrivalStatus.初始创建:
  809. //item.Cells[columnName].Style.ForeColor = Color.White;
  810. item.Cells[columnName].Style.BackColor = Color.FromArgb(214, 228, 243);
  811. break;
  812. case ArrivalStatus.已生成收货单:
  813. //item.Cells[columnName].Style.ForeColor = Color.White;
  814. item.Cells[columnName].Style.BackColor = Color.LightYellow;
  815. break;
  816. case ArrivalStatus.收货中:
  817. //item.Cells[columnName].Style.ForeColor = Color.White;
  818. item.Cells[columnName].Style.BackColor = Color.LightGreen;
  819. break;
  820. case ArrivalStatus.已完成:
  821. //item.Cells[columnName].Style.ForeColor = Color.White;
  822. item.Cells[columnName].Style.BackColor = Color.LightGray;
  823. break;
  824. case ArrivalStatus.强制完成:
  825. //item.Cells[columnName].Style.ForeColor = Color.White;
  826. item.Cells[columnName].Style.BackColor = Color.DarkGray;
  827. break;
  828. case ArrivalStatus.已删除:
  829. //item.Cells[columnName].Style.ForeColor = Color.White;
  830. item.Cells[columnName].Style.BackColor = Color.FromArgb(255, 69, 0);
  831. break;
  832. default:
  833. break;
  834. }
  835. }
  836. }
  837. private void dgv_WmsInArrival_DataError(object sender, DataGridViewDataErrorEventArgs e)
  838. {
  839. }
  840. private void dgv_WmsInArrivalDtl_DataError(object sender, DataGridViewDataErrorEventArgs e)
  841. {
  842. }
  843. #endregion
  844. #region 鼠标右键单击事件
  845. private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)
  846. {
  847. if (dgv_WmsInArrival.Rows.Count > 0)
  848. {
  849. RefreshArrivalSearchData();
  850. }
  851. }
  852. private void 刷新ToolStripMenuItem1_Click(object sender, EventArgs e)
  853. {
  854. if (dgv_WmsInArrivalDtl.Rows.Count > 0)
  855. {
  856. if (dgv_WmsInArrival.SelectedRows.Count > 0 && isControlArrivalDtlShow)
  857. {
  858. //arrivalId = dgv_WmsInArrival.SelectedRows[0].Cells[1].Value.ToString();
  859. int mainTableId = Convert.ToInt32(dgv_WmsInArrival.SelectedRows[0].Cells[1].Value);
  860. var loadfrm = new frmLoading();
  861. loadfrm.Show();
  862. loadfrm.EventCalExecExt1(LoadWmsInArrivalDtlData, mainTableId);
  863. }
  864. }
  865. }
  866. #endregion
  867. private void pageToolbar1_OnPageChange(int PageIndex, int PageSzie)
  868. {
  869. this.btnSearch_Click(null, null);
  870. }
  871. }
  872. }