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

692 lines
32 KiB
C#
Raw 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.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_MISPROAS.Web.AjaxServices;
using GThinking.N_MISPRO.Data;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using GThinking.N_MISPRO;
using GThinking.N_MISPRO.Utility;
using GThinking.N_WORKFLOW;
using System.Web.Caching;
using GThinking.N_PUBLIC;
namespace GThinking.N_XLXSBJ
{
public class XSHTSCBJDService
{
/// <summary>
/// 生成报价单,来源模块:100452001|销售合同维护
/// </summary>
/// <param name="sJJDID">交接单ID</param>
/// <param name="fTJ">铜价</param>
/// <param name="fLJ">铝价</param>
/// <param name="sJGLX">价格类型</param>
/// <param name="sUserID">用户</param>
/// <returns></returns>
[AjaxMethod(AuthRequried = false)]
public static XSHTSCBJDData CreateXLXSBJD(string sJJDID,string sRQ,double fTJ, double fLJ, string sUserID)
{
Mac.MacLog.TraceFormat(String.Format("销售合同生成报价单服务-------------------"));
Mac.MacLog.TraceFormat(String.Format("操作人:{0}---------------", sUserID + "|" + TRYXX.GetRYXXByGH(sUserID).XM));
Mac.MacLog.TraceFormat(String.Format("开始时间:{0}---------------", DateTime.Now.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("交接单编码:{0}---------------", sJJDID));
Mac.MacLog.TraceFormat(String.Format("日期:{0}---------------", sRQ));
Mac.MacLog.TraceFormat(String.Format("铜价:{0}---------------", fTJ.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("铝价:{0}---------------", fLJ.ToString().Trim()));
DateTime dtBeg = DateTime.Now;
XSHTSCBJDData objOUT = new XSHTSCBJDData();
objOUT.Success = true;
objOUT.ErrorMessage = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
string sBJDID = "";
try
{
if (sJJDID.Equals(""))
{
throw new Exception("交接单编码为空,不允许生成报价单记录!");
}
if (sRQ.Equals(""))
{
throw new Exception("日期为空,不允许生成报价单记录!");
}
SQL.Clear();
SQL.Add("select XLXSBJD_BJDID from XLXSBJD where XLXSBJD_YWLX='HT' and XLXSBJD_YWDH=:sJJDID ");
SQL.ParamByName("sJJDID").Value = sJJDID;
DataSet dsBJD = dberp.OpenDataSet(SQL);
if (dsBJD.Tables[0].Rows.Count > 0)
{
objOUT.Success = false;
objOUT.ErrorMessage = "当前合同已生成比价记录,不允许重复生成!";
}
else
{
GetXSHTToBJD(dberp, SQL, objOUT, sBJDID, sJJDID, sRQ, fTJ, fLJ, sUserID);
}
}
catch (Exception ex)
{
objOUT.Success = false;
objOUT.ErrorMessage = ex.Message.ToString().Trim();
}
DateTime dtEnd = DateTime.Now;
TimeSpan spOm = dtEnd - dtBeg;
double dTotal = spOm.TotalSeconds;
Mac.MacLog.TraceFormat(String.Format("总计耗时:{0}---------------", dTotal.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("时间1:{0}---------------", dtBeg.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("时间2:{0}---------------", dtEnd.ToString().Trim()));
return objOUT;
}
private static void GetXSHTToBJD(TDatabase dberp, TSQL SQL, XSHTSCBJDData objOUT, string sBJDID, string sJJDID,string sRQ, double fTJ, double fLJ, string sUserGH)
{
DateTime dt1 = DateTime.Now;
DateTime dt2 = DateTime.Now;
DateTime dt3 = DateTime.Now;
DateTime dt4 = DateTime.Now;
DateTime dt5 = DateTime.Now;
DateTime dt6 = DateTime.Now;
DateTime dt7 = DateTime.Now;
DateTime dt8 = DateTime.Now;
dt1 = DateTime.Now;
SQL.Clear();
SQL.Add("select ");
SQL.Add(" HT_KHIDE,KH_MC,HT_XMMC,HT_SYDWID,HT_XZQHID,HT_XSZRR,HT_LXR,HT_LXDH,'HT' as YWLX,HT_JJDID, ");
SQL.Add(" HTMX_XH,HTMX_WLID,HTMX_XQSL,HTMX_JLDW,");
SQL.Add(" case when isnull(XSBJXHTH_BJXLXHID,' ') = ' ' then XLXLB_XLXHID else XSBJXHTH_BJXLXHID end as XLXLB_XLXHID,XLXLB_XLGGID,XLXLB_XLBZID,XLXLB_DYDJID,XLXLB_XLYSID");
SQL.Add("from HTMX");
SQL.Add("left join HT on HT_JJDID=HTMX_JJDID");
SQL.Add("left join KH on KH_KHID=HT_KHIDE");
SQL.Add("left join XSY on XSY_TXY=HT_XSZRR");
SQL.Add("left join XLXLB on XLXLB_WLID=HTMX_WLID");
SQL.Add("left join XSBJXHTH on XSBJXHTH_XLXHID=XLXLB_XLXHID");
SQL.Add("where HT_JJDID=:pJJDID");
SQL.ParamByName("pJJDID").Value = sJJDID;
DataSet dsHT = dberp.OpenDataSet(SQL);
Mac.MacLog.TraceFormat(String.Format("dt1:{0}---------------", dt1.ToString().Trim()));
if (dsHT.Tables[0].Rows.Count > 0)
{
try
{
dberp.BeginTrans();
dt2 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt2:{0}---------------", dt2.ToString().Trim()));
#region 主表变量初始化
string sYWLX = "HT";
string sYWDH = sJJDID;
double fYWXH = 0;
CMISproSession tSession = null;
string sBJRQ = CMISproConvert.ConvertDate(sRQ);
string sBJFLID = GetBJFLID(dberp, SQL);
string sXSQYID = "";
string sXZQHID=dsHT.Tables[0].Rows[0]["HT_XZQHID"].ToString().Trim();
string sJGBID = "";
string sKH=dsHT.Tables[0].Rows[0]["KH_MC"].ToString().Trim();
string sTXY = dsHT.Tables[0].Rows[0]["HT_XSZRR"].ToString().Trim();
string sXSJLMC = "";
string sXSBMID = "";
GetXSYXX(dberp, SQL, sTXY, ref sXSJLMC, ref sXSBMID);
string sSYDWID = dsHT.Tables[0].Rows[0]["HT_SYDWID"].ToString().Trim();
#region 报价分类校验
if (sBJFLID.Equals(""))
{
throw new Exception("报价分类为空!请至【100860062|销售报价业务配置】模块进行设置!");
}
#endregion
#region 价格表校验 and 获取价格表编码
Dictionary<string, string> dicJGBID = new Dictionary<string, string>();
dicJGBID = XLBJDUtils.GetJGBIDByXSQYID("", sBJFLID, sBJRQ, sXSQYID);
foreach (KeyValuePair<string, string> kvp in dicJGBID)
{
if (sJGBID.Equals(""))
{
sJGBID = kvp.Key;
}
}
if (sJGBID.Equals(""))
{
throw new Exception("价格表为空!请至【100860001|线缆销售报价价格表】模块检查是否存在可用价格表!");
}
#endregion
#region 根据规则生成报价单编码
string sError = string.Empty;
XLBJDUtils.GetBJDID(sXZQHID, sBJFLID, sSYDWID,ref sBJDID, ref sError);
if (!string.IsNullOrEmpty(sError))
{
throw new Exception(sError);
}
#endregion
dt3 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt3:{0}---------------", dt3.ToString().Trim()));
tSession = getSession();
#region 插入主表信息
SQL.Clear();
SQL.Add("insert into XLXSBJD ");
SQL.Add(" ( ");
SQL.Add(" XLXSBJD_BJDID,XLXSBJD_CLHQJGBID,");
SQL.Add(" XLXSBJD_BJFLID,XLXSBJD_XSQYID,XLXSBJD_XZQHID,");
SQL.Add(" XLXSBJD_SYDWID,XLXSBJD_XSJLMC,XLXSBJD_TXY,XLXSBJD_XSBMID, ");
SQL.Add(" XLXSBJD_KHLXR,XLXSBJD_LXDH,XLXSBJD_JZBJHS,");
SQL.Add(" XLXSBJD_TJ,XLXSBJD_LJ,");
SQL.Add(" XLXSBJD_SQR,XLXSBJD_SQRGH,XLXSBJD_SQRID,XLXSBJD_SQRQ,");
SQL.Add(" XLXSBJD_BJRQ, XLXSBJD_JGBID, ");
SQL.Add(" XLXSBJD_YWLX,XLXSBJD_YWDH,XLXSBJD_WPID, ");
SQL.Add(" XLXSBJD_WHRID,XLXSBJD_WHR,XLXSBJD_WHSJ ,XLXSBJD_XMMC, XLXSBJD_KH");
SQL.Add(" ) ");
SQL.Add(" values ");
SQL.Add(" ( ");
SQL.Add(" :XLXSBJD_BJDID,:XLXSBJD_CLHQJGBID,");
SQL.Add(" :XLXSBJD_BJFLID,:XLXSBJD_XSQYID,:XLXSBJD_XZQHID,");
SQL.Add(" :XLXSBJD_SYDWID,:XLXSBJD_XSJLMC,:XLXSBJD_TXY,:XLXSBJD_XSBMID, ");
SQL.Add(" :XLXSBJD_KHLXR,:XLXSBJD_LXDH,:XLXSBJD_JZBJHS,");
SQL.Add(" :XLXSBJD_TJ,:XLXSBJD_LJ,");
SQL.Add(" :XLXSBJD_SQR,:XLXSBJD_SQRGH,:XLXSBJD_SQRID,:XLXSBJD_SQRQ,");
SQL.Add(" :XLXSBJD_BJRQ, :XLXSBJD_JGBID,");
SQL.Add(" :XLXSBJD_YWLX,:XLXSBJD_YWDH,'ZZZZ', ");
SQL.Add(" :XLXSBJD_WHRID,:XLXSBJD_WHR,:XLXSBJD_WHSJ ,:XLXSBJD_XMMC ,:XLXSBJD_KH");
SQL.Add(" ) ");
SQL.ParamByName("XLXSBJD_BJDID").Value = sBJDID;
if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select top 1 XLXSBJFLBJRHQCL_BJCLID from XLXSBJFLBJRHQCL where XLXSBJFLBJRHQCL_BJFLID='{0}'", sJGBID)))
{
SQL.ParamByName("XLXSBJD_CLHQJGBID").Value = "ZZZZZZZZ";
}
else
{
SQL.ParamByName("XLXSBJD_CLHQJGBID").Value = sJGBID;
}
SQL.ParamByName("XLXSBJD_BJFLID").Value = sBJFLID;
SQL.ParamByName("XLXSBJD_XSQYID").Value = sXSQYID;
SQL.ParamByName("XLXSBJD_XZQHID").Value = sXZQHID;
SQL.ParamByName("XLXSBJD_SYDWID").Value = sSYDWID;
SQL.ParamByName("XLXSBJD_XSJLMC").Value = sXSJLMC;
SQL.ParamByName("XLXSBJD_TXY").Value = sTXY;
SQL.ParamByName("XLXSBJD_XSBMID").Value = sXSBMID;
SQL.ParamByName("XLXSBJD_KH").Value = sKH;
SQL.ParamByName("XLXSBJD_KHLXR").Value = "";
SQL.ParamByName("XLXSBJD_LXDH").Value = "";
SQL.ParamByName("XLXSBJD_JZBJHS").Value = "Y";
SQL.ParamByName("XLXSBJD_TJ").Value = fTJ;
SQL.ParamByName("XLXSBJD_LJ").Value = fLJ;
SQL.ParamByName("XLXSBJD_SQR").Value = tSession.UserName;
SQL.ParamByName("XLXSBJD_SQRGH").Value = tSession.UserId;
SQL.ParamByName("XLXSBJD_SQRID").Value = TRYXX.GetRYXXByGH(tSession.UserId).RYID;
SQL.ParamByName("XLXSBJD_SQRQ").Value = sBJRQ;
SQL.ParamByName("XLXSBJD_BJRQ").Value = sBJRQ;
SQL.ParamByName("XLXSBJD_JGBID").Value = sJGBID;
SQL.ParamByName("XLXSBJD_YWLX").Value = sYWLX;
SQL.ParamByName("XLXSBJD_YWDH").Value = sYWDH;
SQL.ParamByName("XLXSBJD_WHRID").Value = tSession.UserId;
SQL.ParamByName("XLXSBJD_WHR").Value = tSession.UserName;
SQL.ParamByName("XLXSBJD_WHSJ").Value = DateTime.Now;
SQL.ParamByName("XLXSBJD_XMMC").Value=dsHT.Tables[0].Rows[0]["HT_XMMC"].ToString().Trim();
dberp.ExecSQL(SQL);
#endregion
dt4 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt4:{0}---------------", dt4.ToString().Trim()));
#region 处理物料行情
//只加载JGE价格表,外层判断可以去除
XLXSBJFLObj objXLXSBJFL = new XLXSBJFLObj(sBJFLID);
XLBJDUtils.InsertXLXSBJDCLHQ_WLHQ(dberp, SQL, objXLXSBJFL.sBJDHQLY, sBJDID, sBJRQ, true,
objXLXSBJFL.sTBJCLID, objXLXSBJFL.sLBJCLID,
fTJ, fLJ,
tSession.UserName, tSession.UserId, sJGBID);
#endregion
dt5 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt5:{0}---------------", dt5.ToString().Trim()));
#region 明细变量初始化
string sXLXHID = "";
string sXLGGID = "";
string sXLBZID = "";
string sDYDJID = "";
string sBJDJLDW = "";
double fBJSL = 0;
string sWLID = "";
int iStartXH = 1;
string sErrorNum = "";
string sXLJGU007 = tSession.GetOption(102579000, "XLJGU007");
#endregion
SQL.Clear();
SQL.Add(" insert into XLXSBJDMX( ");
SQL.Add(" XLXSBJDMX_BJDID, XLXSBJDMX_XH, XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID, ");
SQL.Add(" XLXSBJDMX_XLBZID,XLXSBJDMX_DYDJID,XLXSBJDMX_XLYSID,XLXSBJDMX_BJCP,XLXSBJDMX_BJCPSD,XLXSBJDMX_WGCPBZ, ");
SQL.Add(" XLXSBJDMX_JLDW,XLXSBJDMX_BJSL,XLXSBJDMX_BJSDBZ,XLXSBJDMX_XDXLXHID,XLXSBJDMX_XDXLBZID, ");
SQL.Add(" XLXSBJDMX_DZSC,XLXSBJDMX_WHR,XLXSBJDMX_WHRID,XLXSBJDMX_WHSJ,");
SQL.Add(" XLXSBJDMX_YWLX,XLXSBJDMX_YWDH,XLXSBJDMX_YWXH,XLXSBJDMX_WLID, ");
SQL.Add(" XLXSBJDMX_BZ) ");
SQL.Add(" values(");
SQL.Add(" :XLXSBJDMX_BJDID, :XLXSBJDMX_XH, :XLXSBJDMX_XSSX, :XLXSBJDMX_XLXHID, :XLXSBJDMX_XLGGID, ");
SQL.Add(" :XLXSBJDMX_XLBZID, isnull(:XLXSBJDMX_DYDJID,' '), :XLXSBJDMX_XLYSID, :XLXSBJDMX_BJCP, :XLXSBJDMX_BJCPSD,:XLXSBJDMX_WGCPBZ, ");
SQL.Add(" :XLXSBJDMX_JLDW, :XLXSBJDMX_BJSL,:XLXSBJDMX_BJSDBZ,:XLXSBJDMX_XDXLXHID,:XLXSBJDMX_XDXLBZID, ");
SQL.Add(" :XLXSBJDMX_DZSC,:XLXSBJDMX_WHR, :XLXSBJDMX_WHRID, :XLXSBJDMX_WHSJ,");
SQL.Add(" :XLXSBJDMX_YWLX,:XLXSBJDMX_YWDH,:XLXSBJDMX_YWXH,:XLXSBJDMX_WLID, ");
SQL.Add(" :XLXSBJDMX_BZ)");
for (int i = 0; i < dsHT.Tables[0].Rows.Count; i++)
{
sXLXHID = dsHT.Tables[0].Rows[i]["XLXLB_XLXHID"].ToString().Trim();
sXLGGID = XLBJDUtils.GetStaXLGGID(dsHT.Tables[0].Rows[i]["XLXLB_XLGGID"].ToString().Trim(), sXLJGU007);
sXLBZID = dsHT.Tables[0].Rows[i]["XLXLB_XLBZID"].ToString().Trim();
sDYDJID = dsHT.Tables[0].Rows[i]["XLXLB_DYDJID"].ToString().Trim();
sBJDJLDW = dsHT.Tables[0].Rows[i]["HTMX_JLDW"].ToString().Trim();
sWLID = dsHT.Tables[0].Rows[i]["HTMX_WLID"].ToString().Trim();
fBJSL = CMISproConvert.StrToFloat(dsHT.Tables[0].Rows[i]["HTMX_XQSL"].ToString().Trim());
fYWXH = CMISproConvert.StrToFloat(dsHT.Tables[0].Rows[i]["HTMX_XH"].ToString().Trim());
SQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID;
SQL.ParamByName("XLXSBJDMX_XH").Value = i + 1;
SQL.ParamByName("XLXSBJDMX_XSSX").Value = i + 1;
if (sXLXHID.Equals(""))
{
SQL.ParamByName("XLXSBJDMX_XLXHID").Value = "/";
}
else
{
SQL.ParamByName("XLXSBJDMX_XLXHID").Value = sXLXHID;
}
if (sXLGGID.Equals(""))
{
SQL.ParamByName("XLXSBJDMX_XLGGID").Value = "/";
}
else
{
SQL.ParamByName("XLXSBJDMX_XLGGID").Value = sXLGGID;
}
if (sXLXHID.Equals("") || sXLGGID.Equals(""))
{
SQL.ParamByName("XLXSBJDMX_BZ").Value = "【" + sYWDH + "|" + fYWXH + "】" + sWLID;
}
SQL.ParamByName("XLXSBJDMX_XDXLXHID").Value = SQL.ParamByName("XLXSBJDMX_XLXHID").Value;
SQL.ParamByName("XLXSBJDMX_XDXLBZID").Value = sXLBZID;
SQL.ParamByName("XLXSBJDMX_XLBZID").Value = sXLBZID;
SQL.ParamByName("XLXSBJDMX_DYDJID").Value = sDYDJID;
SQL.ParamByName("XLXSBJDMX_XLYSID").Value = dsHT.Tables[0].Rows[i]["XLXLB_XLYSID"].ToString().Trim();
SQL.ParamByName("XLXSBJDMX_BJCP").Value = XLBJDUtils.GroupBJCPXX(sXLXHID, sXLGGID, sDYDJID);
SQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "N";
SQL.ParamByName("XLXSBJDMX_WGCPBZ").Value = "N";
SQL.ParamByName("XLXSBJDMX_JLDW").Value = sBJDJLDW;
SQL.ParamByName("XLXSBJDMX_BJSL").Value = fBJSL;
SQL.ParamByName("XLXSBJDMX_BJSDBZ").Value = "N";
if (XLBJDUtils.ISDZBZ(sXLBZID))
{
SQL.ParamByName("XLXSBJDMX_DZSC").Value = "Y";
}
else
{
SQL.ParamByName("XLXSBJDMX_DZSC").Value = "N";
}
SQL.ParamByName("XLXSBJDMX_WHR").Value = tSession.UserName;
SQL.ParamByName("XLXSBJDMX_WHRID").Value = tSession.UserId;
SQL.ParamByName("XLXSBJDMX_WHSJ").Value = DateTime.Now;
SQL.ParamByName("XLXSBJDMX_YWLX").Value = sYWLX;
SQL.ParamByName("XLXSBJDMX_YWDH").Value = sYWDH;
SQL.ParamByName("XLXSBJDMX_YWXH").Value = fYWXH;
SQL.ParamByName("XLXSBJDMX_WLID").Value = sWLID;
dberp.ExecSQL(SQL);
}
dt6 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt6:{0}---------------", dt6.ToString().Trim()));
XLBJDUtils.UpdateXDXLBZID(dberp, SQL, sBJDID, "", iStartXH - 1, ref sErrorNum);
XLBJDUtils.SyncXLXSBJXLGGTHB_ByXLXSBJDMX_Batch(dberp, tSession, sBJDID);
XLBJDCalcUtils.CalcBJDMXAfterIns(dberp, SQL, sBJDID, iStartXH, tSession.GetOption(100860000, "BJU002"),
tSession.GetOption(100860000, "BJU003"),tSession.GetOption(100860000, "BJU018"), tSession.UserId, tSession.UserName, ref sErrorNum);
if (!sErrorNum.Equals(""))
{
throw new Exception("计算异常!异常信息:" + sErrorNum);
}
dt7 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt7:{0}---------------", dt7.ToString().Trim()));
SQL.Clear();
SQL.Add(" merge into XLXSBJDYZZ0 tar ");
SQL.Add(" using ");
SQL.Add(" ( ");
SQL.Add(" select XLXSBJDMX_XH as BJDXH,XLXSBJDYZZ0_YZZ01 as YZZ01,XLXSBJDYZZ0_YZZ02 as YZZ02,XLXSBJDYZZ0_YZZ03 as YZZ03,XLXSBJDYZZ0_YZZ04 as YZZ04, ");
SQL.Add(" XLXSBJDYZZ0_YZZ05 as YZZ05,XLXSBJDYZZ0_YZZ06 as YZZ06,XLXSBJDYZZ0_YZZ07 as YZZ07,XLXSBJDYZZ0_YZZ08 as YZZ08,XLXSBJDYZZ0_YZZ09 as YZZ09,XLXSBJDYZZ0_YZZ10 as YZZ10, ");
SQL.Add(" XLXSBJDYZZ0_YZZ11 as YZZ11,XLXSBJDYZZ0_YZZ12 as YZZ12,XLXSBJDYZZ0_YZZ13 as YZZ13,XLXSBJDYZZ0_YZZ14 as YZZ14, ");
SQL.Add(" XLXSBJDYZZ0_YZZ15 as YZZ15,XLXSBJDYZZ0_YZZ16 as YZZ16,XLXSBJDYZZ0_YZZ17 as YZZ17,XLXSBJDYZZ0_YZZ18 as YZZ18,XLXSBJDYZZ0_YZZ19 as YZZ19,XLXSBJDYZZ0_YZZ20 as YZZ20 ");
SQL.Add(" from HTMX ");
SQL.Add(" left join XLXSBJDYZZ0 on XLXSBJDYZZ0_BJDID=HTMX_BJDID and XLXSBJDYZZ0_XH=HTMX_BJDXH ");
SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=:sBJDID and XLXSBJDMX_YWDH=HTMX_JJDID and XLXSBJDMX_YWXH=HTMX_XH and XLXSBJDMX_YWLX='HT' ");
SQL.Add(" where HTMX_JJDID=:sJJDID and isnull(XLXSBJDYZZ0_BJDID,' ')<>' ' ");
SQL.Add(" ) sor on (XLXSBJDYZZ0_BJDID=:sBJDID and XLXSBJDYZZ0_XH=BJDXH) ");
SQL.Add(" when matched then update set XLXSBJDYZZ0_YZZ01=YZZ01,XLXSBJDYZZ0_YZZ02=YZZ02,XLXSBJDYZZ0_YZZ03=YZZ03,XLXSBJDYZZ0_YZZ04=YZZ04,XLXSBJDYZZ0_YZZ05=YZZ05, ");
SQL.Add(" XLXSBJDYZZ0_YZZ06=YZZ06,XLXSBJDYZZ0_YZZ07=YZZ07,XLXSBJDYZZ0_YZZ08=YZZ08,XLXSBJDYZZ0_YZZ09=YZZ09,XLXSBJDYZZ0_YZZ10=YZZ10, ");
SQL.Add(" XLXSBJDYZZ0_YZZ11=YZZ11,XLXSBJDYZZ0_YZZ12=YZZ12,XLXSBJDYZZ0_YZZ13=YZZ13,XLXSBJDYZZ0_YZZ14=YZZ14,XLXSBJDYZZ0_YZZ15=YZZ15, ");
SQL.Add(" XLXSBJDYZZ0_YZZ16=YZZ16,XLXSBJDYZZ0_YZZ17=YZZ17,XLXSBJDYZZ0_YZZ18=YZZ18,XLXSBJDYZZ0_YZZ19=YZZ19,XLXSBJDYZZ0_YZZ20=YZZ20 ");
SQL.ParamByName("sBJDID").Value = sBJDID;
SQL.ParamByName("sJJDID").Value = sJJDID;
dberp.ExecSQL(SQL);
dt7 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt7:{0}---------------", dt7.ToString().Trim()));
string sErrorMsg = "";
XLBJDCalcUtils.CalcAfterBJDYZZChange(dberp, SQL, sBJDID, 1, "", false, false, false, "",
DateTime.MinValue, tSession.GetOption(100860000, "BJU002"),
tSession.GetOption(100860000, "BJU003"), tSession.UserId, tSession.UserName, ref sErrorMsg);
if (!sErrorMsg.Equals(""))
throw new Exception(sErrorMsg);
dberp.CommitTrans();
}
catch (Exception ex)
{
dberp.RollbackTrans();
throw new Exception(ex.Message.ToString().Trim());
}
dt8 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt8:{0}---------------", dt8.ToString().Trim()));
}
else
{
throw new Exception("未找到对应合同信息:"+sJJDID);
}
TimeSpan sp2 = dt2 - dt1;
TimeSpan sp3 = dt3 - dt2;
TimeSpan sp4 = dt4 - dt3;
TimeSpan sp5 = dt5 - dt4;
TimeSpan sp6 = dt6 - dt5;
TimeSpan sp7 = dt7 - dt6;
TimeSpan sp8 = dt8 - dt7;
double dTotal2 = sp2.TotalSeconds;
double dTotal3 = sp3.TotalSeconds;
double dTotal4 = sp4.TotalSeconds;
double dTotal5 = sp5.TotalSeconds;
double dTotal6 = sp6.TotalSeconds;
double dTotal7 = sp7.TotalSeconds;
double dTotal8 = sp8.TotalSeconds;
Mac.MacLog.TraceFormat(String.Format("dTotal2耗时:{0}---------------", dTotal2.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("dTotal3耗时:{0}---------------", dTotal3.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("dTotal4耗时:{0}---------------", dTotal4.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("dTotal5耗时:{0}---------------", dTotal5.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("dTotal6耗时:{0}---------------", dTotal6.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("dTotal7耗时:{0}---------------", dTotal7.ToString().Trim()));
Mac.MacLog.TraceFormat(String.Format("dTotal8耗时:{0}---------------", dTotal8.ToString().Trim()));
CheckBJisZoro(dberp, SQL, objOUT, sBJDID);
}
/// <summary>
/// 校验表价是否为0
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <param name="objOUT"></param>
/// <param name="sBJDID"></param>
private static void CheckBJisZoro(TDatabase dberp, TSQL SQL, XSHTSCBJDData objOUT, string sBJDID)
{
#region 校验表价为0或为负
SQL.Clear();
SQL.Add(" select XLXSBJDMX_YWXH,XLXSBJDMX_JGBBJ,XLXSBJDMX_WLID,XLXSBJDMX_JSYCBZ from XLXSBJDMX where XLXSBJDMX_BJDID=:pBJDID and XLXSBJDMX_JGBBJ<=0 ");
SQL.ParamByName("pBJDID").Value = sBJDID;
DataSet dsFBJ = dberp.OpenDataSet(SQL);
if (dsFBJ.Tables[0].Rows.Count > 0)
{
Dictionary<string, string> dicJGBTJYZ = new Dictionary<string, string>();
SQL.Clear();
SQL.Add(" select XLXSTZYZ_YZID,XLXSTZYZ_YZMC from XLXSTZYZ where XLXSTZYZ_MXBH = 'JZJ' ");
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow trow in ds.Tables[0].Rows)
{
dicJGBTJYZ.Add(trow["XLXSTZYZ_YZID"].ToString().Trim(),
trow["XLXSTZYZ_YZMC"].ToString().Trim());
}
}
string sTS = "计算如下物料的价格异常:\n\r";
foreach (DataRow trow in dsFBJ.Tables[0].Rows)
{
string sJTXX = "序号" + trow["XLXSBJDMX_YWXH"].ToString().Trim() + ",【" +
trow["XLXSBJDMX_WLID"].ToString().Trim() + "】";
double dJGBBJ = CMISproConvert.StrToFloat(trow["XLXSBJDMX_JGBBJ"].ToString().Trim());
if (dJGBBJ < 0)
{
string sJSYCBZ = trow["XLXSBJDMX_JSYCBZ"].ToString().Trim();
sJTXX += "\n" + XLBJD_FBJXQList.GetJSYCXQ(sJSYCBZ, dicJGBTJYZ) + "\n\r";
}
else
sJTXX += "价格为0 \n\r";
sTS += sJTXX;
}
Mac.MacLog.TraceFormat(String.Format("报价单:{0}---------------" + sTS, sBJDID));
objOUT.ErrorMessage = sTS;
}
#endregion
}
private static CMISproSession getSession()
{
return CMISproSessionManager.GetCurrentSession();
}
/// <summary>
/// 获取销售报价业务配置模块100452001配置的报价分类
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <returns></returns>
private static string GetBJFLID(TDatabase dberp, TSQL SQL)
{
SQL.Clear();
SQL.Add("select XLXSBJPZ_BJFLIDS ");
SQL.Add(" from XLXSBJPZ ");
SQL.Add(" where 1=1 ");
SQL.Add(" and XLXSBJPZ_MDID = 100860087 ");
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0][0].ToString().Trim();
}
return "";
}
/// <summary>
/// 根据当前用户获取使用单位,如果为空,则获取第一个使用单位
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <param name="sUserGH"></param>
/// <returns></returns>
private static string GetSWDWID(TDatabase dberp, TSQL SQL, string sUserGH)
{
string sSYDWID = "";
SQL.Clear();
SQL.Add("select RSRYJBXX_SYDWID ");
SQL.Add(" from RSRYJBXX ");
SQL.Add(" where 1=1 ");
SQL.Add(" and RSRYJBXX_GH = :pGH ");
SQL.ParamByName("pGH").Value = sUserGH;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sSYDWID = ds.Tables[0].Rows[0][0].ToString().Trim();
if (sSYDWID.Equals(""))
{
SQL.Clear();
SQL.Add(" select GS_SYDWID,GS_GSMC from GS where 1=1 order by GS_SYDWID ");
ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sSYDWID = ds.Tables[0].Rows[0][0].ToString().Trim();
}
}
}
return sSYDWID;
}
/// <summary>
/// 获取推销员的经理和部门
/// </summary>
/// <param name="dberp"></param>
/// <param name="SQL"></param>
/// <param name="sTXY"></param>
/// <param name="sXSJLMC"></param>
/// <param name="sXSBMID"></param>
private static void GetXSYXX(TDatabase dberp, TSQL SQL, string sTXY, ref string sXSJLMC, ref string sXSBMID)
{
SQL.Clear();
SQL.Add(" select A.XSY_BMID,A.XSY_XSYBH,B.XSY_TXY from XSY A ");
SQL.Add(" LEFT JOIN XSY B ON B.XSY_XSYBH = A.XSY_SJXSYBH ");
SQL.Add(" WHERE A.XSY_TXY = :pXSY_TXY ");
SQL.ParamByName("pXSY_TXY").Value = sTXY;
DataSet ds = dberp.OpenDataSet(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
sXSJLMC = ds.Tables[0].Rows[0]["XSY_TXY"].ToString().Trim();
sXSBMID = ds.Tables[0].Rows[0]["XSY_BMID"].ToString().Trim();
}
return;
}
/// <summary>
/// 删除报价单
/// </summary>
/// <param name="sBJDID">报价单号</param>
/// <returns></returns>
[AjaxMethod(AuthRequried = false)]
public static XSHTSCBJDDel DelteXLXSBJD(string sBJDID)
{
XSHTSCBJDDel objOUT = new XSHTSCBJDDel();
objOUT.Success = true;
objOUT.ErrorMessage = "";
TDatabase dberp = TContextDatabases.GetDatabase("DBERP");
TSQL SQL = new TSQL(dberp);
try
{
dberp.BeginTrans();
SQL.Clear();
SQL.Add("delete from XLXSBJD");
SQL.Add(" where 1=1");
SQL.Add(" and XLXSBJD_BJDID = :pBJDID");
SQL.ParamByName("pBJDID").Value = sBJDID;
dberp.ExecSQL(SQL);
XLBJDUtils.AfterDeleteBJD(dberp, SQL, sBJDID);
dberp.CommitTrans();
}
catch (Exception ex)
{
dberp.RollbackTrans();
objOUT.Success = false;
objOUT.ErrorMessage = ex.Message;
}
return objOUT;
}
#endregion
}
#region 插入报价单明细返回类
public class XSHTSCBJDData
{
/// <summary>
/// 调用情况
/// </summary>
private bool _Success = true;
public bool Success
{
get { return _Success; }
set { _Success = value; }
}
/// <summary>
/// 失败信息
/// </summary>
private string _ErrorMessage = string.Empty;
public string ErrorMessage
{
get { return _ErrorMessage; }
set { _ErrorMessage = value; }
}
}
#endregion
#region 删除报价单返回类
public class XSHTSCBJDDel
{
/// <summary>
/// 调用情况
/// </summary>
private bool _Success = true;
public bool Success
{
get { return _Success; }
set { _Success = value; }
}
/// <summary>
/// 失败信息
/// </summary>
private string _ErrorMessage = string.Empty;
public string ErrorMessage
{
get { return _ErrorMessage; }
set { _ErrorMessage = value; }
}
}
#endregion
}