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

756 lines
36 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.Linq;
  6. using System.Linq;
  7. using System.Drawing;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using DevExpress.XtraGrid.Views.BandedGrid;
  12. using DevExpress.XtraGrid.Columns;
  13. using DevExpress.XtraGrid;
  14. using System.IO;
  15. using System.Threading;
  16. using ICSSoft.Base.Language.Tool;
  17. using ICSSoft.Base.Config.AppConfig;
  18. using ICSSoft.Base.UserControl.MessageControl;
  19. using ICSSoft.Base.Config.DBHelper;
  20. using ICSSoft.Base.Report.Filter;
  21. using ICSSoft.Base.UserControl.FormControl;
  22. using ICSSoft.Base.Report.GridReport;
  23. using ICSSoft.Base.ReferForm.AppReferForm;
  24. using ICSSoft.Frame.Data.BLL;
  25. using ICSSoft.Frame.Data.Entity;
  26. using ICSSoft.Base.Lable.PrintTool;
  27. namespace ICSSoft.Frame.APP
  28. {
  29. public partial class FormICSInput : DevExpress.XtraEditors.XtraForm
  30. {
  31. private string sqltxt = "";
  32. private string sqlconn = "";
  33. String guid = AppConfig.GetGuid();
  34. private DataTable dataSource = null;
  35. private string MoId = "";
  36. private string MoCode = "";
  37. private decimal Qty = 0.00m;
  38. DataTable Serialdata = null;
  39. private string StorageCode = "";
  40. private string StackCode = "";
  41. #region 构造函数
  42. public FormICSInput()
  43. {
  44. InitializeComponent();
  45. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  46. this.WindowState = FormWindowState.Maximized;
  47. }
  48. public FormICSInput(string moID, string moCode, decimal qty)
  49. {
  50. InitializeComponent();
  51. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  52. this.WindowState = FormWindowState.Maximized;
  53. MoId = moID;
  54. MoCode = moCode;
  55. Qty = qty;
  56. }
  57. #endregion
  58. #region 操作权限
  59. public DataTable RightOfExute()
  60. {
  61. DataTable rData = new DataTable();
  62. rData.Columns.Add("BtnName");
  63. rData.Columns.Add("ActionName");
  64. //查看权限(必须有)
  65. DataRow seeRow = rData.NewRow();
  66. seeRow["BtnName"] = "see";
  67. seeRow["ActionName"] = "查看";
  68. rData.Rows.Add(seeRow);
  69. List<Control> ControlList = new List<Control>();
  70. ControlList.Add(btnCreate);
  71. ControlList.Add(btnOutPut);
  72. foreach (Control ctr in ControlList)
  73. {
  74. if (ctr.GetType() == typeof(SimpleButton))
  75. {
  76. DataRow dr = rData.NewRow();
  77. dr["BtnName"] = ctr.Name;
  78. dr["ActionName"] = ctr.Text;
  79. rData.Rows.Add(dr);
  80. }
  81. }
  82. rData.AcceptChanges();
  83. return rData;
  84. }
  85. public DataTable RightOfData()// 数据权限
  86. {
  87. DataTable rData = new DataTable();
  88. rData.Columns.Add("BodyName");
  89. rData.Columns.Add("ControlName");
  90. rData.Columns.Add("ControlCaption");
  91. rData.AcceptChanges();
  92. return rData;
  93. }
  94. #endregion
  95. #region 退出
  96. private void btnClose_Click(object sender, EventArgs e)
  97. {
  98. AppConfig.CloseFormShow(this.Text);
  99. this.Close();
  100. }
  101. private void btnExit_Click(object sender, EventArgs e)
  102. {
  103. AppConfig.CloseFormShow(this.Text);
  104. this.Close();
  105. }
  106. #endregion
  107. #region 移动窗体
  108. private const int WM_NCHITTEST = 0x84;
  109. private const int HTCLIENT = 0x1;
  110. private const int HTCAPTION = 0x2;
  111. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  112. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  113. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  114. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  115. //重写窗体,使窗体可以不通过自带标题栏实现移动
  116. protected override void WndProc(ref Message m)
  117. {
  118. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  119. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  120. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  121. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  122. switch (m.Msg)
  123. {
  124. case WM_NCHITTEST:
  125. base.WndProc(ref m);
  126. if ((int)m.Result == HTCLIENT)
  127. m.Result = (IntPtr)HTCAPTION;
  128. return;
  129. }
  130. //拦截双击标题栏、移动窗体的系统消息
  131. if (m.Msg != 0xA3)
  132. {
  133. base.WndProc(ref m);
  134. }
  135. }
  136. #endregion
  137. #region 列表
  138. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  139. {
  140. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  141. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  142. }
  143. #endregion
  144. #region 分页
  145. private void rptPage_PageIndexChanged(object Sender, EventArgs e)
  146. {
  147. DataTable data = AppConfig.GetPageData(Serialdata, rptPage.PageIndex, rptPage.PageSize).Copy();
  148. //DataTable data = AppConfig.GetPageDataByDb(tempTableName, "pagerowindex", rptPage.PageSize, rptPage.PageIndex, dataSource.Rows.Count);
  149. grdDetail.DataSource = data;
  150. }
  151. #endregion
  152. private bool check()
  153. {
  154. int i;
  155. if (string.IsNullOrWhiteSpace(txtCode.Text.Trim()))
  156. {
  157. ICSBaseSimpleCode.AppshowMessageBox("单据号不能为空!");
  158. return false;
  159. }
  160. if (string.IsNullOrWhiteSpace(txtStackCode.Text.Trim()))
  161. {
  162. ICSBaseSimpleCode.AppshowMessageBox("库位不能为空!");
  163. return false;
  164. }
  165. //else if(!int.TryParse(cmbSEQ.Text.Trim(),out i))
  166. //{
  167. // ICSBaseSimpleCode.AppshowMessageBox("行号格式不正确!");
  168. // return false;
  169. //}
  170. return true;
  171. }
  172. #region 入库
  173. private void btnCreate_Click(object sender, EventArgs e)
  174. {
  175. try
  176. {
  177. SimpleButton btntemp = (SimpleButton)sender;
  178. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  179. {
  180. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  181. return;
  182. }
  183. if (!check())
  184. return;
  185. DataTable dt1 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectStorageID(StorageCode);
  186. DataTable dt2 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectStsckID(StackCode);
  187. List<ICSITEMTrans> ItemTransList = new List<ICSITEMTrans>();
  188. List<ICSITEMTransLot> ItemTransLotList = new List<ICSITEMTransLot>();
  189. List<FormICSWareHouseLotInfoUIModel> ICSWareHouseLotInfoList = new List<FormICSWareHouseLotInfoUIModel>();
  190. List<ICSWareHouseInfo> ICSWareHouseInfoList = new List<ICSWareHouseInfo>();
  191. List<Rdrecord10> rd10List = new List<Rdrecord10>();
  192. for (int i = 0; i < grvDetail.RowCount; i++)
  193. {
  194. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y" && grvDetail.GetRowCellValue(i, colisInput).ToString() == "False" && grvDetail.GetRowCellValue(i, colStorageCode).ToString().Equals(txtStorageCode.Text.Trim())) // && grvDetail.GetRowCellValue(i, colRECSTATUS).ToString() != "已经完成"
  195. {
  196. DataTable dt3 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectItemID(grvDetail.GetRowCellValue(i, colcInvCode).ToString());
  197. //DataTable ddt4 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectLOTQTY(grvDetail.GetRowCellValue(i, colLOTNO).ToString());
  198. string receiptno = txtCode.Text.Trim().ToString();
  199. int receiptline = Convert.ToInt32(grvDetail.GetRowCellValue(i, colRdrecordSEQ));
  200. #region 判断
  201. //检查入库数量不能为零
  202. if (Convert.ToInt32(grvDetail.GetRowCellValue(i, colQuantity)) == 0)
  203. {
  204. ICSBaseSimpleCode.AppshowMessageBox("入库数量为零,不能入库!");
  205. return;
  206. }
  207. //检查库别和库位必须输入
  208. if (string.IsNullOrEmpty(StorageCode) || string.IsNullOrEmpty(StackCode))
  209. {
  210. ICSBaseSimpleCode.AppshowMessageBox("仓库或库位不能为空");
  211. return;
  212. }
  213. #endregion
  214. #region 存入库存信息表
  215. //if (grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "批次管控" ||
  216. // grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "单件管控" ||
  217. // grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "不管控")
  218. //{
  219. ICSWareHouseInfo lotinfo = new ICSWareHouseInfo();
  220. if (dt1 != null && dt1.Rows.Count > 0)
  221. {
  222. lotinfo.WHGUID = dt1.Rows[0][0].ToString();
  223. }
  224. lotinfo.WHCode = StorageCode;
  225. if (dt2 != null && dt2.Rows.Count > 0)
  226. {
  227. lotinfo.BinGUID = dt2.Rows[0][0].ToString();
  228. }
  229. lotinfo.BinCode = StackCode;
  230. if (dt3 != null && dt3.Rows.Count > 0)
  231. {
  232. lotinfo.INVGUID = dt3.Rows[0][0].ToString();
  233. }
  234. lotinfo.INVCode = grvDetail.GetRowCellValue(i, colcInvCode).ToString();
  235. //DataTable dt4 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectQTY(lotinfo.WHGUID, lotinfo.BinGUID, lotinfo.INVGUID);
  236. //if (dt4 == null || dt4.Rows.Count == 0)
  237. //{
  238. if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colQuantity).ToString()))
  239. {
  240. lotinfo.QTY = Convert.ToDecimal(grvDetail.GetRowCellValue(i, colQuantity));
  241. }
  242. //}
  243. //if (dt4 != null && dt4.Rows.Count > 0)
  244. //{
  245. // if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colQuantity).ToString()) && !string.IsNullOrEmpty(dt4.Rows[0]["QTY"].ToString()))
  246. // {
  247. // lotinfo.QTY = Convert.ToDecimal(dt4.Rows[0]["QTY"]) + Convert.ToDecimal(grvDetail.GetRowCellValue(i, colQuantity));
  248. // }
  249. //}
  250. lotinfo.WorkPoint = AppConfig.WorkPointCode;
  251. lotinfo.MUSER = AppConfig.UserId;
  252. lotinfo.MUSERName = AppConfig.UserName;
  253. lotinfo.MTIME = DateTime.Now;
  254. lotinfo.EATTRIBUTE1 = null;
  255. ICSWareHouseInfoList.Add(lotinfo);
  256. //ICSWareHouseLotInfoLogBLL.WareHouseInfo(lotinfo, AppConfig.AppConnectString);
  257. //}
  258. #endregion
  259. #region 存入物料,产品批次的库存信息
  260. //if (grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "批次管控" || grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "单件管控")
  261. //{
  262. FormICSWareHouseLotInfoUIModel lotinfo2 = new FormICSWareHouseLotInfoUIModel();
  263. //if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colRdrecordSEQ).ToString()))
  264. //{
  265. // DataTable ddt = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectLotNO(txtCode.Text.Trim().ToString(), Convert.ToInt32(grvDetail.GetRowCellValue(i, colRdrecordSEQ)));
  266. // if (ddt != null && ddt.Rows.Count > 0)
  267. // {
  268. // for (int j = 0; j < ddt.Rows.Count; j++)
  269. // {
  270. lotinfo2.ID = AppConfig.GetGuid();
  271. lotinfo2.LotNO = grvDetail.GetRowCellValue(i, colLOTNO).ToString();
  272. //DataTable ddt1 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectStorageID(StorageCode);
  273. //if (ddt1 != null && ddt1.Rows.Count > 0)
  274. //{
  275. // lotinfo2.WHGUID = ddt1.Rows[0][0].ToString();
  276. //}
  277. if (dt1 != null && dt1.Rows.Count > 0)
  278. {
  279. lotinfo2.WHGUID = dt1.Rows[0][0].ToString();
  280. }
  281. lotinfo2.WHCode = StorageCode;
  282. //DataTable ddt2 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectStsckID(StackCode);
  283. //if (ddt2 != null && ddt2.Rows.Count > 0)
  284. //{
  285. // lotinfo2.BinGUID = ddt2.Rows[0][0].ToString();
  286. //}
  287. if (dt2 != null && dt2.Rows.Count > 0)
  288. {
  289. lotinfo2.BinGUID = dt2.Rows[0][0].ToString();
  290. }
  291. lotinfo2.BinCode = StackCode;
  292. //DataTable ddt3 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectItemID(grvDetail.GetRowCellValue(i, colcInvCode).ToString());
  293. //if (ddt3 != null && ddt3.Rows.Count > 0)
  294. //{
  295. // lotinfo2.INVGUID = ddt3.Rows[0][0].ToString();
  296. //}
  297. if (dt3 != null && dt3.Rows.Count > 0)
  298. {
  299. lotinfo2.INVGUID = dt3.Rows[0][0].ToString();
  300. }
  301. lotinfo2.INVCode = grvDetail.GetRowCellValue(i, colcInvCode).ToString();
  302. //if (ddt4 != null && ddt4.Rows.Count > 0)
  303. //{
  304. // if (!string.IsNullOrEmpty(ddt4.Rows[0][0].ToString()))
  305. // {
  306. // lotinfo2.LotQty = Convert.ToDecimal(ddt4.Rows[0][0]);
  307. // }
  308. //}
  309. lotinfo2.LotQty =Convert.ToDecimal(grvDetail.GetRowCellValue(i,colQuantity).ToString());
  310. lotinfo2.ReceiveDate = DateTime.Now;
  311. lotinfo2.WorkPoint = AppConfig.WorkPointCode;
  312. lotinfo2.MUSER = AppConfig.UserId;
  313. lotinfo2.MUSERName = AppConfig.UserName;
  314. lotinfo2.MTIME = DateTime.Now;
  315. lotinfo2.EATTRIBUTE1 = null;
  316. ICSWareHouseLotInfoList.Add(lotinfo2);
  317. //ICSWareHouseLotInfoLogBLL.towh(lotinfo2, AppConfig.AppConnectString);
  318. // }
  319. // }
  320. //}
  321. //}
  322. #endregion
  323. #region 存入物料收发交易记录表
  324. ICSITEMTrans lotinfo3 = new ICSITEMTrans();
  325. //if (grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "批次管控" ||
  326. // grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "单件管控" ||
  327. // grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "不管控")
  328. //{
  329. lotinfo3.ID = AppConfig.GetGuid();
  330. lotinfo3.TransNO = txtCode.Text.Trim().ToString();
  331. if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colRdrecordSEQ).ToString()))
  332. {
  333. lotinfo3.TransLine = Convert.ToInt32(grvDetail.GetRowCellValue(i, colRdrecordSEQ));
  334. }
  335. lotinfo3.ITEMCODE = grvDetail.GetRowCellValue(i, colcInvCode).ToString();
  336. lotinfo3.FRMStorageCODE = "";
  337. lotinfo3.FRMStackCODE = "";
  338. lotinfo3.TOStorageCODE = StorageCode;
  339. lotinfo3.TOStackCODE = StackCode;
  340. if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colQuantity).ToString()))
  341. {
  342. lotinfo3.TransQTY = Convert.ToDecimal(grvDetail.GetRowCellValue(i, colQuantity));
  343. }
  344. lotinfo3.Memo = "";
  345. lotinfo3.TransType = "收";
  346. lotinfo3.BusinessCode = "";
  347. lotinfo3.WorkPoint = AppConfig.WorkPointCode;
  348. lotinfo3.MUSER = AppConfig.UserId;
  349. lotinfo3.MUSERName = AppConfig.UserName;
  350. lotinfo3.MTIME = DateTime.Now;
  351. lotinfo3.EATTRIBUTE1 = null;
  352. ItemTransList.Add(lotinfo3);
  353. //ICSWareHouseLotInfoLogBLL.trans(lotinfo3, AppConfig.AppConnectString);
  354. //}
  355. #endregion
  356. #region 存入物料收发交易批号记录表
  357. //if (grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "批次管控" ||
  358. // grvDetail.GetRowCellValue(i, colINVCONTROLTYPE).ToString() == "单件管控")
  359. //{
  360. ICSITEMTransLot lotinfo4 = new ICSITEMTransLot();
  361. //if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colRdrecordSEQ).ToString()))
  362. //{
  363. // DataTable ddt = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectLotNO(txtCode.Text.Trim().ToString(), Convert.ToInt32(grvDetail.GetRowCellValue(i, colRdrecordSEQ)));
  364. // if (ddt != null && ddt.Rows.Count > 0)
  365. // {
  366. // for (int j = 0; j < ddt.Rows.Count; j++)
  367. // {
  368. lotinfo4.ID = AppConfig.GetGuid();
  369. //DataTable ddt1 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectTransID(txtCode.Text.Trim().ToString(), Convert.ToInt32(grvDetail.GetRowCellValue(i, colRdrecordSEQ)));
  370. //if (ddt1 != null && ddt1.Rows.Count > 0)
  371. //{
  372. // lotinfo4.ITEMTransID = ddt1.Rows[0][0].ToString();
  373. //}
  374. lotinfo4.ITEMTransID = lotinfo3.ID;
  375. lotinfo4.LotNO = grvDetail.GetRowCellValue(i, colLOTNO).ToString();
  376. lotinfo4.ITEMCODE = grvDetail.GetRowCellValue(i, colcInvCode).ToString();
  377. //DataTable ddt4 = ICSSoft.Frame.Data.BLL.ICSWareHouseLotInfoLogBLL.SelectLOTQTY(lotinfo4.LotNO);
  378. //if (ddt4 != null && ddt4.Rows.Count > 0)
  379. //{
  380. // if (!string.IsNullOrEmpty(ddt4.Rows[0][0].ToString()))
  381. // {
  382. // lotinfo4.TransQTY = Convert.ToDecimal(ddt4.Rows[0][0]);
  383. // }
  384. //}
  385. lotinfo4.TransQTY = Convert.ToDecimal(grvDetail.GetRowCellValue(i, colQuantity).ToString());
  386. lotinfo4.Memo = "";
  387. lotinfo4.WorkPoint = AppConfig.WorkPointCode;
  388. lotinfo4.MUSER = AppConfig.UserId;
  389. lotinfo4.MUSERName = AppConfig.UserName;
  390. lotinfo4.MTIME = DateTime.Now;
  391. ItemTransLotList.Add(lotinfo4);
  392. //ICSWareHouseLotInfoLogBLL.transLOT(lotinfo4, AppConfig.AppConnectString);
  393. // }
  394. // }
  395. //}
  396. //}
  397. #endregion
  398. Rdrecord10 rd10 = new Rdrecord10();
  399. rd10.UserName = AppConfig.UserName;
  400. rd10.rdsID = grvDetail.GetRowCellValue(i, colRowID).ToString();
  401. rd10.cInvCode = grvDetail.GetRowCellValue(i, colcInvCode).ToString();
  402. rd10.Quantity = grvDetail.GetRowCellValue(i, colQuantity).ToString();
  403. rd10.ERPConStr = AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]");
  404. rd10.whCode = txtStorageCode.Text.Trim();
  405. rd10List.Add(rd10);
  406. //CloseStatus(receiptno, receiptline);
  407. //ICSWareHouseLotInfoLogBLL.updatestatus(receiptno, receiptline);
  408. }
  409. }
  410. if (ICSWareHouseLotInfoList.Count > 0 && ICSWareHouseInfoList.Count > 0 && ItemTransList.Count > 0 && ItemTransLotList.Count > 0 && rd10List.Count > 0)
  411. {
  412. string rst = ICSWareHouseLotInfoLogBLL.updateRd10(rd10List, ICSWareHouseLotInfoList, ICSWareHouseInfoList, ItemTransList, ItemTransLotList, AppConfig.AppConnectString);
  413. if (!rst.Equals("OK"))
  414. {
  415. throw new Exception("回写ERP入库单失败!");
  416. }
  417. }
  418. else
  419. {
  420. throw new Exception("请检查所选仓库是否和应入仓库相同!");
  421. }
  422. ICSBaseSimpleCode.AppshowMessageBox("操作成功");
  423. txtMOCode_EditValueChanged(null, null);
  424. }
  425. catch (Exception ex)
  426. {
  427. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  428. }
  429. }
  430. #endregion
  431. //加载
  432. private void FormICSInput_Load(object sender, EventArgs e)
  433. {
  434. //string sql = @"select '' as isSelect,RCARD from ICSMO2RCARD where MOID='{0}' order by RCARD asc";
  435. //sql = string.Format(sql, MoId);
  436. ////DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  437. ////grdDetail.DataSource = dt;
  438. //Serialdata = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  439. //rptPage.RecordNum = Serialdata.Rows.Count;
  440. //rptPage.PageIndex = 1;
  441. //rptPage.PageSize = 20;
  442. //rptPage.ReLoad();
  443. //rptPage_PageIndexChanged(null, null);
  444. init();
  445. }
  446. #region 初始化查询条件
  447. private void init()
  448. {
  449. try
  450. {
  451. string sql = "SELECT DISTINCT ReceiptNO AS [单据号] FROM ICSINVReceipt WHERE WorkPoint='{0}' ORDER BY ReceiptNO ";
  452. sql += @"
  453. SELECT
  454. a.StackCode AS ,
  455. a.StackName AS ,
  456. b.StorageCode AS ,
  457. b.StorageName AS
  458. FROM
  459. ICSStack a
  460. INNER JOIN ICSStorage b ON a.storage_serial = b.serial AND a.WorkPoint=b.WorkPoint
  461. WHERE a.workpoint ='{0}'
  462. ORDER BY a.StackCode";
  463. sql = string.Format(sql, AppConfig.WorkPointCode);
  464. DataSet ds= DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql);
  465. txtCode.Properties.ValueMember = "单据号";
  466. txtCode.Properties.DisplayMember = "单据号";
  467. txtCode.Properties.DataSource = ds.Tables[0];
  468. txtCode.Properties.NullText = "";//空时的值
  469. txtCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  470. txtCode.Properties.ValidateOnEnterKey = true;//回车确认
  471. txtCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  472. txtCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  473. //自适应宽度
  474. txtCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  475. txtStackCode.Properties.ValueMember = "库位代码";
  476. txtStackCode.Properties.DisplayMember = "库位代码";
  477. txtStackCode.Properties.DataSource = ds.Tables[1];
  478. txtStackCode.Properties.NullText = "";//空时的值
  479. txtStackCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  480. txtStackCode.Properties.ValidateOnEnterKey = true;//回车确认
  481. txtStackCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  482. txtStackCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  483. //自适应宽度
  484. txtStackCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  485. }
  486. catch (Exception ex)
  487. {
  488. ICSBaseSimpleCode.AppshowMessageBox(ex.ToString());
  489. }
  490. }
  491. private void initBin()
  492. {
  493. try
  494. {
  495. string sql = @"
  496. SELECT
  497. a.StackCode AS ,
  498. a.StackName AS ,
  499. b.StorageCode AS ,
  500. b.StorageName AS
  501. FROM
  502. ICSStack a
  503. INNER JOIN ICSStorage b ON a.storage_serial = b.serial AND a.WorkPoint=b.WorkPoint
  504. INNER JOIN ICSINVReceipt c ON b.Serial = c.StorageID AND b.WorkPoint=c.WorkPoint
  505. WHERE a.workpoint ='{0}' AND c.ReceiptNO='{1}'
  506. ORDER BY a.StackCode";
  507. sql = string.Format(sql, AppConfig.WorkPointCode,txtCode.EditValue.ToString());
  508. DataSet ds = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql);
  509. txtStackCode.Properties.ValueMember = "库位代码";
  510. txtStackCode.Properties.DisplayMember = "库位代码";
  511. txtStackCode.Properties.DataSource = ds.Tables[0];
  512. txtStackCode.Properties.NullText = "";//空时的值
  513. txtStackCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  514. txtStackCode.Properties.ValidateOnEnterKey = true;//回车确认
  515. txtStackCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  516. txtStackCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  517. //自适应宽度
  518. txtStackCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  519. }
  520. catch (Exception ex)
  521. {
  522. ICSBaseSimpleCode.AppshowMessageBox(ex.ToString());
  523. }
  524. }
  525. #endregion
  526. private void txtMOCode_EditValueChanged(object sender, EventArgs e)
  527. {
  528. try
  529. {
  530. grdDetail.DataSource = null;
  531. string Code = txtCode.EditValue.ToString();
  532. string sql = @"SELECT
  533. CASE WHEN b.LotNO IS NOT NULL THEN '' ELSE 'Y' END AS isSelect,
  534. a.ID,
  535. c.MOCODE,
  536. c.MOSEQ,
  537. c.RECSTATUS,
  538. f.StorageCode,c.EATTRIBUTE1 AS RowID,
  539. a.TransNO AS Rdrecord,
  540. a.TransLine AS RdrecordSEQ,
  541. a.LOTNO,
  542. a.LOTQTY AS Quantity,
  543. CAST(CASE WHEN b.LotNO IS NOT NULL THEN '1' ELSE '0' END AS BIT) AS isInput,
  544. c.ITEMCODE AS cInvCode,
  545. d.INVNAME,
  546. d.INVCLASS,
  547. d.INVCONTROLTYPE
  548. FROM
  549. ICSITEMLot a
  550. LEFT JOIN ICSWareHouseLotInfo b ON a.LOTNO=b.LotNO AND a.WorkPoint=b.WorkPoint
  551. LEFT JOIN ICSINVReceiptDetail c ON a.TransNO=c.ReceiptNO AND a.TransLine=c.ReceiptLine AND a.WorkPoint=c.WorkPoint
  552. LEFT JOIN ICSINVENTORY d ON c.ITEMCODE=d.INVCODE AND c.WorkPoint=d.WorkPoint
  553. LEFT JOIN ICSINVReceipt e ON a.TransNO=e.ReceiptNO AND a.WorkPoint=d.WorkPoint
  554. LEFT JOIN ICSStorage f ON e.StorageID=f.Serial AND e.WorkPoint=f.WorkPoint
  555. WHERE
  556. a.TransNO = '{0}'
  557. AND a.WorkPoint = '{1}'
  558. ORDER BY
  559. a.LOTNO";
  560. sql = string.Format(sql, Code, AppConfig.WorkPointCode);
  561. Serialdata = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  562. grdDetail.DataSource = Serialdata;
  563. grvDetail.BestFitColumns();
  564. rptPage.RecordNum = Serialdata.Rows.Count;
  565. rptPage.PageSize = 499;
  566. rptPage.PageIndex = 1;
  567. rptPage.ReLoad();
  568. rptPage.PageSize = 500;
  569. rptPage.PageIndex = 1;
  570. rptPage.ReLoad();
  571. rptPage_PageIndexChanged(null, null);
  572. initBin();
  573. }
  574. catch (Exception ex)
  575. {
  576. ICSBaseSimpleCode.AppshowMessageBox(ex.ToString());
  577. }
  578. }
  579. private void txtStackCode_EditValueChanged(object sender, EventArgs e)
  580. {
  581. try
  582. {
  583. GridLookUpEdit edit = sender as GridLookUpEdit;
  584. if(edit.EditValue !=null && edit.EditValue.ToString() != "" && edit.EditValue.ToString() != "nulltext")
  585. {
  586. var dr = edit.Properties.View.GetDataRow(edit.Properties.View.FocusedRowHandle);
  587. if (dr is DataRow)
  588. {
  589. DataRow row = dr as DataRow;
  590. txtStackName.Text = row["库位名称"].ToString();
  591. txtStorageCode.Text = row["仓库代码"].ToString();
  592. txtStorageName.Text = row["仓库名称"].ToString();
  593. StorageCode = row["仓库代码"].ToString();
  594. StackCode = row["库位代码"].ToString();
  595. }
  596. else
  597. {
  598. txtStackName.Text = "";
  599. txtStorageCode.Text = "";
  600. txtStorageName.Text = "";
  601. StorageCode = "";
  602. StackCode = "";
  603. }
  604. }
  605. }
  606. catch (Exception ex)
  607. {
  608. ICSBaseSimpleCode.AppshowMessageBox(ex.ToString());
  609. }
  610. }
  611. #region 全选
  612. private void btnSelectAll_Click(object sender, EventArgs e)
  613. {
  614. grvDetail.PostEditor();
  615. this.Validate();
  616. for (int i = 0; i < grvDetail.RowCount; i++)
  617. {
  618. grvDetail.SetRowCellValue(i, colisSelect, "Y");
  619. }
  620. }
  621. #endregion
  622. #region 全消
  623. private void btnCancelAll_Click(object sender, EventArgs e)
  624. {
  625. grvDetail.PostEditor();
  626. this.Validate();
  627. for (int i = 0; i < grvDetail.RowCount; i++)
  628. {
  629. grvDetail.SetRowCellValue(i, colisSelect, "");
  630. }
  631. }
  632. #endregion
  633. private void grvDetail_DoubleClick(object sender, EventArgs e)
  634. {
  635. if (grvDetail.FocusedRowHandle < 0)
  636. {
  637. return;
  638. }
  639. if (grvDetail.FocusedColumn == colisSelect)
  640. {
  641. if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "")
  642. {
  643. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "Y");
  644. }
  645. else
  646. {
  647. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "");
  648. }
  649. }
  650. }
  651. #region 导出
  652. private void btnOutPut_Click(object sender, EventArgs e)
  653. {
  654. SimpleButton btntemp = (SimpleButton)sender;
  655. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  656. {
  657. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  658. return;
  659. }
  660. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  661. foe.ShowDialog();
  662. }
  663. #endregion
  664. private void grvDetail_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
  665. {
  666. if (grvDetail.GetRowCellValue(e.RowHandle, colisInput).ToString().Equals("True"))
  667. {
  668. e.Appearance.BackColor = Color.DeepSkyBlue;
  669. }
  670. }
  671. }
  672. }