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_CONTROL; using GThinking.N_PUBLIC; using GThinking.N_PUBLIC2; using GThinking.N_MISPRO.Caching; using GThinking.N_MISPRO.Utility; using System.Collections.Generic; namespace GThinking.N_XLXSBJ { public partial class CLYL_CLYLList : OperationBase { CLYL_CLYL entity = new CLYL_CLYL(); //MUL----乘以1000 DIV----除以1000 FIX----保持不变 public string sHSFS = "MUL"; protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860014; this.UMName = "线缆销售报价材料用量"; this.CurMaster = Master; this.Tabs = Tab; this.PageHeight = 500; this.PageWidth = 700; CurMaster.BtnQueryVisible = false; CurMaster.BtnReportVisible = false; AddListSetMap(new ListSet(pagSHD.ID, null, grdSHD, entity, UPSHD)); grdSHD.FindColumnByFieldName("CZBYL").HeaderText = "尺重表用量(" + PageParam.GetRTrimString("CZBJLDW") + ")"; grdSHD.FindColumnByFieldName("SL").HeaderText = "材料清单用量(Kg/" + XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).Replace('M', 'm') + ")"; if (XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).ToUpper().Equals("KM") && PageParam.GetRTrimString("CZBJLDW").Split('/')[1].ToUpper().Equals("KM")) { sHSFS = "FIX"; } else if (XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).ToUpper().Equals("KM") && PageParam.GetRTrimString("CZBJLDW").Split('/')[1].ToUpper().Equals("M")) { sHSFS = "DIV"; } else if (XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).ToUpper().Equals("M") && PageParam.GetRTrimString("CZBJLDW").Split('/')[1].ToUpper().Equals("M")) { sHSFS = "FIX"; } else if (XLBJDUtils.GetDefaultBJU003(GetOption("BJU003")).ToUpper().Equals("M") && PageParam.GetRTrimString("CZBJLDW").Split('/')[1].ToUpper().Equals("KM")) { sHSFS = "MUL"; } else { grdSHD.FindColumnByFieldName("CZBYL").ReadOnly = true; } //仅待处理人有编辑权限 if (!PageParam.GetRTrimString("CanE").Equals("Y")) { CurMaster.BtnOK.Visible = false; CurMaster.BtnCancel.Visible = false; grdSHD.FindColumnByFieldName("SL").ReadOnly = true; grdSHD.FindColumnByFieldName("CLJGBL").ReadOnly = true; grdSHD.FindColumnByFieldName("SHL").ReadOnly = true; grdSHD.FindColumnByFieldName("CLWL").ReadOnly = true; } else { //BJU005|线缆销售报价材料用量与产品结构保持一致 if (GetOption("BJU005").Equals("Y")) grdSHD.FindColumnByFieldName("SL").ReadOnly = true; } //当前尺重表栏目关联的报价材料是否存在需要细分的 if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLJGCZBLM left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID where XLJGCZBLM_JGCZBID='{0}' and XLJGCZBLM_JGCZBBBID='{1}' and XLXSBJCL_BJHQ='2'", PageParam.GetRTrimString("JGCZBID"), PageParam.GetRTrimString("JGCZBBBID")))) { grdSHD.FindColumnByFieldName("BJHQ").Visible = true; grdSHD.FindColumnByFieldName("CLWL").Visible = true; } else { grdSHD.FindColumnByFieldName("BJHQ").Visible = false; grdSHD.FindColumnByFieldName("CLWL").Visible = false; } base.InitPage(); grdSHD.EnabledToolBar = false; CurMaster.PnlQuery.Visible = false; if (!IsPostBack) { lblBJCP.Text = PageParam.GetRTrimString("XLXHID") + "-" + PageParam.GetRTrimString("DYDJID") + " " + PageParam.GetRTrimString("XLGGID") + " " + PageParam.GetRTrimString("XLBZ"); Master_OnQuery(); GridDataBind(); } } #region 模板继承事件 protected override void Master_OnQuery() { entity.sXLXHID = PageParam.GetRTrimString("XLXHID"); entity.sXLGGID = PageParam.GetRTrimString("XLGGID"); entity.sXLBZID = PageParam.GetRTrimString("XLBZID"); entity.sDYDJID = PageParam.GetRTrimString("DYDJID"); entity.sJGCZBID = PageParam.GetRTrimString("JGCZBID"); entity.sJGCZBBBID = PageParam.GetRTrimString("JGCZBBBID"); entity.sHSFS = sHSFS; base.Master_OnQuery(); grdSHD.SelectedIndex = -1; } protected override void GridDataBind() { base.GridDataBind(); } protected override bool DataLogicValid() { return base.DataLogicValid(); } protected override bool Master_OnOK() { bool bResult = base.Master_OnOK(); if (!bResult) return false; TDatabase DBERP = TContextDatabases.GetDatabase("DBERP"); string sXLXHID = PageParam.GetRTrimString("XLXHID"); string sXLGGID = PageParam.GetRTrimString("XLGGID"); string sXLBZID = PageParam.GetRTrimString("XLBZID"); string sDYDJID = PageParam.GetRTrimString("DYDJID"); string sJGCZBID = PageParam.GetRTrimString("JGCZBID"); string sJGCZBBBID = PageParam.GetRTrimString("JGCZBBBID"); if (sXLXHID.Equals("") || sXLGGID.Equals("") || sXLBZID.Equals("") || (grdSHD.NewRows.Count == 0)) { return false; } else { for (int i = 0; i < grdSHD.NewRows.Count; i++) { double fCZBYL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("CZBYL", grdSHD.NewRows[i]).ToString()); double fSL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("SL", grdSHD.NewRows[i]).ToString()); double fCLJGBL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("CLJGBL", grdSHD.NewRows[i]).ToString()); double fSHL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("SHL", grdSHD.NewRows[i]).ToString()); if (grdSHD.GetValueByFieldName("BJHQ", grdSHD.NewRows[i]).ToString().Trim().Equals("2|物料行情") && grdSHD.GetValueByFieldName("CLWL", grdSHD.NewRows[i]).ToString().Trim().Equals("") && fSL > 0) { ShowMessage(string.Format("{0}|{1}--需要指定材料物料!", grdSHD.GetValueByFieldName("XLXSBJCL_BJCLID", grdSHD.NewRows[i]).ToString().Trim(), grdSHD.GetValueByFieldName("XLXSBJCL_BJCLMC", grdSHD.NewRows[i]).ToString().Trim())); return false; } if (fCZBYL < 0) { ShowMessage("尺重表用量不允许小于0!"); return false; } if (fSL < 0) { ShowMessage("材料清单用量不允许小于0!"); return false; } if (fCLJGBL > 1) { ShowMessage("材料用量比例不允许大于1!"); return false; } if (fCLJGBL <= 0) { ShowMessage("材料用量比例不允许小于等于0!"); return false; } if (fSHL < 0) { ShowMessage("材料损耗率不允许小于0!"); return false; } if (fSHL >= 100) { ShowMessage("材料损耗率不允许大于等于100%!"); return false; } } try { DBERP.BeginTrans(); TSQL tmpSQL = new TSQL(DBERP); tmpSQL.Clear(); tmpSQL.Add("update XLXSCLQD set "); for (int i = 0; i < grdSHD.NewRows.Count; i++) { string sQDL = grdSHD.GetValueByFieldName("XLJGCZBLM_CLQDL", grdSHD.NewRows[i]).ToString().Trim().Replace("第", "").Replace("列", ""); double fSL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("SL", grdSHD.NewRows[i]).ToString()); double fCLJGBL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("CLJGBL", grdSHD.NewRows[i]).ToString()); double fSHL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("SHL", grdSHD.NewRows[i]).ToString()); if (i != (grdSHD.NewRows.Count - 1)) tmpSQL.Add(string.Format("XLXSCLQD_SL{0}={1},XLXSCLQD_CLJGBL{0}={2},XLXSCLQD_SHL{0}={3}, ", sQDL, fSL, fCLJGBL, fSHL)); else tmpSQL.Add(string.Format("XLXSCLQD_SL{0}={1},XLXSCLQD_CLJGBL{0}={2},XLXSCLQD_SHL{0}={3} ", sQDL, fSL, fCLJGBL, fSHL)); } tmpSQL.Add("where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID "); tmpSQL.ParamByName("pXLXHID").Value = sXLXHID; tmpSQL.ParamByName("pXLGGID").Value = sXLGGID; tmpSQL.ParamByName("pXLBZID").Value = sXLBZID; tmpSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim(); DBERP.ExecSQL(tmpSQL); bool bInsertXLXSCLQDWL = false; //当前尺重表栏目关联的报价材料是否存在需要细分的 if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLJGCZBLM left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID where XLJGCZBLM_JGCZBID='{0}' and XLJGCZBLM_JGCZBBBID='{1}' and XLXSBJCL_BJHQ='2'", sJGCZBID, sJGCZBBBID))) { for (int i = 0; i < grdSHD.NewRows.Count; i++) { string sCLWL = grdSHD.GetValueByFieldName("CLWL", grdSHD.NewRows[i]).ToString().Trim(); if (!sCLWL.Equals("")) bInsertXLXSCLQDWL = true; } if (bInsertXLXSCLQDWL) { tmpSQL.Clear(); tmpSQL.Add("select XLXSCLQD_JGCZBXH,XLXSCLQD_DRHH from XLXSCLQD where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); tmpSQL.ParamByName("pXLXHID").Value = sXLXHID; tmpSQL.ParamByName("pXLGGID").Value = sXLGGID; tmpSQL.ParamByName("pXLBZID").Value = sXLBZID; tmpSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim(); DataSet ds = DBERP.OpenDataSet(tmpSQL); double fJGCZBXH = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_JGCZBXH"].ToString()); double fDRHH = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLQD_DRHH"].ToString()); double newDRHH = fDRHH; if (newDRHH == 0.0) { tmpSQL.Clear(); tmpSQL.Add("select min(XLXSCLQD_DRHH) as minDRHH "); tmpSQL.Add(" from XLXSCLQD"); tmpSQL.Add(" where XLXSCLQD_JGCZBID=:pJGCZBID"); tmpSQL.Add(" and XLXSCLQD_DRHH<0");//DRHH为负,用于临时建立XLXSCLQD和XLXSCLQDWL之间的关系 tmpSQL.ParamByName("pJGCZBID").Value = sJGCZBID; DataSet dsCLQD = DBERP.OpenDataSet(tmpSQL); if (dsCLQD.Tables[0].Rows.Count > 0) { newDRHH = CMISproConvert.StrToFloat(dsCLQD.Tables[0].Rows[0][0].ToString()) - 1; } else newDRHH = -1;//特殊处理 tmpSQL.Clear(); tmpSQL.Add("update XLXSCLQD set XLXSCLQD_JGCZBXH=:pJGCZBXH,XLXSCLQD_DRHH=:pDRHH "); tmpSQL.Add("where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID "); tmpSQL.ParamByName("pJGCZBXH").Value = fJGCZBXH; tmpSQL.ParamByName("pDRHH").Value = newDRHH; tmpSQL.ParamByName("pXLXHID").Value = sXLXHID; tmpSQL.ParamByName("pXLGGID").Value = sXLGGID; tmpSQL.ParamByName("pXLBZID").Value = sXLBZID; tmpSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim(); DBERP.ExecSQL(tmpSQL); } tmpSQL.Clear(); tmpSQL.Add("delete from XLXSCLQDWL where XLXSCLQDWL_JGCZBID=:pJGCZBID and XLXSCLQDWL_JGCZBBBID=:pJGCZBBBID"); tmpSQL.Add(" and XLXSCLQDWL_JGCZBXH=:pJGCZBXH and XLXSCLQDWL_DRHH=:pDRHH"); tmpSQL.ParamByName("pJGCZBID").Value = sJGCZBID; tmpSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; tmpSQL.ParamByName("pJGCZBXH").Value = fJGCZBXH; tmpSQL.ParamByName("pDRHH").Value = newDRHH; DBERP.ExecSQL(tmpSQL); tmpSQL.Clear(); tmpSQL.Add("insert into XLXSCLQDWL(XLXSCLQDWL_JGCZBID,XLXSCLQDWL_JGCZBBBID,XLXSCLQDWL_JGCZBXH,XLXSCLQDWL_DRHH"); for (int i = 0; i < grdSHD.NewRows.Count; i++) { string sQDL = grdSHD.GetValueByFieldName("XLJGCZBLM_CLQDL", grdSHD.NewRows[i]).ToString().Trim().Replace("第", "").Replace("列", ""); tmpSQL.Add(string.Format(",XLXSCLQDWL_WLID{0} ", sQDL)); } tmpSQL.Add(") "); tmpSQL.Add("values (:pJGCZBID,:pJGCZBBBID,:pJGCZBXH,:pDRHH"); for (int i = 0; i < grdSHD.NewRows.Count; i++) { string sCLWL = grdSHD.GetValueByFieldName("CLWL", grdSHD.NewRows[i]).ToString().Trim(); tmpSQL.Add(string.Format(",'{0}' ", sCLWL)); } tmpSQL.Add(") "); tmpSQL.ParamByName("pJGCZBID").Value = sJGCZBID; tmpSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; tmpSQL.ParamByName("pJGCZBXH").Value = fJGCZBXH; tmpSQL.ParamByName("pDRHH").Value = newDRHH; DBERP.ExecSQL(tmpSQL); } else { //如果材料物料列数据都是空,则删除XLXSCLQDWL tmpSQL.Clear(); tmpSQL.Add("delete from XLXSCLQDWL "); tmpSQL.Add("where exists(select 1 from XLXSCLQD "); tmpSQL.Add(" where XLXSCLQD_XLXHID=:pXLXHID and XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID and XLXSCLQD_DYDJID=:pDYDJID"); tmpSQL.Add(" and XLXSCLQD_JGCZBID=XLXSCLQDWL_JGCZBID and XLXSCLQD_JGCZBBBID=XLXSCLQDWL_JGCZBBBID and XLXSCLQD_JGCZBXH=XLXSCLQDWL_JGCZBXH and XLXSCLQD_DRHH=XLXSCLQDWL_DRHH"); tmpSQL.Add(" )"); tmpSQL.ParamByName("pXLXHID").Value = sXLXHID; tmpSQL.ParamByName("pXLGGID").Value = sXLGGID; tmpSQL.ParamByName("pXLBZID").Value = sXLBZID; tmpSQL.ParamByName("pDYDJID").Value = sDYDJID.Trim().Equals("") ? " " : sDYDJID.Trim(); DBERP.ExecSQL(tmpSQL); } } DBERP.CommitTrans(); if (bInsertXLXSCLQDWL) ShowMessage("已完成材料用量+材料物料的设置!"); else ShowMessage("已完成材料用量的设置!"); DialogOperationScript dos = new DialogOperationScript(this); if (!PageParam.GetRTrimString("btnRefreshCID").Equals("")) dos.ClickOwnerButton(PageParam.GetRTrimString("btnRefreshCID")); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { ShowMessage(ex.Message); DBERP.RollbackTrans(); return false; } } return false; } protected override void Grid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow && Tab.ActiveTabIndex == 1) { } base.Grid_RowDataBound(sender, e); } protected void grdSHD_GetDropDownColumnItems(object sender, GetDropDownColumnItemsEventArgs e) { if (e.EventFieldName == "CLWL") { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Clear(); sql.Add("select XLXSBJCLWL_WLID, "); sql.Add("rtrim(rtrim(rtrim(rtrim(isnull(WL_MC,' '))||' '||rtrim(isnull(WL_GG,' ')))||' '||rtrim(isnull(WL_TZ,' ')))||' '||rtrim(isnull(WL_CL,' '))) as Name "); sql.Add("from XLXSBJCLWL "); sql.Add("left join WL on WL_WLID=XLXSBJCLWL_WLID "); sql.Add("left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID "); sql.Add("where XLXSBJCLWL_BJCLID=:pBJCLID "); sql.Add(" and XLXSBJCL_BJHQ='2' "); sql.Add("order by XLXSBJCLWL_WLID"); sql.ParamByName("pBJCLID").Value = e.RowData["XLXSBJCL_BJCLID"].ToString().Trim(); DataSet ds = dberp.OpenDataSet(sql); e.DropDownItems.Clear(); if (ds.Tables[0].Rows.Count > 0) { e.DropDownItems.Add(new ListItem("", "")); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) e.DropDownItems.Add(new ListItem(ds.Tables[0].Rows[i]["Name"].ToString().Trim(), ds.Tables[0].Rows[i]["XLXSBJCLWL_WLID"].ToString().Trim())); } } } protected void grdSHD_CalculateField(object sender, CalculateFieldEventArgs e) { //MUL----乘以1000 DIV----除以1000 FIX----保持不变 if (e.EventFieldName.Equals("CZBYL") ) { double dCZBYL = CMISproConvert.StrToFloat(e.RowData["CZBYL"].ToString().Trim(), 0); double dSL = CMISproConvert.StrToFloat(e.RowData["SL"].ToString().Trim(), 0); if (sHSFS.Equals("FIX")) { dSL = dCZBYL; } else if (sHSFS.Equals("MUL")) { dSL = dCZBYL / 1000; } else if (sHSFS.Equals("DIV")) { dSL = dCZBYL * 1000; } e.ResultPairs.Add("SL", dSL.ToString()); } else if (e.EventFieldName.Equals("SL")) { double dCZBYL = CMISproConvert.StrToFloat(e.RowData["CZBYL"].ToString().Trim(), 0); double dSL = CMISproConvert.StrToFloat(e.RowData["SL"].ToString().Trim(), 0); if (sHSFS.Equals("FIX")) { dCZBYL = dSL; } else if (sHSFS.Equals("MUL")) { dCZBYL = dSL * 1000; } else if (sHSFS.Equals("DIV")) { dCZBYL = dSL / 1000; } e.ResultPairs.Add("CZBYL", dCZBYL.ToString()); } } #endregion protected void btnCKWLYL_Click(object sender, EventArgs e) { TPageParams tpp = new TPageParams(); tpp.UrlPath = "CLYL_DRYLList.aspx"; tpp.AddString("CanE", "N"); tpp.AddString("FromPage", "CLYL_CLYLList"); tpp.AddString("GCID", PageParam.GetRTrimString("GCID")); tpp.AddString("CPWLID", PageParam.GetRTrimString("CPWLID")); OpenDialog(tpp); } } }