286 lines
12 KiB
C#
286 lines
12 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 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<string, string> 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<string, string> 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<string, string> GetDicCLYL(string sBJDID, string sXH,string sBJFLID)
|
|
{
|
|
Dictionary<string, string> DicCLYL = new Dictionary<string, string>();
|
|
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<string, string> GetDicCLYLXX(string sCLYLXX)
|
|
{
|
|
Dictionary<string, string> DicCLYLXX = new Dictionary<string, string>();
|
|
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();
|
|
}
|
|
}
|
|
}
|