锐腾搅拌上料功能
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.

1278 lines
50 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using DevExpress.XtraEditors;
  9. using ICSSoft.Base.Config.AppConfig;
  10. using System.Data.Linq;
  11. using System.Linq;
  12. using ICSSoft.Base.Language.Tool;
  13. using System.Reflection;
  14. using ICSSoft.Base.Report.GridReport;
  15. using ICSSoft.Base.Config.DBHelper;
  16. using ICSSoft.Base.ReferForm;
  17. using ICSSoft.Base.Report;
  18. using ICSSoft.Base.ReferForm.AppReferForm;
  19. using ICSSoft.Frame.Data.Entity;
  20. using ICSSoft.Frame.Data.BLL;
  21. using ICSSoft.Base.UserControl.FormControl;
  22. using ICSSoft.Base.Report.Filter;
  23. using DevExpress.XtraGrid.Views.BandedGrid;
  24. using DevExpress.XtraGrid.Columns;
  25. using DevExpress.XtraGrid;
  26. using System.Text.RegularExpressions;
  27. namespace ICSSoft.Frame.APP
  28. {
  29. public partial class FormICSITEMLOTAdd : DevExpress.XtraEditors.XtraForm
  30. {
  31. DataRow rowGroup;
  32. private DataTable dataSource = null;
  33. private string sqltxt = "";
  34. private string sqlconn = "";
  35. Regex rex = new Regex(@"^\d+$|^\d+\.\d+$");
  36. #region 系统
  37. #region 构造函数
  38. public FormICSITEMLOTAdd()
  39. {
  40. InitializeComponent();
  41. }
  42. #endregion
  43. #region 构造函数
  44. public FormICSITEMLOTAdd(string receiptno,int receiptline)
  45. {
  46. InitializeComponent();
  47. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  48. this.WindowState = FormWindowState.Maximized;
  49. SearchItemLotInfo(receiptno, receiptline);
  50. }
  51. #endregion
  52. private void SearchItemLotInfo(string receiptno, int receiptline)
  53. {
  54. btnSTNO.Text = receiptno;
  55. btnSTNO.Enabled = false;
  56. btnSTNO.Properties.ReadOnly = true;
  57. comNUM.Enabled = false;
  58. comNUM.Text = receiptline.ToString();
  59. comNUM_SelectedIndexChanged(null,null);
  60. }
  61. #region 移动窗体
  62. private const int WM_NCHITTEST = 0x84;
  63. private const int HTCLIENT = 0x1;
  64. private const int HTCAPTION = 0x2;
  65. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  66. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  67. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  68. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  69. //重写窗体,使窗体可以不通过自带标题栏实现移动
  70. protected override void WndProc(ref Message m)
  71. {
  72. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  73. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  74. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  75. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  76. switch (m.Msg)
  77. {
  78. case WM_NCHITTEST:
  79. base.WndProc(ref m);
  80. if ((int)m.Result == HTCLIENT)
  81. m.Result = (IntPtr)HTCAPTION;
  82. return;
  83. }
  84. //拦截双击标题栏、移动窗体的系统消息
  85. if (m.Msg != 0xA3)
  86. {
  87. base.WndProc(ref m);
  88. }
  89. }
  90. #endregion
  91. #region 操作权限
  92. public DataTable RightOfExute()
  93. {
  94. DataTable rData = new DataTable();
  95. rData.Columns.Add("BtnName");
  96. rData.Columns.Add("ActionName");
  97. //查看权限(必须有)
  98. DataRow seeRow = rData.NewRow();
  99. seeRow["BtnName"] = "see";
  100. seeRow["ActionName"] = "查看";
  101. rData.Rows.Add(seeRow);
  102. List<Control> ControlList = new List<Control>();
  103. ControlList.Add(btnCreate);
  104. ControlList.Add(btnModify);
  105. ControlList.Add(btnDel);
  106. ControlList.Add(btnOutPut);
  107. foreach (Control ctr in ControlList)
  108. {
  109. if (ctr.GetType() == typeof(SimpleButton))
  110. {
  111. DataRow dr = rData.NewRow();
  112. dr["BtnName"] = ctr.Name;
  113. dr["ActionName"] = ctr.Text;
  114. rData.Rows.Add(dr);
  115. }
  116. }
  117. rData.AcceptChanges();
  118. return rData;
  119. }
  120. public DataTable RightOfData()// 数据权限
  121. {
  122. DataTable rData = new DataTable();
  123. rData.Columns.Add("BodyName");
  124. rData.Columns.Add("ControlName");
  125. rData.Columns.Add("ControlCaption");
  126. rData.AcceptChanges();
  127. return rData;
  128. }
  129. #endregion
  130. #region 列表
  131. private void gridView3_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  132. {
  133. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  134. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  135. }
  136. private void gridView4_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  137. {
  138. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  139. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  140. }
  141. #endregion
  142. #region 关闭
  143. private void btnExit_Click(object sender, EventArgs e)
  144. {
  145. this.Close();
  146. }
  147. private void simpleButton2_Click(object sender, EventArgs e)
  148. {
  149. this.Close();
  150. }
  151. #endregion
  152. #region 导出
  153. private void btnOutPut_Click(object sender, EventArgs e)
  154. {
  155. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  156. foe.ShowDialog();
  157. }
  158. #endregion
  159. #region 刷新
  160. private void btnRefresh_Click(object sender, EventArgs e)
  161. {
  162. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  163. try
  164. {
  165. _wait.Show();
  166. gridView3_Load(null, null);
  167. _wait.Close();
  168. }
  169. catch (Exception ex)
  170. {
  171. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  172. _wait.Close();
  173. }
  174. }
  175. #endregion
  176. #region 全选
  177. private void btnSelectAll_Click(object sender, EventArgs e)
  178. {
  179. gv3.PostEditor();
  180. this.Validate();
  181. for (int i = 0; i < gv3.RowCount; i++)
  182. {
  183. gv3.SetRowCellValue(i, coSelect, "Y");
  184. }
  185. }
  186. #endregion
  187. #region 全消
  188. private void btnCancelAll_Click(object sender, EventArgs e)
  189. {
  190. gv3.PostEditor();
  191. this.Validate();
  192. for (int i = 0; i < gv3.RowCount; i++)
  193. {
  194. gv3.SetRowCellValue(i, coSelect, "");
  195. }
  196. }
  197. #endregion
  198. #region 过滤方法
  199. private void FormContainerManager_FormClosing(object sender, FormClosingEventArgs e)
  200. {
  201. AppConfig.DropTemTable(tempTableName);
  202. }
  203. #endregion
  204. #region 绑定数据源
  205. private void btnConfig_Click(object sender, EventArgs e)
  206. {
  207. if (AppConfig.UserCode.ToLower() != "demo")
  208. {
  209. ICSBaseSimpleCode.AppshowMessageBox("您没有权限设置数据源,请联系软件提供商!");
  210. return;
  211. }
  212. FormDataSource fdata = new FormDataSource(AppConfig.GetMenuId(this.Tag.ToString()), btnConfig.Name);
  213. fdata.ShowDialog();
  214. }
  215. #endregion
  216. #endregion
  217. #region [入库单号]点击事件
  218. private void btnSTNO_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  219. {
  220. btnSTNO.Text = "";
  221. ButtonEdit btn = (ButtonEdit)sender;
  222. string sql = @"select DISTINCT STNO as [入库单号] from ICSASNIQCDETAIL
  223. where STDSTATUS='' and CHECKSTATUS=''
  224. and WorkPoint='" + AppConfig.WorkPointCode + "'";
  225. sql = string.Format(sql);
  226. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  227. FormDataRefer reForm = new FormDataRefer();
  228. reForm.FormTitle = "入库单号信息";
  229. DataTable menuData = data;
  230. reForm.DataSource = menuData;
  231. reForm.MSelectFlag = false;
  232. reForm.RowIndexWidth = 35;
  233. reForm.HideCols.Add("ID");
  234. reForm.FormWidth = 800;
  235. reForm.FormHeight = 600;
  236. reForm.FilterKey = btn.Text; //gridView3.GetRowCellValue(gridView3.FocusedRowHandle, gridView3.FocusedColumn).ToString().Trim();
  237. if (reForm.ShowDialog() == DialogResult.OK)
  238. {
  239. DataTable retData = reForm.ReturnData;
  240. foreach (DataRow dr in retData.Rows)
  241. {
  242. btnSTNO.Text = dr["入库单号"].ToString();
  243. }
  244. }
  245. }
  246. #endregion
  247. #region 选择入库单后,为行号下拉框添加项
  248. private void btnSTNO_EditValueChanged(object sender, EventArgs e)
  249. {
  250. string sql = @"select STLINE from ICSASNIQCDETAIL
  251. where STNO='" + btnSTNO.Text + "' and STDSTATUS='' and CHECKSTATUS='' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  252. sql = string.Format(sql);
  253. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  254. comNUM.Items.Clear();
  255. foreach (DataRow dr in data.Rows)
  256. {
  257. comNUM.Items.Add(dr[0].ToString());
  258. }
  259. }
  260. #endregion
  261. #region 选择行号后对后续box 赋值
  262. private void comNUM_SelectedIndexChanged(object sender, EventArgs e)
  263. {
  264. string sql = @"select DISTINCT a.ITEMCODE,b.VENDORCODE,a.UNIT,b.INVCONTROLTYPE,c.QualifyQTY,a.MEMO from ICSASNIQCDETAIL as a,ICSINVENTORY as b,ICSINVReceiptDetail as c
  265. where a.ITEMCODE=b.INVCODE and a.STNO=c.ReceiptNO and a.STLINE=c.ReceiptLine and a.STNO='" + btnSTNO.Text + "' and a.STLINE='" + comNUM.Text + "' and a.WorkPoint='" + AppConfig.WorkPointCode + "' and b.WorkPoint='" + AppConfig.WorkPointCode + "' and c.WorkPoint='" + AppConfig.WorkPointCode + "'";
  266. sql = string.Format(sql);
  267. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  268. foreach(DataRow dr in data.Rows)
  269. {
  270. txtITEMCODE.Text=dr["ITEMCODE"].ToString();
  271. txtVENDORCODE.Text=dr["VENDORCODE"].ToString();
  272. txtUNIT.Text=dr["UNIT"].ToString();
  273. txtINVCONTROLTYPE.Text = dr["INVCONTROLTYPE"].ToString();
  274. txtQualifyQTY.Text = dr["QualifyQTY"].ToString();
  275. txtMEMO.Text=dr["MEMO"].ToString();
  276. }
  277. int s = 0;
  278. //统计已维护过的[合格数量]的和
  279. string str = "select LOTQTY from ICSITEMLot where TransNO='" + btnSTNO.Text + "' and TransLine='" + comNUM .Text+ "'";
  280. str = string.Format(str);
  281. DataTable dat = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, str).Tables[0];
  282. foreach (DataRow dr in dat.Rows)
  283. {
  284. s += int.Parse(dr[0].ToString().Split('.')[0].ToString());
  285. }
  286. labMAIN.Text = s.ToString();
  287. grdDetail.DataSource = "";
  288. gridView3_Load(null,null);
  289. if (txtINVCONTROLTYPE.Text == "单件管控")
  290. {
  291. NODE(null, 0);
  292. }
  293. }
  294. #endregion
  295. #region 管控类型的值变化时
  296. private void txtINVCONTROLTYPE_EditValueChanged(object sender, EventArgs e)
  297. {
  298. if (txtINVCONTROLTYPE.Text == "批次管控")
  299. {
  300. radNUM.Enabled = false;
  301. txtNUM.Enabled = false;
  302. radBEGNUM.Enabled = false;
  303. txtBEGNUM.Enabled = false;
  304. txtCOUNT.Enabled = false;
  305. btnSERIAL.Enabled = false;
  306. radLOGIN.Enabled = false;
  307. btnREFER.Enabled = false;
  308. btnModify.Enabled = true;
  309. radACOUNTMIN.Enabled = true;
  310. txtCOUNTMIN.Enabled = true;
  311. radBAGNUM.Enabled = true;
  312. txtBAGNUM.Enabled = true;
  313. }
  314. else if (txtINVCONTROLTYPE.Text == "单件管控")
  315. {
  316. radNUM.Enabled = true;
  317. txtNUM.Enabled = true;
  318. radBEGNUM.Enabled = true;
  319. txtBEGNUM.Enabled = true;
  320. txtCOUNT.Enabled = true;
  321. btnSERIAL.Enabled = true;
  322. radLOGIN.Enabled = true;
  323. btnREFER.Enabled = true;
  324. btnModify.Enabled = false;
  325. radACOUNTMIN.Enabled = false;
  326. txtCOUNTMIN.Enabled=false;
  327. radBAGNUM.Enabled=false;
  328. txtBAGNUM.Enabled = false;
  329. }
  330. }
  331. #endregion
  332. #region gridview显示数据
  333. //gridview中生成数据
  334. private void btnNEW_Click(object sender, EventArgs e)
  335. {
  336. int i = 0, j = 0, m = 0, r = 0;// i,m-1 j,最后一行数量 m,项数
  337. try
  338. {
  339. DataTable dd = new DataTable();
  340. //除新增项外其他项的select变成false
  341. for (int n = 0; n < dd.Rows.Count; n++)
  342. {
  343. dd.Rows[n]["coSelect"] = "";
  344. }
  345. if (txtQualifyQTY.Text != "" && txtCOUNTMIN.Text != ""&&radACOUNTMIN.Checked==true)
  346. {
  347. string[] txtqty = txtQualifyQTY.Text.Split('.');
  348. string a = txtqty[0];
  349. i = int.Parse(txtqty[0]) / int.Parse(txtCOUNTMIN.Text);
  350. j = int.Parse(txtqty[0]) % int.Parse(txtCOUNTMIN.Text);
  351. if (j != 0)
  352. {
  353. m = i + 1;
  354. }
  355. else
  356. {
  357. m = i;
  358. }
  359. }
  360. if(txtQualifyQTY.Text!=""&&txtBAGNUM.Text!=""&&radBAGNUM.Checked==true)
  361. {
  362. string[] txtqty = txtQualifyQTY.Text.Split('.');
  363. string a = txtqty[0];
  364. m = int.Parse(txtBAGNUM.Text);
  365. i=int.Parse(txtqty[0]) % int.Parse(txtBAGNUM.Text);
  366. r = int.Parse(txtqty[0]) / int.Parse(txtBAGNUM.Text);
  367. if ( i!= 0)
  368. {
  369. j = r + i;
  370. }
  371. else
  372. {
  373. j = r ;
  374. }
  375. }
  376. //查询物料描述
  377. string sql = @"select INVDESC from ICSINVENTORY where INVCODE='" + txtITEMCODE.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  378. sql = string.Format(sql);
  379. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  380. //先给新建表赋值已存在的批号
  381. DataTable ds = new DataTable();
  382. dd = Dtable().Copy();
  383. for (int n = 0; n < Dtable().Rows.Count;n++ )
  384. {
  385. if (data.Rows[0][0].ToString() != "")
  386. {
  387. dd.Rows[n]["INVDESC"] = data.Rows[0][0].ToString();
  388. }
  389. }
  390. //如果是 单件管控 只产生一行
  391. if (txtINVCONTROLTYPE.Text == "单件管控")
  392. {
  393. m = 1;
  394. }
  395. #region 表中行赋值
  396. //再赋值自定义的批号
  397. for (int n = 0; n < m; n++)
  398. {
  399. //生成批次
  400. string lotno = "LOT" + AppConfig.GetSeverDateTime("yyyy-MM-dd").ToString("yyyyMMdd");
  401. lotno = AppConfig.GetSerialCode(AppConfig.FrameConnectString, AppConfig.WorkPointCode, "ICSWareHouseLotInfo", "LotNo", lotno, 4);
  402. //给新建表的行赋值
  403. rowGroup = dd.NewRow();
  404. rowGroup["ID"] = txtID.Text;
  405. rowGroup["coSelect"] = "Y";
  406. rowGroup["LotNO"] = lotno;
  407. rowGroup["ItemCode"] = txtITEMCODE.Text;
  408. if(radACOUNTMIN.Checked==true&&txtCOUNTMIN.Text!="")
  409. {
  410. if (n == m - 1 && j != 0)
  411. {
  412. rowGroup["LOTQTY"] = j;
  413. }
  414. else
  415. {
  416. rowGroup["LOTQTY"] = txtCOUNTMIN.Text;
  417. }
  418. }
  419. if (radBAGNUM.Checked == true && txtBAGNUM.Text != "")
  420. {
  421. if (i == 0)
  422. {
  423. rowGroup["LOTQTY"] = j;
  424. }
  425. else
  426. {
  427. if (n == m - 1 && j != 0)
  428. {
  429. rowGroup["LOTQTY"] = j;
  430. }
  431. else
  432. {
  433. rowGroup["LOTQTY"] = r;
  434. }
  435. }
  436. }
  437. //如果是单件管控 数量为0
  438. if (txtINVCONTROLTYPE.Text != "")
  439. {
  440. if (txtINVCONTROLTYPE.Text=="单件管控")
  441. {
  442. rowGroup["LOTQTY"] = 0;
  443. }
  444. }
  445. rowGroup["PRODUCTDATE"] = Convert.ToDateTime("1991-1-1");
  446. rowGroup["VENDORITEMCODE"] = "";
  447. rowGroup["VenderLotNO"] = "";
  448. if (data.Rows[0][0].ToString() != "")
  449. {
  450. rowGroup["INVDESC"] = data.Rows[0][0].ToString();
  451. }
  452. rowGroup["MUSERName"] = AppConfig.UserName;
  453. rowGroup["MTIME"] = AppConfig.GetSeverDateTime("yyyy-MM-dd hh:mm:ss").ToString();
  454. dd.Rows.Add(rowGroup);
  455. }
  456. #endregion
  457. grdDetail.DataSource = dd;
  458. if(txtINVCONTROLTYPE.Text=="单件管控")
  459. {
  460. btnModify_Click(null,null);
  461. }
  462. }
  463. catch(Exception ex)
  464. {
  465. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  466. }
  467. }
  468. #endregion
  469. #region ICSITEMLot表中数据查询
  470. public DataTable Dtable()
  471. {
  472. string sql = @"select '' as coSelect,INVDESC,a.* from ICSITEMLOT as a,ICSINVENTORY as b where a.TransNO='" + btnSTNO.Text + "' and a.TransLine='" + comNUM.Text + "' and a.ItemCode=b.INVCODE and a.WorkPoint='" + AppConfig.WorkPointCode + "' and b.WorkPoint='" + AppConfig.WorkPointCode + "' order by LotNO,LOTQTY";
  473. sql = string.Format(sql);
  474. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  475. return data;
  476. }
  477. #endregion
  478. #region 页面初始加载事件
  479. private void gridView3_Load(object sender, EventArgs e)
  480. {
  481. grdDetail.DataSource = "";
  482. grdDetail.DataSource=Dtable();
  483. //统计已维护过的[合格数量]的和
  484. if (btnSTNO.Text != "" && comNUM.Text!="")
  485. {
  486. int s = 0;
  487. string str = "select LOTQTY from ICSITEMLot where TransNO='" + btnSTNO.Text + "' and TransLine='" + comNUM.Text + "'";
  488. str = string.Format(str);
  489. DataTable dat = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, str).Tables[0];
  490. foreach (DataRow dr in dat.Rows)
  491. {
  492. s += int.Parse(dr[0].ToString().Split('.')[0].ToString());
  493. }
  494. labMAIN.Text = s.ToString();
  495. }
  496. if (txtINVCONTROLTYPE.Text == "单件管控")
  497. {
  498. NODE(null, 0);
  499. }
  500. gv3.BestFitColumns();
  501. }
  502. #endregion
  503. #region [单件管控]生成序列号
  504. private void simpleButton1_Click(object sender, EventArgs e)
  505. {
  506. if (radNUM.Checked == true && txtNUM.Text != "")
  507. {
  508. NODE(txtNUM.Text,0);
  509. gridView3_Load(null, null);
  510. }
  511. if (radBEGNUM.Checked == true && txtBEGNUM.Text != "" && txtCOUNT.Text!="")
  512. {
  513. NODE(txtBEGNUM.Text,int.Parse(txtCOUNT.Text));
  514. gridView3_Load(null, null);
  515. }
  516. }
  517. #endregion
  518. #region 保存
  519. private void btnModify_Click(object sender, EventArgs e)
  520. {
  521. int h = 0;
  522. int s = int.Parse(labMAIN.Text);
  523. List<string> lotlist = new List<string>();
  524. //统计所选项的[合格数量]的和
  525. for (int n = 0; n < Dtable().Rows.Count; n++)
  526. {
  527. if (Dtable().Rows[n]["ItemCode"].ToString() == txtITEMCODE.Text)
  528. {
  529. if (txtQualifyQTY.Text != "")
  530. {
  531. h += int.Parse(Dtable().Rows[n]["LOTQTY"].ToString().Split('.')[0].ToString());
  532. }
  533. }
  534. }
  535. if (s+h <= int.Parse(txtQualifyQTY.Text.Split('.')[0]))
  536. {
  537. if (txtINVCONTROLTYPE.Text == "单件管控")
  538. {
  539. lotlist.Add( gv3.GetRowCellValue(Dtable().Rows.Count,LotNO).ToString());
  540. if (SaveBool(lotlist) == true)
  541. {
  542. Save(Dtable().Rows.Count);
  543. }
  544. }
  545. if (txtINVCONTROLTYPE.Text == "批次管控")
  546. {
  547. int l = 0;
  548. for (int n = 0; n < gv3.RowCount; n++)
  549. {
  550. if (gv3.GetRowCellValue(n, coSelect).ToString() == "Y")
  551. {
  552. lotlist.Add(gv3.GetRowCellValue(n, LotNO).ToString());
  553. l += int.Parse(gv3.GetRowCellValue(n, LOTQTY).ToString().Split('.')[0].ToString());
  554. }
  555. }
  556. bool b=SaveBool(lotlist);
  557. if (b == true)
  558. {
  559. for (int n = 0; n < gv3.RowCount; n++)
  560. {
  561. if (gv3.GetRowCellValue(n, coSelect).ToString() == "Y")
  562. {
  563. Save(n);
  564. }
  565. }
  566. //修改到货单 入库数量
  567. string sql = @"update ICSINVReceiptDetail set ACTQTY+='" + l + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  568. sql = string.Format(sql);
  569. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
  570. ICSBaseSimpleCode.AppshowMessageBox("操作成功!");
  571. gridView3_Load(null, null);
  572. }
  573. }
  574. }
  575. else
  576. {
  577. ICSBaseSimpleCode.AppshowMessageBox("该物料维护的数量已大于此物料的[合格数量]");
  578. }
  579. }
  580. public bool SaveBool(List<string> lotlist)
  581. {
  582. bool savebool = true;
  583. string st = "select LotNO from ICSITEMLot where WorkPoint='" + AppConfig.WorkPointCode + "' ";
  584. st = string.Format(st);
  585. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st).Tables[0];
  586. for (int i = 0; i < lotlist.Count; i++)
  587. {
  588. foreach (DataRow dr in dt.Rows)
  589. {
  590. string a = lotlist[i].ToString();
  591. string b = dr[0].ToString();
  592. if (lotlist[i].ToString() == dr[0].ToString())
  593. {
  594. ICSBaseSimpleCode.AppshowMessageBox("序列号已存在!");
  595. savebool = false;
  596. }
  597. }
  598. }
  599. return savebool;
  600. }
  601. public void Save(int n)
  602. {
  603. string sql = @"select ReceiptNO,ReceiptLine from ICSINVReceiptDetail where ITEMCODE='" + txtITEMCODE.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  604. sql = string.Format(sql);
  605. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  606. //保存
  607. ICSITEMLot itemlot = new ICSITEMLot();
  608. itemlot.ID = AppConfig.GetGuid();
  609. itemlot.LotNO = gv3.GetRowCellValue(n, LotNO).ToString();
  610. itemlot.ItemCode = txtITEMCODE.Text;
  611. itemlot.TransNO = btnSTNO.Text;
  612. //itemlot.TransLine = int.Parse(comNUM.Text);
  613. itemlot.TransLine = comNUM.Text;
  614. itemlot.VENDORITEMCODE = gv3.GetRowCellValue(n, VENDORITEMCODE).ToString();
  615. itemlot.VenderLotNO = gv3.GetRowCellValue(n, VenderLotNO).ToString();
  616. if (gv3.GetRowCellValue(n, PRODUCTDATE).ToString() != "")
  617. {
  618. itemlot.PRODUCTDATE = Convert.ToDateTime(gv3.GetRowCellValue(n, PRODUCTDATE).ToString());
  619. }
  620. else
  621. {
  622. itemlot.PRODUCTDATE = Convert.ToDateTime("1900-1-1");
  623. }
  624. if (gv3.GetRowCellValue(n, LOTQTY).ToString() != "")
  625. {
  626. itemlot.LOTQTY = int.Parse(gv3.GetRowCellValue(n, LOTQTY).ToString().Split('.')[0].ToString());
  627. }
  628. itemlot.ACTIVE = "Y";
  629. itemlot.Exdate = Convert.ToDateTime("2999-12-31");
  630. itemlot.WorkPoint = AppConfig.WorkPointCode;
  631. itemlot.MUSER = AppConfig.UserCode;
  632. itemlot.MUSERName = AppConfig.UserName;
  633. itemlot.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  634. ICSITEMLOTBLL.AddandEdit(itemlot, AppConfig.AppConnectString);
  635. }
  636. #endregion
  637. #region 过滤
  638. private string tempTableName = "";
  639. private void btnFilter_Click(object sender, EventArgs e)
  640. {
  641. FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name));
  642. filter.OldTempTableName = tempTableName;
  643. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  644. try
  645. {
  646. // string lotno = "LOT" + AppConfig.GetSeverDateTime("yyyy-MM-dd").ToString("yyyyMMdd");
  647. // lotno = AppConfig.GetSerialCode(AppConfig.FrameConnectString, AppConfig.WorkPointCode, "ITEMLot", "LotNO", lotno, 4);
  648. _wait.Show();
  649. tempTableName = filter.NewTempTableName;
  650. sqltxt = filter.SqlText;
  651. sqlconn = filter.FilterConnectString;
  652. dataSource = filter.FilterData.Tables[0];
  653. DataTable dt = new DataTable();
  654. //DataRow dn = dm.NewRow();
  655. foreach (DataRow dr in dataSource.Rows)
  656. {
  657. string sql = "select SERIALNO from ICSITEMLotDetail where WorkPoint='"+AppConfig.WorkPointCode+"' and LotNO='"+dr["LotNO"]+"'";
  658. sql = string.Format(sql);
  659. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  660. if (data.Rows.Count != 0)
  661. {
  662. dt.Rows.Add(dr);
  663. }
  664. }
  665. // DATASET 中必须要有主表和子表
  666. //filter.FilterData.Tables.Add(dt);
  667. //建立主要和子表之间的关系列
  668. DataRelation drl = new DataRelation("物料批号", new DataColumn[] { filter.FilterData.Tables[0].Columns["LotNO"] }, new DataColumn[] { filter.FilterData.Tables[1].Columns["PRONUM"] }); //new一个表关系,绑定2个表的键
  669. filter.FilterData.Relations.Add(drl);
  670. grdDetail.DataSource = dataSource;
  671. _wait.Close();
  672. }
  673. catch (Exception ex)
  674. {
  675. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  676. _wait.Close();
  677. }
  678. }
  679. #endregion
  680. #region 删除
  681. private void btnDel_Click(object sender, EventArgs e)
  682. {
  683. string lot = "";
  684. List<int> count = new List<int>();
  685. List<string> codeList = new List<string>();
  686. List<string> node = new List<string>();
  687. List<string> no = new List<string>();
  688. for (int i = 0; i < gridView4.RowCount; i++)
  689. {
  690. if (gridView4.GetRowCellValue(i, colSelect).ToString() == "True")
  691. {
  692. node.Add(gridView4.GetRowCellValue(i, PRONUM).ToString());
  693. no.Add(gridView4.GetRowCellValue(i, colLotNO).ToString());
  694. }
  695. }
  696. if (node.Count != 0)
  697. {
  698. if (node.Count == 0 || node == null)
  699. {
  700. ICSBaseSimpleCode.AppshowMessageBox("请选择数据");
  701. return;
  702. }
  703. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该条物料追溯信息吗?信息删除后无法恢复,确定吗?") != DialogResult.OK)
  704. {
  705. btnCancelAll_Click(sender, e);
  706. return;
  707. }
  708. try
  709. {
  710. ICSITEMLOTBLL.Detaildelete(node, AppConfig.AppConnectString);
  711. for (int i = 0; i < node.Count;i++ )
  712. {
  713. string st = "update ICSITEMLot set LOTQTY-='" + 1 + "' where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + no[i].ToString() + "'";
  714. st = string.Format(st);
  715. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st);
  716. SysSave(node[i],1);//删除Sys_Sys_HisSerailCodes表
  717. string sql = @"update ICSINVReceiptDetail set ACTQTY-='" + 1 + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  718. sql = string.Format(sql);
  719. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
  720. }
  721. }
  722. catch (Exception ex)
  723. {
  724. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  725. }
  726. }
  727. for (int i = 0; i < gv3.RowCount; i++)
  728. {
  729. if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y")
  730. {
  731. codeList.Add(gv3.GetRowCellValue(i, ID).ToString());
  732. lot = gv3.GetRowCellValue(i, LotNO).ToString();
  733. string sql = @"select * from ICSITEMLotDetail where LotNO='" + lot + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  734. sql = string.Format(sql);
  735. count.Add(DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0].Rows.Count);
  736. }
  737. }
  738. if (codeList.Count != 0)
  739. {
  740. if (codeList.Count == 0 || codeList == null)
  741. {
  742. ICSBaseSimpleCode.AppshowMessageBox("请选择数据");
  743. return;
  744. }
  745. foreach (int i in count)
  746. {
  747. if (i > 0)
  748. {
  749. ICSBaseSimpleCode.AppshowMessageBox("请先删除从表中的数据再删除主表!");
  750. return;
  751. }
  752. }
  753. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该条物料追溯信息吗?信息删除后无法恢复,确定吗?") != DialogResult.OK)
  754. {
  755. btnCancelAll_Click(sender, e);
  756. return;
  757. }
  758. try
  759. {
  760. ICSITEMLOTBLL.delete(codeList, AppConfig.AppConnectString);
  761. for (int i = 0; i < gv3.RowCount; i++)
  762. {
  763. if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y")
  764. {
  765. lot = gv3.GetRowCellValue(i, LotNO).ToString();
  766. int lotqty = int.Parse(gv3.GetRowCellValue(i, LOTQTY).ToString().Split('.')[0].ToString());
  767. SysSave(lot, 1);//删除Sys_Sys_HisSerailCodes表
  768. string sql = @"update ICSINVReceiptDetail set ACTQTY-='" + lotqty + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  769. sql = string.Format(sql);
  770. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
  771. }
  772. }
  773. }
  774. catch (Exception ex)
  775. {
  776. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  777. }
  778. }
  779. gridView3_Load(null, null);
  780. }
  781. #endregion
  782. #region 双击事件
  783. private void gridControl1_DoubleClick(object sender, EventArgs e)
  784. {
  785. if (gv3.FocusedRowHandle < 0)
  786. {
  787. return;
  788. }
  789. if (gv3.FocusedColumn == coSelect)
  790. {
  791. string m = gv3.GetRowCellValue(gv3.FocusedRowHandle, LotNO).ToString();
  792. if (gv3.GetRowCellValue(gv3.FocusedRowHandle, coSelect).ToString() == "")
  793. {
  794. gv3.SetRowCellValue(gv3.FocusedRowHandle, coSelect, "Y");
  795. for (int i = 0; i < gridView4.RowCount; i++)
  796. {
  797. if (gridView4.GetRowCellValue(i, colLotNO).ToString() == gv3.GetRowCellValue(gv3.FocusedRowHandle, LotNO).ToString())
  798. {
  799. gridView4.SetRowCellValue(i,colSelect,true);
  800. }
  801. }
  802. }
  803. else
  804. {
  805. gv3.SetRowCellValue(gv3.FocusedRowHandle, coSelect, "");
  806. for (int i = 0; i < gridView4.RowCount; i++)
  807. {
  808. if (gridView4.GetRowCellValue(i, colLotNO).ToString() == gv3.GetRowCellValue(gv3.FocusedRowHandle, LotNO).ToString())
  809. {
  810. gridView4.SetRowCellValue(i, colSelect, false);
  811. }
  812. }
  813. }
  814. }
  815. }
  816. #endregion
  817. #region 获取焦点
  818. private void radACOUNTMIN_CheckedChanged(object sender, EventArgs e)
  819. {
  820. if (radACOUNTMIN.Text == "True")
  821. {
  822. txtCOUNTMIN.Focus();
  823. }
  824. }
  825. private void radBEGNUM_CheckedChanged(object sender, EventArgs e)
  826. {
  827. if (radBEGNUM.Text == "True")
  828. {
  829. txtBAGNUM.Focus();
  830. }
  831. }
  832. private void radNUM_CheckedChanged(object sender, EventArgs e)
  833. {
  834. if (radNUM.Text == "True")
  835. {
  836. txtNUM.Focus();
  837. }
  838. }
  839. private void radBAGNUM_CheckedChanged(object sender, EventArgs e)
  840. {
  841. if (radBAGNUM.Text == "True")
  842. {
  843. txtBAGNUM.Focus();
  844. }
  845. }
  846. #endregion
  847. #region 主子节点 显示 及 保存操作
  848. public void NODE(string str,int count)
  849. {
  850. bool p;
  851. DataTable dt = new DataTable();
  852. dt.TableName = "Sub";
  853. dt.Columns.Add("colSelect");
  854. dt.Columns["colSelect"].DataType=typeof(bool);
  855. dt.Columns.Add("PRONUM");
  856. dt.Columns.Add("colLotNO");
  857. dt.Columns["PRONUM"].Caption = "序列号";
  858. dt.Columns["colSelect"].Caption = "选择";
  859. dt.Columns["colLotNO"].Caption = "批次";
  860. foreach (DataRow dr in Dtable().Rows)
  861. {
  862. string m = dr["LotNO"].ToString();
  863. string st = "select SERIALNO,LotNO from ICSITEMLotDETAIL where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + dr["LotNO"].ToString() + "' order by SERIALNO";
  864. st = string.Format(st);
  865. DataTable da = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st).Tables[0];
  866. for (int i = 0; i < da.Rows.Count;i++ )
  867. {
  868. DataRow dn = dt.NewRow();
  869. dn["colSelect"] = false;
  870. dn["PRONUM"] = da.Rows[i]["SERIALNO"];
  871. dn["colLotNO"] = da.Rows[i]["LotNO"];
  872. dt.Rows.Add(dn);
  873. }
  874. }
  875. #region 选择数量 生成序列号
  876. if (count != 0)
  877. {
  878. String id = "";
  879. List<string> editList = new List<string>();
  880. for (int i = 0; i < gv3.RowCount; i++)
  881. {
  882. if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y")
  883. {
  884. id = gv3.GetRowCellValue(i, LotNO).ToString();
  885. editList.Add(id);
  886. }
  887. }
  888. if (editList.Count != 1)
  889. {
  890. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  891. return;
  892. }
  893. try
  894. {
  895. string num = txtBEGNUM.Text;
  896. for (int i = 0; i < count; i++)
  897. {
  898. string lotnum = id + num;
  899. DataRow dn = dt.NewRow();
  900. dn["colSelect"] = true;
  901. dn["PRONUM"] = lotnum;
  902. dn["colLotNO"] = id;
  903. dt.Rows.Add(dn);
  904. p=save(lotnum,id,txtITEMCODE.Text);//保存
  905. num = (int.Parse(num) + 1).ToString().PadLeft(5, '0');//序列号递增
  906. if (p == true)
  907. {
  908. SysSave(lotnum,0);//再次保存至Sys_Sys_HisSerailCodes表
  909. string sql = @"update ICSINVReceiptDetail set ACTQTY+='" + 1 + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  910. sql = string.Format(sql);
  911. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
  912. string st = "update ICSITEMLot set LOTQTY+='" + 1 + "' where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + dn["colLotNO"] + "'";
  913. st = string.Format(st);
  914. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st);
  915. }
  916. gridView3_Load(null, null);
  917. }
  918. }
  919. catch (Exception ex)
  920. {
  921. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  922. }
  923. }
  924. #endregion
  925. #region 不选择数量 生成序列号
  926. if(count==0 && str!=null) //不选择数量
  927. {
  928. String id = "";
  929. List<string> editList = new List<string>();
  930. for (int i = 0; i < gv3.RowCount; i++)
  931. {
  932. if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y")
  933. {
  934. id = gv3.GetRowCellValue(i, LotNO).ToString();
  935. editList.Add(id);
  936. }
  937. }
  938. if (editList.Count != 1)
  939. {
  940. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  941. return;
  942. }
  943. try
  944. {
  945. DataRow dn = dt.NewRow();
  946. dn["colSelect"] = true;
  947. dn["PRONUM"] = str;
  948. dn["colLotNO"] = id;
  949. dt.Rows.Add(dn);
  950. p=save(str,id,txtITEMCODE.Text);
  951. if (p == true)
  952. {
  953. SysSave(str,0);//再次保存至Sys_Sys_HisSerailCodes表
  954. string st = "update ICSITEMLot set LOTQTY+='" + 1 + "' where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + dn["colLotNO"] + "'";
  955. st = string.Format(st);
  956. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st);
  957. string sql = @"update ICSINVReceiptDetail set ACTQTY+='" + 1 + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  958. sql = string.Format(sql);
  959. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
  960. }
  961. gridView3_Load(null,null);
  962. }
  963. catch (Exception ex)
  964. {
  965. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  966. }
  967. #endregion
  968. }
  969. DataTable dm = new DataTable();
  970. dm = Dtable().Copy();
  971. // DATASET 中必须要有主表和子表
  972. DataSet ds = new DataSet();
  973. ds.Tables.Add(dm);
  974. ds.Tables.Add(dt);
  975. //gridView3.DataSource = ds;
  976. //建立主要和子表之间的关系列
  977. DataRelation drl = new DataRelation("物料批号",new DataColumn[]{ds.Tables[0].Columns["LotNO"] },new DataColumn[]{ ds.Tables[1].Columns["colLotNO"]} ); //new一个表关系,绑定2个表的键
  978. ds.Relations.Add(drl);
  979. grdDetail.DataSource = dm;
  980. }
  981. #endregion
  982. #region 按 回车键 显示及保存 序列号
  983. private void txtNUM_KeyPress(object sender, KeyPressEventArgs e)
  984. {
  985. if (e.KeyChar == 13)
  986. {
  987. if (radNUM.Checked == true && txtNUM.Text != "")
  988. {
  989. NODE(txtNUM.Text, 0);
  990. gridView3_Load(null,null);
  991. }
  992. }
  993. }
  994. private void txtCOUNT_KeyPress(object sender, KeyPressEventArgs e)
  995. {
  996. if (e.KeyChar == 13)
  997. {
  998. if (radBEGNUM.Checked == true && txtBEGNUM.Text != "" && txtCOUNT.Text != "")
  999. {
  1000. NODE(txtBEGNUM.Text, int.Parse(txtCOUNT.Text));
  1001. gridView3_Load(null, null);
  1002. }
  1003. }
  1004. }
  1005. private void txtBEGNUM_KeyPress(object sender, KeyPressEventArgs e)
  1006. {
  1007. if (e.KeyChar == 13)
  1008. {
  1009. if (!rex.Match(txtBEGNUM.Text).Success || int.Parse(txtBEGNUM.Text) > 99999)
  1010. {
  1011. ICSBaseSimpleCode.AppshowMessageBox("[数量]是正整数!");
  1012. return;
  1013. }
  1014. if (radBEGNUM.Checked == true && txtBEGNUM.Text != "" && txtCOUNT.Text != "")
  1015. {
  1016. NODE(txtBEGNUM.Text, int.Parse(txtCOUNT.Text));
  1017. gridView3_Load(null, null);
  1018. }
  1019. }
  1020. }
  1021. #endregion
  1022. #region 保存 子节点 数据
  1023. public bool save(string sertalno,string LotNO,string mcode)
  1024. {
  1025. if (radNUM.Checked == true)
  1026. {
  1027. if (txtNUM.Text == "")
  1028. {
  1029. ICSBaseSimpleCode.AppshowMessageBox("不可为空!");
  1030. return false;
  1031. }
  1032. if (!rex.Match(txtNUM.Text).Success || int.Parse(txtNUM.Text) > 99999)
  1033. {
  1034. ICSBaseSimpleCode.AppshowMessageBox("[序列号]是小于六位的正整数!");
  1035. return false;
  1036. }
  1037. }
  1038. if (radBEGNUM.Checked == true)
  1039. {
  1040. if (txtBEGNUM.Text == "" && txtCOUNT.Text == "")
  1041. {
  1042. ICSBaseSimpleCode.AppshowMessageBox("不可为空!");
  1043. return false;
  1044. }
  1045. if (!rex.Match(txtBEGNUM.Text).Success || int.Parse(txtCOUNT.Text) > 99999)
  1046. {
  1047. ICSBaseSimpleCode.AppshowMessageBox("[起始序列号]是小于六位正整数!");
  1048. return false;
  1049. }
  1050. if (!rex.Match(txtCOUNT.Text).Success)
  1051. {
  1052. ICSBaseSimpleCode.AppshowMessageBox("[数量]只能输入正整数!");
  1053. return false;
  1054. }
  1055. }
  1056. string st = "select SERIALNO from ICSITEMLotDETAIL where WorkPoint='" + AppConfig.WorkPointCode + "' ";
  1057. st = string.Format(st);
  1058. DataTable dt= DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st).Tables[0];
  1059. foreach(DataRow dr in dt.Rows)
  1060. {
  1061. if (sertalno == dr[0].ToString())
  1062. {
  1063. ICSBaseSimpleCode.AppshowMessageBox("序列号已存在!");
  1064. return false;
  1065. }
  1066. }
  1067. ICSITEMLotDetail itemlotd = new ICSITEMLotDetail();
  1068. itemlotd.ID = AppConfig.GetGuid();
  1069. itemlotd.SERIALNO = sertalno;
  1070. itemlotd.LotNO = LotNO;
  1071. itemlotd.ItemCode = mcode;
  1072. itemlotd.StorageCODE = "";
  1073. itemlotd.StackCODE = "";
  1074. itemlotd.SerialStatus = "不在库";
  1075. itemlotd.WorkPoint = AppConfig.WorkPointCode;
  1076. itemlotd.MUSER = AppConfig.UserCode;
  1077. itemlotd.MUSERName = AppConfig.UserName;
  1078. itemlotd.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  1079. ICSITEMLOTBLL.DetailAddandEdit(itemlotd,AppConfig.AppConnectString);
  1080. return true;
  1081. }
  1082. #endregion
  1083. #region 页面编辑
  1084. private void gridView3_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
  1085. {
  1086. if(e.Column.FieldName=="LotNO"||e.Column.FieldName=="ItemCode"||e.Column.FieldName=="MUSERName"||e.Column.FieldName=="MTIME"||e.Column.FieldName=="PRODUCTDATE"
  1087. ||e.Column.FieldName=="INVDESC"|| e.Column.FieldName == "LOTQTY")
  1088. {
  1089. ICSBaseSimpleCode.AppshowMessageBox("此列不可编辑!");
  1090. gridView3_Load(null, null);
  1091. }
  1092. }
  1093. private void gridView3_ShowingEditor(object sender, CancelEventArgs e)
  1094. {
  1095. if (gv3.FocusedColumn.FieldName == "coSelect")
  1096. {
  1097. e.Cancel = true;
  1098. }
  1099. }
  1100. #endregion
  1101. private void gridView3_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e)
  1102. {
  1103. gridView4 = gv3.GetDetailView(e.RowHandle, e.RelationIndex) as DevExpress.XtraGrid.Views.Grid.GridView;
  1104. if (gridView4 != null)
  1105. {
  1106. gridView4.Columns["colLotNO"].Visible = false;    //gridView4就是子View,设置LotNO 列为隐藏
  1107. gridView4.BestFitColumns();
  1108. }
  1109. }
  1110. #region 保存数据至Sys_HisSerailCodes表
  1111. public void SysSave(string lotno,int n)
  1112. {
  1113. if (n == 0)
  1114. {
  1115. string st = "insert into Sys_HisSerailCodes values('" + AppConfig.GetGuid() + "','" + AppConfig.WorkPointCode + "','ICSITEMLotDETAIL','LotNO','" + lotno + "') ";
  1116. st = string.Format(st);
  1117. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st);
  1118. }
  1119. if (n == 1)
  1120. {
  1121. string st = "delete Sys_HisSerailCodes where FiledName='LotNO' and MValue='"+lotno+"' and WorkPointCode= '" + AppConfig.WorkPointCode + "' ";
  1122. st = string.Format(st);
  1123. DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st);
  1124. }
  1125. }
  1126. #endregion
  1127. }
  1128. }