Files
N_XLXSBJ----MX/CLYL_CLYLList.aspx.cs
T
2026-08-21 17:03:02 +08:00

438 lines
22 KiB
C#

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);
}
}
}