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_CONTROL; namespace GThinking.U20261363_N_XLXSBJ { [EntityType(Db = "DBERP", Table = "XLXSBJDWLHQ", IsWf = false, IsWhr = true, IsAttach = false)] public class XLBJD_WLHQTZ : EntityObject { public string sBJDID = ""; public string sWLVID = ""; public string sCLVID = ""; public string sRYID = ""; public string sBJRQ = ""; public override TSQL SetQuerySql() { TSQL SQL = base.SetQuerySql(); SQL.Add("select XLXSBJCLWL_WLID,rtrim(isnull(WL_MC,' ')) || ' ' || rtrim(isnull(WL_GG,' ')) || ' ' || rtrim(isnull(WL_CL,' ')) as WLMC, "); SQL.Add("case when V_XLXSBJDWLHQ_WLID is null then bjrwlhq.WSJGF else V_XLXSBJDWLHQ_WSJGF end as WSJGF, "); SQL.Add("case when V_XLXSBJDWLHQ_WLID is null then bjrwlhq.CLJG else V_XLXSBJDWLHQ_WSJG end as WSJG, "); SQL.Add("a.XLXSBJCL_ZZSL, "); SQL.Add("case when V_XLXSBJDWLHQ_WLID is null then bjrwlhq.HSJGF else V_XLXSBJDWLHQ_HSJGF end as HSJGF, "); SQL.Add("case when V_XLXSBJDWLHQ_WLID is null then bjrwlhq.HSJG else V_XLXSBJDWLHQ_HSJG end as HSJG, "); SQL.Add(" case when isnull(a.XLXSBJCL_JGYBJCLID,' ') = ' ' then ' ' else rtrim(a.XLXSBJCL_JGYBJCLID) ||'|'|| rtrim(b.XLXSBJCL_BJCLMC) end as JGYBJCLXX,"); SQL.Add(" case when isnull(a.XLXSBJCL_JGYBJCLID,' ') = ' ' then 0.0 else V_XLXSBJDCLHQ_WSJG end as JGYBJCLID_WSJG,"); SQL.Add(" case when isnull(a.XLXSBJCL_JGYBJCLID,' ') = ' ' then 0.0 else V_XLXSBJDCLHQ_HSJG end as JGYBJCLID_HSJG,"); SQL.Add("V_XLXSBJDWLHQ_WHR,V_XLXSBJDWLHQ_WHRID,V_XLXSBJDWLHQ_WHSJ "); SQL.Add("from XLXSBJCLWL "); //先使用物料与材料关系取到材料 SQL.Add("left join XLXSBJCL a on a.XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID "); //取到材料后取到报价原材料 SQL.Add("left join XLXSBJCL b on b.XLXSBJCL_BJCLID = a.XLXSBJCL_JGYBJCLID "); //关联报价单的材料行情----显示的是报价原材料的价格,所以使用报价原材料关联 SQL.Add("left join V_XLXSBJDCLHQ on V_XLXSBJDCLHQ_BJDID=:pBJDID and V_XLXSBJDCLHQ_ID=:pCLVID and V_XLXSBJDCLHQ_TZRYID=:pRYID and V_XLXSBJDCLHQ_BJCLID=isnull( a.XLXSBJCL_JGYBJCLID, ' ') "); //关联报价单的物料行情----只有报价材料才有物料行情,此处直接关联 SQL.Add("left join V_XLXSBJDWLHQ on V_XLXSBJDWLHQ_BJDID=:pBJDID and V_XLXSBJDWLHQ_ID=:pWLVID and V_XLXSBJDWLHQ_TZRYID=:pRYID and V_XLXSBJDWLHQ_WLID=XLXSBJCLWL_WLID "); SQL.Add("left join "); SQL.Add("( "); /*报价物料之报价日行情*/ SQL.Add("select WLID,XLXSWLHQ_WSJG as CLJG,XLXSWLHQ_HSJG as HSJG, "); SQL.Add(" XLXSWLHQ_WSJGF as WSJGF,XLXSWLHQ_HSJGF as HSJGF "); SQL.Add("from XLXSWLHQ, "); SQL.Add("( "); SQL.Add("select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS)as maxYXQS "); SQL.Add("from XLXSWLHQ "); SQL.Add("where XLXSWLHQ_JGBID=' ' "); SQL.Add("and XLXSWLHQ_YXQS<=:pBJRQ and(XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null) "); SQL.Add("group by XLXSWLHQ_WLID "); SQL.Add(") a "); SQL.Add("where XLXSWLHQ_JGBID=' ' "); SQL.Add("and XLXSWLHQ_WLID=WLID "); SQL.Add("and XLXSWLHQ_YXQS=maxYXQS "); SQL.Add(") bjrwlhq on bjrwlhq.WLID=XLXSBJCLWL_WLID "); SQL.Add("left join WL on WL_WLID=XLXSBJCLWL_WLID "); //SQL.Add("where XLXSBJCLWL_BJCLID=:pBJCLID "); SQL.Add("where 1 = 1 "); //只显示报价单明细用到的物料 SQL.Add(" and XLXSBJCLWL_WLID in "); SQL.Add(" ("); SQL.Add(" select distinct case XLJGCZBLM_CLQDL "); for (int i = 1; i <= 80; i++) SQL.Add(string.Format("when '{0}' then XLXSCLQDWL_WLID{1}", "第" + i.ToString().PadLeft(2, '0') + "列", i.ToString().PadLeft(2, '0'))); SQL.Add(" else ' ' end as WLID "); SQL.Add(" from XLXSBJDMX"); SQL.Add(" left join XLXSCLQD on XLXSCLQD_XLXHID=XLXSBJDMX_XLXHID and XLXSCLQD_XLGGID=XLXSBJDMX_XLGGID and XLXSCLQD_XLBZID=XLXSBJDMX_XLBZID and XLXSCLQD_DYDJID=isnull(XLXSBJDMX_DYDJID,' ')"); SQL.Add(" left join XLJGCZBLM on XLJGCZBLM_JGCZBID=XLXSCLQD_JGCZBID and XLJGCZBLM_JGCZBBBID=XLXSCLQD_JGCZBBBID"); SQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLJGCZBLM_BJCLID"); SQL.Add(" left join XLXSCLQDWL on XLXSCLQDWL_JGCZBID=XLXSCLQD_JGCZBID and XLXSCLQDWL_JGCZBBBID=XLXSCLQD_JGCZBBBID and XLXSCLQDWL_JGCZBXH=XLXSCLQD_JGCZBXH and XLXSCLQDWL_DRHH=XLXSCLQD_DRHH"); SQL.Add(" where XLXSBJDMX_BJDID=:pBJDID"); SQL.Add(" and isnull(XLJGCZBLM_CLQDL,' ')<>' '"); SQL.Add(" and XLXSCLQD_WPID='ZZZZ'"); SQL.Add(" and XLXSBJCL_BJHQ='2'"); SQL.Add(" ) "); SQL.Add("order by XLXSBJCLWL_BJCLID,XLXSBJCLWL_WLID "); SQL.ParamByName("pBJDID").Value = sBJDID; SQL.ParamByName("pCLVID").Value = sCLVID; SQL.ParamByName("pWLVID").Value = sWLVID; SQL.ParamByName("pRYID").Value = sRYID; SQL.ParamByName("pBJRQ").Value = sBJRQ; string ss = SQL.Text; return SQL; } public override bool Querying(TSQL sql) { Entites.Columns.Clear(); Entites.Clear(); return base.Querying(sql); } } public partial class XLBJD_WLHQTZList : OperationBase { XLBJD_WLHQTZ entity = new XLBJD_WLHQTZ(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860174; this.UMName = "线缆销售报价单"; this.CurMaster = Master; this.Tabs = Tab; this.PageHeight = 600; this.PageWidth = 850; CurMaster.BtnQueryVisible = false; CurMaster.BtnReportVisible = false; AddListSetMap(new ListSet(pagSHD2.ID, null, grdSHD2, entity, UPSHD2)); base.InitPage(); grdSHD2.EnabledToolBar = false; CurMaster.PnlBill.Visible = false; CurMaster.PnlQuery.Visible = false; if (!IsPostBack) { Master_OnQuery(); GridDataBind(); } grdSHD2.FindColumnByFieldName("JGYBJCLID_WSJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD2.FindColumnByFieldName("JGYBJCLID_HSJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD2.FindColumnByFieldName("WSJGF").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD2.FindColumnByFieldName("HSJGF").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD2.FindColumnByFieldName("WSJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; grdSHD2.FindColumnByFieldName("HSJG").NumberDecimalPlace = XLBJDUtils.BJCLPriceDecimal; } #region 模板继承事件 protected override void Master_OnQuery() { entity.sBJDID = PageParam.GetRTrimString("BJDID"); entity.sWLVID = PageParam.GetRTrimString("WLVID"); entity.sCLVID = PageParam.GetRTrimString("CLVID"); entity.sRYID = CurSession.RYID; entity.sBJRQ = PageParam.GetRTrimString("BJRQ"); base.Master_OnQuery(); grdSHD2.SelectedIndex = -1; } protected override bool Master_OnOK() { bool bResult = base.Master_OnOK(); if (!bResult) return false; if (grdSHD2.Rows.Count <= 0) { CloseWindow(); return false;//这里返回false是为了解决关闭当前页面会同时关闭“调整材料行情”页面的问题 } TDatabase DBERP = TContextDatabases.GetDatabase("DBERP"); string sBJDID = PageParam.GetRTrimString("BJDID"); string sVWLID = PageParam.GetRTrimString("WLVID"); string sRYID = CurSession.RYID; if (!sBJDID.Equals("")) { try { DBERP.BeginTrans(); //先删物料行情 for (int i = 0; i < grdSHD2.NewRows.Count; i++) { DBERP.ExecSQL(string.Format("delete from V_XLXSBJDWLHQ where V_XLXSBJDWLHQ_BJDID='{0}' and V_XLXSBJDWLHQ_WLID='{1}'" + " and V_XLXSBJDWLHQ_ID='{2}' and V_XLXSBJDWLHQ_TZRYID='{3}'", sBJDID, grdSHD2.GetValueByFieldName("XLXSBJCLWL_WLID", grdSHD2.NewRows[i]).ToString().Trim(), sVWLID, sRYID)); } //再据界面输入构造,插入物料行情 TSQL tmpSQL = new TSQL(DBERP); tmpSQL.Clear(); tmpSQL.Add("insert into V_XLXSBJDWLHQ(V_XLXSBJDWLHQ_BJDID,V_XLXSBJDWLHQ_WLID,V_XLXSBJDWLHQ_WSJG,V_XLXSBJDWLHQ_HSJG,V_XLXSBJDWLHQ_WHRID,V_XLXSBJDWLHQ_WHR,V_XLXSBJDWLHQ_WHSJ,V_XLXSBJDWLHQ_WSJGF,V_XLXSBJDWLHQ_HSJGF,"); tmpSQL.Add("V_XLXSBJDWLHQ_ID,V_XLXSBJDWLHQ_TZRYID,V_XLXSBJDWLHQ_TZRYGH,V_XLXSBJDWLHQ_TZRYMC,V_XLXSBJDWLHQ_TIMESTAMP) "); for (int i = 0; i < grdSHD2.NewRows.Count; i++) { if (i != 0) { tmpSQL.Add(" union all "); } tmpSQL.Add(string.Format("select '{0}' as BJDID,'{1}' as WLID,{2} as WSJG,{3} as HSJG,'{4}' as WHRID,'{5}' as WHR,'{6}' as WHSJ,{7} as WSJGF,{8} as HSJGF,{9} as ID, " + " '{10}' as RYID,'{11}' as RYGH,'{12}' as RYMC,'{13}' as TIMESTAMP ", sBJDID, grdSHD2.GetValueByFieldName("XLXSBJCLWL_WLID", grdSHD2.NewRows[i]).ToString().Trim(), CMISproConvert.StrToFloat(grdSHD2.GetValueByFieldName("WSJG", grdSHD2.NewRows[i]).ToString().Trim()), CMISproConvert.StrToFloat(grdSHD2.GetValueByFieldName("HSJG", grdSHD2.NewRows[i]).ToString().Trim()), grdSHD2.GetValueByFieldName("XLXSBJDWLHQ_WHRID", grdSHD2.NewRows[i]).ToString().Trim().Equals("") ? CurSession.UserId : grdSHD2.GetValueByFieldName("XLXSBJDWLHQ_WHRID", grdSHD2.NewRows[i]).ToString().Trim(), grdSHD2.GetValueByFieldName("XLXSBJDWLHQ_WHR", grdSHD2.NewRows[i]).ToString().Trim().Equals("") ? CurSession.UserName : grdSHD2.GetValueByFieldName("XLXSBJDWLHQ_WHR", grdSHD2.NewRows[i]).ToString().Trim(), grdSHD2.GetValueByFieldName("XLXSBJDWLHQ_WHSJ", grdSHD2.NewRows[i]).ToString().Trim().Equals("") ? DateTime.Now.ToString().Trim() : grdSHD2.GetValueByFieldName("XLXSBJDWLHQ_WHSJ", grdSHD2.NewRows[i]).ToString().Trim(), CMISproConvert.StrToFloat(grdSHD2.GetValueByFieldName("WSJGF", grdSHD2.NewRows[i]).ToString().Trim()), CMISproConvert.StrToFloat(grdSHD2.GetValueByFieldName("HSJGF", grdSHD2.NewRows[i]).ToString().Trim()), sVWLID, CurSession.RYID, CurSession.UserId, CurSession.UserName, MISproUtils.GetServerTime().ToString().Trim())); } DBERP.ExecSQL(tmpSQL); DBERP.CommitTrans(); CloseWindow(); return false;//这里返回false是为了解决关闭当前页面会同时关闭“调整材料行情”页面的问题 } catch (Exception ex) { ShowMessage(ex.Message); DBERP.RollbackTrans(); return false; } } return true; } protected void grdSHD2_CalculateField(object sender, CalculateFieldEventArgs e) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); string sBJDID = PageParam.GetRTrimString("BJDID"); string sWLID = e.RowData["XLXSBJCLWL_WLID"].ToString().Trim(); if (e.EventFieldName.Equals("WSJG")) { double dHSJG = NumberUtils.RoundX(CMISproConvert.StrToFloat(e.EventFieldValue) * (1 + CMISproConvert.StrToFloat(e.RowData["XLXSBJCL_ZZSL"].ToString().Trim(), 0) / 100), XLBJDUtils.BJCLPriceDecimal); e.ResultPairs.Add("HSJG", dHSJG.ToString()); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHR", CurSession.UserName); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHRID", CurSession.UserId); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHSJ", DateTime.Now.ToString().Trim()); } else if (e.EventFieldName.Equals("HSJG")) { double dWSJG = NumberUtils.RoundX(CMISproConvert.StrToFloat(e.EventFieldValue) / (1 + CMISproConvert.StrToFloat(e.RowData["XLXSBJCL_ZZSL"].ToString().Trim(), 0) / 100), XLBJDUtils.BJCLPriceDecimal); e.ResultPairs.Add("WSJG", dWSJG.ToString()); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHR", CurSession.UserName); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHRID", CurSession.UserId); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHSJ", DateTime.Now.ToString().Trim()); } else if (e.EventFieldName.Equals("WSJGF")) { double dHSJGF = NumberUtils.RoundX(CMISproConvert.StrToFloat(e.EventFieldValue) * (1 + CMISproConvert.StrToFloat(e.RowData["XLXSBJCL_ZZSL"].ToString().Trim(), 0) / 100), XLBJDUtils.BJCLPriceDecimal); double dWSJG = CMISproConvert.StrToFloat(e.RowData["JGYBJCLID_WSJG"].ToString().Trim(), 0) + CMISproConvert.StrToFloat(e.EventFieldValue); double dHSJG = CMISproConvert.StrToFloat(e.RowData["JGYBJCLID_HSJG"].ToString().Trim(), 0) + dHSJGF; e.ResultPairs.Add("HSJGF", dHSJGF.ToString()); e.ResultPairs.Add("WSJG", dWSJG.ToString()); e.ResultPairs.Add("HSJG", dHSJG.ToString()); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHR", CurSession.UserName); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHRID", CurSession.UserId); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHSJ", DateTime.Now.ToString().Trim()); } else if (e.EventFieldName.Equals("HSJGF")) { double dWSJGF = NumberUtils.RoundX(CMISproConvert.StrToFloat(e.EventFieldValue) / (1 + CMISproConvert.StrToFloat(e.RowData["XLXSBJCL_ZZSL"].ToString().Trim(), 0) / 100), XLBJDUtils.BJCLPriceDecimal); double dWSJG = CMISproConvert.StrToFloat(e.RowData["JGYBJCLID_WSJG"].ToString().Trim(), 0) + dWSJGF; double dHSJG = CMISproConvert.StrToFloat(e.RowData["JGYBJCLID_HSJG"].ToString().Trim(), 0) + CMISproConvert.StrToFloat(e.EventFieldValue); e.ResultPairs.Add("WSJGF", dWSJGF.ToString()); e.ResultPairs.Add("WSJG", dWSJG.ToString()); e.ResultPairs.Add("HSJG", dHSJG.ToString()); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHR", CurSession.UserName); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHRID", CurSession.UserId); e.ResultPairs.Add("V_XLXSBJDWLHQ_WHSJ", DateTime.Now.ToString().Trim()); } //SQL.Clear(); //SQL.Add(" select 1 from XLXSBJDWLHQ where XLXSBJCLWL_WLID = :pWLID and XLXSBJDWLHQ_BJDID = :pBJDID "); //SQL.ParamByName("pBJCLID").Value = sWLID; //SQL.ParamByName("pBJDID").Value = sBJDID; //DataSet dsBJDWLHQ = dberp.OpenDataSet(SQL); //if (dsBJDWLHQ.Tables[0].Rows.Count > 0) //{ // SQL.Clear(); // SQL.Add(" update XLXSBJDWLHQ "); // SQL.Add(" set XLXSBJDWLHQ_WSJG = :XLXSBJDWLHQ_WSJG,XLXSBJDWLHQ_HSJG=:XLXSBJDWLHQ_HSJG, "); // SQL.Add(" XLXSBJDWLHQ_WSJGF=:XLXSBJDWLHQ_WSJGF,XLXSBJDWLHQ_HSJGF=:XLXSBJDWLHQ_HSJGF,"); // SQL.Add(" XLXSBJDWLHQ_WHRID = :XLXSBJDWLHQ_WHRID, XLXSBJDWLHQ_WHR = :XLXSBJDWLHQ_WHR, XLXSBJDWLHQ_WHSJ = :XLXSBJDWLHQ_WHSJ"); // SQL.Add(" where XLXSBJDWLHQ_BJDID =:pBJDID and XLXSBJDWLHQ_WLID = :pWLID "); // SQL.ParamByName("XLXSBJDWLHQ_WSJG").Value = sWSJG; // SQL.ParamByName("XLXSBJDWLHQ_HSJG").Value = sHSJG; // SQL.ParamByName("XLXSBJDWLHQ_WSJGF").Value = sWSJGF; // SQL.ParamByName("XLXSBJDWLHQ_HSJGF").Value = sHSJGF; // SQL.ParamByName("XLXSBJDWLHQ_WHR").Value = CurSession.UserName; // SQL.ParamByName("XLXSBJDWLHQ_WHRID").Value = CurSession.UserId; // SQL.ParamByName("XLXSBJDWLHQ_WHSJ").Value = DateTime.Now; // SQL.ParamByName("pWLID").Value = sWLID; // SQL.ParamByName("pBJDID").Value = sBJDID; // dberp.ExecSQL(SQL); //} //else //{ // //插入 // SQL.Clear(); // SQL.Add(" insert into XLXSBJDWLHQ( "); // SQL.Add(" XLXSBJDWLHQ_WLID,XLXSBJDWLHQ_BJDID, XLXSBJDWLHQ_WSJG,XLXSBJDWLHQ_HSJG, XLXSBJDWLHQ_WSJGF,XLXSBJDWLHQ_HSJGF, "); // SQL.Add(" XLXSBJDWLHQ_WHRID, XLXSBJDWLHQ_WHR, XLXSBJDWLHQ_WHSJ )"); // SQL.Add(" values("); // SQL.Add(" :XLXSBJDWLHQ_WLID, :XLXSBJDWLHQ_BJDID, :XLXSBJDWLHQ_WSJG,:XLXSBJDWLHQ_HSJG, :XLXSBJDWLHQ_WSJGF, :XLXSBJDWLHQ_HSJGF,"); // SQL.Add(" :XLXSBJDWLHQ_WHRID, :XLXSBJDWLHQ_WHR, :XLXSBJDWLHQ_WHSJ )"); // SQL.ParamByName("XLXSBJDWLHQ_WLID").Value = sWLID; // SQL.ParamByName("XLXSBJDWLHQ_BJDID").Value = sBJDID; // SQL.ParamByName("XLXSBJDWLHQ_WSJG").Value = sWSJG; // SQL.ParamByName("XLXSBJDWLHQ_HSJG").Value = sHSJG; // SQL.ParamByName("XLXSBJDWLHQ_WSJGF").Value = sWSJGF; // SQL.ParamByName("XLXSBJDWLHQ_HSJGF").Value = sHSJGF; // SQL.ParamByName("XLXSBJDWLHQ_WHR").Value = CurSession.UserName; // SQL.ParamByName("XLXSBJDWLHQ_WHRID").Value = CurSession.UserId; // SQL.ParamByName("XLXSBJDWLHQ_WHSJ").Value = DateTime.Now; // dberp.ExecSQL(SQL); //} } #endregion #region 自定义函数 #endregion #region 控件事件 protected void btnCGHQ_OnClick(object sender, EventArgs e) { Confirm.Register("IsQD", "将使用今天最新的物料采购价格进行更新,是否继续?"); if (Confirm.GetValue("IsQD").Trim().Equals("")) { Confirm.Ask("IsQD"); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("N")) { Confirm.Clear(); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("Y")) { Confirm.Clear(); } string sWLIDList = ""; foreach (GridViewRow row in grdSHD2.NewRows) { if (grdSHD2.GetValueByFieldName("JGYBJCLXX", row).Trim().Equals("")) { sWLIDList += grdSHD2.GetValueByFieldName("XLXSBJCLWL_WLID", row).Trim() + ","; } } sWLIDList = sWLIDList.TrimEnd(','); //用物料采购价格进行更新,只更新没有加工关系的物料 //差异#2021030856-两个按钮不用考虑报价单日期,直接取当天最新行情 TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("merge into V_XLXSBJDWLHQ "); SQL.Add("using "); SQL.Add("( "); SQL.Add("select :pBJDID as BJDID,XLXSBJCLWL_WLID as WLID, "); SQL.Add("isnull(XLXSWLHQ_WSCGJG,0) as WSJG, "); SQL.Add("isnull(XLXSWLHQ_HSCGJG,0) as HSJG "); SQL.Add("from XLXSBJCLWL "); SQL.Add("left join "); SQL.Add(" (select XLXSWLHQ_WLID,XLXSWLHQ_WSCGJG,XLXSWLHQ_HSCGJG"); SQL.Add(" from XLXSWLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS) as maxYXQS"); SQL.Add(" from XLXSWLHQ"); SQL.Add(" where XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pBJRQ and(XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null)"); SQL.Add(" group by XLXSWLHQ_WLID"); SQL.Add(" ) a "); SQL.Add(" where XLXSWLHQ_JGBID=' ' "); SQL.Add(" and XLXSWLHQ_WLID=WLID "); SQL.Add(" and XLXSWLHQ_YXQS=maxYXQS "); SQL.Add(" ) c on XLXSWLHQ_WLID=XLXSBJCLWL_WLID "); SQL.Add("where " + CMISproDataBase.GetWhereEqual("XLXSBJCLWL_WLID", sWLIDList)); SQL.Add(") B on (V_XLXSBJDWLHQ_BJDID=B.BJDID and V_XLXSBJDWLHQ_WLID=B.WLID and V_XLXSBJDWLHQ_ID=:pWLVID and V_XLXSBJDWLHQ_TZRYID=:pRYID ) "); SQL.Add("when matched then "); SQL.Add("update set V_XLXSBJDWLHQ_WSJG=B.WSJG,V_XLXSBJDWLHQ_HSJG=B.HSJG, "); SQL.Add(" V_XLXSBJDWLHQ_WHR=:pWHR,V_XLXSBJDWLHQ_WHRID=:pWHRID,V_XLXSBJDWLHQ_WHSJ=:pWHSJ "); SQL.Add("when not matched then "); SQL.Add("insert (V_XLXSBJDWLHQ_BJDID,V_XLXSBJDWLHQ_WLID,V_XLXSBJDWLHQ_WSJG,V_XLXSBJDWLHQ_HSJG,V_XLXSBJDWLHQ_WSJGF,V_XLXSBJDWLHQ_HSJGF,"); SQL.Add("V_XLXSBJDWLHQ_ID,V_XLXSBJDWLHQ_TZRYID,V_XLXSBJDWLHQ_TZRYGH,V_XLXSBJDWLHQ_TZRYMC,V_XLXSBJDWLHQ_TIMESTAMP,V_XLXSBJDWLHQ_WHR,V_XLXSBJDWLHQ_WHRID,V_XLXSBJDWLHQ_WHSJ) "); SQL.Add("values (B.BJDID,B.WLID,B.WSJG,B.HSJG,0,0,:pWLVID,:pRYID,:pRYGH,:pRYMC,:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ) "); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID"); SQL.ParamByName("pWLVID").Value = PageParam.GetRTrimString("WLVID"); SQL.ParamByName("pRYID").Value = CurSession.RYID; SQL.ParamByName("pRYGH").Value = CurSession.UserId; SQL.ParamByName("pRYMC").Value = CurSession.UserName; SQL.ParamByName("pTIMESTAMP").Value = MISproUtils.GetServerTime(); SQL.ParamByName("pBJRQ").Value = CMISproConvert.ConvertDate(DateTime.Now); SQL.ParamByName("pWHR").Value = CurSession.UserName; SQL.ParamByName("pWHRID").Value = CurSession.UserId; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); //刷新 Master_OnQuery(); GridDataBind(); FormAreaUpdate(); ShowMessage("更新完成!"); } protected void btnWLHQ_OnClick(object sender, EventArgs e) { Confirm.Register("IsQD", "将使用今天最新的物料价格进行更新,是否继续?"); if (Confirm.GetValue("IsQD").Trim().Equals("")) { Confirm.Ask("IsQD"); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("N")) { Confirm.Clear(); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("Y")) { Confirm.Clear(); } string sWLIDList = ""; foreach (GridViewRow row in grdSHD2.NewRows) { if (grdSHD2.GetValueByFieldName("JGYBJCLXX", row).Trim().Equals("")) { sWLIDList += grdSHD2.GetValueByFieldName("XLXSBJCLWL_WLID", row).Trim() + ","; } } sWLIDList = sWLIDList.TrimEnd(','); //用物料材料价格进行更新,只更新没有加工关系的物料 //差异#2021030856-两个按钮不用考虑报价单日期,直接取当天最新行情 TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("merge into V_XLXSBJDWLHQ "); SQL.Add("using "); SQL.Add("( "); SQL.Add("select :pBJDID as BJDID,XLXSBJCLWL_WLID as WLID, "); SQL.Add("isnull(XLXSWLHQ_WSJG,0) as WSJG, "); SQL.Add("isnull(XLXSWLHQ_HSJG,0) as HSJG "); SQL.Add("from XLXSBJCLWL "); SQL.Add("left join "); SQL.Add(" (select XLXSWLHQ_WLID,XLXSWLHQ_WSJG,XLXSWLHQ_HSJG"); SQL.Add(" from XLXSWLHQ,"); SQL.Add(" ("); SQL.Add(" select XLXSWLHQ_WLID as WLID,max(XLXSWLHQ_YXQS) as maxYXQS"); SQL.Add(" from XLXSWLHQ"); SQL.Add(" where XLXSWLHQ_JGBID=' '"); SQL.Add(" and XLXSWLHQ_YXQS<=:pBJRQ and(XLXSWLHQ_YXQZ>=:pBJRQ or XLXSWLHQ_YXQZ is null)"); SQL.Add(" group by XLXSWLHQ_WLID"); SQL.Add(" ) a "); SQL.Add(" where XLXSWLHQ_JGBID=' ' "); SQL.Add(" and XLXSWLHQ_WLID=WLID "); SQL.Add(" and XLXSWLHQ_YXQS=maxYXQS "); SQL.Add(" ) c on XLXSWLHQ_WLID=XLXSBJCLWL_WLID "); SQL.Add("where " + CMISproDataBase.GetWhereEqual("XLXSBJCLWL_WLID", sWLIDList)); SQL.Add(") B on (V_XLXSBJDWLHQ_BJDID=B.BJDID and V_XLXSBJDWLHQ_WLID=B.WLID and V_XLXSBJDWLHQ_ID=:pWLVID and V_XLXSBJDWLHQ_TZRYID=:pRYID ) "); SQL.Add("when matched then "); SQL.Add("update set V_XLXSBJDWLHQ_WSJG=B.WSJG,V_XLXSBJDWLHQ_HSJG=B.HSJG, "); SQL.Add(" V_XLXSBJDWLHQ_WHR=:pWHR,V_XLXSBJDWLHQ_WHRID=:pWHRID,V_XLXSBJDWLHQ_WHSJ=:pWHSJ "); SQL.Add("when not matched then "); SQL.Add("insert (V_XLXSBJDWLHQ_BJDID,V_XLXSBJDWLHQ_WLID,V_XLXSBJDWLHQ_WSJG,V_XLXSBJDWLHQ_HSJG,V_XLXSBJDWLHQ_WSJGF,V_XLXSBJDWLHQ_HSJGF,"); SQL.Add("V_XLXSBJDWLHQ_ID,V_XLXSBJDWLHQ_TZRYID,V_XLXSBJDWLHQ_TZRYGH,V_XLXSBJDWLHQ_TZRYMC,V_XLXSBJDWLHQ_TIMESTAMP,V_XLXSBJDWLHQ_WHR,V_XLXSBJDWLHQ_WHRID,V_XLXSBJDWLHQ_WHSJ) "); SQL.Add("values (B.BJDID,B.WLID,B.WSJG,B.HSJG,0,0,:pWLVID,:pRYID,:pRYGH,:pRYMC,:pTIMESTAMP,:pWHR,:pWHRID,:pWHSJ) "); SQL.ParamByName("pBJDID").Value = PageParam.GetRTrimString("BJDID"); SQL.ParamByName("pWLVID").Value = PageParam.GetRTrimString("WLVID"); SQL.ParamByName("pRYID").Value = CurSession.RYID; SQL.ParamByName("pRYGH").Value = CurSession.UserId; SQL.ParamByName("pRYMC").Value = CurSession.UserName; SQL.ParamByName("pTIMESTAMP").Value = MISproUtils.GetServerTime(); SQL.ParamByName("pBJRQ").Value = CMISproConvert.ConvertDate(DateTime.Now); SQL.ParamByName("pWHR").Value = CurSession.UserName; SQL.ParamByName("pWHRID").Value = CurSession.UserId; SQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(SQL); //刷新 Master_OnQuery(); GridDataBind(); FormAreaUpdate(); ShowMessage("更新完成!"); } #endregion } }