This commit is contained in:
2026-08-21 17:03:02 +08:00
commit f065129b20
2292 changed files with 666241 additions and 0 deletions
+382
View File
@@ -0,0 +1,382 @@
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
}
}