#region 功能说明 /* * 参数说明: * 注意事项: * 更新记录: */ #endregion using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_MISPRO.Utility; using GThinking.N_PUBLIC; using GThinking.N_MODEL.Dialog; using GThinking.N_MISPRO.TableCache; using System.Collections.Generic; using GThinking.N_MISPRO.Caching; namespace GThinking.N_XLXSBJ { public partial class TZYZBJInfo : SingleCardBase { XLXSTZYZ entity = new XLXSTZYZ(); #region Page类事件继承 protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860005; this.UMName = "线缆销售报价报价单调价因子"; this.CurMaster = Master; this.CurEntity = entity; this.PageHeight = 500; this.PageWidth = 500; this.Master.EnableInsertBtn = false; this.Master.EnableCopyBtn = false; this.Master.EnableDeleteBtn = false; if (!this.IsPostBack) { InitControls(); } base.InitPage(); } #endregion #region 模板事件继承 protected override void SetControlState() { base.SetControlState(); txtWHR.Enabled = false; datWHSJ.Enabled = false; txtYZID.Enabled = false; cbxMXBH.Enabled = false; cbxTYZZFS.Enabled = false; //是否注册100860122|报价产品辐照工序模块且配置辐照费因子ID if (DSActiveModule.IsActiveModule(100860122)) { chkSFFZF.Visible = true; } else chkSFFZF.Visible = false; if (ControlState != TControlState.ctsBrowse) { if (cbxTJYS.SelectedValue.Equals("A")) { chkSFFZF.Enabled = true; } else { chkSFFZF.Enabled = false; } if (YZIDisUsed(txtYZID.Text.Trim())) cbxTJLX.Enabled = false; else cbxTJLX.Enabled = true; //因子值只读控制只读事务 if (chkYZZZD.Checked) { cbxZDWPIDLIST.Enabled = true; } else { cbxZDWPIDLIST.Enabled = false; } } if (ControlState == TControlState.ctsEdit) { if (cbxTJLX.SelectedValue.Trim().Equals("2"))//调因子值 { cbxTYZZYZID.Enabled = false; chkHCBZ.Checked = false; chkHCBZ.Enabled = false; chkBCYTJ.Checked = false; chkBCYTJ.Enabled = false; cbxWPIDLIST.Enabled = false; } else//调价格 { cbxTYZZYZID.Enabled = true; chkHCBZ.Enabled = true; chkBCYTJ.Enabled = true; cbxWPIDLIST.Enabled = true; } } if (cbxJJFS.SelectedValue.Trim().Equals("MX") || cbxJJFS.SelectedValue.Trim().Equals("DX")) { txtZDYZZ.DecimalPlaces = 4; txtZXYZZ.DecimalPlaces = 4; } else { txtZDYZZ.DecimalPlaces = 2; txtZXYZZ.DecimalPlaces = 2; } if (!cbxTJYS.SelectedValue.Trim().Equals("7") && !cbxTJYS.SelectedValue.Trim().Equals("E") && !cbxTJYS.SelectedValue.Trim().Equals("A")) cbxMRTBYZ.Enabled = false; } protected override void LoadRecord() { if (!IsPostBack) { if (string.IsNullOrEmpty(PageParam.GetRTrimString("XLXSTZYZ_MXBH"))) { entity.Param.Add("OLD_XLXSTZYZ_MXBH", ""); } else { entity.Param.Add("OLD_XLXSTZYZ_MXBH", PageParam.GetRTrimString("XLXSTZYZ_MXBH")); } if (string.IsNullOrEmpty(PageParam.GetRTrimString("XLXSTZYZ_YZID"))) { entity.Param.Add("OLD_XLXSTZYZ_YZID", ""); } else { entity.Param.Add("OLD_XLXSTZYZ_YZID", PageParam.GetRTrimString("XLXSTZYZ_YZID")); } } else { entity.Param.Add("OLD_XLXSTZYZ_MXBH", txtOLD_MXBH.Value); entity.Param.Add("OLD_XLXSTZYZ_YZID", txtOLD_YZID.Value); } base.LoadRecord(); txtOLD_MXBH.Value = cbxMXBH.Text.Trim(); txtOLD_YZID.Value = txtYZID.Text.Trim(); txtOLD_YZMC.Value = txtYZMC.Text.Trim(); txtOLD_TJYZID.Value = cbxTJYZID.SelectedValue.Trim(); txtOLD_TYZZYZID.Value = cbxTYZZYZID.SelectedValue.Trim(); txtOLD_JJFS.Value = cbxJJFS.SelectedValue.Trim(); } protected override void OnNewRecorder() { base.OnNewRecorder(); cbxMXBH.Text = "BJD"; txtXSXH.Value = getNewXH(); chkBCYTJ.Checked = false; chkHCBZ.Checked = false; cbxTJLX.SelectedValue = "1"; txtWHR.Text = tSession.UserName; txtWHRID.Value = tSession.UserId; datWHSJ.Text = CMISproConvert.ConvertTime(DateTime.Now); } protected override void OnCopyRecorder() { base.OnCopyRecorder(); cbxMXBH.Text = "BJD"; txtXSXH.Value = getNewXH(); txtWHR.Text = tSession.UserName; txtWHRID.Value = tSession.UserId; datWHSJ.Text = CMISproConvert.ConvertTime(DateTime.Now); } protected override bool DataLogicValid() { if (!base.DataLogicValid()) return false; if (cbxTYZZYZID.SelectedValue.Split(',').Length > 2) { ShowMessage("调因子值方式选择因子大于2个,不允许保存!"); return false; } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Clear(); if ((ControlState == TControlState.ctsInsert) || (ControlState == TControlState.ctsCopy)) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSTZYZ where XLXSTZYZ_MXBH='{0}' and XLXSTZYZ_YZID='{1}' ", cbxMXBH.Text, txtYZID.Text.Trim()))) { ShowMessage("已存在编号相同的记录,不允许保存!"); return false; } if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSTZYZ where XLXSTZYZ_MXBH='{0}' and XLXSTZYZ_YZMC='{1}' ", cbxMXBH.Text, txtYZMC.Text.Trim()))) { ShowMessage("调价因子名称已存在,不允许保存!"); return false; } } if (ControlState == TControlState.ctsEdit) { if (!txtYZMC.Text.Trim().Equals(txtOLD_YZMC.Value.Trim())) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSTZYZ where XLXSTZYZ_MXBH='{0}' and XLXSTZYZ_YZMC='{1}' ", cbxMXBH.Text, txtYZMC.Text.Trim()))) { ShowMessage("调价因子名称已存在,不允许保存!"); return false; } } } if (cbxJGBID.ItemsCount > 0) { if (cbxJGBID.SelectedValue.Trim().Equals("")) { ShowMessage("调价表为空,不允许保存!"); return false; } } if (!cbxTJYZID.SelectedValue.Trim().Equals(txtYZID.Text.Trim())) { if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSTZYZ where XLXSTZYZ_YZID='{0}' and XLXSTZYZ_JJFS='{1}'", cbxTJYZID.SelectedValue.Trim(), cbxJJFS.SelectedValue.Trim()))) { ShowMessage(cbxTJYZID.SelectedValue.Trim() + "因子的调价方式与当前" + txtYZID.Text.Trim() + "因子的调价方式不一致,不允许保存!"); return false; } } //若调价因素选择“6|报价数量区间调价米数/报价数量”,保存时控制调价方式必须是“JD|加点” if (cbxTJYS.SelectedValue.Trim().Equals("6")) { if (!cbxJJFS.SelectedValue.Trim().Equals("JD")) { ShowMessage("当前调价因素暂时只支持“乘以(1+加点(%))”一种调价方式!"); return false; } } //若调价因素选择“F|导体材料&电压&芯线结构&报价数量区间/报价数量”,保存时控制调价方式必须是“JJ|加价” if (cbxTJYS.SelectedValue.Trim().Equals("F") || cbxTJYS.SelectedValue.Trim().Equals("H") || cbxTJYS.SelectedValue.Trim().Equals("K")) { if (!cbxJJFS.SelectedValue.Trim().Equals("JJ")) { ShowMessage("当前调价因素暂时只支持“加价(元)”一种调价方式!"); return false; } } if (cbxTJMK.SelectedValue.Equals("102585000")) { if (!cbxJJFS.SelectedValue.Trim().Equals("JJ")) { ShowMessage("当前调价模块暂时只支持“加价(元)”一种调价方式!"); return false; } } if (chkABJCPJYYZZ.Checked) { if (!cbxTJYS.SelectedValue.Trim().Equals("F") && !cbxTJYS.SelectedValue.Trim().Equals("E") && !cbxTJYS.SelectedValue.Trim().Equals("G") && !cbxTJYS.SelectedValue.Trim().Equals("H") && !cbxTJYS.SelectedValue.Trim().Equals("2") && !cbxTJYS.SelectedValue.Trim().Equals("3") && !cbxTJYS.SelectedValue.Trim().Equals("6")) { ShowMessage("按报价产品校验因子值仅调价因素包含报价数量才可以勾选!"); return false; } } //校验 /* select XLXSBJFLYZ_BJFLID,XLXSBJFLYZ_YZID,XLXSTZYZ_JJFS, case when XLXSTZYZ_JJFS= 'JJ' then 0 else 1 end as CCC,XLXSTZYZ_XSXH from XLXSBJFLYZ left join XLXSTZYZ on XLXSTZYZ_YZID = XLXSBJFLYZ_YZID where 1=1 and isnull(XLXSTZYZ_BCYTJ,'N') <> 'Y' AND XLXSBJFLYZ_BJFLID in ( select XLXSBJFLYZ_BJFLID from XLXSBJFLYZ left join XLXSTZYZ on XLXSTZYZ_YZID = XLXSBJFLYZ_YZID where 1=1 and isnull(XLXSTZYZ_BCYTJ,'N') <> 'Y' AND XLXSTZYZ_JJFS = 'JJ' ) and XLXSBJFLYZ_YZID <>' ' order by XLXSBJFLYZ_BJFLID,XLXSTZYZ_XSXH */ Dictionary dicXLXSTZYZ = new Dictionary(); int flag = 0; string sBJFLID = ""; sql.Clear(); sql.Add(" select distinct XLXSBJFLYZ_BJFLID from XLXSBJFLYZ "); sql.Add(" left join XLXSTZYZ on XLXSTZYZ_YZID = XLXSBJFLYZ_YZID "); sql.Add(" where 1=1 "); //反向逻辑存在需要把不参与调价的加进来 sql.Add(" and XLXSBJFLYZ_YZID=:pYZID "); sql.Add(" order by XLXSBJFLYZ_BJFLID "); sql.ParamByName("pYZID").Value = txtYZID.Text.Trim(); DataSet dsBJDYZ = dberp.OpenDataSet(sql); if (dsBJDYZ.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsBJDYZ.Tables[0].Rows.Count; i++) { sBJFLID = dsBJDYZ.Tables[0].Rows[i]["XLXSBJFLYZ_BJFLID"].ToString().Trim(); if (IsQYGS(sBJFLID)) continue; dicXLXSTZYZ.Clear(); sql.Clear(); sql.Add(" select XLXSBJFLYZ_YZID,XLXSTZYZ_JJFS,XLXSTZYZ_XSXH from XLXSBJFLYZ "); sql.Add(" left join XLXSTZYZ on XLXSTZYZ_YZID = XLXSBJFLYZ_YZID "); sql.Add(" where XLXSBJFLYZ_BJFLID =:pJGBID and XLXSTZYZ_TJLX='1' "); sql.Add(" and XLXSBJFLYZ_YZID <> :pYZID "); sql.Add(" and isnull(XLXSTZYZ_BCYTJ,'N') <> 'Y' "); sql.Add(" order by XLXSTZYZ_XSXH "); sql.ParamByName("pJGBID").Value = sBJFLID; sql.ParamByName("pYZID").Value = txtYZID.Text.Trim(); DataSet data = dberp.OpenDataSet(sql); for (int j = 0; j < data.Tables[0].Rows.Count; j++) { //此处增加校验 if (txtXSXH.Value == CMISproConvert.StrToFloat(data.Tables[0].Rows[j]["XLXSTZYZ_XSXH"].ToString().Trim())) { if (CMISproConvert.StrToFloat(txtYZID.Text.Trim().Replace("BJ", "")) < CMISproConvert.StrToFloat(data.Tables[0].Rows[j]["XLXSBJFLYZ_YZID"].ToString().Trim().Replace("BJ", "")) && chkBCYTJ.Checked == false) { dicXLXSTZYZ.Add(txtYZID.Text.Trim(), cbxJJFS.SelectedValue.Trim()); } dicXLXSTZYZ.Add(data.Tables[0].Rows[j]["XLXSBJFLYZ_YZID"].ToString().Trim(), data.Tables[0].Rows[j]["XLXSTZYZ_JJFS"].ToString().Trim()); } else if (txtXSXH.Value < CMISproConvert.StrToFloat(data.Tables[0].Rows[j]["XLXSTZYZ_XSXH"].ToString().Trim())) { if (!dicXLXSTZYZ.ContainsKey(txtYZID.Text.Trim()) && chkBCYTJ.Checked == false) { dicXLXSTZYZ.Add(txtYZID.Text.Trim(), cbxJJFS.SelectedValue.Trim()); } dicXLXSTZYZ.Add(data.Tables[0].Rows[j]["XLXSBJFLYZ_YZID"].ToString().Trim(), data.Tables[0].Rows[j]["XLXSTZYZ_JJFS"].ToString().Trim()); } else { dicXLXSTZYZ.Add(data.Tables[0].Rows[j]["XLXSBJFLYZ_YZID"].ToString().Trim(), data.Tables[0].Rows[j]["XLXSTZYZ_JJFS"].ToString().Trim()); } } List lst = new List(); lst.Clear(); //如果是扣点/加点,则加入 1 如果是加价则加入 0,最终形成:空或者01或者10或者1或者0,不能形成101形式或者010形式或者1010等大于2个数据的形式 foreach (KeyValuePair kvp in dicXLXSTZYZ) { if (kvp.Value.Equals("JJ")) { if (lst.Count == 0) { lst.Add("0"); } else if (lst[lst.Count - 1] == "1") { lst.Add("0"); } else if (lst[lst.Count - 1] == "0") { //不处理 } } else { //JD KD MX if (lst.Count == 0) { lst.Add("1"); } else if (lst[lst.Count - 1] == "1") { //不处理 } else if (lst[lst.Count - 1] == "0") { lst.Add("1"); } } } if (lst.Count >= 3) { flag = 1; break; } } if (1 == flag) { ShowMessage("当前因子在报价分类【" + sBJFLID + "|" + getBJFLMC(sBJFLID) + "】不满足“加价因子必须全部在加点/扣点因子之前或者之后”规则,不允许调整顺序!"); return false; } } string sMRTJFW = "," + drpMRTJFW.SelectedValue.Trim() + ","; if (sMRTJFW.Contains(",2,") && sMRTJFW.Contains(",3,")) { ShowMessage("默认调价范围不允许同时选择外购产品和非外购产品!"); return false; } if (!cbxTJYS.SelectedValue.Trim().Equals("") && !drpMRTJFW.SelectedValue.Trim().Equals("")) { ShowMessage("调价因素不为空时,默认调价范围不允许设置!"); return false; } if (!cbxTJYS.SelectedValue.Trim().Equals("") && !cbxTJMK.SelectedValue.Trim().Equals("0") && !cbxTJMK.SelectedValue.Trim().Equals("")) { ShowMessage("调价因素不为空时,调价模块不允许设置!"); return false; } if (cbxTJMK.SelectedValue.Trim().Equals("100860080") && !cbxJJFS.SelectedValue.Trim().Equals("JJ")) { ShowMessage("调价模块为线缆销售报价单盘费时,调价方式必须为“加价(元)”!"); return false; } //100860124|按包装长度包装方式调盘费 if (cbxTJMK.SelectedValue.Trim().Equals("100860124") && !cbxJJFS.SelectedValue.Trim().Equals("JJ")) { ShowMessage("调价模块为按包装长度包装方式调盘费时,调价方式必须为“加价(元)”!"); return false; } //100860162|按产品外径报价数量区间调盘费 if (cbxTJMK.SelectedValue.Trim().Equals("100860162") && !cbxJJFS.SelectedValue.Trim().Equals("JJ")) { ShowMessage("调价模块为按产品外径报价数量区间调盘费时,调价方式必须为“加价(元)”!"); return false; } if (cbxTJMK.SelectedValue.Trim().Equals("100860124") || cbxTJMK.SelectedValue.Trim().Equals("100860162")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSTZYZ WHERE XLXSTZYZ_MXBH='BJD' AND XLXSTZYZ_YZID<>'{0}' AND XLXSTZYZ_TJMDID IN (100860124,100860080,100860162)", txtYZID.Text.Trim()))) { ShowMessage("存在其他调价因子调价模块为线缆销售报价单盘费、按包装长度包装方式调盘费、按产品外径报价数量区间调盘费,不允许保存!"); return false; } } if (cbxTJMK.SelectedValue.Trim().Equals("100860080")) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSTZYZ WHERE XLXSTZYZ_MXBH='BJD' AND XLXSTZYZ_YZID<>'{0}' AND XLXSTZYZ_TJMDID IN (100860124,100860162)", txtYZID.Text.Trim()))) { ShowMessage("存在其他调价因子调价模块为按包装长度包装方式调盘费,不允许保存!"); return false; } } if (cbxJJFS.SelectedValue.Trim() == "SX") { string sSQL = string.Format("select 1 from XLXSBJFL left join XLXSBJFLYZ on XLXSBJFLYZ_BJFLID=XLXSBJFL_BJFLID where XLXSBJFLYZ_YZID='{0}' and isnull(XLXSBJFL_TZQCPBJGS,' ')<>' '", txtYZID.Text.Trim()); if (CMISproDataBase.ExistsRecord("DBERP", sSQL)) { ShowMessage("存在启用公式的报价分类使用当前调价因子,不允许修改调价方式为【上点除、下点乘】!"); return false; } } if (cbxTJMK.SelectedValue.Trim().Equals("100860080")) { if (XLBJDUtils.GetXLXSBJPZXX(100860000).XLXSBJPZ_PFBJRBJ=="Y") { ShowMessage("已配置盘费不计入报价,不允许配置盘费因子!"); return false; } } if (chkBJSDTZFSYZZ.Checked) { sql.Clear(); sql.Add(" select XLXSTZYZ_YZMC from XLXSTZYZ where XLXSTZYZ_MXBH = 'BJD' and isnull(XLXSTZYZ_BJSDTZFSYZZ,'N') = 'Y' and XLXSTZYZ_YZID <> :pYZID ");//SQL语句自测:刘青棚 2025/04/01 23:30:00 sql.ParamByName("pYZID").Value = txtYZID.Text.Trim(); dsBJDYZ = dberp.OpenDataSet(sql); if (dsBJDYZ.Tables[0].Rows.Count>0) { ShowMessage(dsBJDYZ.Tables[0].Rows[0]["XLXSTZYZ_YZMC"].ToString().Trim() + "已勾选报价手动调整反算因子值,不允许重复勾选!"); return false; } } return true; } protected override bool Master_BeforeSaveAction(object sender, EventArgs e) { if (!base.Master_BeforeSaveAction(sender, e)) return false; txtWHR.Text = tSession.UserName; txtWHRID.Value = tSession.UserId; datWHSJ.Text = CMISproConvert.ConvertTime(System.DateTime.Now); if ((ControlState == TControlState.ctsInsert) || (ControlState == TControlState.ctsCopy)) { txtOLD_MXBH.Value = cbxMXBH.Text.Trim(); txtOLD_YZID.Value = txtYZID.Text.Trim(); } return true; } protected override void AfterSave(TDatabase db, ref bool ActionIsDone) { if (cbxJGBID.ItemsCount == 0) { //新增一条“00000000|价格表调价因子价格表”记录 string sJGBID = "00000000"; if (!cbxTJYS.SelectedValue.Trim().Equals("")) { sJGBID = cbxTJYS.SelectedValue.Trim() + "1".PadLeft(8 - cbxTJYS.SelectedValue.Trim().Length, '0'); } TSQL SQL = new TSQL(db); SQL.Add("insert into XLXSJGB(XLXSJGB_JGBID,XLXSJGB_YXQS,XLXSJGB_YXQZ,XLXSJGB_JGBMC,XLXSJGB_WHRID,XLXSJGB_WHR,XLXSJGB_WHSJ,XLXSJGB_MXBH,XLXSJGB_TJYS)"); SQL.Add(" values(:pJGBID,null,null,:pJGBMC,:pWHRID,:pWHR,:pWHSJ,'BJD',:pTJYS)"); SQL.ParamByName("pJGBID").Value = sJGBID; string sJGBMC = ""; if (cbxTJYS.SelectedValue.Trim().Equals("1")) sJGBMC = "报价单调价因子价格表-付款方式"; else if (cbxTJYS.SelectedValue.Trim().Equals("2")) sJGBMC = "报价单调价因子价格表-导体材料&电压区间&报价数量区间"; else if (cbxTJYS.SelectedValue.Trim().Equals("3")) sJGBMC = "报价单调价因子价格表-产品用途&电压等级分类&报价数量区间"; else if (cbxTJYS.SelectedValue.Trim().Equals("4")) sJGBMC = "报价单调价因子价格表-型号"; else if (cbxTJYS.SelectedValue.Trim().Equals("5")) sJGBMC = "报价单调价因子价格表-销售区域&型号&标准&电压&主芯截面范围"; else if (cbxTJYS.SelectedValue.Trim().Equals("6")) sJGBMC = "报价单调价因子价格表-报价数量区间调价米数/报价数量"; else if (cbxTJYS.SelectedValue.Trim().Equals("7")) sJGBMC = "报价单调价因子价格表-型号&电压等级&芯线结构&主芯截面范围"; else if (cbxTJYS.SelectedValue.Trim().Equals("8")) sJGBMC = "报价单调价因子价格表-付款期限"; else if (cbxTJYS.SelectedValue.Trim().Equals("9")) sJGBMC = "报价单调价因子价格表-导体材料&产品用途&电压等级分类&产品特性"; else if (cbxTJYS.SelectedValue.Trim().Equals("A")) sJGBMC = "报价单调价因子价格表-型号&规格&电压&标准"; else if (cbxTJYS.SelectedValue.Trim().Equals("B")) sJGBMC = "报价单调价因子价格表-销售单位"; else if (cbxTJYS.SelectedValue.Trim().Equals("C")) sJGBMC = "报价单调价因子价格表-产品目录&主芯截面范围&产品特性调"; else if (cbxTJYS.SelectedValue.Trim().Equals("D")) sJGBMC = "报价单调价因子价格表-颜色&主芯截面范围"; else if (cbxTJYS.SelectedValue.Trim().Equals("E")) sJGBMC = "报价单调价因子价格表-型号&电压&主芯截面范围&报价数量区间"; else if (cbxTJYS.SelectedValue.Trim().Equals("F")) sJGBMC = "报价单调价因子价格表-导体材料&电压&芯线结构&报价数量区间加价/报价数量"; else if (cbxTJYS.SelectedValue.Trim().Equals("G")) sJGBMC = "报价单调价因子价格表-电压&芯线结构&导体&主芯截面&报价数量"; else if (cbxTJYS.SelectedValue.Trim().Equals("H")) sJGBMC = "报价单调价因子价格表-型号&电压等级&颜色&主芯截面范围&报价数量区间加价/报价数量"; else if (cbxTJYS.SelectedValue.Trim().Equals("I")) sJGBMC = "报价单调价因子价格表-工艺分类&导体类型&电压等级&主芯截面范围"; else if (cbxTJYS.SelectedValue.Trim().Equals("J")) sJGBMC = "报价单调价因子价格表-线缆特征类型&特征"; else if (cbxTJYS.SelectedValue.Trim().Equals("K")) sJGBMC = "报价单调价因子价格表-导体类型&电压等级/材料重量"; else if (cbxTJYS.SelectedValue.Trim().Equals("")) sJGBMC = "报价单调价因子价格表"; else sJGBMC = "报价单调价因子价格表-自定义"; SQL.ParamByName("pJGBMC").Value = sJGBMC; SQL.ParamByName("pWHRID").Value = tSession.UserId; SQL.ParamByName("pWHR").Value = tSession.UserName; SQL.ParamByName("pWHSJ").Value = DateTime.Now; SQL.ParamByName("pTJYS").Value = cbxTJYS.SelectedValue.Trim().Equals("") ? " " : cbxTJYS.SelectedValue.Trim(); db.ExecSQL(SQL); db.ExecSQL(string.Format("update XLXSTZYZ set XLXSTZYZ_JGBID='{0}' where XLXSTZYZ_MXBH='{1}' and XLXSTZYZ_YZID='{2}'", sJGBID, cbxMXBH.Text.Trim(), txtYZID.Text.Trim())); cbxJGBID.Items.Add(new ListItem(sJGBID + "|--至--|" + sJGBMC, sJGBID)); cbxJGBID.SelectedValue = sJGBID; FormAreaUpdate(); } base.AfterSave(db, ref ActionIsDone); } protected override bool Master_AfterSaveAction(object sender, EventArgs e) { CacheNotify.TableIsUpdated("DBERP", "XLXSTZYZ"); if (NeedChangeJSGS()) { TDatabase db = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(db); string sMessage = string.Empty; sql.Clear(); sql.Add("select XLXSBJFLYZ_BJFLID,XLXSBJFL_BJFLMC from XLXSBJFLYZ left join XLXSBJFL on XLXSBJFLYZ_BJFLID=XLXSBJFL_BJFLID where XLXSBJFLYZ_YZID=:pYZID and isnull(XLXSBJFL_TZQCPBJGS,' ') <> ' ' "); sql.ParamByName("pYZID").Value = txtYZID.Text.Trim(); DataSet ds = db.OpenDataSet(sql); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sBJFLID = ds.Tables[0].Rows[i]["XLXSBJFLYZ_BJFLID"].ToString().Trim(); string sBJFLMC = ds.Tables[0].Rows[i]["XLXSBJFL_BJFLMC"].ToString().Trim(); string sTZQCPBJGS = GetJSGS(sBJFLID); sql.Clear(); sql.Add("update XLXSBJFL set XLXSBJFL_TZQCPBJGS=:pTZQCPBJGS where XLXSBJFL_BJFLID=:pBJFLID"); sql.ParamByName("pTZQCPBJGS").Value = sTZQCPBJGS; sql.ParamByName("pBJFLID").Value = sBJFLID; db.ExecSQL(sql); sMessage += "【" + sBJFLID + "|" + sBJFLMC + "】已重新生成公式!\r\n"; } ShowMessage(sMessage); } txtOLD_MXBH.Value = cbxMXBH.Text.Trim(); txtOLD_YZID.Value = txtYZID.Text.Trim(); txtOLD_YZMC.Value = txtYZMC.Text.Trim(); txtOLD_TJYZID.Value = cbxTJYZID.SelectedValue.Trim(); txtOLD_TYZZYZID.Value = cbxTYZZYZID.SelectedValue.Trim(); txtOLD_JJFS.Value = cbxJJFS.SelectedValue.Trim(); CacheNotify.TableIsUpdated("DBERP", "XLXSJGB"); return base.Master_AfterSaveAction(sender, e); } protected override void SetComboxItems() { List jgbxx_List = XLBJDUtils.GetXLXSJGBXXList("BJD"); cbxJGBID.ClearItems(); string sTJYS = cbxTJYS.SelectedValue.Trim(); foreach (JGBMLXX jgbxx in jgbxx_List) { if (jgbxx.XLXSJGB_TJYS.Equals(sTJYS)) { string sJGBID = jgbxx.XLXSJGB_JGBID; string sYXQS = jgbxx.XLXSJGB_YXQS; string sYXQZ = jgbxx.XLXSJGB_YXQZ; string sJGBMC = jgbxx.XLXSJGB_JGBMC; if (sYXQS.Equals("")) sYXQS = "--"; else sYXQS = CMISproConvert.ConvertDate(sYXQS); if (sYXQZ.Equals("")) sYXQZ = "--"; else sYXQZ = CMISproConvert.ConvertDate(sYXQZ); if (sJGBMC.Equals("")) cbxJGBID.Items.Add(new ListItem(sJGBID + "|" + sYXQS + "至" + sYXQZ, sJGBID)); else cbxJGBID.Items.Add(new ListItem(sJGBID + "|" + sYXQS + "至" + sYXQZ + "|" + sJGBMC, sJGBID)); } } if (cbxJGBID.ItemsCount > 0) { cbxJGBID.Tag = GThinking.N_CONTROL.gtComboBox.DTagStates.Star; } else { cbxJGBID.Tag = GThinking.N_CONTROL.gtComboBox.DTagStates.None; } if (ControlState == TControlState.ctsBrowse) { TComboBox.SetComboBox("DBERP", cbxTJYZID, "select XLXSTZYZ_YZID as ID,XLXSTZYZ_YZID as Name from XLXSTZYZ where XLXSTZYZ_MXBH='BJD' order by XLXSTZYZ_XSXH,ID", false); setcbxTYZZYZID(); cbxJJFS.ClearItems(); cbxJJFS.Items.Add(new ListItem("乘以(1+加点(%))", "JD")); if (cbxTJLX.SelectedValue.Trim().Equals("2"))//调因子值 cbxJJFS.Items.Add(new ListItem("加点", "JJ")); else cbxJJFS.Items.Add(new ListItem("加价(元)", "JJ")); cbxJJFS.Items.Add(new ListItem("除以(1-扣点(%))", "KD")); cbxJJFS.Items.Add(new ListItem("乘以(系数)", "MX")); cbxJJFS.Items.Add(new ListItem("乘以(%)", "MP")); cbxJJFS.Items.Add(new ListItem("除以(系数)", "DX")); cbxJJFS.Items.Add(new ListItem("上点除、下点乘", "SX")); cbxJJFS.Items.Add(new ListItem("乘以(1-下点(%))", "MD")); cbxJJFS.Items.Add(new ListItem("除以(1+上点(%))", "DD")); } else if (ControlState == TControlState.ctsEdit) { if (cbxTJLX.SelectedValue.Trim().Equals("2"))//调因子值 { cbxTJYZID.ClearItems(); cbxTJYZID.Items.Add(new ListItem(txtYZID.Text.Trim(), txtYZID.Text.Trim())); cbxTJYZID.SelectedValue = txtYZID.Text.Trim(); cbxJJFS.ClearItems(); cbxJJFS.Items.Add(new ListItem("乘以(1+加点(%))", "JD")); cbxJJFS.Items.Add(new ListItem("加点", "JJ")); cbxJJFS.Items.Add(new ListItem("除以(1-扣点(%))", "KD")); } else//调价格 { TComboBox.SetComboBox("DBERP", cbxTJYZID, "select XLXSTZYZ_YZID as ID,XLXSTZYZ_YZID as Name from XLXSTZYZ where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_TJLX='1' order by XLXSTZYZ_XSXH,ID", false); setcbxTYZZYZID(); cbxJJFS.ClearItems(); cbxJJFS.Items.Add(new ListItem("乘以(1+加点(%))", "JD")); cbxJJFS.Items.Add(new ListItem("加价(元)", "JJ")); cbxJJFS.Items.Add(new ListItem("除以(1-扣点(%))", "KD")); cbxJJFS.Items.Add(new ListItem("乘以(系数)", "MX")); cbxJJFS.Items.Add(new ListItem("乘以(%)", "MP")); cbxJJFS.Items.Add(new ListItem("除以(系数)", "DX")); cbxJJFS.Items.Add(new ListItem("上点除、下点乘", "SX")); cbxJJFS.Items.Add(new ListItem("乘以(1-下点(%))", "MD")); cbxJJFS.Items.Add(new ListItem("除以(1+上点(%))", "DD")); } } drpMRTJFW.ClearItems(); drpMRTJFW.Items.Add(new ListItem("有表价产品", "1")); drpMRTJFW.Items.Add(new ListItem("外购产品", "2")); drpMRTJFW.Items.Add(new ListItem("非外购产品", "3")); cbxMRTBYZ.Items.Clear(); cbxMRTBYZ.Items.Add(new ListItem("", "")); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSTZYZ_YZID, XLXSTZYZ_YZMC "); SQL.Add(" from XLXSTZYZ"); SQL.Add(" where XLXSTZYZ_MXBH = 'JZJ' "); if (cbxTJYS.SelectedValue.Trim().Equals("7") || cbxTJYS.SelectedValue.Trim().Equals("E")) SQL.Add(" and XLXSTZYZ_TJYS='4' "); else if (cbxTJYS.SelectedValue.Trim().Equals("A")) SQL.Add(" and XLXSTZYZ_TJYS='1' "); else SQL.Add(" and 1<>1 "); SQL.Add("order by XLXSTZYZ_YZID,XLXSTZYZ_XSXH"); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow trow in ds.Tables[0].Rows) { string sYZID = trow["XLXSTZYZ_YZID"].ToString().Trim(); string sYZMC = trow["XLXSTZYZ_YZMC"].ToString().Trim(); cbxMRTBYZ.Items.Add(new ListItem(sYZMC, sYZID)); } } base.SetComboxItems(); } #endregion #region 自定义函数 private void InitControls() { cbxMXBH.ClearItems(); cbxMXBH.Items.Add(new ListItem("BJD")); cbxMXBH.ShowValue = false; cbxTJLX.ClearItems(); cbxTJLX.Items.Add(new ListItem("调价格", "1")); cbxTJLX.Items.Add(new ListItem("调因子值", "2")); cbxTYZZFS.ClearItems(); cbxTYZZFS.Items.Add(new ListItem("乘以(1+加点(%))", "JD")); cbxTYZZFS.Items.Add(new ListItem("加点", "JJ")); cbxTYZZFS.Items.Add(new ListItem("除以(1-扣点(%))", "KD")); cbxTYZZFS.Items.Add(new ListItem("乘以(系数)", "MX")); cbxTYZZFS.Items.Add(new ListItem("乘以(%)", "MP")); cbxTYZZFS.Items.Add(new ListItem("除以(系数)", "DX")); cbxTYZZFS.Items.Add(new ListItem("上点除、下点乘", "SX")); cbxTYZZFS.Items.Add(new ListItem("乘以(1-下点(%))", "MD")); cbxTYZZFS.Items.Add(new ListItem("除以(1+上点(%))", "DD")); cbxTJMK.ClearItems(); cbxTJMK.Items.Add(new ListItem("", "0")); if (DSActiveModule.IsActiveModule(100860071)) cbxTJMK.Items.Add(new ListItem("100860071|线缆销售报价单运费", "100860071")); if (DSActiveModule.IsActiveModule(100860080)) cbxTJMK.Items.Add(new ListItem("100860080|线缆销售报价单盘费", "100860080")); if (DSActiveModule.IsActiveModule(100860124)) cbxTJMK.Items.Add(new ListItem("100860124|按包装长度包装方式调盘费", "100860124")); if (DSActiveModule.IsActiveModule(100860162)) cbxTJMK.Items.Add(new ListItem("100860162|按产品外径报价数量区间调盘费", "100860162")); if (DSActiveModule.IsActiveModule(102577028)) cbxTJMK.Items.Add(new ListItem("102577028|中标服务费", "102577028")); if (DSActiveModule.IsActiveModule(102585000)) cbxTJMK.Items.Add(new ListItem("102585000|开机费", "102585000")); //cbxJJFS.ClearItems(); //cbxJJFS.Items.Add(new ListItem("乘以(1+加点(%))", "JD")); //cbxJJFS.Items.Add(new ListItem("加价(元)", "JJ")); //cbxJJFS.Items.Add(new ListItem("除以(1-扣点(%))", "KD")); cbxTJYS.ClearItems(); cbxTJYS.Items.Add(new ListItem("", "")); if (DSActiveModule.IsActiveModule(100860019)) cbxTJYS.Items.Add(new ListItem("1|付款方式", "1")); if (DSActiveModule.IsActiveModule(100860021)) cbxTJYS.Items.Add(new ListItem("2|导体材料&电压区间&报价数量区间", "2")); if (DSActiveModule.IsActiveModule(100860022)) cbxTJYS.Items.Add(new ListItem("3|产品用途&电压等级分类&报价数量区间", "3")); if (DSActiveModule.IsActiveModule(100860028)) cbxTJYS.Items.Add(new ListItem("4|型号", "4")); if (DSActiveModule.IsActiveModule(100860029)) cbxTJYS.Items.Add(new ListItem("5|销售区域&型号&标准&电压等级&主芯截面范围", "5")); if (DSActiveModule.IsActiveModule(100860030)) cbxTJYS.Items.Add(new ListItem("6|报价数量区间调价米数/报价数量", "6")); if (DSActiveModule.IsActiveModule(100860031)) cbxTJYS.Items.Add(new ListItem("7|型号&电压等级&芯线结构&主芯截面范围", "7")); if (DSActiveModule.IsActiveModule(100860039)) cbxTJYS.Items.Add(new ListItem("8|付款期限", "8")); if (DSActiveModule.IsActiveModule(100860040)) cbxTJYS.Items.Add(new ListItem("9|导体材料&产品用途&电压等级分类&产品特性", "9")); if (DSActiveModule.IsActiveModule(100860041)) cbxTJYS.Items.Add(new ListItem("A|型号&规格&电压&标准", "A")); if (DSActiveModule.IsActiveModule(100860054)) cbxTJYS.Items.Add(new ListItem("B|销售单位", "B")); if (DSActiveModule.IsActiveModule(100860072)) cbxTJYS.Items.Add(new ListItem("C|产品目录&主芯截面范围&产品特性", "C")); if (DSActiveModule.IsActiveModule(100860085)) cbxTJYS.Items.Add(new ListItem("D|颜色&主芯截面范围", "D")); if (DSActiveModule.IsActiveModule(100860086)) cbxTJYS.Items.Add(new ListItem("E|型号&电压&主芯截面范围&报价数量区间", "E")); if (DSActiveModule.IsActiveModule(100860089)) cbxTJYS.Items.Add(new ListItem("F|导体材料&电压&芯线结构&报价数量区间加价/报价数量", "F")); if (DSActiveModule.IsActiveModule(100860133)) cbxTJYS.Items.Add(new ListItem("G|电压&芯线结构&导体材料&主芯截面范围&报价数量区间", "G")); if (DSActiveModule.IsActiveModule(100860135)) cbxTJYS.Items.Add(new ListItem("H|型号&电压等级&颜色&主芯截面范围&报价数量区间加价/报价数量", "H")); if (DSActiveModule.IsActiveModule(100860149)) cbxTJYS.Items.Add(new ListItem("I|工艺分类&导体类型&电压等级&主芯截面范围", "I")); if (DSActiveModule.IsActiveModule(100860150)) cbxTJYS.Items.Add(new ListItem("J|线缆特征类型&特征", "J")); if (DSActiveModule.IsActiveModule(100860152)) cbxTJYS.Items.Add(new ListItem("K|导体类型&电压等级/材料重量", "K")); cbxTJYS.ShowValue = false; //TComboBox.SetComboBox("DBERP", cbxTJYZID, "select XLXSTZYZ_YZID as ID,XLXSTZYZ_YZID as Name from XLXSTZYZ where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_TJLX='1' order by XLXSTZYZ_XSXH,ID", false); //TComboBox.SetComboBox("DBERP", cbxTYZZYZID, "select XLXSTZYZ_YZID as ID,XLXSTZYZ_YZID as Name from XLXSTZYZ where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_TJLX='2' order by XLXSTZYZ_XSXH,ID", false); WorkFlowUtils.SetCheckedDropDownList_WFPROC("XLXSBJ_BJD", cbxWPIDLIST); WorkFlowUtils.SetCheckedDropDownList_WFPROC("XLXSBJ_BJD", cbxZDWPIDLIST); } private double getNewXH() { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Add("select max(XLXSTZYZ_XSXH) from XLXSTZYZ where XLXSTZYZ_MXBH like 'BJD'"); DataSet ds = dberp.OpenDataSet(SQL); if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0][0].ToString().Trim())) { return CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString()) + 100; } else { return 100; } } private string getBJFLMC(string sBJFLID) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("SELECT XLXSBJFL_BJFLMC FROM XLXSBJFL WHERE 1=1 and XLXSBJFL_BJFLID = :pBJFLID "); SQL.ParamByName("pBJFLID").Value = sBJFLID; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0].Rows[0][0].ToString().Trim(); } else { return ""; } } private bool NeedChangeJSGS() { if (txtOLD_JJFS.Value.Trim() != cbxJJFS.SelectedValue.Trim() || txtOLD_TYZZYZID.Value.Trim() != cbxTYZZYZID.SelectedValue.Trim() || txtOLD_TJYZID.Value != cbxTJYZID.SelectedValue.Trim()) return true; return false; } private bool YZIDisUsed(string sYZID) { string sSQL = string.Format("select 1 from XLXSBJFLYZ where XLXSBJFLYZ_YZID='{0}'", sYZID); if (CMISproDataBase.ExistsRecord("DBERP", sSQL)) return true; return false; } private bool IsQYGS(string sBJFLID) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJFL where XLXSBJFL_BJFLID='{0}' and isnull(XLXSBJFL_TZQCPBJGS,' ') <> ' ' ", sBJFLID))) return true; return false; } private void setcbxTYZZYZID() { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSTZYZ_YZID as ID,XLXSTZYZ_YZID as Name from XLXSTZYZ where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_TJLX='2' and XLXSTZYZ_YZID<>'" + txtYZID.Text.Trim() + "' order by XLXSTZYZ_XSXH,ID"); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { cbxTYZZYZID.ClearItems(); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string sID = ds.Tables[0].Rows[i]["ID"].ToString().Trim(); string sName = ds.Tables[0].Rows[i]["Name"].ToString().Trim(); cbxTYZZYZID.Items.Add(new ListItem(sName, sID)); } } } public static void GetTJBYZZFW(string sYZID, ref double dYZZXX, ref double dYZZSX) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Add(" select XLXSTZYZ_TJBZXYZZ,XLXSTZYZ_TJBZDYZZ from XLXSTZYZ where XLXSTZYZ_MXBH = 'BJD' and XLXSTZYZ_YZID = :pYZID "); SQL.ParamByName("pYZID").Value = sYZID; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { dYZZXX = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSTZYZ_TJBZXYZZ"].ToString().Trim()); dYZZSX = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSTZYZ_TJBZDYZZ"].ToString().Trim()); } } #endregion #region 控件事件 protected void cbxTJYS_SelectedIndexChanged(object sender, EventArgs e) { List jgbxx_List = XLBJDUtils.GetXLXSJGBXXList("BJD"); cbxJGBID.ClearItems(); string sTJYS = cbxTJYS.SelectedValue.Trim(); foreach (JGBMLXX jgbxx in jgbxx_List) { if (jgbxx.XLXSJGB_TJYS.Equals(sTJYS)) { string sJGBID = jgbxx.XLXSJGB_JGBID; string sYXQS = jgbxx.XLXSJGB_YXQS; string sYXQZ = jgbxx.XLXSJGB_YXQZ; string sJGBMC = jgbxx.XLXSJGB_JGBMC; if (sYXQS.Equals("")) sYXQS = "--"; else sYXQS = CMISproConvert.ConvertDate(sYXQS); if (sYXQZ.Equals("")) sYXQZ = "--"; else sYXQZ = CMISproConvert.ConvertDate(sYXQZ); if (sJGBMC.Equals("")) cbxJGBID.Items.Add(new ListItem(sJGBID + "|" + sYXQS + "至" + sYXQZ, sJGBID)); else cbxJGBID.Items.Add(new ListItem(sJGBID + "|" + sYXQS + "至" + sYXQZ + "|" + sJGBMC, sJGBID)); } } if (cbxJGBID.ItemsCount > 0 && cbxTJYS.SelectedValue.Trim().Equals("")) cbxJGBID.SelectedIndex = 0; if (cbxJGBID.ItemsCount > 0) { cbxJGBID.Tag = GThinking.N_CONTROL.gtComboBox.DTagStates.Star; } else { cbxJGBID.Tag = GThinking.N_CONTROL.gtComboBox.DTagStates.None; } if (cbxTJYS.SelectedValue.Equals("A")) { chkSFFZF.Enabled = true; } else { chkSFFZF.Checked = false; chkSFFZF.Enabled = false; } } protected void cbxTJLX_SelectedIndexChanged(object sender, EventArgs e) { if (ControlState == TControlState.ctsEdit) { if (cbxTJLX.SelectedValue.Trim().Equals("2"))//调因子值 { cbxTYZZYZID.SelectedValue = ""; cbxTYZZFS.SelectedValue = ""; cbxTYZZYZID.Enabled = false; chkHCBZ.Checked = false; chkHCBZ.Enabled = false; chkBCYTJ.Checked = false; chkBCYTJ.Enabled = false; cbxWPIDLIST.SelectedValue = ""; cbxWPIDLIST.Enabled = false; cbxTJYZID.ClearItems(); cbxTJYZID.Items.Add(new ListItem(txtYZID.Text.Trim(), txtYZID.Text.Trim())); cbxTJYZID.SelectedValue = txtYZID.Text.Trim(); cbxJJFS.ClearItems(); cbxJJFS.Items.Add(new ListItem("乘以(1+加点(%))", "JD")); cbxJJFS.Items.Add(new ListItem("加点", "JJ")); cbxJJFS.Items.Add(new ListItem("除以(1-扣点(%))", "KD")); } else//调价格 { cbxTYZZYZID.Enabled = true; chkHCBZ.Enabled = true; chkBCYTJ.Enabled = true; cbxWPIDLIST.Enabled = true; setcbxTYZZYZID(); TComboBox.SetComboBox("DBERP", cbxTJYZID, "select XLXSTZYZ_YZID as ID,XLXSTZYZ_YZID as Name from XLXSTZYZ where XLXSTZYZ_MXBH='BJD' and (XLXSTZYZ_TJLX='1' or XLXSTZYZ_YZID='" + txtYZID.Text.Trim() + "') order by XLXSTZYZ_XSXH,ID", false); cbxJJFS.ClearItems(); cbxJJFS.Items.Add(new ListItem("乘以(1+加点(%))", "JD")); cbxJJFS.Items.Add(new ListItem("加价(元)", "JJ")); cbxJJFS.Items.Add(new ListItem("除以(1-扣点(%))", "KD")); cbxJJFS.Items.Add(new ListItem("乘以(系数)", "MX")); cbxJJFS.Items.Add(new ListItem("乘以(%)", "MP")); cbxJJFS.Items.Add(new ListItem("除以(系数)", "DX")); cbxJJFS.Items.Add(new ListItem("上点除、下点乘", "SX")); cbxJJFS.Items.Add(new ListItem("乘以(1-下点(%))", "MD")); cbxJJFS.Items.Add(new ListItem("除以(1+上点(%))", "DD")); } } } protected void chkYZZZD_OnCheckedChanged(object sender, EventArgs e) { if (ControlState == TControlState.ctsInsert || ControlState == TControlState.ctsCopy || ControlState == TControlState.ctsEdit) { if (chkYZZZD.Checked) { cbxZDWPIDLIST.Enabled = true; } else { cbxZDWPIDLIST.SelectedValue = ""; cbxZDWPIDLIST.Enabled = false; } } } protected void cbxTYZZYZID_SelectedIndexChanged(object sender, EventArgs e) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Add("select XLXSTZYZ_JJFS from XLXSTZYZ where XLXSTZYZ_MXBH='BJD' and XLXSTZYZ_YZID=:pYZID"); SQL.ParamByName("pYZID").Value = cbxTYZZYZID.SelectedValue.Trim(); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0][0].ToString().Trim().Contains(",")) { cbxTYZZFS.SelectedValue = ""; cbxTYZZFS.Visible = false; } else { cbxTYZZFS.SelectedValue = ds.Tables[0].Rows[0][0].ToString().Trim(); cbxTYZZFS.Visible = true; } } else { cbxTYZZFS.SelectedValue = ""; } } protected void cbxJJFS_SelectedIndexChanged(object sender, EventArgs e) { if (cbxJJFS.SelectedValue.Trim().Equals("MX") || cbxJJFS.SelectedValue.Trim().Equals("DX")) { txtZDYZZ.DecimalPlaces = 4; txtZXYZZ.DecimalPlaces = 4; } else { txtZDYZZ.DecimalPlaces = 2; txtZXYZZ.DecimalPlaces = 2; } } #endregion #region 公用方法后续需要移至公用单元 private List GetBJFLYZXX(string sBJFLID, out Dictionary YZJJFS) { YZJJFS = new Dictionary(); List BJFLYZXX_List = new List(); List bjflYZ = XLBJDUtils.GetBJFLYZXXByBJFLID(sBJFLID); if (bjflYZ.Count > 0) { foreach (XLXSBJFLYZXX sYZ in bjflYZ) { TZYZXX yzxx = XLBJDUtils.GetYZXXByYZID(sYZ.XLXSBJFLYZ_YZID); BJFLYZXX bjFLYZXX = new BJFLYZXX(); bjFLYZXX.YZID = yzxx.XLXSTZYZ_YZID; bjFLYZXX.JSXH = CMISproConvert.StrToFloat(yzxx.XLXSTZYZ_XSXH); bjFLYZXX.TJLX = yzxx.XLXSTZYZ_TJLX; bjFLYZXX.TJYZID = yzxx.XLXSTZYZ_TJYZID; bjFLYZXX.TYZZYZID = yzxx.XLXSTZYZ_TYZZYZID; bjFLYZXX.JJFS = yzxx.XLXSTZYZ_JJFS; bjFLYZXX.YZZGS = yzxx.XLXSTZYZ_YZID; BJFLYZXX_List.Add(bjFLYZXX); YZJJFS[bjFLYZXX.YZID] = bjFLYZXX.JJFS; } } if (IsTZZDXJContained(sBJFLID)) { string sTZQCPBJGS = string.Empty; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select XLXSBJFL_TZQCPBJGS from XLXSBJFL where XLXSBJFL_BJFLID=:pBJFLID"); SQL.ParamByName("pBJFLID").Value = sBJFLID; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { double iTZZDXJXH = 0; string sYZID = "TZZDXJ"; sTZQCPBJGS = ds.Tables[0].Rows[0][0].ToString().Trim(); // 查找 TZZDXJ 的索引 int tzzdxjIndex = sTZQCPBJGS.IndexOf("TZZDXJ"); int bjIndex = sTZQCPBJGS.Substring(0, tzzdxjIndex).LastIndexOf("BJ"); while (bjIndex != -1) { string sBJYZID = sTZQCPBJGS.Substring(bjIndex, 4); if (XLBJDUtils.GetYZXXByYZID(sBJYZID).XLXSTZYZ_TJLX == "1" && XLBJDUtils.GetYZXXByYZID(sBJYZID).XLXSTZYZ_TJYZID.Equals(sBJYZID)) { iTZZDXJXH = CMISproConvert.StrToFloat(XLBJDUtils.GetYZXXByYZID(sBJYZID).XLXSTZYZ_XSXH, 0) + 0.5; break; } else bjIndex = sTZQCPBJGS.Substring(0, bjIndex).LastIndexOf("BJ"); } BJFLYZXX bjFLYZXX = new BJFLYZXX(); bjFLYZXX.YZID = sYZID; bjFLYZXX.JSXH = iTZZDXJXH; bjFLYZXX.TJLX = "1"; bjFLYZXX.TJYZID = sYZID; bjFLYZXX.TYZZYZID = ""; bjFLYZXX.JJFS = "JD"; bjFLYZXX.YZZGS = sYZID; BJFLYZXX_List.Add(bjFLYZXX); YZJJFS[bjFLYZXX.YZID] = bjFLYZXX.JJFS; } } BJFLYZXX_List.Sort(new BJFLYZXXComparer()); return BJFLYZXX_List; } private string GetJSGS(string sBJFLID) { Dictionary YZJJFS = new Dictionary(); List BJFLYZXX_List = GetBJFLYZXX(sBJFLID, out YZJJFS); string formula = "JGBBJ"; //先调因子值 foreach (BJFLYZXX item in BJFLYZXX_List) { if ((!string.IsNullOrEmpty(item.TYZZYZID)) && item.TJLX == "1") { string[] sTZYZZYZIDList = item.TYZZYZID.Split(','); for (int i = 0; i < sTZYZZYZIDList.Length; i++) { if (YZJJFS.ContainsKey(sTZYZZYZIDList[i])) item.YZZGS = GetJSGSbyJJFS(item.YZZGS, sTZYZZYZIDList[i], YZJJFS[sTZYZZYZIDList[i]]); } } } //再按分组相加 Dictionary groupedSums = new Dictionary(); foreach (BJFLYZXX item in BJFLYZXX_List) { if (item.TJLX == "1") { if (groupedSums.ContainsKey(item.TJYZID)) { groupedSums[item.TJYZID].YZZGS = "(" + groupedSums[item.TJYZID].YZZGS + "+" + item.YZZGS + ")"; } else { groupedSums[item.TJYZID] = item; } } } //生成计算公式 foreach (BJFLYZXX item in groupedSums.Values) { formula = GetJSGSbyJJFS(formula, item); } return formula; } private string GetJSGSbyJJFS(string sformula, string sYZZGS, string sJJFS) { switch (sJJFS) { case "JD": return sformula + "*(1+" + sYZZGS + "/100)"; case "KD": return sformula + "/(1-" + sYZZGS + "/100)"; case "DD": return sformula + "/(1+" + sYZZGS + "/100)"; case "MD": return sformula + "*(1-" + sYZZGS + "/100)"; case "JJ": return "(" + sformula + "+" + sYZZGS + ")"; case "MX": return sformula + "*" + sYZZGS; case "MP": return sformula + "*(" + sYZZGS + "/100.00)"; case "DX": return sformula + "/(" + sYZZGS + ")"; default: return sformula; } } private string GetJSGSbyJJFS(string sformula, BJFLYZXX bJFLYZXX) { return GetJSGSbyJJFS(sformula, bJFLYZXX.YZZGS, bJFLYZXX.JJFS); } private bool IsTZZDXJContained(string sBJFLID) { if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJFL where XLXSBJFL_TZQCPBJGS like '%TZZDXJ%' and XLXSBJFL_BJFLID='{0}'", sBJFLID))) return true; return false; } #endregion } }