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 XLBJD_CLYLBLList : OperationBase { XLBJD_CLYLBL entity = new XLBJD_CLYLBL(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860010; 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)); base.InitPage(); grdSHD.EnabledToolBar = false; CurMaster.PnlBill.Visible = false; CurMaster.PnlQuery.Visible = false; if (!IsPostBack) { XLBJDUtils.InsertIntoBJDCLYLBL(TContextDatabases.GetDatabase("DBERP"), PageParam.GetRTrimString("BJDID"), PageParam.GetRTrimString("BJFLID")); Master_OnQuery(); GridDataBind(); } } #region 模板继承事件 protected override void Master_OnQuery() { entity.sBJDID = PageParam.GetRTrimString("BJDID"); entity.sXH = PageParam.GetRTrimString("XH"); entity.DicCLYL = GetDicCLYL(PageParam.GetRTrimString("BJDID"), PageParam.GetRTrimString("XH"), PageParam.GetRTrimString("BJFLID")); 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; string sBJDID = PageParam.GetRTrimString("BJDID"); string sXH = PageParam.GetRTrimString("XH"); if (sBJDID.Equals("") || sXH.Equals("") || (grdSHD.NewRows.Count == 0)) { return false; } else { for (int i = 0; i < grdSHD.NewRows.Count; i++) { double fCLYLBL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("CLYLBL", grdSHD.NewRows[i]).ToString()); if (fCLYLBL > 1) { ShowMessage("材料用量比例不允许大于1!"); return false; } if (fCLYLBL <= 0) { ShowMessage("材料用量比例不允许小于等于0!"); return false; } } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); try { dberp.BeginTrans(); TSQL SQL = new TSQL(dberp); //更新材料用量比例 Dictionary DicCLYL = GetDicCLYL(sBJDID, sXH, PageParam.GetRTrimString("BJFLID")); foreach (string sCBXH in sXH.Split(',')) { string sUpXLHList = XLBJDCalcUtils.GetMultiYSList(sBJDID, sCBXH); SQL.Clear(); SQL.Add("update BJDCLYLBL set BJDCLYLBL_BJDID = :pBJDID "); for (int i = 0; i < grdSHD.NewRows.Count; i++) { string sBJCLID = grdSHD.GetValueByFieldName("XLXSBJCL_BJCLID", grdSHD.NewRows[i]).ToString().Trim(); double fCLYLBL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("CLYLBL", grdSHD.NewRows[i]).ToString()); string sCLYLXX = DicCLYL[sBJCLID].Split('|')[3]; Dictionary DicCLYLXX = GetDicCLYLXX(sCLYLXX); if (DicCLYLXX.ContainsKey(sCBXH)) { string sQDLS = DicCLYLXX[sCBXH]; foreach (string sQDL in sQDLS.Split(',')) SQL.Add(string.Format(",BJDCLYLBL_YLBL{0}={1} ", sQDL, fCLYLBL)); } } SQL.Add("where BJDCLYLBL_BJDID=:pBJDID and " + CMISproDataBase.GetWhereEqual("BJDCLYLBL_XH", sUpXLHList));//SQL语句自测:刘青棚2024/12/04 18:30:00 SQL.ParamByName("pBJDID").Value = sBJDID; dberp.ExecSQL(SQL); } string sErrMsg = ""; XLBJDCalcUtils.CalcAfterYLBLChange(dberp, SQL, sBJDID, 0, sXH, GetOption(100860000, "BJU002"), GetOption(100860000, "BJU003"), GetOption(100860000, "BJU018"), CurSession.UserId, CurSession.UserName, ref sErrMsg); if (!sErrMsg.Equals("")) { throw new Exception(sErrMsg); } dberp.CommitTrans(); ShowMessage("已根据最新材料用量比例重新计算所选记录的材料成本,并结合调整因子重算了无税基准报价、含税基准报价、线缆产品报价等!"); DialogOperationScript dos = new DialogOperationScript(this); 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) { } base.Grid_RowDataBound(sender, e); } private Dictionary GetDicCLYL(string sBJDID, string sXH,string sBJFLID) { Dictionary DicCLYL = new Dictionary(); TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" select XLXSBJDCLCB_BJDID,XLXSBJDCLCB_XH "); for (int i = 1; i <= 80; i++) { SQL.Add(" ,XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0') + ",BJDCLYLBL_YLBL" + i.ToString().PadLeft(2, '0')); SQL.Add(" ,XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0') + ",XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0')); } SQL.Add(" from XLXSBJDCLCB "); SQL.Add(" left join BJDCLYLBL on BJDCLYLBL_BJDID = XLXSBJDCLCB_BJDID and BJDCLYLBL_XH = XLXSBJDCLCB_XH "); SQL.Add(" where XLXSBJDCLCB_BJDID= :pBJDID and " + CMISproDataBase.GetWhereEqual("XLXSBJDCLCB_XH", sXH)); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pXH").Value = sXH; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow trow in ds.Tables[0].Rows) { string sCBXH = trow["XLXSBJDCLCB_XH"].ToString().Trim(); for (int i = 1; i <= 80; i++) { string sCLSL = trow["XLXSBJDCLCB_CLSL" + i.ToString().PadLeft(2, '0')].ToString().Trim(); if (sCLSL.Equals("0")) continue; string sCLID = trow["XLXSBJDCLCB_CLID" + i.ToString().PadLeft(2, '0')].ToString().Trim(); if (sCLID.Contains("|")) sCLID = sCLID.Split('|')[0]; if (sCLID.Equals("")) continue; string sYLBL = trow["BJDCLYLBL_YLBL" + i.ToString().PadLeft(2, '0')].ToString().Trim(); string sCLDJ = trow["XLXSBJDCLCB_CLDJ" + i.ToString().PadLeft(2, '0')].ToString().Trim(); if (!DicCLYL.ContainsKey(sCLID)) { DicCLYL.Add(sCLID, sYLBL + "|" + sCLSL + "|" + sCLDJ + "|" + sCBXH + "," + i.ToString().PadLeft(2, '0')); } else { string sCLYLXX = DicCLYL[sCLID]; sCLYLXX += ";" + sCBXH + "," + i.ToString().PadLeft(2, '0'); DicCLYL[sCLID] = sCLYLXX; } } } } return DicCLYL; } private Dictionary GetDicCLYLXX(string sCLYLXX) { Dictionary DicCLYLXX = new Dictionary(); foreach (string sXX in sCLYLXX.Split(';')) { string sXH = sXX.Split(',')[0]; string sQDL = sXX.Split(',')[1]; if (!DicCLYLXX.ContainsKey(sXH)) DicCLYLXX.Add(sXH, sQDL); else { string sCLXX = DicCLYLXX[sXH]; sCLXX += "," + sQDL; DicCLYLXX[sXH] = sCLXX; } } return DicCLYLXX; } #endregion protected void btnPLSZ_Click(object sender, EventArgs e) { if (grdSHD.CheckedRows.Equals("")) { ShowMessage("请勾选需要批量设置的材料!"); return; } TPageParams pageParams = new TPageParams(); pageParams.UrlPath = "XLBJD_CLYLBLInfo.aspx"; pageParams.AddString("CLYLBL", txtCLYLBL.Value); pageParams.AddString("txtCLYLBLCID", txtCLYLBL.ClientID); pageParams.AddString("btnCallBackCID", btnCallBack.ClientID); OpenDialog(pageParams); } protected void btnCallBack_Click(object sender, EventArgs e) { string[] sIndexs = grdSHD.CheckedRows.Split(','); string sCheckedRows = "," + grdSHD.CheckedRows.Trim() + ","; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); for (int i = 0; i < grdSHD.NewRows.Count; i++) { double fCLYLBL = CMISproConvert.StrToFloat(grdSHD.GetValueByFieldName("CLYLBL", grdSHD.NewRows[i])); if (sCheckedRows.Contains("," + i.ToString().Trim() + ",")) { fCLYLBL = CMISproConvert.StrToFloat(txtCLYLBL.Value); } if (i > 0) { SQL.Add(" union all "); } SQL.Add(string.Format("select '{0}' as XLXSBJCL_BJCLID,'{1}' as XLXSBJCL_BJCLMC,{2} as CLYLBL,{3} as CLYL,{4} as CLJG from IDX where IDX_ID = 1 ", grdSHD.GetValueByFieldName("XLXSBJCL_BJCLID", grdSHD.NewRows[i]).Trim(), grdSHD.GetValueByFieldName("XLXSBJCL_BJCLMC", grdSHD.NewRows[i]).Trim(), fCLYLBL, grdSHD.GetValueByFieldName("CLYL", grdSHD.NewRows[i]).Trim(), grdSHD.GetValueByFieldName("CLJG", grdSHD.NewRows[i]).Trim())); } DataSet ds = dberp.OpenDataSet(SQL); grdSHD.DataSource = ds; grdSHD.DataBind(); FormAreaUpdate(); } } }