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

734 lines
33 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.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 XSHTKHJGJSService
{
/// <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 XSHTKHJGJSData 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;
XSHTKHJGJSData objOUT = new XSHTKHJGJSData();
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, XSHTKHJGJSData 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();
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);
}
SQL.Clear();
SQL.Add("update XLXSBJDMX set XLXSBJDMX_JGBBJ=HTMX_JGBJG,XLXSBJDMX_CPBJ=HTMX_HSJG,XLXSBJDMX_BJLY='SSJGBBJ',XLXSBJDMX_BJSDBZ='Y'");
SQL.Add("from XLXSBJDMX");
SQL.Add("inner join HTMX on HTMX_JJDID=XLXSBJDMX_YWDH and HTMX_XH= XLXSBJDMX_YWXH");
SQL.Add("where XLXSBJDMX_YWLX='HT' ");
SQL.Add(" and XLXSBJDMX_YWDH=:pYWDH ");
SQL.ParamByName("pYWDH").Value = sJJDID;
dberp.ExecSQL(SQL);
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860088);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_MDID))
{
string TZBLYZID = pzxx.XLXSBJPZ_TZBLYZID;
string TZBLYZZLX = pzxx.XLXSBJPZ_TZBLYZZLX;
string KSDYZID = pzxx.XLXSBJPZ_KSDYZID;
string KSDYZZLX = pzxx.XLXSBJPZ_KSDYZZLX;
SQL.Clear();
SQL.Add("update XLXSBJDYZZ0 set ");
if (!string.IsNullOrEmpty(TZBLYZID))
{
if (TZBLYZZLX.Equals("相反数"))
{
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(-1)*HTMX_TZBL, ", TZBLYZID.Replace("BJ", "")));
}
else
{
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=HTMX_TZBL, ", TZBLYZID.Replace("BJ", "")));
}
}
if (!string.IsNullOrEmpty(KSDYZID))
{
if (KSDYZZLX.Equals("相反数"))
{
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=(-1)*HTMX_KSD, ", KSDYZID.Replace("BJ", "")));
}
else
{
SQL.Add(string.Format("XLXSBJDYZZ0_YZZ{0}=HTMX_KSD, ", KSDYZID.Replace("BJ", "")));
}
}
SQL.Add("XLXSBJDYZZ0_BJDID=XLXSBJDYZZ0_BJDID");
SQL.Add("from XLXSBJDYZZ0 ");
SQL.Add(" left join XLXSBJDMX on XLXSBJDMX_BJDID=XLXSBJDYZZ0_BJDID and XLXSBJDMX_XH=XLXSBJDYZZ0_XH");
SQL.Add(" left join HTMX on HTMX_JJDID=XLXSBJDMX_YWDH and HTMX_XH= XLXSBJDMX_YWXH and XLXSBJDMX_YWLX='HT' ");
SQL.Add(" where XLXSBJDMX_YWDH=:pYWDH ");
SQL.ParamByName("pYWDH").Value = sJJDID;
dberp.ExecSQL(SQL);
}
else
{
}
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);
SQL.Clear();
SQL.Add("UPDATE HTMX SET HTMX_KHJG=XLXSBJDMX_ZDXJ,HTMX_KHJE=RoundFix(XLXSBJDMX_ZDXJ*HTMX_XQSL,2) ");
SQL.Add("FROM HTMX ");
SQL.Add("LEFT JOIN XLXSBJDMX ON XLXSBJDMX_YWDH=HTMX_JJDID AND XLXSBJDMX_YWXH=HTMX_XH and XLXSBJDMX_YWLX='HT' ");
SQL.Add("WHERE HTMX_JJDID=:pJJDID");
SQL.ParamByName("pJJDID").Value = sJJDID;
dberp.ExecSQL(SQL);
dt7 = DateTime.Now;
Mac.MacLog.TraceFormat(String.Format("dt7:{0}---------------", dt7.ToString().Trim()));
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, XSHTKHJGJSData 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()
{
XLXSBJPZXX pzxx = XLBJDUtils.GetXLXSBJPZXX(100860088);
if (!string.IsNullOrEmpty(pzxx.XLXSBJPZ_BJFLIDS))
return pzxx.XLXSBJPZ_BJFLIDS;
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 XSHTKHJGJSDel DelteXLXSBJD(string sBJDID)
{
XSHTKHJGJSDel objOUT = new XSHTKHJGJSDel();
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 XSHTKHJGJSData
{
/// <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 XSHTKHJGJSDel
{
/// <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
}