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

383 lines
15 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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_MODEL.Page;
using GThinking.N_MISPRO.Data;
using GThinking.N_PUBLIC;
using System.Text;
using GThinking.N_MISPRO.Utility;
using GThinking.N_MISPRO.TableCache;
using GThinking.N_WORKFLOW;
using System.Drawing;
using System.Collections.Generic;
namespace GThinking.N_XLXSBJ
{
[TableMap(DB = "DBERP", DbTableName = "XLXSZBFWFL", Umid = 100860000, IsWorkFlow = false,UseWhr=false,IsAttach=false)]
public class XLBJD_YZ_ZBFW : EntityManager
{
}
public partial class XLBJD_YZ_ZBFWFInfo : SingleGridBase
{
XLBJD_YZ_ZBFW entity = new XLBJD_YZ_ZBFW();
protected void Page_Load(object sender, EventArgs e)
{
this.UMID = 100860000;
this.UMName = "线缆销售报价单";
this.CurMaster = Master;
this.ModuleGV = grdContentGrid;
this.CurEntity = entity;
this.PageHeight = 600;
this.PageWidth = 700;
Master.EnableNewBtn = false;
Master.EnableEditBtn = false;
Master.EnableCopyBtn = false;
Master.EnableDeleteBtn = false;
Master.EnableViewBtn = false;
Master.EnableQueryBtn = false;
Master.EnablePrintBtn = false;
base.DataKeyNames = new string[] { "XLXSZBFWFL_ZBJES", "XLXSZBFWFL_ZBJEZ", "XLXSZBFWFL_FL", "ZBFWF" };
base.InitPage();
if (!IsPostBack)
{
Master_OnStandardQuery(null, null);
InitControl();
}
}
#region 模板事件继承
protected override void Master_OnStandardQuery(object sender, EventArgs e)
{
entity.EntityTable.QuerySelSql = GetSQL();
base.Master_OnStandardQuery(sender, e);
entity.GridDataBind(grdContentGrid, tSession);
}
protected override void moduleGV_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
double dBJJES = CMISproConvert.StrToFloat(grdContentGrid.DataKeys[e.Row.RowIndex]["XLXSZBFWFL_ZBJES"].ToString().Trim());
double dBJJEZ = CMISproConvert.StrToFloat(grdContentGrid.DataKeys[e.Row.RowIndex]["XLXSZBFWFL_ZBJEZ"].ToString().Trim());
double dFL = CMISproConvert.StrToFloat(grdContentGrid.DataKeys[e.Row.RowIndex]["XLXSZBFWFL_FL"].ToString().Trim());
double dZJE = CMISproConvert.StrToFloat(PageParam.GetRTrimString("BJDJE"))/10000;//单位为万元
if (dZJE > dBJJES)
{
if (dZJE > dBJJEZ)
{
e.Row.Cells[3].Text = NumberUtils.RoundX((dBJJEZ - dBJJES) * dFL / 100, 6).ToString();
}
else
{
e.Row.Cells[3].Text = NumberUtils.RoundX((dZJE - dBJJES) * dFL / 100, 6).ToString();
}
}
}
base.moduleGV_RowDataBound(sender, e);
}
protected override void moduleGV_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
entity.EntityTable.QuerySelSql = GetSQL();
grdContentGrid.SelectedIndex = -1;
base.moduleGV_PageIndexChanging(sender, e);
}
#endregion
#region 自定义函数
private string GetSQL()
{
StringBuilder sSQL = new StringBuilder();
sSQL.AppendLine("select XLXSZBFWFL_ZBJES,XLXSZBFWFL_ZBJEZ,XLXSZBFWFL_FL,0.0 AS ZBFWF");
sSQL.AppendLine(" FROM XLXSZBFWFL ");
sSQL.AppendLine(" WHERE XLXSZBFWFL_XMMC=:pXMMC ");
sSQL.AppendLine(" ORDER BY XLXSZBFWFL_ZBJES ");
string sXMMC = PageParam.GetRTrimString("XMMC");
if (!CMISproDataBase.ExistsRecord("DBERP", string.Format("SELECT 1 FROM XLXSZBFWFL WHERE XLXSZBFWFL_XMMC='{0}'", sXMMC)))
{
sXMMC = " ";
}
entity.Param.Add("pXMMC", sXMMC);
return sSQL.ToString();
}
private void InitControl()
{
grdContentGrid.AllowPaging = false;
string sJGBBJBM = string.IsNullOrEmpty(PageParam.GetRTrimString("JGBBJBM")) ? "表价" : PageParam.GetRTrimString("JGBBJBM");
tr2.Style["height"] = "15px";
txtZJE.Value = PageParam.GetRTrimString("BJDJE");
cbxSZFW.ClearItems();
if (PageParam.GetRTrimString("PLSZAll").Equals("N"))
cbxSZFW.Items.Add(new ListItem("勾选记录", "N"));
cbxSZFW.Items.Add(new ListItem("整单记录", "Y"));
if (PageParam.ContainsKey("FromXHDYSX"))
cbxSZFW.Items.Add(new ListItem("所查记录", "C"));
if (PageParam.GetRTrimString("PLSZAll").Equals("D"))
cbxSZFW.Items.Add(new ListItem("当前记录", "D"));
cbxSZFW.SelectedValue = PageParam.GetRTrimString("PLSZAll");
chkYBJ.Text = "有" + sJGBBJBM;
lblYZID.Text = PageParam.GetRTrimString("YZMC") + ":";
lblJE.Text = PageParam.GetRTrimString("YZMC") + "总金额:";
string sJJFS = PageParam.GetRTrimString("JJFS");
if (sJJFS.Equals("JD") || sJJFS.Equals("KD") || sJJFS.Equals("SX") || sJJFS.Equals("DD") || sJJFS.Equals("MD") || sJJFS.Equals("MP"))
{
lblDW.Text = "%";
}
else if (sJJFS.Equals("JJ"))
{
if (XLBJDUtils.GetYZXXByYZID(PageParam.GetRTrimString("YZID")).XLXSTZYZ_TJLX == "1")
lblDW.Text = "元";
else
lblDW.Text = "";
}
else if (sJJFS.Equals("MX") || sJJFS.Equals("DX"))
{
//乘以系数/除以系数
lblDW.Text = "";
txtYZZ.DecimalPlaces = 4;
}
lblJSGS.Text = PageParam.GetRTrimString("YZMC")+"*折扣比例/报价总金额";
//赋值放在设置完小数位数之后
txtYZZ.Value = CMISproConvert.StrToFloat(PageParam.GetRTrimString("DefYZZ"), 0);
string sMRTJFW = "," + PageParam.GetRTrimString("MRTJFW") + ",";
if (sMRTJFW.Contains(",1,"))
chkYBJ.Checked = true;
if (sMRTJFW.Contains(",2,"))
chkWG.Checked = true;
if (sMRTJFW.Contains(",3,"))
chkFWG.Checked = true;
txtZKBL.Value = 80;
double dYZZ = 0;
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL sql = new TSQL(dberp);
string sBJDID=PageParam.GetRTrimString("BJDID");
string sBJDXHList=PageParam.GetRTrimString("BJDXHList");
sql.Clear();
sql.Add(string.Format("select top 1 XLXSBJDYZZ0_YZZ{0} from XLXSBJDYZZ0 where XLXSBJDYZZ0_BJDID=:pBJDID ", PageParam.GetRTrimString("YZID").Replace("BJ", "")));
if (!string.IsNullOrEmpty(sBJDXHList))
sql.Add(" and XLXSBJDYZZ0_XH= "+sBJDXHList.Split(',')[0]);
sql.ParamByName("pBJDID").Value=sBJDID;
DataSet ds = dberp.OpenDataSet(sql);
if (ds.Tables[0].Rows.Count > 0)
{
dYZZ = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim());
}
txtBJJE.Value = CMISproConvert.StrToFloat(txtZJE.Value) * (1 - dYZZ / 100.0);
txtJE.Value = GetZBFWF(dberp, PageParam.GetRTrimString("XMMC"), txtBJJE.Value, txtZKBL.Value, txtYZZ.DecimalPlaces);
txtYZZ.Value = NumberUtils.RoundX(txtJE.Value * txtZKBL.Value / txtBJJE.Value, txtYZZ.DecimalPlaces);
}
//获取报价单主表中标服务费
public static double GetZBFWF(TDatabase dberp, string sXMMC, double dZBJE, double dZBFWFXFBL,int decimalPlaces)
{
dZBFWFXFBL = dZBFWFXFBL / 100;
// 计算中标服务费
double dZBFWF = 0;
TSQL SQL = new TSQL(dberp);
try
{
// 优先查询项目名称对应的费率记录
SQL.Clear();
SQL.Add(" select XLXSZBFWFL_ZBJES*10000 AS XLXSZBFWFL_ZBJES, XLXSZBFWFL_ZBJEZ*10000 AS XLXSZBFWFL_ZBJEZ, XLXSZBFWFL_FL ");
SQL.Add(" from XLXSZBFWFL ");
SQL.Add(" where XLXSZBFWFL_XMMC=:pXMMC ");
SQL.Add(" order by XLXSZBFWFL_ZBJES ");
SQL.ParamByName("pXMMC").Value = sXMMC;
DataSet dsRate = dberp.OpenDataSet(SQL);
// 如果没有找到项目名称对应的记录,则查询XLXSZBFWFL_XMMC=''的记录
if (dsRate.Tables[0].Rows.Count == 0)
{
SQL.Clear();
SQL.Add(" select XLXSZBFWFL_ZBJES*10000 AS XLXSZBFWFL_ZBJES, XLXSZBFWFL_ZBJEZ*10000 AS XLXSZBFWFL_ZBJEZ, XLXSZBFWFL_FL ");
SQL.Add(" from XLXSZBFWFL ");
SQL.Add(" where XLXSZBFWFL_XMMC=' ' ");
SQL.Add(" order by XLXSZBFWFL_ZBJES ");
dsRate = dberp.OpenDataSet(SQL);
}
// 分段计算中标服务费
if (dsRate.Tables[0].Rows.Count > 0)
{
double currentAmount = dZBJE;
for (int i = 0; i < dsRate.Tables[0].Rows.Count; i++)
{
double lowerLimit = CMISproConvert.StrToFloat(dsRate.Tables[0].Rows[i]["XLXSZBFWFL_ZBJES"].ToString());
double upperLimit = CMISproConvert.StrToFloat(dsRate.Tables[0].Rows[i]["XLXSZBFWFL_ZBJEZ"].ToString());
double rate = CMISproConvert.StrToFloat(dsRate.Tables[0].Rows[i]["XLXSZBFWFL_FL"].ToString());
if (currentAmount <= 0)
break;
double segmentAmount = 0;
if (i == dsRate.Tables[0].Rows.Count - 1)
{
// 最后一段,全部剩余金额
segmentAmount = currentAmount;
}
else
{
// 非最后一段,取当前段的金额
segmentAmount = Math.Min(currentAmount, upperLimit - lowerLimit);
}
// 累加当前段的服务费
dZBFWF += segmentAmount * rate / 100;
currentAmount -= segmentAmount;
}
}
else
{
// 如果没有找到任何费率记录,使用默认费率表计算
double[] lowerLimits = { 0, 100, 500, 1000, 5000, 10000, 100000 };
double[] upperLimits = { 100, 500, 1000, 5000, 10000, 100000, double.MaxValue };
double[] rates = { 1.5, 1.1, 0.8, 0.5, 0.25, 0.05, 0.01 };
double currentAmount = dZBJE;
for (int i = 0; i < lowerLimits.Length; i++)
{
if (currentAmount <= 0)
break;
double segmentAmount = 0;
if (dZBJE > upperLimits[i])
{
segmentAmount = upperLimits[i] - lowerLimits[i];
}
else if (dZBJE > lowerLimits[i])
{
segmentAmount = dZBJE - lowerLimits[i];
}
if (segmentAmount > 0)
{
dZBFWF += segmentAmount * rates[i] / 100;
}
}
}
// 应用下浮比例
//dZBFWF = NumberUtils.RoundX(dZBFWF * dZBFWFXFBL * 100/ dZBJE, decimalPlaces);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return dZBFWF;
}
#endregion
#region 自定义按钮
protected void btnOK_Click(object sender, EventArgs e)
{
if (cbxSZFW.SelectedValue.Trim().Equals(""))
{
ShowMessage("调价范围--不允许为空!");
return;
}
if (!PageParam.GetRTrimString("MinYZZ").Equals(""))
{
if (txtYZZ.Value < CMISproConvert.StrToFloat(PageParam.GetRTrimString("MinYZZ"), 0))
{
ShowMessage(string.Format("不允许低于设置的调价最小值{0}!", PageParam.GetRTrimString("MinYZZ")));
return;
}
}
if (!PageParam.GetRTrimString("MaxYZZ").Equals(""))
{
if (txtYZZ.Value > CMISproConvert.StrToFloat(PageParam.GetRTrimString("MaxYZZ"), 0))
{
ShowMessage(string.Format("不允许高于设置的调价最大值{0}!", PageParam.GetRTrimString("MaxYZZ")));
return;
}
}
string sYZID = PageParam.GetRTrimString("YZID");
string sYZZList = sYZID + "|" + txtYZZ.Value.ToString() + "|" + (chkYBJ.Checked ? "Y" : "N") + "," + (chkWG.Checked ? "Y" : "N") + "," + (chkFWG.Checked ? "Y" : "N");
//使用脚本给父页面的隐藏控件赋值,调用父页面的控件事件
DialogOperationScript dos = new DialogOperationScript(this);
dos.SetOwnerControlValue(PageParam.GetRTrimString("txtPLSZAllCID"), cbxSZFW.SelectedValue.Trim());
dos.SetOwnerControlValue(PageParam.GetRTrimString("txtPLSZYZListCID"), sYZZList);
dos.ClickOwnerButton(PageParam.GetRTrimString("btnRefreshCID"));
dos.CloseSelf();
dos.Execute();
}
protected void btnQX_Click(object sender, EventArgs e)
{
CloseWindow();
}
#endregion
#region 控件事件
protected void chkWG_OnCheckedChanged(object sender, EventArgs e)
{
if (chkWG.Checked)
chkFWG.Checked = false;
FormAreaUpdate();
moduleGV_PageIndexChanging(null, null);
}
protected void chkFWG_OnCheckedChanged(object sender, EventArgs e)
{
if (chkFWG.Checked)
chkWG.Checked = false;
FormAreaUpdate();
moduleGV_PageIndexChanging(null, null);
}
protected void txtZKBL_TextChanged(object sender, EventArgs e)
{
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
txtJE.Value = GetZBFWF(dberp, PageParam.GetRTrimString("XMMC"), txtBJJE.Value, txtZKBL.Value, txtYZZ.DecimalPlaces);
txtYZZ.Value = NumberUtils.RoundX(txtJE.Value * txtZKBL.Value / txtBJJE.Value, txtYZZ.DecimalPlaces);
FormAreaUpdate();
moduleGV_PageIndexChanging(null, null);
}
#endregion
}
}