using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using DevExpress.XtraEditors; using ICSSoft.Base.Config.AppConfig; using ICSSoft.Base.Config.DBHelper; using ICSSoft.Base.ReferForm.AppReferForm; using ICSSoft.Frame.Data.Entity; using ICSSoft.Frame.Data.BLL; namespace ICSSoft.Frame.APP { public partial class FormICSSOPriceSheetEditAdd : DevExpress.XtraEditors.XtraForm { string VRow = ""; String guid = ""; string SoCode = ""; XS001_0001_E001_2020 entity = new XS001_0001_E001_2020(); private DataTable dtNewRcards = null; #region 构造函数 public FormICSSOPriceSheetEditAdd() { InitializeComponent(); } public FormICSSOPriceSheetEditAdd(String id,string socode) { InitializeComponent(); guid = id; SoCode = socode; } #endregion #region 关闭 退出 private void btnClose_Click(object sender, EventArgs e) { this.Close(); } #endregion #region 移动窗体 private const int WM_NCHITTEST = 0x84; private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; //首先必须了解Windows的消息传递机制,当有鼠标活动消息时, //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION , //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。 //重写窗体,使窗体可以不通过自带标题栏实现移动 protected override void WndProc(ref Message m) { //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息, //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体, //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。 //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。 switch (m.Msg) { case WM_NCHITTEST: base.WndProc(ref m); if ((int)m.Result == HTCLIENT) m.Result = (IntPtr)HTCAPTION; return; } //拦截双击标题栏、移动窗体的系统消息 if (m.Msg != 0xA3) { base.WndProc(ref m); } } #endregion #region 取消 private void can_Click(object sender, EventArgs e) { this.Close(); } #endregion #region 页面加载 private void FormICSINVENTORYEditAdd_Load(object sender, EventArgs e) { if (guid != "") { decimal sumsinglemoney = 0; lblTitle.Text = "单据维护"; DataTable body = ICSSOPriceSheetBLL.GetDetailList(guid, AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]")); grvDetail.DataSource = body; dtNewRcards = body; //grdDetail.BestFitColumns(); txtSOCode.Enabled = false; checkAll.Enabled = false; checkAll.Checked = true; init(); loadop(); foreach (DataRow dr in body.Rows) { if (body.Rows.Count > 0) { txtSOCode.EditValue = dr["IDs"].ToString().Trim(); txtCode.Text = dr["ID"].ToString().Trim(); txtSOType.Text = dr["cSoType"].ToString().Trim(); txtCusName.Text = dr["cCusName"].ToString().Trim(); txtInvCode.Text = dr["InvCodes"].ToString().Trim(); txtInvName.Text = dr["InvName"].ToString().Trim(); txtNumber.Text = dr["iNum"].ToString().Trim(); txtDNumber.Text = dr["cInvStd"].ToString().Trim(); txtWeight.Text = dr["iWeight"].ToString().Trim(); txtOpQuire.Text = dr["cinvtype"].ToString().Trim(); txtdDate.Text = dr["dDate"].ToString().Trim(); txtSumSingleMoney.Text = dr["iPrice"].ToString().Trim(); } } for (int i = 0; i < grdDetail.RowCount; i++) { if (grdDetail.GetRowCellValue(i, colSingleMoney).ToString() == "") { sumsinglemoney = sumsinglemoney + 0; } else { sumsinglemoney = sumsinglemoney + Convert.ToDecimal(grdDetail.GetRowCellValue(i, colSingleMoney).ToString()); txtSumMoney.Text = Convert.ToString(sumsinglemoney); } } } else { lblTitle.Text = "单据新增"; txtCode.Text = ICSSOPriceSheetBLL.GetOutInNo(AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]")); init(); } } #endregion #region 初始化查询条件 private void init() { #region 销售订单号 string sql = @"SELECT DISTINCT a.cSOCode 销售订单号,b.cInvCode 存货编码, b.cdefine24 工艺要求, (CASE WHEN isnull(c.cSOCode,'')='' THEN '未维护' ELSE '已维护' END ) as 状态, a.cSOCode+b.cInvCode+ISNULL(b.cdefine24, '') as ID FROM SO_SOMain a with(nolock) LEFT JOIN SO_SODetails b with(nolock) on b.cSOCode=a.cSOCode left JOIN dbo.XS001_0001_E001_2020 c with(nolock) ON a.cSOCode=c.cSOCode and isnull(b.cinvcode,'')=isnull(c.cinvcode,'') and isnull(b.cdefine24,'')=isnull(c.cinvtype,'') WHERE a.dDate>='2020-08-01' "; sql = string.Format(sql, AppConfig.WorkPointCode); if (!checkAll.Checked) { sql += " AND c.cSOCode is null"; } else { sql += " AND 1=1 "; } DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]"), CommandType.Text, sql).Tables[0]; txtSOCode.Properties.ValueMember = "ID"; txtSOCode.Properties.DisplayMember = "销售订单号"; txtSOCode.Properties.DataSource = dt; txtSOCode.Properties.NullText = "";//空时的值 //txtSOCode.Properties.View.Columns["ID"].Visible = false; //隐藏列 txtSOCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体 txtSOCode.Properties.ValidateOnEnterKey = true;//回车确认 txtSOCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard txtSOCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容 //自适应宽度 txtSOCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; #endregion #region 存货编码 string sqls = @"SELECT DISTINCT cInvCode as 存货编码,cInvName as 存货名称,cInvStd as 图号 FROM Inventory"; DataTable dts = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]"), CommandType.Text, sqls).Tables[0]; txtcInvCode.Properties.ValueMember = "存货编码"; txtcInvCode.Properties.DisplayMember = "存货编码"; txtcInvCode.Properties.DataSource = dts; txtcInvCode.Properties.NullText = "";//空时的值 //txtSOCode.Properties.View.Columns["ID"].Visible = false; //隐藏列 txtcInvCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体 txtcInvCode.Properties.ValidateOnEnterKey = true;//回车确认 txtcInvCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard txtcInvCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容 //自适应宽度 txtcInvCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; #endregion } #endregion #region 销售订单号 private void txtSOCode_EditValueChanged(object sender, EventArgs e) { try { string Code = txtSOCode.Text; string socode = ""; string invcode=""; string invtype=""; #region 判断销售订单号是否维护 GridLookUpEdit edit = sender as GridLookUpEdit; if (edit.EditValue != null && edit.EditValue.ToString() != "" && edit.EditValue.ToString() != "nulltext") { var o = edit.Properties.GetRowByKeyValue(edit.EditValue); if (o is DataRowView) { DataRowView RowView = o as DataRowView; socode = RowView.Row["销售订单号"].ToString(); invcode = RowView.Row["存货编码"].ToString(); invtype = RowView.Row["工艺要求"].ToString(); } } string sqlso = @"SELECT cSOCode FROM XS001_0001_E001_2020 WHERE cSOCode='{0}' AND cInvCode='{1}' AND cinvtype='{2}'"; sqlso = string.Format(sqlso, Code, invcode, invtype); DataTable dtso = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]"), CommandType.Text, sqlso).Tables[0]; if (dtso != null && dtso.Rows.Count > 0&&guid=="") { ICSBaseSimpleCode.AppshowMessageBox("该销售订单号已经维护,不能选择!!!"); init(); return; } #endregion #region 查询 string sql = @"select a.ddate 销售订单日期, a.cSOCode 销售订单号, d.cSTName 销售类型, a.cCusName 客户名称, b.cInvCode 存货编码, b.cinvname 存货名称, c.cinvstd 图号, b.cdefine24 工艺要求, CAST(isnull(SUM(b.iquantity),0) as NUMERIC(10,2)) 数量, CAST(isnull(sum(b.iNum),0) as NUMERIC(10,2)) 重量, CAST(isnull(SUM(b.iNatSum),0)/isnull(SUM(b.iquantity),0) as NUMERIC(18,6)) as 产品单价 from SO_SOMain a with(nolock) inner join SO_SODetails b with(nolock) on b.cSOCode=a.cSOCode inner join inventory c with(nolock) on c.cinvcode=b.cinvcode inner join SaleType d with(nolock) on d.cstcode=a.cstcode WHERE a.dDate>='2020-08-01' AND a.cSOCode='{0}' and b.cInvCode='{1}' and ISNULL(b.cdefine24, '')='{2}' group by a.cSOCode,a.cCusName,b.cInvCode,b.cinvname, b.cdefine24,c.cinvstd,d.cSTName,a.ddate"; sql = string.Format(sql, Code,invcode,invtype, AppConfig.WorkPointCode); DataTable dt = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]"), CommandType.Text, sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { txtCusName.Text = dt.Rows[0]["客户名称"].ToString(); txtSOType.Text = dt.Rows[0]["销售类型"].ToString(); txtNumber.Text = dt.Rows[0]["数量"].ToString(); txtInvCode.Text = dt.Rows[0]["存货编码"].ToString(); txtInvName.Text = dt.Rows[0]["存货名称"].ToString(); txtDNumber.Text = dt.Rows[0]["图号"].ToString(); txtWeight.Text = dt.Rows[0]["重量"].ToString(); txtOpQuire.Text = dt.Rows[0]["工艺要求"].ToString(); txtdDate.Text = dt.Rows[0]["销售订单日期"].ToString(); txtSumSingleMoney.Text = dt.Rows[0]["产品单价"].ToString(); #region 新增时带出默认工序 if (guid == "") { string sqlop = @"select DISTINCT 'Y' as isSelect, a.cSOCode as SOCode, '' as SORow, --1 as SORow, b.cInvCode InvCode, b.cinvname InvName, c.cinvstd DNumber, '材料费' as QuotationItem, 'CL' OpCode, '' as SingleMoney, '' as Memo from dbo.SO_SOMain a with(nolock) inner join dbo.SO_SODetails b with(nolock) on b.cSOCode=a.cSOCode inner join dbo.inventory c with(nolock) on c.cinvcode=b.cinvcode WHERE b.cInvCode='{0}' and a.cSOCode='{2}' UNION ALL select DISTINCT 'Y' as isSelect, a.cSOCode as SOCode, '' as SORow, --row_number() OVER (ORDER BY a.cSCCode)+1 as SORow, b.cInvCode InvCode, b.cinvname InvName, c.cinvstd DNumber, f.OPDESC as QuotationItem, f.OPCODE as OpCode, '' as SingleMoney, '' as Memo from dbo.SO_SOMain a with(nolock) inner join dbo.SO_SODetails b with(nolock) on b.cSOCode=a.cSOCode inner join dbo.inventory c with(nolock) on c.cinvcode=b.cinvcode -- INNER JOIN [{1}].[ICSMES_YTSys].dbo.ICSITEM2ROUTE d ON b.cInvCode=d.itemcode -- INNER JOIN [{1}].[ICSMES_YTSys].dbo.ICSITEMROUTE2OP e ON d.ROUTECODE=e.ROUTECODE -- INNER JOIN [{1}].[ICSMES_YTSys].dbo.ICSOP f ON e.OPID=f.ID INNER JOIN( select distinct a.OPCODE,d.OPDESC,e.cInvCode from [{1}].[ICSMES_YTSys].dbo.ICSITEMROUTE2OPLot a with(nolock) inner join [{1}].[ICSMES_YTSys].dbo.ICSOP d with(nolock) on d.OPCODE=a.OPCODE inner join [{1}].[ICSMES_YTSys].dbo.ICSITEMLot b with(nolock) on b.LotNO=a.LotNo inner join [{1}].[ICSMES_YTSys].dbo.icsmo c with(nolock) on c.MOCODE=b.TransNO and c.MOSEQ=b.TransLine left join (select DISTINCT b.cSOCode,b.cInvCode,cDefine24 from dbo.SO_SOMain a with(nolock) inner join dbo.SO_SODetails b with(nolock) on b.cSOCode=a.cSOCode where a.dDate>'2020-08-01 00:00:00.000' ) e on e.cSOCode=c.ORDERNO and e.cinvcode=a.ITEMCODE and e.cdefine24=c.REMOITEMDESC where e.cSOCode='{2}' )f on f.cInvCode=b.cInvCode WHERE b.cInvCode='{0}' and a.cSOCode='{2}'"; #region 获取MES地址 string sqlip = "SELECT DBIpAddress FROM Sys_DataBase WHERE DBSourceName='SYS'"; sqlip = string.Format(sqlip, AppConfig.AppConnectString); DataTable dtip = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sqlip).Tables[0]; #endregion sqlop = string.Format(sqlop, txtInvCode.Text, dtip.Rows[0]["DBIpAddress"].ToString(), txtSOCode.Text); DataTable dtop = DBHelper.ExecuteDataset(AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]"), CommandType.Text, sqlop).Tables[0]; grvDetail.DataSource = dtop; dtNewRcards = dtop; //grdDetail.BestFitColumns(); } #endregion loadop(); } #endregion } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion #region 加载工序 private void loadop() { #region 工序代码 string sqls = @"SELECT DISTINCT opcode as [工序代码],OPDESC as [工序名称] FROM ICSOP WHERE WorkPoint='{0}'"; sqls = string.Format(sqls, AppConfig.WorkPointCode); DataTable dts = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sqls).Tables[0]; txtOPCode.Properties.ValueMember = "工序代码"; txtOPCode.Properties.DisplayMember = "工序代码"; txtOPCode.Properties.DataSource = dts; txtOPCode.Properties.NullText = "";//空时的值 txtOPCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体 txtOPCode.Properties.ValidateOnEnterKey = true;//回车确认 txtOPCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard txtOPCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容 //自适应宽度 txtOPCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; #endregion } #endregion #region 工序代码 private void txtOPCode_EditValueChanged(object sender, EventArgs e) { try { GridLookUpEdit edit = sender as GridLookUpEdit; if (edit.EditValue != null && edit.EditValue.ToString() != "" && edit.EditValue.ToString() != "nulltext") { var o = edit.Properties.GetRowByKeyValue(edit.EditValue); if (o is DataRowView) { DataRowView RowView = o as DataRowView; //赋值 txtOPName.Text = RowView.Row["工序名称"].ToString(); } } } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion #region 新增工序 private void btnAdd_Click(object sender, EventArgs e) { try { if (txtSOCode.Text == "") { ICSBaseSimpleCode.AppshowMessageBox("销售订单号不能为空!"); return; } if (txtOPName.Text == "") { ICSBaseSimpleCode.AppshowMessageBox("工序名不能为空!"); return; } #region 判断工序不能重复添加 for (int i = 0; i < grdDetail.RowCount; i++) { if (txtOPName.Text.Equals(grdDetail.GetRowCellValue(i, colQuotationItem).ToString())) { ICSBaseSimpleCode.AppshowMessageBox("工序:" + txtOPName.Text + ",在第" + Convert.ToInt32(i + 1) + "行已维护!"); return; } } #endregion if (grdDetail.RowCount > 0) { DataRow[] isRow = dtNewRcards.Select("QuotationItem= '材料费'"); if (isRow != null || isRow.Length > 0) { DataRow row = dtNewRcards.NewRow(); row["isSelect"] = "Y"; row["SOCode"] = txtSOCode.Text;//销售订单号 row["SORow"] = dtNewRcards.Rows.Count + 1; row["InvCode"] = txtInvCode.Text; row["InvName"] = txtInvName.Text; row["DNumber"] = txtDNumber.Text;//图号 row["QuotationItem"] = txtOPName.Text;//报价项目 row["OpCode"] = txtOPCode.Text;//工序 if (guid == "") { row["SingleMoney"] = ""; } else { row["SingleMoney"] = 0; } row["Memo"] = txtMemo.Text; dtNewRcards.Rows.Add(row); grvDetail.DataSource = dtNewRcards; //grdDetail.BestFitColumns(); } } } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion #region 保存 private void btnSave_Click(object sender, EventArgs e) { DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等..."); try { _wait.Show(); List SoMainList = new List(); List SoDetailLIist = new List(); XS001_0001_E001_2020 SoMain = new XS001_0001_E001_2020(); SoMain.ID = txtCode.Text;//单据号 if (guid != "") { SoMain.cSOCode = SoCode;//销售订单号 } else { SoMain.cSOCode = txtSOCode.Text;//销售订单号 } SoMain.cCusName = txtCusName.Text;//客户名称 SoMain.cSoType = txtSOType.Text;//销售类型 SoMain.iNum = Convert.ToDecimal(txtNumber.Text);//数量 if (txtSumSingleMoney.Text == "") { SoMain.iPrice = 0; } else { SoMain.iPrice = Convert.ToDecimal(txtSumSingleMoney.Text);//产品单价 } SoMain.cInvCode = txtInvCode.Text;//存货编码 SoMain.cInvName = txtInvName.Text;//存货名称 SoMain.cInvStd = txtDNumber.Text;//图号 SoMain.cinvtype = txtOpQuire.Text;//工艺要求 SoMain.iWeight = Convert.ToDecimal(txtWeight.Text);//重量 SoMain.cMake = AppConfig.UserName;//维护人 SoMain.dMakeTime = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");//维护时间 SoMain.dDate = Convert.ToDateTime(txtdDate.Text);//销售订单日期 SoMainList.Add(SoMain); for (int i = 0; i < grdDetail.RowCount; i++) { if (grdDetail.GetRowCellValue(i, colisSelect).ToString() == "Y") { XS001_0001_E002_2020 SoDetail = new XS001_0001_E002_2020(); SoDetail.RefMainID = txtCode.Text;//单据号 if (guid == "") { SoDetail.RefRowID = Convert.ToString(i + 1);//行号 } else { SoDetail.RefRowID = grdDetail.GetRowCellValue(i, colSORow).ToString();//行号 } SoDetail.cInvCode = grdDetail.GetRowCellValue(i, colInvCode).ToString();//存货编码 SoDetail.cInvName = grdDetail.GetRowCellValue(i, colInvName).ToString();//存货名称 SoDetail.cInvStd = grdDetail.GetRowCellValue(i, colDNumber).ToString();//图号 SoDetail.cItem = grdDetail.GetRowCellValue(i, colQuotationItem).ToString();//报价项目 SoDetail.XS001_0001_E001_PK = Convert.ToString(grdDetail.GetRowCellValue(i, colOpCode).ToString());//工序 if (string.IsNullOrWhiteSpace(grdDetail.GetRowCellValue(i, colSingleMoney).ToString())) { SoDetail.iPrice = 0; } else { SoDetail.iPrice = Convert.ToDecimal(grdDetail.GetRowCellValue(i, colSingleMoney).ToString());//含税单价 } SoDetail.UAP_VoucherTransform_Rowkey = txtMemo.Text;//备注 SoDetailLIist.Add(SoDetail); } } if (SoMainList.Count <= 0) { _wait.Close(); ICSBaseSimpleCode.AppshowMessageBox("请选择数据!!!"); return; } ICSSOPriceSheetBLL.Add(SoMainList, SoDetailLIist, AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]")); _wait.Close(); ICSBaseSimpleCode.AppshowMessageBox("保存成功"); this.Close(); FormICSINVENTORYEditAdd_Load(null,null); } catch (Exception ex) { _wait.Close(); ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion #region 删除 private void btnDelete_Click(object sender, EventArgs e) { grdDetail.PostEditor(); this.Validate(); if (grdDetail.RowCount == 0) return; string code = ""; string row = ""; if (grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colQuotationItem).ToString() == "材料费" && grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colSORow).ToString() == "1") { ICSBaseSimpleCode.AppshowMessageBox("第一行材料费数据不能删除!!!"); return; } for (int i = 0; i < grdDetail.RowCount; i++) { if (grdDetail.GetRowCellValue(i, colisSelect).ToString() == "Y") { code = grdDetail.GetRowCellValue(i, colSOCode).ToString(); row = grdDetail.GetRowCellValue(i, colSORow).ToString(); } } if (code=="") { ICSBaseSimpleCode.AppshowMessageBox("请选择数据!"); return; } if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该行信息吗?删除后无法恢复,确定吗?") != DialogResult.OK) return; try { ICSSOPriceSheetBLL.deleteDetailInfo(code, row, AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]")); ICSBaseSimpleCode.AppshowMessageBox(0, "删除成功"); FormICSINVENTORYEditAdd_Load(null,null); } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion #region 删除窗体行 private void repositoryItemButtonEdit4_Click(object sender, EventArgs e) { if (grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colQuotationItem).ToString() == "材料费" && grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colSORow).ToString()=="1") { ICSBaseSimpleCode.AppshowMessageBox("第一行材料费数据不能删除!!!"); return; } grdDetail.DeleteRow(grdDetail.FocusedRowHandle); } #endregion #region 双击 private void grdDetail_DoubleClick(object sender, EventArgs e) { if (grdDetail.FocusedRowHandle < 0) { return; } for (int i = 0; i < grdDetail.RowCount; i++) { grdDetail.SetRowCellValue(i, colisSelect, ""); } if (grdDetail.FocusedColumn == colisSelect) { if (grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colisSelect).ToString() == "") { grdDetail.SetRowCellValue(grdDetail.FocusedRowHandle, colisSelect, "Y"); } else { grdDetail.SetRowCellValue(grdDetail.FocusedRowHandle, colisSelect, ""); } } string code = ""; string row = ""; for (int i = 0; i < grdDetail.RowCount; i++) { if (grdDetail.GetRowCellValue(i, colisSelect).ToString() == "Y") { code = grdDetail.GetRowCellValue(i, colSOCode).ToString(); row = grdDetail.GetRowCellValue(i, colSORow).ToString(); } } DataTable dt = ICSSOPriceSheetBLL.GetDetailInfo(code, row, AppConfig.GetDataBaseConnectStringByKey("[DB.ERP]")); foreach (DataRow dr in dt.Rows) { txtOPCode.Text = dr["XS001_0001_E001_PK"].ToString().Trim(); txtOPName.Text = dr["XS001_0001_E002_PK"].ToString().Trim(); txtMemo.Text = dr["UAP_VoucherTransform_Rowkey"].ToString().Trim(); txtOPCode.Enabled = false; txtMemo.Enabled = false; } } #endregion #region 计算含税单价 private void grdDetail_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { try { if (e.Column.FieldName == "SingleMoney") { decimal singlemoney=0; decimal summoney = 0; if (string.IsNullOrWhiteSpace(grdDetail.GetRowCellValue(e.RowHandle, colSingleMoney).ToString())) { singlemoney = 0; } else { singlemoney = Convert.ToDecimal(grdDetail.GetRowCellValue(e.RowHandle, colSingleMoney).ToString()); } if (txtSumMoney.Text == "0.00") { txtSumMoney.Text = Convert.ToString(0 + singlemoney); } else { for (int i = 0; i < grdDetail.RowCount; i++) { if (string.IsNullOrWhiteSpace(grdDetail.GetRowCellValue(i, colSingleMoney).ToString())) { summoney += 0; } else { summoney += Convert.ToDecimal(grdDetail.GetRowCellValue(i, colSingleMoney).ToString()); } } txtSumMoney.Text = Convert.ToString(summoney); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } #endregion #region 显示全部 private void checkAll_Click(object sender, EventArgs e) { init(); grvDetail.DataSource = null; txtSOCode.Text = ""; txtSumSingleMoney.Text = ""; txtdDate.Text = ""; txtOpQuire.Text = ""; txtCusName.Text = ""; txtSOType.Text = ""; txtNumber.Text = ""; txtInvCode.Text = ""; txtInvName.Text = ""; txtDNumber.Text = ""; txtWeight.Text = ""; txtOPCode.Text = ""; txtOPName.Text = ""; txtMemo.Text = ""; } #endregion private void txtSOCode_QueryPopUp(object sender, System.ComponentModel.CancelEventArgs e) { txtSOCode.Properties.View.Columns["ID"].Visible = false; //隐藏列 } #region 新增存货编码 private void btnAddInvName_Click(object sender, EventArgs e) { try { if (txtcInvCode.Text == "") { ICSBaseSimpleCode.AppshowMessageBox("存货编码不能为空!"); return; } if (grdDetail.RowCount > 0) { DataRow[] isRow = dtNewRcards.Select("QuotationItem= '材料费'"); if (isRow != null || isRow.Length > 0) { DataRow row = dtNewRcards.NewRow(); row["isSelect"] = "Y"; row["SOCode"] = txtSOCode.Text;//销售订单号 row["SORow"] = dtNewRcards.Rows.Count + 1; row["InvCode"] = txtcInvCode.Text;//存货编码 row["InvName"] = txtcInvName.Text;//存货名称 row["DNumber"] = txtcInvstd.Text;//图号 row["QuotationItem"] = "材料费";//报价项目 row["OpCode"] = "CL";//工序 if (guid == "") { row["SingleMoney"] = ""; } else { row["SingleMoney"] = 0; } row["Memo"] = ""; for (int i = 0; i < grdDetail.RowCount; i++) { if (grdDetail.GetRowCellValue(i, colInvCode).ToString().Equals(txtcInvCode.Text) && row["QuotationItem"].Equals(grdDetail.GetRowCellValue(i, colQuotationItem).ToString())) { ICSBaseSimpleCode.AppshowMessageBox("存货编码:" + txtcInvCode.Text + ",报价项目:材料费,在第" + Convert.ToInt32(i + 1) + "行已维护!"); return; } } dtNewRcards.Rows.Add(row); grvDetail.DataSource = dtNewRcards; //grdDetail.BestFitColumns(); } } } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion #region 存货编码改变 private void txtcInvCode_EditValueChanged(object sender, EventArgs e) { try { GridLookUpEdit edit = sender as GridLookUpEdit; if (edit.EditValue != null && edit.EditValue.ToString() != "" && edit.EditValue.ToString() != "nulltext") { var o = edit.Properties.GetRowByKeyValue(edit.EditValue); if (o is DataRowView) { DataRowView RowView = o as DataRowView; txtcInvName.Text = RowView.Row["存货名称"].ToString(); txtcInvstd.Text = RowView.Row["图号"].ToString(); } } } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion } }