using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CoreFS.CA06;using Pur.Entity; using Core.Mes.Client.Comm.Tool; using Core.Mes.Client.Comm.Control; using System.Collections; using Pur.Entity.balanceEntity; using Pur.Entity.configureEntity; using com.hnshituo.pur.vo; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; namespace Pur.balance { public partial class frmConfirmBalance : FrmPmsBase { string QstrSuppCode = ""; Hashtable Qhs = new Hashtable(); public frmConfirmBalance(OpeBase ob, ArrayList strOrder, string strSuppName, string strSuppCode) { InitializeComponent(); this.ob = ob; txt_SuppName.Text = strSuppName; QstrSuppCode = strSuppCode; getBalance(strOrder); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], "Check", "BASEQTY"); ultraGrid1.DisplayLayout.Bands[0].PerformAutoResizeColumns(true, PerformAutoSizeType.AllRowsInBand);//自Á?适º¨º应®|列¢D宽¨ª } /// /// 获取结算单信息 /// private void getBalance(ArrayList strOrder) { DataTable dt = this.execute("com.hnshituo.pur.balance.service.BalanceBillCService", "getBalance", new object[] { strOrder }); //基础数量默认为入库量 GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true);//结算信息 ultraGrid1.UpdateData(); bandListValue();// 绑定grid下拉框 saveBalanceBillCD();// 建立保存结算单明细说明保存库 } /// /// 建立保存结算单明细说明保存库 /// private void saveBalanceBillCD() { for (int i = 0; i < dataTable1.Rows.Count; i++) { Hashtable hs = new Hashtable(); hs.Add(0, dataTable2.Copy()); hs.Add(1, dataTable3.Copy()); hs.Add(2, dataTable4.Copy()); Qhs.Add(ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString(), hs); } } /// /// 绑定grid下拉框 /// private void bandListValue() { //参考结算标准类别 Infragistics.Win.ValueList valueList2 = new Infragistics.Win.ValueList(); valueList2.ValueListItems.Add("1", "基准计价"); valueList2.ValueListItems.Add("2", "成分计价"); valueList2.ValueListItems.Add("3", "批量计价"); //设置默认选项 if (valueList2.ValueListItems.Count > 0) { valueList2.SelectedIndex = 0; } Infragistics.Win.ValueList valueList3 = new Infragistics.Win.ValueList(); valueList3.ValueListItems.Add("1", "基准计价"); valueList3.ValueListItems.Add("2", "成分计价"); valueList3.ValueListItems.Add("3", "批量计价"); //设置默认选项 if (valueList3.ValueListItems.Count > 0) { valueList3.SelectedIndex = 0; } Infragistics.Win.ValueList valueList4 = new Infragistics.Win.ValueList(); valueList4.ValueListItems.Add("1", "基准计价"); valueList4.ValueListItems.Add("2", "成分计价"); valueList4.ValueListItems.Add("3", "批量计价"); //设置默认选项 if (valueList4.ValueListItems.Count > 0) { valueList4.SelectedIndex = 0; } ultraGrid2.DisplayLayout.Bands[0].Columns["REFSTANDARDMTYPE"].ValueList = valueList2; ultraGrid3.DisplayLayout.Bands[0].Columns["REFSTANDARDMTYPE"].ValueList = valueList3; ultraGrid4.DisplayLayout.Bands[0].Columns["REFSTANDARDMTYPE"].ValueList = valueList4; } /// /// 结算操作 /// private void addBalance() { getData(); ultraGrid1.UpdateData(); ArrayList alpbbc = new ArrayList(); PurBalanceBillMEntity pbbm = new PurBalanceBillMEntity();//结算主表 ArrayList alpbbcd = new ArrayList(); //结算主表 pbbm.BalanceId = Guid.NewGuid().ToString();//结算单号 pbbm.Status = "1";//结算状态 pbbm.SuppName = txt_SuppName.Text;//供应商名称 pbbm.SuppCode = QstrSuppCode;//供应商代码 pbbm.OpOrgId = UserInfo.GetDeptid();//操作者机构ID pbbm.OpOrgName = UserInfo.GetDepartment();//操作者机构名称 pbbm.SettleDate = System.DateTime.Now;//结算日期 if (string.IsNullOrEmpty(txt_BALANCE_AMT_TAX.Text)) { pbbm.TotalWithoutAmtTax = 0;//含税总金额 } else { pbbm.TotalWithoutAmtTax = double.Parse(txt_BALANCE_AMT_TAX.Text);//含税总金额 } if (string.IsNullOrEmpty(txt_BALANCE_AMT_WITHOUT_TAX.Text)) { pbbm.TotalWithAmtTax = double.Parse(txt_BALANCE_AMT_WITHOUT_TAX.Text);//不含税总金额 } else { pbbm.TotalWithAmtTax = double.Parse(txt_BALANCE_AMT_WITHOUT_TAX.Text);//不含税总金额 } pbbm.Validflag = "1"; pbbm.CreateUserid = UserInfo.GetUserID(); pbbm.CreateName = UserInfo.GetUserName(); pbbm.CreateTime = System.DateTime.Now; //结算明细 for (int i = 0; i < ultraGrid1.Rows.Count; i++) { if ((Boolean)ultraGrid1.Rows[i].Cells["Check"].Value) { double bINNUM = 0;//入库量 double.TryParse(ultraGrid1.Rows[i].Cells["INNUM"].Value.ToString(), out bINNUM); double bINVOICEDQTY = 0;//已结算量 double.TryParse(ultraGrid1.Rows[i].Cells["INVOICEDQTY"].Value.ToString(), out bINVOICEDQTY); double bBASEQTY = 0;//基础数量 double.TryParse(ultraGrid1.Rows[i].Cells["BASEQTY"].Value.ToString(), out bBASEQTY); if (bBASEQTY > (bINNUM-bINVOICEDQTY)) { MessageUtil.ShowTips("单号【" + ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString() + "】的基础数量不能大于入库量和已结算量的差值"); return; } PurCkInBillEntity pckb = new PurCkInBillEntity();//入库单表 pckb = this.execute("com.hnshituo.pur.ck.service.CkInBillService", "findById", new object[] { ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString() }); PurBalanceBillCEntity pbbc = new PurBalanceBillCEntity();//结算明细 pbbc = EntityHelper.CopyEntity(pckb); pbbc.Validflag = "1"; pbbc.Id = Guid.NewGuid().ToString();//主键 pbbc.BalanceId = pbbm.BalanceId;//结算单号 if (ultraGrid1.ActiveRow.Cells["BASEQTY"].Value.ToString().Trim() != "") { pbbc.BaseQty = double.Parse(ultraGrid1.Rows[i].Cells["BASEQTY"].Value.ToString());//基础数量 } if (ultraGrid1.ActiveRow.Cells["PRICEWITHOUTTAX"].Value.ToString().Trim() != "") { pbbc.BaseQty = double.Parse(ultraGrid1.Rows[i].Cells["PRICEWITHOUTTAX"].Value.ToString());//基础单价 } if (ultraGrid1.Rows[i].Cells["ADDSUBTQTY"].Value.ToString().Trim() != "") { pbbc.AddSubtQty = double.Parse(ultraGrid1.Rows[i].Cells["ADDSUBTQTY"].Value.ToString());//加扣数量 } if (ultraGrid1.Rows[i].Cells["ADDSUBTPRICE"].Value.ToString().Trim() != "") { pbbc.AddSubtPrice = double.Parse(ultraGrid1.Rows[i].Cells["ADDSUBTPRICE"].Value.ToString());//加扣单价 } if (ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value.ToString().Trim() != "") { pbbc.BalanceQty = double.Parse(ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value.ToString());//结算数量 } if (ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value.ToString().Trim() != "") { pbbc.BalancePrice = double.Parse(ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value.ToString());//结算单价 } if (ultraGrid1.Rows[i].Cells["ADDSUBTAMT"].Value.ToString().Trim() != "") { pbbc.AddSubtAmt = double.Parse(ultraGrid1.Rows[i].Cells["ADDSUBTAMT"].Value.ToString());//加扣金额 } if (ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString().Trim() != "") { pbbc.BalanceAmt = double.Parse(ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString());//结算金额 pbbc.BalanceAmtWithoutTax = pbbc.BalanceAmt * 1.13; } pbbc.CreateUserid = UserInfo.GetUserID(); pbbc.CreateName = UserInfo.GetUserName(); pbbc.CreateTime = System.DateTime.Now; pbbc.UpdateName = null; pbbc.UpdateTime = null; pbbc.UpdateUserid = null; alpbbc.Add(pbbc);//结算明细 //结算明细说明 Hashtable hs = (Hashtable)Qhs[ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString()]; DataTable dtQty = (DataTable)hs[0]; DataTable dtPrice = (DataTable)hs[1]; DataTable dtAmt = (DataTable)hs[2]; ///加扣数量 for (int j = 0; j < dtQty.Rows.Count; j++) { PurBalanceBillCDEntity pbbcd = new PurBalanceBillCDEntity();//结算明细说明 pbbcd.Id = Guid.NewGuid().ToString(); pbbcd.BalanceCId = pbbc.Id; pbbcd.BalanceId = pbbc.BalanceId; pbbcd.AddSubtValue = double.Parse(dtQty.Rows[j]["ADDSUBTVALUE"].ToString()); pbbcd.BalanceDesc = dtQty.Rows[j]["BALANCEDESC"].ToString(); pbbcd.Validflag = "1"; pbbcd.RefStandardMType = dtQty.Rows[j]["REFSTANDARDMTYPE"].ToString().Trim();//参考结算标准类别 pbbcd.RefStandardCId = dtQty.Rows[j]["REFSTANDARDCID"].ToString(); pbbcd.RefStandardMId = dtQty.Rows[j]["REFSTANDARDMID"].ToString(); pbbcd.Type = "3";//类别 pbbcd.CreateUserid = UserInfo.GetUserID(); pbbcd.CreateName = UserInfo.GetUserName(); pbbcd.CreateTime = System.DateTime.Now; pbbcd.UpdateName = null; pbbcd.UpdateTime = null; pbbcd.UpdateUserid = null; alpbbcd.Add(pbbcd);//结算明细说明 } ///加扣单价 for (int j = 0; j < dtPrice.Rows.Count; j++) { PurBalanceBillCDEntity pbbcd = new PurBalanceBillCDEntity();//结算明细说明 pbbcd.Id = Guid.NewGuid().ToString(); pbbcd.BalanceCId = pbbc.Id; pbbcd.BalanceId = pbbc.BalanceId; pbbcd.AddSubtValue = double.Parse(dtPrice.Rows[j]["ADDSUBTVALUE"].ToString()); pbbcd.BalanceDesc = dtPrice.Rows[j]["BALANCEDESC"].ToString(); pbbcd.RefStandardMType = dtPrice.Rows[j]["REFSTANDARDMTYPE"].ToString().Trim();//参考结算标准类别 pbbcd.RefStandardCId = dtPrice.Rows[j]["REFSTANDARDCID"].ToString(); pbbcd.RefStandardMId = dtPrice.Rows[j]["REFSTANDARDMID"].ToString(); pbbcd.Validflag = "1"; pbbcd.Type = "2";//类别 pbbcd.CreateUserid = UserInfo.GetUserID(); pbbcd.CreateName = UserInfo.GetUserName(); pbbcd.CreateTime = System.DateTime.Now; pbbcd.UpdateName = null; pbbcd.UpdateTime = null; pbbcd.UpdateUserid = null; alpbbcd.Add(pbbcd);//结算明细说明 } ///加扣金额 for (int j = 0; j < dtAmt.Rows.Count; j++) { PurBalanceBillCDEntity pbbcd = new PurBalanceBillCDEntity();//结算明细说明 pbbcd.Id = Guid.NewGuid().ToString(); pbbcd.BalanceCId = pbbc.Id; pbbcd.BalanceId = pbbc.BalanceId; pbbcd.AddSubtValue = double.Parse(dtAmt.Rows[j]["ADDSUBTVALUE"].ToString()); pbbcd.BalanceDesc = dtAmt.Rows[j]["BALANCEDESC"].ToString(); pbbcd.RefStandardMType = dtAmt.Rows[j]["REFSTANDARDMTYPE"].ToString().Trim();//参考结算标准类别 pbbcd.RefStandardCId = dtAmt.Rows[j]["REFSTANDARDCID"].ToString(); pbbcd.RefStandardMId = dtAmt.Rows[j]["REFSTANDARDMID"].ToString(); pbbcd.Validflag = "1"; pbbcd.Type = "4";//类别 pbbcd.CreateUserid = UserInfo.GetUserID(); pbbcd.CreateName = UserInfo.GetUserName(); pbbcd.CreateTime = System.DateTime.Now; pbbcd.UpdateName = null; pbbcd.UpdateTime = null; pbbcd.UpdateUserid = null; alpbbcd.Add(pbbcd);//结算明细说明 } } } if (alpbbc.Count < 1) { MessageUtil.ShowTips("请选择入库单行信息结算"); return; } CoreResult crt = this.execute("com.hnshituo.pur.balance.service.BalanceBillMService", "AddBalance", new object[] { pbbm, alpbbc, alpbbcd }); if (crt.Resultcode != 0) { MessageUtil.ShowTips("结算失败 " + crt.Resultmsg); return; } MessageUtil.ShowTips("结算成功,结算单号:" + crt.Resultmsg); } private void getData() { for (int i = 0; i < ultraGrid1.Rows.Count; i++) { double bINNUM = 0;//入库量 if (ultraGrid1.Rows[i].Cells["INNUM"].Value != null) { double.TryParse(ultraGrid1.Rows[i].Cells["INNUM"].Value.ToString(), out bINNUM); } double bINVOICEDQTY = 0;//已结算量 if (ultraGrid1.Rows[i].Cells["INVOICEDQTY"].Value != null) { double.TryParse(ultraGrid1.Rows[i].Cells["INVOICEDQTY"].Value.ToString(), out bINVOICEDQTY); } ultraGrid1.Rows[i].Cells["BASEQTY"].Value = bINNUM - bINVOICEDQTY;//基础数量 ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value = ultraGrid1.Rows[i].Cells["BASEQTY"].Value;//结算数量 ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value = ultraGrid1.Rows[i].Cells["PRICEWITHOUTTAX"].Value;//结算单价 double bBALANCEQTY = 0;//结算数量 if (ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value != null) { double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value.ToString(), out bBALANCEQTY); } double bBALANCEPRICE = 0;//结算单价 if (ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value != null) { double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value.ToString(), out bBALANCEPRICE); } ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value = bBALANCEQTY * bBALANCEPRICE;//含税金额 } ultraGrid1.UpdateData(); double summer = 0;//含税总金额 for (int i = 0; i < ultraGrid1.Rows.Count; i++) { if ((Boolean)ultraGrid1.Rows[i].Cells["Check"].Value) { if (ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString().Trim() != "") { double d = 0; double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString(), out d); summer += d; } } } txt_BALANCE_AMT_WITHOUT_TAX.Text = summer.ToString(); //不含税总金额 txt_TAX_AMT.Text = (summer * 0.13).ToString();//税额 txt_BALANCE_AMT_TAX.Text = (summer * 1.13).ToString();//含税总金额 } private void ultraGrid1_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { ultraGrid1.UpdateData(); //如果已结算量大于入库量,则不让其结算 if (e.Cell.Column.Key == "Check") { if ((Boolean)(e.Cell.Value)) { double bINNUM = 0;//入库量 if (e.Cell.Row.Cells["INNUM"].Value != null) { double.TryParse(e.Cell.Row.Cells["INNUM"].Value.ToString(), out bINNUM); } double bINVOICEDQTY = 0;//已结算量 if (e.Cell.Row.Cells["INVOICEDQTY"].Value != null) { double.TryParse(e.Cell.Row.Cells["INVOICEDQTY"].Value.ToString(), out bINVOICEDQTY); } if (bINVOICEDQTY >= bINNUM) { MessageUtil.ShowTips("已结算量必须小于入库量才能选择结算"); e.Cell.Value = false; } } } } private void ultraGrid1_AfterCellUpdate(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (ultraGrid1.ActiveRow != null) { if (e.Cell.Column.Key == "BASEQTY")//基础数量 { double b_BASEQTY = 0;//基础数量 double.TryParse(e.Cell.Value.ToString(), out b_BASEQTY); double b_ADDSUBTQTY = 0;//加减数量 double.TryParse(e.Cell.Row.Cells["ADDSUBTQTY"].Value.ToString(), out b_ADDSUBTQTY); //结算数量 e.Cell.Row.Cells["BALANCEQTY"].Value = b_BASEQTY + b_ADDSUBTQTY; //结算单价 double d_BALANCEPRICE = 0; if (ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value != null) { double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value.ToString(), out d_BALANCEPRICE); } //加减金额 double d_ADDSUBTAMT = 0;//加减金额 if (ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value != null) double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT); ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = (b_BASEQTY + b_ADDSUBTQTY) * d_BALANCEPRICE + d_ADDSUBTAMT;//计算结算单总金额 } if (e.Cell.Column.Key == "BALANCEAMT")//计算含税总金额和不含税总金额 { double summer = 0;//含税总金额 for (int i = 0; i < ultraGrid1.Rows.Count; i++) { if (ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString().Trim() != "") { double d = 0; double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString(), out d); summer += d; } } txt_BALANCE_AMT_WITHOUT_TAX.Text = summer.ToString(); //不含税总金额 txt_TAX_AMT.Text = (summer * 0.13).ToString();//税额 txt_BALANCE_AMT_TAX.Text = (summer * 1.13).ToString();//含税总金额 } } } /// /// 按钮控件 /// /// /// private void barsManagerButon_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key.ToString()) { case "Query": { } break; case "conFirmation": { if (ultraGrid1.Rows.Count < 1) { MessageUtil.ShowTips("没有入库单,不能进行结算操作"); return; } addBalance(); } break; case "ESC": { this.Close(); } break; } } /// /// 加减额度改变事件 /// /// /// private void ultraGrid2_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (ultraGrid1.Rows.Count < 1) { return; } if (sender.Equals(ultraGrid2)) { ultraGrid2.UpdateData(); //保存当前结算单行加减数量表 Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()]; hs[0] = dataTable2.Copy(); } else if (sender.Equals(ultraGrid3)) { ultraGrid3.UpdateData(); //保存当前结算单行加减数量表 Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()]; hs[1] = dataTable3.Copy(); } else if (sender.Equals(ultraGrid4)) { ultraGrid4.UpdateData(); //保存当前结算单行加减数量表 Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()]; hs[2] = dataTable4.Copy(); } } /// /// 加减额度更新事件 /// /// /// private void ultraGrid2_AfterCellUpdate(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (ultraGrid1.ActiveRow != null) { if (sender.Equals(ultraGrid2))//数量 { if (e.Cell.Column.Key == "ADDSUBTVALUE")//输入字段为数量加减额度 { double summer = 0; for (int i = 0; i < ultraGrid2.Rows.Count; i++) { if (ultraGrid2.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString().Trim() != "") { double d = 0; double.TryParse(ultraGrid2.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString(), out d); summer += d; } } ultraGrid1.ActiveRow.Cells["ADDSUBTQTY"].Value = summer.ToString();//结算单加减数量 //改变结算单的 结算数量 和 结算金额 //结算数量=基础数量+加减数量 double d_BASEQTY = 0;//基础数量 double.TryParse(ultraGrid1.ActiveRow.Cells["BASEQTY"].Value.ToString(), out d_BASEQTY); ultraGrid1.ActiveRow.Cells["BALANCEQTY"].Value = summer + d_BASEQTY;//结算数量 //结算金额=结算数量*结算单价+加减金额 double d_BALANCEPRICE = 0;//结算单价 double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value.ToString(), out d_BALANCEPRICE); //加减金额 double d_ADDSUBTAMT = 0;//加减金额 double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT); ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = (summer + d_BASEQTY) * d_BALANCEPRICE + d_ADDSUBTAMT;//计算结算单总金额 } } else if (sender.Equals(ultraGrid3))//单价 { if (e.Cell.Column.Key == "ADDSUBTVALUE")//输入字段为单价加减额度 { double summer = 0; for (int i = 0; i < ultraGrid3.Rows.Count; i++) { if (ultraGrid3.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString().Trim() != "") { double d = 0; double.TryParse(ultraGrid3.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString(), out d); summer += d; } } ultraGrid1.ActiveRow.Cells["ADDSUBTPRICE"].Value = summer.ToString();//加减单价 //改变结算单的 结算单价 和 结算金额 //结算单价=基础单价+加减单价 double d_PRICEWITHTAX = 0;//基础单价 double.TryParse(ultraGrid1.ActiveRow.Cells["PRICEWITHOUTTAX"].Value.ToString(), out d_PRICEWITHTAX); ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value = summer + d_PRICEWITHTAX;//结算单价 //结算金额=结算数量*结算单价+加减金额 double d_BALANCEQTY = 0;//结算数量 double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEQTY"].Value.ToString(), out d_BALANCEQTY); //加减金额 double d_ADDSUBTAMT = 0;//加减金额 double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT); ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = d_BALANCEQTY * (summer + d_PRICEWITHTAX) + d_ADDSUBTAMT;//计算结算单总金额 } } else if (sender.Equals(ultraGrid4))//金额 { if (e.Cell.Column.Key == "ADDSUBTVALUE")//输入字段为金额加减额度 { double summer = 0; for (int i = 0; i < ultraGrid4.Rows.Count; i++) { if (ultraGrid4.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString().Trim() != "") { double d = 0; double.TryParse(ultraGrid4.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString(), out d); summer += d; } } //改变结算单的 结算金额 //结算金额=结算金额-原加减金额+新加减金额 double d_BALANCEAMT = 0;//新结算金额 double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value.ToString(), out d_BALANCEAMT); double d_ADDSUBTAMT = 0;//原加减金额 double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT); ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = d_BALANCEAMT - d_ADDSUBTAMT + summer;//计算结算单总金额 ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value = summer.ToString();//计算结算单加减金额 } } } } /// /// 选中结算行事件 /// /// /// private void ultraGrid1_AfterRowActivate(object sender, EventArgs e) { //保存当前结算单行加减数量表 Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()]; DataTable dt = (DataTable)hs[0]; GridHelper.CopyDataToDatatable(ref dt, ref dataTable2, true); dt = (DataTable)hs[1]; GridHelper.CopyDataToDatatable(ref dt, ref dataTable3, true); dt = (DataTable)hs[2]; GridHelper.CopyDataToDatatable(ref dt, ref dataTable4, true); } } }