You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

2738 lines
148 KiB

using NFine.Code;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NFine.Repository;
using NFine.Domain._03_Entity.SRM;
using System.Data.Odbc;
using System.Data.SqlClient;
using NFine.Data.Extensions;
using System.IO;
using System.Net;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.Configuration;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Net.Mail;
using System.Web.UI.WebControls;
namespace NFine.Application.SRM
{
public class RFQManagerApp : RepositoryFactory<ICSVendor>
{
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static DataTable Invmes = new DataTable();
public static DataTable Supplier = new DataTable();
public DataTable GetGridJson(string Json, ref Pagination jqgridparam)
{
string ParentId = "";
DataTable table = new DataTable();
var Jobject = Json.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sqlwhere = "";
if (!string.IsNullOrEmpty(Jobject["PruOrganize"].ToString()))
{
sqlwhere += " and c.PURCHUGNAME like '%" + Jobject["PruOrganize"].ToString() + "%' ";
}
if (!string.IsNullOrEmpty(Jobject["PruTeam"].ToString()))
{
sqlwhere += " and h.F_ItemName like '%" + Jobject["PruTeam"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["RFQCode"].ToString()))
{
sqlwhere += " and a.RFQCode like '%" + Jobject["RFQCode"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["RFQName"].ToString()))
{
sqlwhere += " and a.RFQName like '%" + Jobject["RFQName"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["SupplierCode"].ToString()))
{
sqlwhere += " and B.SupplierCode like '%" + Jobject["SupplierCode"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["SupplierName"].ToString()))
{
sqlwhere += " and b.SupplierName like '%" + Jobject["SupplierName"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
{
sqlwhere += " and e.itemcode like '%" + Jobject["InvCode"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
{
sqlwhere += " and e.itemname like '%" + Jobject["InvName"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["InvStd"].ToString()))
{
sqlwhere += " and f.InvStd like '%" + Jobject["InvStd"].ToString() + "%'";
}
if (!string.IsNullOrEmpty(Jobject["TimeFrom"].ToString()))
{
sqlwhere += " and a.BEGINDATE>='" + Jobject["TimeFrom"].ToString() + "'";
}
if (!string.IsNullOrEmpty(Jobject["TimeTo"].ToString()))
{
sqlwhere += " and a.BEGINDATE<='" + Jobject["TimeTo"].ToString() + "'";
}
if (!string.IsNullOrEmpty(Jobject["ReleaseState"].ToString().Trim(',')) && Jobject["ReleaseState"].ToString().Trim(',') != "'Examine'" && Jobject["ReleaseState"].ToString().Trim(',') != "'HasExamine'")
{
sqlwhere += " and a.status in ('" + Jobject["ReleaseState"].ToString().TrimEnd('\'').TrimEnd(',') + "')";
}
//if (Jobject["status"].ToString().Trim(',') == "'Examine'")
//{
// sqlwhere += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS = 'Pending'))";
//}
//if (Jobject["status"].ToString().Trim(',') == "'HasExamine'")
//{
// sqlwhere += " and a.RFQCODE in (SELECT a.RFQCODE FROM ICSSORRFQ a where a.RFQCODE in (SELECT DISTINCT b.RFQCODE from ICSSORQUODETAILNORMAL b WHERE b.QUOSTATUS in ('PricingApprove','PricingReject')))";
//}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
{
sqlwhere += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
string sql = @"select distinct a.RFQCODE,RFQNAME,
case a.STATUS
when 'Publish' then '发布'
when 'Examine' then '未审核'
when 'HasExamine' THEN '已审核'
WHEN 'New' THEN '新增'
when 'Close' then '关闭'
when 'PricingApprove' then '定价通过'
when 'PricingApproveByOA' then 'OA待审核'
when 'PricingApproveByOASH' then 'OA已审核'
when 'PricingApproveByOABack' then 'OA审核拒绝'
end as STATUS,
case a.STATUS
when 'Publish' then '发布'
when 'Examine' then '未审核'
when 'HasExamine' THEN '已审核'
WHEN 'New' THEN '新增'
when 'Close' then '关闭'
when 'PricingApprove' then '定价通过'
when 'PricingApproveByOA' then 'OA待审核'
when 'PricingApproveByOASH' then 'OA已审核'
when 'PricingApproveByOABack' then 'OA审核拒绝'
end as HIDDSTATUS,
a.BEGINDATE,a.ENDDATE,a.CREATEUSER,a.CREATETIME,c.PURCHUGNAME,h.F_ItemName as PURTEAM,c.PURCHUGNAME as PURORG
,b.SupplierName as COMPANYNAME,A.LOGDATE,A.LOGUSER,A.workpoint
,a.ADDITION1
,a.ADDITION2
from icsSORRFQ A
left join BASE_SUPPLIER B ON B.SupplierCode = a.COMPANYCODE
left join ICSPurChug c on c.PURCHUGCODE = a.PURCHUGCODE
--left join ICSPURCHUGSON d on d.PURCHUGSONCODE = a.PURTeam
left join icsSORRFQ2NORMALITEM e on e.RFQCODE=a.RFQCODE
left join ICSINVENTORY f on f.INVCODE=e.ITEMCODE
left join icsSORQUOTATION g on g.RFQCODE=a.Rfqcode
left join Sys_SRM_ItemsDetail h on h.F_ItemCode=A.purteam
where 1=1 " + sqlwhere;
ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
{
return SqlHelper.FindTablePageBySql_OtherTempbyLOGUSER(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
}
else
{
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
}
public DataTable GetPUROrganize(string workpoint)
{
string wheresql = "";
if (!string.IsNullOrEmpty(workpoint))
{
wheresql += " and workpoint='" + workpoint + "'";
}
string sql = " select '' as purchugcode,''as purchugname from ICSPurChug Union select purchugcode,purchugname from ICSPurChug where 1=1 " + wheresql;
return Repository().FindTableBySql(sql, null);
}
public DataTable GetPURTeam(string code)
{
string sql = @"select b.F_EnabledMark,b.F_ItemCode as purchugcode,b.F_ItemName as purchugname from [dbo].[Sys_SRM_Items] a
LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID";
if (!string.IsNullOrEmpty(code))
{
sql += " where F_EnCode='" + code + "'";
}
return Repository().FindTableBySql(sql, null);
}
public DataRow GetRFQ(string Rfqcode)
{
string sql = @"select begindate,COSTANALYSISTEMPLATE,costtype,CONVERT(VARCHAR(10),
createdate,120)AS createdate,createtime,createuser,ISUNIFYANALYSISTEMPLATE,
logdate,logtime,loguser,poct,a.purchugcode,b.PURCHUGNAME,rfqname,status,
purteam,a.workpoint,companycode,rfqcode,memo,a.FileName,a.HASCOSTDETAILS
from ICSSORRFQ a
LEFT JOIN dbo.ICSPurChug b ON a.PURCHUGCODE=b.PURCHUGCODE
where rfqcode='" + Rfqcode + "'";
DataTable table = Repository().FindTableBySql(sql, null);
return table.Rows[0];
}
public string GetSercode(string workpoint)
{
string datetime = DateTime.Now.ToString("yyyyMMdd");
SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORRFQ"), new SqlParameter("@CodeCol", "RFQCODE"), new SqlParameter("@Pre", "XJD" + datetime), new SqlParameter("@NumLen", 3) };
DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
return table.Rows[0][0].ToString();
}
public void updateS(string ID, string paymentcondition)
{
DataRow[] a = Supplier.Select("ID='" + ID + "'");
foreach (var item in a)
{
item["供应商付款条件"] = paymentcondition;
}
//return "操作成功!";
}
public void updateiss(string ID, string isshowprice)
{
DataRow[] a = Supplier.Select("ID='" + ID + "'");
foreach (var item in a)
{
item["是否显示参考价"] = isshowprice;
}
//return "操作成功!";
}
/// <summary>
/// 新增询价单
/// </summary>
/// <param name="details"></param>
public void AddRFQ(ICSSORRFQ details)
{
string sql = string.Empty;
try
{
List<ICSSORRFQ2NORMALITEM> list_BD = JsonConvert.DeserializeObject<List<ICSSORRFQ2NORMALITEM>>(details.arrayBidDocBD);
List<ICSSORRFQ2VENDOR> list_GYS = JsonConvert.DeserializeObject<List<ICSSORRFQ2VENDOR>>(details.arrayBidDocGYS);
string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
if (details.RFQstatus == "2")
{
sql = "select * from ICSSORRFQ where RFQCODE='" + details.RFQCODE + "' and WorkPoint='" + details.WorkPoint + "'";
DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
if (dt != null && dt.Rows.Count > 0)
{
throw new Exception("询价单已存在!");
}
}
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ WHERE RFQCODE=@RFQCODE and WorkPoint=@workpoint)
BEGIN
INSERT INTO dbo.ICSSORRFQ(
begindate,COSTANALYSISTEMPLATE,costtype,createdate,createtime,
createuser,ISUNIFYANALYSISTEMPLATE,logdate,logtime,loguser,
poct,purchugcode,rfqname,status,purteam,
workpoint,companycode,rfqcode,memo,HASCOSTDETAILS,FileName
)
VALUES (@begindate,@COSTANALYSISTEMPLATE,@costtype,getdate(),getdate() ,
@createuser,@ISUNIFYANALYSISTEMPLATE,getdate(),getdate(),@loguser,
@poct,@purchugcode,@rfqname,@status,@purteam,
@workpoint,@companycode,@rfqcode,@memo,@HASCOSTDETAILS,@FileName)
END
ELSE
BEGIN
UPDATE dbo.ICSSORRFQ SET
begindate=@begindate ,
COSTANALYSISTEMPLATE=@COSTANALYSISTEMPLATE ,
costtype=@costtype,
ISUNIFYANALYSISTEMPLATE=@ISUNIFYANALYSISTEMPLATE ,
logdate=getdate() ,
logtime=getdate() ,
loguser=@loguser,
purchugcode=@purchugcode ,
rfqname=@rfqname ,
purteam=@purteam,
memo=@memo,
HASCOSTDETAILS=@HASCOSTDETAILS,
FileName=@FileName
WHERE RFQCODE=@RFQCODE AND WorkPoint=@workpoint
END";
SqlParameter[] sp_Detail = {
new SqlParameter("@begindate",details.BEGINDATE),
new SqlParameter("@COSTANALYSISTEMPLATE",details.COSTANALYSISTEMPLATE),
new SqlParameter("@costtype",details.COSTTYPE),
new SqlParameter("@createuser",MuserName),
new SqlParameter("@ISUNIFYANALYSISTEMPLATE",details.ISUNIFYANALYSISTEMPLATE),
new SqlParameter("@loguser",MuserName),
//new SqlParameter("@ZTBCount",details.ZTBCount),
new SqlParameter("@poct",details.POCT),
new SqlParameter("@purchugcode",details.PURCHUGCODE),
new SqlParameter("@rfqname",details.RFQNAME),
new SqlParameter("@status","New"),
new SqlParameter("@PURTeam",details.PURTeam),
new SqlParameter("@workpoint",details.WorkPoint),
new SqlParameter("@companycode",details.WorkPoint),
new SqlParameter("@rfqcode",details.RFQCODE),
new SqlParameter("@memo",details.MEMO),
new SqlParameter("@HASCOSTDETAILS",details.HASCOSTDETAILS),
new SqlParameter("@FileName",details.FileName),
//new SqlParameter("@ENDDATE",details.ENDDATE)
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
#region 标的
foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
{
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2NORMALITEM WHERE ID='" + BD.ID + @"' and WorkPoint='" + BD.WorkPoint + @"')
BEGIN
INSERT INTO dbo.ICSSORRFQ2NORMALITEM(
COMPANYCODE,COSTANALYSISTEMPLATE,CREATEDATE,CREATETIME,CREATEUSER,
HASCOSTDETAILS,ISINCLUDETAX,ITEMCLASSID,ITEMCODE,ITEMNAME,
ITEMTYPE,LOGDATE,LOGTIME,LOGUSER,MEMO,
PRINCINGITEMCODE,REFERPRICE,CURRENCY,REQUESTQUANTITY,RFQCODE,
RFQITEMREFERCODE,UNIT,ID,workpoint,
Requirements)
VALUES (
'" + details.WorkPoint + @"','" + BD.COSTANALYSISTEMPLATE + @"',getdate(),getdate(),'" + MuserName + @"',
'" + BD.HASCOSTDETAILS + @"','" + BD.ISINCLUDETAX + @"','" + BD.ITEMCLASSID + @"','" + BD.ITEMCODE + @"','" + BD.ITEMNAME + @"',
'" + BD.ITEMTYPE + @"',getdate(),getdate(),'" + MuserName + @"','" + BD.MEMO + @"',
'" + BD.PRINCINGITEMCODE + @"', " + Convert.ToDecimal(BD.REFERPRICE) + @",'" + BD.CURRENCY + @"'," + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",'" + details.RFQCODE + @"',
'" + BD.RFQITEMREFERCODE + @"','" + BD.UNIT + @"',NewID(),'" + details.WorkPoint + @"',
'" + BD.Requirements + @"'
)
END
ELSE
BEGIN
UPDATE dbo.ICSSORRFQ2NORMALITEM SET
MEMO='" + BD.MEMO + @"' ,
Requirements='" + BD.Requirements + @"' ,
REQUESTQUANTITY=" + Convert.ToDecimal(BD.REQUESTQUANTITY) + @",
HASCOSTDETAILS='" + BD.HASCOSTDETAILS + @"' ,
RFQITEMREFERCODE='" + BD.RFQITEMREFERCODE + @"' ,
LOGDATE=getdate() ,
LOGTIME=getdate(),
LOGUSER='" + MuserName + @"'
WHERE ID='" + BD.ID + @"' AND WorkPoint='" + BD.WorkPoint + @"'
END
";
SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
}
#endregion
#region 临时物料
foreach (ICSSORRFQ2NORMALITEM BD in list_BD)
{
if (BD.Source == "手工")
{
sql = @"INSERT INTO dbo.ICSINVENTORY
(
ID
,INVCODE
,INVNAME
,INVUOM
,INVSTD
,INVTYPE
,INVCLASS
,INVEXPORTIMPORT
,MUSER
,MUSERName
,MTIME
,WorkPoint
)
VALUES (
@ID
,@INVCODE
,@INVNAME
,@INVUOM
,@INVSTD
,@INVTYPE
,@INVCLASS
,@INVEXPORTIMPORT
,@MUSER
,@MUSERName
,Getdate()
,@WorkPoint
)
";
SqlParameter[] sp_INv = {
new SqlParameter("@ID",BD.ID),
new SqlParameter("@INVCODE",BD.ITEMCODE),
new SqlParameter("@INVNAME",BD.ITEMNAME),
new SqlParameter("@INVUOM",BD.UNIT),
new SqlParameter("@INVSTD",BD.InvStd),
new SqlParameter("@INVTYPE","生产类型"),
new SqlParameter("@INVCLASS","生产类型"),
new SqlParameter("@INVEXPORTIMPORT","生产类型"),
new SqlParameter("@WorkPoint",details.WorkPoint),
new SqlParameter("@MUSER",Muser),
new SqlParameter("@MUSERName",MuserName),
//new SqlParameter("@WorkPoint",BD.cCode)
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
}
}
#endregion
#region 供应商
foreach (ICSSORRFQ2VENDOR GYS in list_GYS)
{
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSSORRFQ2VENDOR WHERE ID='" + GYS.ID + @"' and WorkPoint='" + GYS.WorkPoint + @"')
BEGIN
INSERT INTO dbo.ICSSORRFQ2VENDOR
(COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,CURRENCY,
ISCLOSED,ISSHOWPRICE,LOCATIONCODE,LOGDATE,LOGTIME,
LOGUSER,PAYMENTCONDITION,PRINCINGVENDORCODE,RFQCODE,TAXRATE
,VENDORCODE,VENDORTYPE,ADDITION1,ID,workpoint,addition2)
VALUES
('" + details.WorkPoint + @"',getdate(),getdate(),'" + MuserName + @"','" + GYS.CURRENCY + @"',
'" + GYS.ISCLOSED + @"','" + GYS.ISSHOWPRICE + @"','" + GYS.LOCATIONCODE + @"',getdate(),getdate(),
'" + MuserName + @"','" + GYS.PAYMENTCONDITION + @"','" + GYS.PRINCINGVENDORCODE + @"','" + details.RFQCODE + @"','" + GYS.TAXRATE + @"'
,'" + GYS.VENDORCODE + @"','" + GYS.VENDORTYPE + @"','" + GYS.ADDITION1 + @"','" + GYS.ID + @"','" + details.WorkPoint + @"','" + details.ADDITION2 + @"')
END
ELSE
BEGIN
UPDATE dbo.ICSSORRFQ2VENDOR SET
PAYMENTCONDITION='" + GYS.PAYMENTCONDITION + @"' ,
ISSHOWPRICE='" + GYS.ISSHOWPRICE + @"',
LOGDATE=getdate() ,
LOGTIME=getdate(),
LOGUSER='" + MuserName + @"'
WHERE ID='" + GYS.ID + @"' AND WorkPoint='" + GYS.WorkPoint + @"'
END
";
SqlCommandHelper.CmdExecuteNonQuery(sql, cmd);
}
#endregion
cmd.Transaction.Commit();
}
catch (Exception ex)
{
cmd.Transaction.Rollback();
throw new Exception(ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public void Upload(string filepath)
{
}
public DataTable Getinv(string invcode, ref Pagination jqgridparam, string workpoint, string InvName)
{
List<DbParameter> parameter = new List<DbParameter>();
DataTable table = new DataTable();
string wherestr = "";
if (!string.IsNullOrEmpty(invcode))
{
wherestr += " and invcode like '%" + invcode + "%'";
}
if (!string.IsNullOrEmpty(InvName))
{
wherestr += " and invname like '%" + InvName + "%'";
}
string sql = "select invcode,invname,invstd,InvUnit invuom,ClassName invclass from icsinventory where workpoint='" + workpoint + "'" + wherestr;
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string GetNewid()
{
string sql = "select newid() AS ID";
return Repository().FindTableBySql(sql, null).Rows[0]["ID"].ToString();
}
public void AddinvtoTemp(string json)
{
var data = json.ToJObject();
if (Invmes.Columns.Count <= 0)
{
Invmes.Columns.Add("公司代码", typeof(string));
Invmes.Columns.Add("成本分析模板", typeof(string));
Invmes.Columns.Add("创建日期", typeof(string));
Invmes.Columns.Add("创建时间", typeof(string));
Invmes.Columns.Add("创建用户", typeof(string));
Invmes.Columns.Add("成本明细", typeof(string));
Invmes.Columns.Add("是否含税", typeof(string));
Invmes.Columns.Add("物料分类代码", typeof(string));
Invmes.Columns.Add("物料代码", typeof(string));
Invmes.Columns.Add("物料名称", typeof(string));
Invmes.Columns.Add("物料类型", typeof(string));
Invmes.Columns.Add("物料规格", typeof(string));
Invmes.Columns.Add("更新日期", typeof(string));
Invmes.Columns.Add("更新时间", typeof(string));
Invmes.Columns.Add("更新用户", typeof(string));
Invmes.Columns.Add("备注", typeof(string));
Invmes.Columns.Add("定价物料编码", typeof(string));
Invmes.Columns.Add("参考价格", typeof(string));
Invmes.Columns.Add("币种", typeof(string));
Invmes.Columns.Add("预计需求量", typeof(string));
Invmes.Columns.Add("询价单编码", typeof(string));
Invmes.Columns.Add("文件路径", typeof(string));
Invmes.Columns.Add("有效期开始", typeof(string));
Invmes.Columns.Add("单位", typeof(string));
Invmes.Columns.Add("ID", typeof(string));
Invmes.Columns.Add("workpoint", typeof(string));
Invmes.Columns.Add("技术要求", typeof(string));
}
if (!String.IsNullOrEmpty(data["id"].ToString()))
{
UpdateInvRow(data["id"].ToString(), json);
}
else
{
string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
DataRow newrow = Invmes.NewRow();
newrow["公司代码"] = data["companycode"];
newrow["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
newrow["创建日期"] = data["CREATEDATE"];
newrow["创建时间"] = data["CreateTime"];
newrow["创建用户"] = usercode;
newrow["成本明细"] = data["HASCOSTDETAILS"];
newrow["是否含税"] = data["ISINCLUDETAX"];
newrow["物料分类代码"] = data["itemclass"];
newrow["物料代码"] = data["itemcode"];
newrow["物料名称"] = data["itemname"];
newrow["物料类型"] = data["invtype"];
newrow["物料规格"] = data["itemstd"];
newrow["更新日期"] = data["logdate"];
newrow["更新时间"] = data["logtime"];
newrow["更新用户"] = usercode;
newrow["备注"] = data["memo"];
newrow["定价物料编码"] = data["PRINCINGITEMCODE"];
newrow["参考价格"] = data["REFERPRICE"];
newrow["币种"] = data["currency"];
newrow["预计需求量"] = data["REQUESTQUANTITY"];
newrow["询价单编码"] = data["RFQCODE"];
newrow["文件路径"] = data["RFQITEMREFERCODE"];
newrow["有效期开始"] = data["startdate"];
newrow["单位"] = data["unit"];
newrow["ID"] = GetNewid();
newrow["workpoint"] = data["workpoint"];
newrow["技术要求"] = data["Requirements"];
Invmes.Rows.Add(newrow);
}
}
/// <summary>
/// 删除物料明细行
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public string DeleteInvTab(string keyValue)
{
string msg = string.Empty;
try
{
//string wheresql = "(";
////string[] id = json.Split(',');
////for (int i = 0; i < id.Length; i++) {
//// wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
////}
//wheresql = wheresql.Trim(',') + ")";
string sql = "delete from icsSORRFQ2NORMALITEM where id in ('" + keyValue + "')";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
}
catch (Exception ex)
{
msg = ex.Message + " 删除失败!";
}
return msg;
}
/// <summary>
/// 清楚临时表
/// </summary>
public void ClearTempTab()
{
Invmes.Rows.Clear();
Supplier.Rows.Clear();
}
public DataTable GetInvTable(string rfqno)
{
string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,
CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,
ITEMCLASSID as 物料分类代码,b.itemcode as 物料代码,b.itemname as 物料名称,
CASE b.ITEMTYPE WHEN 'Real' then '正式物料' else '临时物料' end as 物料类型,a.invstd as 物料规格,
logdate as 更新日期,logtime as 更新时间,LOGUSER as 更新用户,memo as 备注,PRINCINGITEMCODE as 定价物料编码,
REFERPRICE as 参考价格,CURRENCY as 币种,REQUESTQUANTITY as 预计需求量,RFQCODE as 询价单编码,
RFQITEMREFERCODE as 文件路径,startdate as 有效期开始,Requirements as 技术要求,RFQITEMREFERCODE as HiddenFile,
unit as 单位,B.ID,b.workpoint from icsSORRFQ2NORMALITEM b
left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
where RFQCODE='" + rfqno + @"'
";
DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
DataTable dtCloned = table.Clone();
foreach (DataColumn col in dtCloned.Columns)
{
col.DataType = typeof(string);
}
foreach (DataRow row in table.Rows)
{
DataRow newrow = dtCloned.NewRow();
foreach (DataColumn column in dtCloned.Columns)
{
newrow[column.ColumnName] = row[column.ColumnName].ToString();
}
dtCloned.Rows.Add(newrow);
}
if (Invmes.Rows.Count > 0)
{
dtCloned.Merge(Invmes, false);
}
return dtCloned;
}
public DataRow GetInvRow(string id)
{
string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
b.itemcode as 物料代码,b.itemname as 物料名称,CASE b.ITEMTYPE WHEN 'Real' then '正式物料' else '临时物料' end as 物料类型,a.invstd as 物料规格,logdate as 更新日期,logtime as 更新时间,LOGUSER as 更新用户,memo as 备注,PRINCINGITEMCODE as 定价物料编码,REFERPRICE as 参考价格,CURRENCY as 币种,REQUESTQUANTITY as 预计需求量,RFQCODE as 询价单编码,RFQITEMREFERCODE as 文件路径,startdate as 有效期开始,Requirements as 技术要求,
unit as 单位,B.ID,b.workpoint from icsSORRFQ2NORMALITEM b
left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
where B.id='" + id + "'";
DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
if (table.Rows.Count <= 0)
{
return Invmes.Select("ID='" + id + "'").Single();
}
else
{
return table.Rows[0];
}
}
public void UpdateInvRow(string id, string json)
{
var data = json.ToJObject();
string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string sql = @"update icsSORRFQ2NORMALITEM set COSTANALYSISTEMPLATE='" + data["COSTANALYSISTEMPLATE"].ToString() + @"',
HASCOSTDETAILS='" + data["HASCOSTDETAILS"].ToString() + @"',ISINCLUDETAX='" + data["ISINCLUDETAX"].ToString() + @"',itemcode='" + data["itemcode"].ToString() + @"',
itemname='" + data["itemname"].ToString() + @"',ITEMTYPE='" + data["invtype"].ToString() + @"',logdate='" + data["logdate"].ToString() + "',logtime='" + data["logtime"].ToString() + @"',
LOGUSER='" + usercode.ToString() + @",memo='" + data["memo"] + "',PRINCINGITEMCODE='" + data["PRINCINGITEMCODE"].ToString() + "',REQUESTQUANTITY='" + data["REQUESTQUANTITY"].ToString() + @"',
RFQCODE='" + data["RFQCODE"].ToString() + "',RFQITEMREFERCODE='" + data["RFQITEMREFERCODE"].ToString() + "',STARTDATE='" + data["startdate"].ToString() + "',unit='" + data["unit"] + @"',CURRENCY='" + data["currency"].ToString() + @"',REFERPRICE='" + data["REFERPRICE"].ToString() + @"'
WHERE ID='" + id + @"'
";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count <= 0)
{
DataRow row = Invmes.Select("ID ='" + id + "'").Single();
row["成本分析模板"] = data["COSTANALYSISTEMPLATE"];
row["成本明细"] = data["HASCOSTDETAILS"];
row["是否含税"] = data["ISINCLUDETAX"];
row["物料分类代码"] = data["itemclass"];
row["物料代码"] = data["itemcode"];
row["物料名称"] = data["itemname"];
row["物料类型"] = data["invtype"];
row["物料规格"] = data["itemstd"];
row["更新日期"] = data["logdate"];
row["更新时间"] = data["logtime"];
row["更新用户"] = usercode;
row["备注"] = data["memo"];
row["定价物料编码"] = data["PRINCINGITEMCODE"];
row["预计需求量"] = data["REQUESTQUANTITY"];
row["询价单编码"] = data["RFQCODE"];
row["文件路径"] = data["RFQITEMREFERCODE"];
row["有效期开始"] = data["startdate"];
row["单位"] = data["unit"];
}
}
public DataTable GetSup(string queryJson, ref Pagination jqgridparam)
{
string ParentId = "";
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT DISTINCT a.VenCode cvencode,a.VenName cvenname, VenExch_name as currency,a.VenPerson cvenperson, a.VenHand cvenhand,a.VenAddress cvenaddress,
VenDisRate iVenTaxRate, VCName cVenType from ICSVendor a
LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
where 1=1 ";
if (!string.IsNullOrWhiteSpace(queryParam["supcode"].ToString()))
{
sql += " and a.vencode like '%" + queryParam["supcode"].ToString() + "%'";
}
if (!string.IsNullOrWhiteSpace(queryParam["suppliername"].ToString()))
{
sql += " and a.venname like '%" + queryParam["suppliername"].ToString() + "%'";
}
if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
{
sql += " and a.WorkPoint ='" + queryParam["WorkPoint"].ToString() + "'";
}
//if (!string.IsNullOrWhiteSpace(queryParam["Type"].ToString()))
//{
// if(queryParam["Type"].ToString()=="1"){
// sql += " and LEN(VenRegCode)>14";
// }
//}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public void AddSuptoTemp(string json)
{
JArray res = (JArray)JsonConvert.DeserializeObject(json.ToString());
foreach (var item in res)
{
JObject data = (JObject)item;
if (Supplier.Columns.Count <= 0)
{
Supplier.Columns.Add("公司代码", typeof(string));
Supplier.Columns.Add("创建日期", typeof(string));
Supplier.Columns.Add("创建时间", typeof(string));
Supplier.Columns.Add("创建用户", typeof(string));
Supplier.Columns.Add("供应商币别", typeof(string));
Supplier.Columns.Add("是否关闭", typeof(string));
Supplier.Columns.Add("是否所有物料已报价", typeof(string));
Supplier.Columns.Add("是否显示参考价", typeof(string));
Supplier.Columns.Add("供应商地点代码", typeof(string));
Supplier.Columns.Add("更新日期", typeof(string));
Supplier.Columns.Add("更新时间", typeof(string));
Supplier.Columns.Add("更新用户", typeof(string));
Supplier.Columns.Add("供应商付款条件", typeof(string));
Supplier.Columns.Add("PRINCINGVENDORCODE", typeof(string));
Supplier.Columns.Add("询价单编码", typeof(string));
Supplier.Columns.Add("供应商税率", typeof(string));
Supplier.Columns.Add("供应商代码", typeof(string));
Supplier.Columns.Add("供应商名称", typeof(string));
Supplier.Columns.Add("供应商类型", typeof(string));
Supplier.Columns.Add("联系人", typeof(string));
Supplier.Columns.Add("联系人电话", typeof(string));
Supplier.Columns.Add("关闭原因", typeof(string));
Supplier.Columns.Add("ID", typeof(string));
Supplier.Columns.Add("workpoint", typeof(string));
}
if (!String.IsNullOrEmpty(data["id"].ToString()))
{
UpdateSupRow(data["id"].ToString(), json);
}
else
{
string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
DataRow newrow = Supplier.NewRow();
newrow["公司代码"] = data["companycode"];
newrow["创建日期"] = data["createdate"];
newrow["创建时间"] = data["createtime"];
newrow["创建用户"] = usercode;
newrow["供应商币别"] = data["currency"];
newrow["是否关闭"] = data["isclosed"];
newrow["是否所有物料已报价"] = data["isquoted"];
newrow["是否显示参考价"] = data["isshowprice"];
newrow["供应商地点代码"] = data["locationcode"];
newrow["更新日期"] = data["logdate"];
newrow["更新时间"] = data["logtime"];
newrow["更新用户"] = usercode;
newrow["供应商付款条件"] = data["paymentcondition"];
newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
newrow["询价单编码"] = data["rfqcode"];
newrow["供应商税率"] = data["rate"];
newrow["供应商代码"] = data["code"];
newrow["供应商名称"] = data["name"];
newrow["供应商类型"] = data["type"];
newrow["联系人"] = data["person"];
newrow["联系人电话"] = data["phone"];
newrow["关闭原因"] = data["closereason"];
newrow["ID"] = GetNewid();
newrow["workpoint"] = data["workpoint"];
Supplier.Rows.Add(newrow);
}
}
}
public void UpdateSupRow(string id, string json)
{
var data = json.ToJObject();
string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string sql = @"update icsSORRFQ2VENDOR set COMPANYCODE='" + data["companycode"].ToString() + @"',
CURRENCY='" + data["currency"].ToString() + @"',ISCLOSED='" + data["isclosed"].ToString() + @"',ISQUOTED='" + data["isquoted"] + @"',
ISSHOWPRICE='" + data["isshowprice"].ToString() + "',LOCATIONCODE='" + data["locationcode"].ToString() + "',LOGDATE='" + data["logdate"] + "',LOGTIME='" + data["logtime"].ToString() + "',LOGUSER='" + usercode + @"',
PAYMENTCONDITION='" + data["paymentcondition"].ToString() + "', PRINCINGVENDORCODE='" + data["PRINCINGVENDORCODE"].ToString() + "',RFQCODE='" + data["rfqcode"] + "',TAXRATE='" + data["rate"].ToString() + "',VENDORCODE='" + data["code"] + "',VENDORTYPE='" + data["type"].ToString() + "',ADDITION1='" + data["closereason"].ToString() + @"'
where id='" + id + "'";
;
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count <= 0)
{
DataRow newrow = Supplier.Select("ID ='" + id + "'").Single();
newrow["公司代码"] = data["companycode"];
newrow["供应商币别"] = data["currency"];
newrow["是否关闭"] = data["isclosed"];
newrow["是否所有物料已报价"] = data["isquoted"];
newrow["是否显示参考价"] = data["isshowprice"];
newrow["供应商地点代码"] = data["locationcode"];
newrow["更新日期"] = data["logdate"];
newrow["更新时间"] = data["logtime"];
newrow["更新用户"] = usercode;
newrow["供应商付款条件"] = data["paymentcondition"];
newrow["PRINCINGVENDORCODE"] = data["PRINCINGVENDORCODE"];
newrow["询价单编码"] = data["rfqcode"];
newrow["供应商税率"] = data["rate"];
newrow["供应商代码"] = data["code"];
newrow["供应商名称"] = data["name"];
newrow["供应商类型"] = data["type"];
newrow["联系人"] = data["person"];
newrow["联系人电话"] = data["phone"];
newrow["关闭原因"] = data["closereason"];
}
}
public DataTable GetSupTable(string rfqno)
{
string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
ISCLOSED as 是否关闭,ISQUOTED as 是否所有物料已报价,ISSHOWPRICE as 是否显示参考价,locationcode as 供应商地点代码,logdate as 更新日期,
logtime as 更新时间 ,LOGUSER as 更新用户,paymentcondition as 供应商付款条件,PRINCINGVENDORCODE,RFQCODE as 询价单编码,TAXRATE as 供应商税率,
VENDORCODE as 供应商代码,VenName as 供应商名称,VENDORTYPE as 供应商类型,VENPERSON AS 联系人,venhand as 联系人电话,ADDITION1 AS 关闭原因,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint
FROM icsSORRFQ2VENDOR
left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE AND icsSORRFQ2VENDOR.workpoint=icsvendor.workpoint
where RFQCODE='" + rfqno + @"'
";
DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
DataTable dtCloned = table.Clone();
foreach (DataColumn col in dtCloned.Columns)
{
col.DataType = typeof(string);
}
foreach (DataRow row in table.Rows)
{
DataRow newrow = dtCloned.NewRow();
foreach (DataColumn column in dtCloned.Columns)
{
newrow[column.ColumnName] = row[column.ColumnName].ToString();
}
dtCloned.Rows.Add(newrow);
}
if (Supplier.Rows.Count > 0)
{
dtCloned.Merge(Supplier, false);
}
return dtCloned;
}
public DataRow GetSuprow(string id)
{
string sql = @"select COMPANYCODE as 公司代码,CREATEDATE as 创建日期,CREATETIME as 创建时间,CREATEUSER as 创建用户,CURRENCY as 供应商币别,
ISCLOSED as 是否关闭,ISQUOTED as 是否所有物料已报价,ISSHOWPRICE as 是否显示参考价,locationcode as 供应商地点代码,logdate as 更新日期,
logtime as 更新时间 ,LOGUSER as 更新用户,paymentcondition as 供应商付款条件,PRINCINGVENDORCODE,RFQCODE as 询价单编码,TAXRATE as 供应商税率,
VENDORCODE as 供应商代码,cVenName as 供应商名称,VENDORTYPE as 供应商类型,CVENPERSON AS 联系人,cvenhand as 联系人电话,ADDITION1 AS 关闭原因,ID,icsSORRFQ2VENDOR.workpoint FROM icsSORRFQ2VENDOR
left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
where icsSORRFQ2VENDOR.id='" + id + @"';
";
DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
if (table.Rows.Count <= 0)
{
return Supplier.Select("ID='" + id + "'").Single();
}
else
{
return table.Rows[0];
}
}
public string DeleteSupTab(string keyValue)
{
string msg = string.Empty;
try
{
string sql = @"delete from icsSORRFQ2VENDOR where id in ('" + keyValue + "')";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
}
catch (Exception ex)
{
msg = ex.Message + " 删除失败!";
}
return msg;
}
/// <summary>
/// 发布询价
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public string Publish(string json)
{
string msg = string.Empty;
string wheresql = "(";
string[] id = json.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
//发送邮件通知供应商
string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
if (MailOpen == "true")
{
string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
int SendPort = 25;
if (!string.IsNullOrEmpty(StrSendPort))
SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
string sqlEmail = @"SELECT F_EMail,VenDorCode,F_RealName,a.RFQCODE FROM icsSORRFQ2VENDOR a
LEFT JOIN sys_SRM_User b ON a.VenDorCode=b.F_VenCode and a.workpoint=b.F_Location
where RFQCODE in " + wheresql + "";
DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
foreach (DataRow dr in dt.Rows)
{
string cVenCode = dr["VenDorCode"].ToString();
string TOAddress = dr["F_Email"].ToString();
string[] Partint = TOAddress.Split(';');
if (!string.IsNullOrEmpty(TOAddress))
{
foreach (var p in Partint)
{
string CCAddress = "";
string Subject = "有来自佑伦SRM平台新发布的询价信息";
bool isBodyHtml = false;
string F_RealName = dr["F_RealName"].ToString();
//string StarTime = dr["StarTime"].ToString();
//string EndTime = dr["EndTime"].ToString();
string RFQCODE = dr["RFQCODE"].ToString();
string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
string body = F_RealName + ":";
body += " \r\n\r\n\r\n 您有一个询价单号:" + RFQCODE + "待报价 ,请进行登录 SRM进行报价!";
body += "\r\n";
body += " 顺颂商祺!";
body += "\r\n";
body += " 佑伦真空设备科技有限公司";
body += "\r\n";
body += " " + NowDate;
string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
if (!string.IsNullOrEmpty(TOAddress))
{
try
{
SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
}
catch (Exception ex)
{
throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
}
}
else
{
msg = "请先维护供应商:" + F_RealName + "邮箱!";
}
}
}
}
}
string sql = "update icsSORRFQ set STATUS='Publish' where RFQCODE in " + wheresql;
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count > 0)
{
msg = "发布成功!";
}
else
{
msg = "发布失败!";
}
return msg;
}
public static void SendEmail(string ConnectionString, string SendHost, int SendPort, string SendDisplayName, string SendAddress, string SendPassword, string TOAddress, string CCAddress, string Subject, bool IsBodyHtml, string Body)
{
try
{
SmtpClient smtpClient = new SmtpClient
{
//EnableSsl = false,
UseDefaultCredentials = false,
Host = SendHost,
Port = SendPort,
Credentials = new NetworkCredential(SendAddress, SendPassword)
};
MailMessage mailMessage = new MailMessage
{
Subject = Subject,
SubjectEncoding = Encoding.GetEncoding("utf-8"),
BodyEncoding = Encoding.GetEncoding("utf-8"),
From = new MailAddress(SendAddress, SendDisplayName),
IsBodyHtml = IsBodyHtml,
Body = Body
};
string[] array = TOAddress.Split(new char[]
{
','
});
string[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
string text = array2[i];
if (!string.IsNullOrEmpty(text))
{
mailMessage.To.Add(text);
}
}
string[] array3 = CCAddress.Split(new char[]
{
','
});
array2 = array3;
for (int i = 0; i < array2.Length; i++)
{
string text2 = array2[i];
if (!string.IsNullOrEmpty(text2))
{
mailMessage.CC.Add(text2);
}
}
ServicePointManager.ServerCertificateValidationCallback = ((object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true);
smtpClient.Send(mailMessage);
// InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "1", null);
}
catch (Exception ex)
{
//InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "2", ex.Message);
throw;
}
}
public string Close(string json)
{
string wheresql = "(";
string[] id = json.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
string sql = "update icsSORRFQ set STATUS='Close' where RFQCODE in " + wheresql;
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count > 0)
{
return "关闭成功!";
}
else
{
return "关闭失败!";
}
}
public string delete(string json)
{
try
{
string wheresql = "(";
string[] id = json.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
string sql = "delete from icsSORRFQ where RFQCODE in" + wheresql;
sql += " delete from ICSSORRFQ2VENDOR where RFQCODE in" + wheresql;
sql += " delete from ICSSORRFQ2NORMALITEM where RFQCODE in" + wheresql;
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count > 0)
{
return "删除成功!";
}
else
{
return "删除失败!";
}
}
catch (Exception ex)
{
return ex.Message + " 删除失败!";
}
}
public DataTable GetRfqAndBJ(string rfqno)
{
//获取已报价的供应商
string sql1 = "select VENDORCODE from icsSORQUOTATION where rfqcode='" + rfqno + "' and STATUS='Publish'";
DataTable table = Repository().FindDataSetBySql(sql1).Tables[0];
string vendorcode = "";
string novendorcode = "";
List<string> hasbj = new List<string>();
List<string> bjyet = new List<string>();
List<string> hasbj2 = new List<string>();
List<string> bjyet2 = new List<string>();
foreach (DataRow row in table.Rows)
{
vendorcode += row["VENDORCODE"].ToString() + ",";
hasbj.Add(row["VENDORCODE"].ToString());
bjyet.Add(row["VENDORCODE"].ToString());
}
vendorcode = vendorcode.Trim(',');
string sql2 = "select a.VENDORCODE as VENDORCODE from icsSORRFQ2VENDOR a left join ICSSORQUOTATION b on a.RFQCODE=b.RFQCODE and a.VENDORCODE=b.VENDORCODE where a.rfqcode='" + rfqno + "' and (b.STATUS='New' or isnull(b.STATUS,'')='') ";
DataTable table1 = Repository().FindDataSetBySql(sql2).Tables[0];
foreach (DataRow row1 in table1.Rows)
{
//if (hasbj2.Contains(row1["VENDORCODE"].ToString())) {
// bjyet2.Remove(row1["VENDORCODE"].ToString());
//}
novendorcode += row1["VENDORCODE"].ToString() + ",";
hasbj2.Add(row1["VENDORCODE"].ToString());
bjyet2.Add(row1["VENDORCODE"].ToString());
}
novendorcode = novendorcode.Trim(',');
//
string sql = @"select companycode as 公司代码,COSTANALYSISTEMPLATE as 成本分析模板 ,CREATEDATE as 创建日期,CreateTime as 创建时间,CREATEUSER as 创建用户,HASCOSTDETAILS as 成本明细,ISINCLUDETAX as 是否含税,ITEMCLASSID as 物料分类代码,
b.itemcode as 物料代码,b.itemname as 物料名称, b.ITEMTYPE AS 物料类型,a.invstd as 物料规格,logdate as 更新日期,logtime as 更新时间,LOGUSER as 更新用户,memo as 备注,PRINCINGITEMCODE as 定价物料编码,REFERPRICE as 参考价格,CURRENCY as 币种,REQUESTQUANTITY as 预计需求量,RFQCODE as 询价单编码,RFQITEMREFERCODE as 文件路径,Convert(varchar(10),startdate,120) as 有效期开始,
unit as 单位,B.ID,b.workpoint,'" + vendorcode + @"' as 已报价供应商,'" + novendorcode + @"' AS 未报价供应商 from icsSORRFQ2NORMALITEM b
left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
where RFQCODE='" + rfqno + @"'
";
DataTable table3 = Repository().FindDataSetBySql(sql).Tables[0];
return table3;
}
public DataTable GetRfqSup(string rfqno)
{
string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,CURRENCY as 供应商币别,
ISCLOSED as 是否关闭,ISQUOTED as 是否所有物料已报价,ISSHOWPRICE as 是否显示参考价,locationcode as 供应商地点代码,icsSORRFQ2VENDOR.logdate as 更新日期,
icsSORRFQ2VENDOR.logtime as 更新时间 ,icsSORRFQ2VENDOR.LOGUSER as 更新用户,paymentcondition as 供应商付款条件,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as 询价单编码,TAXRATE as 供应商税率,
icsSORRFQ2VENDOR.VENDORCODE as 供应商代码,VenName as 供应商名称,VENDORTYPE as 供应商类型,VENPERSON AS 联系人,venhand as 联系人电话,icsSORRFQ2VENDOR.CauseOff AS 关闭原因,icsSORRFQ2VENDOR.ID,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as 最新报价单号 FROM icsSORRFQ2VENDOR
left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE and ICSVendor.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE and c.WorkPoint=icsSORRFQ2VENDOR.WorkPoint
where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'
";
DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
return table;
}
public DataTable GetRfqSup(string rfqno, string invcode, string workpoint, string queryJson, ref Pagination jqgridparam)
{
var Jobject = queryJson.ToJObject();
string sql = @"select icsSORRFQ2VENDOR.COMPANYCODE as 公司代码,icsSORRFQ2VENDOR.CREATEDATE as 创建日期,icsSORRFQ2VENDOR.CREATETIME as 创建时间,icsSORRFQ2VENDOR.CREATEUSER as 创建用户,icsSORRFQ2VENDOR.CURRENCY as 供应商币别,
ISCLOSED as 是否关闭,ISQUOTED as 是否所有物料已报价,ISSHOWPRICE as 是否显示参考价,locationcode as 供应商地点代码,icsSORRFQ2VENDOR.logdate as 更新日期,
icsSORRFQ2VENDOR.logtime as 更新时间 ,icsSORRFQ2VENDOR.LOGUSER as 更新用户,paymentcondition as 供应商付款条件,PRINCINGVENDORCODE,icsSORRFQ2VENDOR.RFQCODE as 询价单编码,TAXRATE as 供应商税率,
icsSORRFQ2VENDOR.VENDORCODE as 供应商代码,cVenName as 供应商名称,VENDORTYPE as 供应商类型,CVENPERSON AS 联系人,cvenhand as 联系人电话,isnull(d.VENDORREJECTREASON,'') AS 关闭原因,icsSORRFQ2VENDOR.workpoint,c.QUOTATIONCODE as 最新报价单号,D.QUOPRICE AS 最新报价,
CASE D.QUOSTATUS
WHEN 'Pending' THEN '待确认'
WHEN 'InitApprove' THEN '初审同意'
WHEN 'InitReject' THEN '初审拒绝'
WHEN 'PricingAppraising' THEN '定价审核中'
WHEN 'PricingApprove' THEN '定价通过'
WHEN 'PricingReject' THEN '定价拒绝'
WHEN 'RFCancel' THEN '询价取消'
WHEN 'VendorCheck' THEN '供方拒绝报价'
end as 报价状态,
CASE D.QUOSTATUS
WHEN 'Pending' THEN '待确认'
WHEN 'InitApprove' THEN '初审同意'
WHEN 'InitReject' THEN '初审拒绝'
WHEN 'PricingAppraising' THEN '定价审核中'
WHEN 'PricingApprove' THEN '定价通过'
WHEN 'PricingReject' THEN '定价拒绝'
WHEN 'RFCancel' THEN '询价取消'
WHEN 'VendorCheck' THEN '供方拒绝报价'
end as 报价状态Hidden,
d.QUOBUYERPRICE AS 协商价格,
COSTDETAILSREFERCODE AS 成本明细,
e.RFQITEMREFERCODE as 规格书,
d.VENDORMEMO as 供方备注,e.ITEMCODE,e.ITEMNAME,d.ADDITION1 as PricingRemark
FROM icsSORRFQ2VENDOR
left join icsvendor on ICSVendor.cvencode=icsSORRFQ2VENDOR.VENDORCODE
left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' ";
List<DbParameter> parameter = new List<DbParameter>();
if (!string.IsNullOrEmpty(Jobject["InvCode"].ToString()))
{
sql += " and icsSORRFQ2VENDOR.VENDORCODE like '%" + Jobject["InvCode"].ToString() + "%' ";
}
if (!string.IsNullOrEmpty(Jobject["InvName"].ToString()))
{
sql += " and cVenName like '%" + Jobject["InvName"].ToString() + "%' ";
}
if (!string.IsNullOrEmpty(Jobject["ItemCode"].ToString()))
{
sql += " and e.ITEMCODE like '%" + Jobject["ItemCode"].ToString() + "%' ";
}
if (!string.IsNullOrEmpty(Jobject["ItemName"].ToString()))
{
sql += " and e.ITEMNAME like '%" + Jobject["ItemName"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(workpoint))
{
sql += " and e.WorkPoint=" + workpoint + "";
}
//sql += " Order by e.ITEMCODE";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string SaveSCprice(string json)
{
try
{
var jobject = JArray.Parse(json);
string result = "";
for (int i = 0; i < jobject.Count; i++)
{
decimal price = Convert.ToDecimal(jobject[i]["协商价格"]);
string sql = "update icsSORQUODETAILNORMAL set QUOBUYERPRICE=" + price + " where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "' ";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count <= 0)
result = "保存失败";
else
result = "保存成功";
}
return result;
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 定价通过
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
///
public string AgreeCS(string json)
{
string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
string msg = "";
try
{
string GGUID = Guid.NewGuid().ToString();
var jobject = JArray.Parse(json);
bool IsInput;
string MessAge = string.Empty;
for (int i = 0; i < jobject.Count; i++)
{
var resultss = jobject[i]["ZBVendorCode"].ToArray();
////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
//string[] resultss = (string[])VendorCode;
//var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
for (int s = 0; s < resultss.Length; s++)
{
string Vendor = resultss[s].ToString();
string sql = "";
sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,1 AS bTaxCost,1 AS iSupplyType,'人民币' cExch_Name,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
DataTable dt = Repository().FindTableBySql(sql.ToString());
sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
DataTable dtD = Repository().FindTableBySql(sql.ToString());
List<ICSSSSROCS> asnlist = new List<ICSSSSROCS>();
for (int k = 0; k < dt.Rows.Count; k++)
{
if (ERPOpen == "true")
{
ICSSSSROCS asn = new ICSSSSROCS();
asn.ID = GGUID;
asn.cInvCode = dt.Rows[k]["ITEMCODE"].ToString();
asn.cVenCode = dt.Rows[k]["VENDORCODE"].ToString();
asn.cComUnitCode = dt.Rows[k]["UNIT"].ToString();
//List.CompanyCode = EnCode;
asn.bTaxCost = Convert.ToInt32(dt.Rows[k]["bTaxCost"].ToString());
asn.iSupplyType = Convert.ToInt32(dt.Rows[k]["iSupplyType"].ToString());
asn.cExch_Name = dt.Rows[k]["cExch_Name"].ToString();
asn.WorkPoint = dt.Rows[k]["WorkPoint"].ToString();
asn.dEnableDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
asn.dDisableDate = dDisableDate;
DataRow[] drs = dtD.Select("QUOTATIONCODE='" + dt.Rows[k]["QUOTATIONCODE"].ToString() + "'");
for (int j = 0; j < drs.Length; j++)
{
CreateVendorInventoryPriceDetailEntity DetailList = new CreateVendorInventoryPriceDetailEntity();
DetailList.ID = GGUID;
DetailList.iLowerLimit = float.Parse(drs[j]["iLowerLimit"].ToString());
DetailList.iUpperLimit = float.Parse(drs[j]["iUpperLimit"].ToString());
DetailList.iUnitPrice = float.Parse(drs[j]["iUnitPrice"].ToString());
DetailList.iTaxRate = float.Parse(drs[j]["iTaxRate"].ToString());
DetailList.iTaxUnitPrice = float.Parse(drs[j]["iTaxUnitPrice"].ToString()); ;
DetailList.WorkPoint = drs[j]["WorkPoint"].ToString();
asn.list.Add(DetailList);
}
asnlist.Add(asn);
string input = JsonConvert.SerializeObject(asnlist);
string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "XBJInv_PriceByYL";
//string APIURL = "http://172.16.12.157:8100/api/XBJInv_Price";
//string APIURL = "http://localhost:19944//api/XBJInv_Price";
string result = HttpPost(APIURL, input);
JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
MessAge = Obj["Success"].ToString();
string Success = Obj["Message"].ToString();
if (MessAge.ToUpper() == "FALSE")
{
IsInput = false;
msg = Success;
}
else
{
IsInput = true;
sql = @"update a
set a.QUOSTATUS='PricingApprove'
from icsSORQUODETAILNORMAL a
left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count <= 0)
msg = "保存失败" + MessAge;
else
msg = "保存成功";
}
}
else
{
IsInput = true;
sql = @"update a
set a.QUOSTATUS='PricingApprove'
from icsSORQUODETAILNORMAL a
left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count <= 0)
msg = "保存失败" + MessAge;
else
msg = "保存成功";
}
}
}
}
}
catch (Exception ex)
{
return ex.Message;
}
return msg;
}
//public string AgreeCS(string json)
//{
// string ERPOpen = ConfigurationManager.ConnectionStrings["ERPOpen"].ConnectionString;
// DateTime dDisableDate = new DateTime(2099, 12, 31, 0, 0, 0, 0);
// string msg = "";
// try
// {
// string GGUID = Guid.NewGuid().ToString();
// var jobject = JArray.Parse(json);
// bool IsInput;
// string MessAge = string.Empty;
// int ivouchrowno = 1;
// for (int i = 0; i < jobject.Count; i++)
// {
// var resultss = jobject[i]["ZBVendorCode"].ToArray();
// string Vendors = resultss[0].ToString();
// ////string[] resultss = (string[])jobject[i]["ZBVendorCode"]//企业信息
// //string[] resultss = (string[])VendorCode;
// //var jobjects = JArray.Parse(jobject[i]["ZBVendorCode"].ToString());
// string sql = "";
// //sql = @"SELECT ITEMCODE,ITEMNAME,UNIT,,a.WorkPoint,'' AS dEnableDate,'' AS dDisableDate
// // ,a.QUOTATIONCODE,b.VENDORCODE FROM icsSORQUODETAILNORMAL a
// // LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
// // LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
// // where b.RFQCODE='" + jobject[i]["rfqno"] + "' ";
// //DataTable dt = Repository().FindTableBySql(sql.ToString());
// sql = @"SELECT 0 AS iLowerLimit, REQUESTQUANTITY AS iUpperLimit, QUOPRICE as iTaxUnitPrice ,b.VENDORMEMO AS iTaxRate,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,a.WorkPoint,a.QUOTATIONCODE,b.VENDORCODE,ITEMCODE,'人民币' cExch_Name,
// 1 AS bTaxCost,1 AS iSupplyType
// FROM icsSORQUODETAILNORMAL a
// LEFT JOIN icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
// LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
// where b.RFQCODE='" + jobject[i]["rfqno"] + "' and c.VenName='" + Vendors + "'";
// DataTable dtD = Repository().FindTableBySql(sql.ToString());
// List<CreatePUPriceJustByYLEntity> asnlist = new List<CreatePUPriceJustByYLEntity>();
// log.Info("查询sql" + sql);
// if (ERPOpen == "true")
// {
// CreatePUPriceJustByYLEntity asn = new CreatePUPriceJustByYLEntity();
// asn.cmaker = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
// asn.cpersoncode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
// asn.cmainmemo = "";
// asn.cdepcode = "";
// //List.CompanyCode = EnCode;
// asn.bTaxCost = Convert.ToInt32(dtD.Rows[0]["bTaxCost"].ToString());
// asn.iSupplyType = Convert.ToInt32(dtD.Rows[0]["iSupplyType"].ToString());
// asn.WorkPoint = dtD.Rows[0]["WorkPoint"].ToString();
// for (int k = 0; k < dtD.Rows.Count; k++)
// {
// CreatePUPriceJustByYDetailsEntity DetailList = new CreatePUPriceJustByYDetailsEntity();
// DetailList.cvencode = dtD.Rows[k]["VENDORCODE"].ToString();
// DetailList.cinvcode = dtD.Rows[k]["ITEMCODE"].ToString();
// DetailList.dstartdate = DateTime.Now.ToString("yyyy-MM-dd");
// DetailList.fminquantity = float.Parse(dtD.Rows[k]["iLowerLimit"].ToString());
// DetailList.iUnitPrice = float.Parse(dtD.Rows[k]["iUnitPrice"].ToString());
// DetailList.iTaxRate = float.Parse(dtD.Rows[k]["iTaxRate"].ToString());
// DetailList.iTaxUnitPrice = float.Parse(dtD.Rows[k]["iTaxUnitPrice"].ToString()); ;
// DetailList.cexch_name = dtD.Rows[k]["cexch_name"].ToString();
// DetailList.ivouchrowno = ivouchrowno;
// ivouchrowno++;
// asn.list.Add(DetailList);
// }
// asnlist.Add(asn);
// string input = JsonConvert.SerializeObject(asnlist);
// log.Info("传入参数" + input);
// string APIURL = ConfigurationManager.ConnectionStrings["XBJURL"].ConnectionString + "PU_PriceJust";
// //string APIURL = "http://172.16.12.157:8100/api/PU_PriceJust";
// //string APIURL = "http://localhost:19944//api/PU_PriceJust";
// string result = HttpPost(APIURL, input);
// JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
// log.Info("输出参数" + Obj);
// MessAge = Obj["Success"].ToString();
// string Success = Obj["Message"].ToString();
// if (MessAge.ToUpper() == "FALSE")
// {
// IsInput = false;
// msg = Success;
// }
// else
// {
// for (int s = 0; s < resultss.Length; s++)
// {
// string Vendor = resultss[s].ToString();
// IsInput = true;
// sql = @"update a
// set a.QUOSTATUS='PricingApprove'
// from icsSORQUODETAILNORMAL a
//left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
// LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
// where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
// sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
// int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
// if (count <= 0)
// msg = "保存失败" + MessAge;
// else
// msg = "保存成功";
// }
// }
// }
// else
// {
// for (int s = 0; s < resultss.Length; s++)
// {
// string Vendor = resultss[s].ToString();
// IsInput = true;
// sql = @"update a
// set a.QUOSTATUS='PricingApprove'
// from icsSORQUODETAILNORMAL a
//left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
// LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
// where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendor + "'";
// sql += " UPDATE icsSORRFQ SET STATUS='PricingApprove' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
// int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
// if (count <= 0)
// msg = "保存失败" + MessAge;
// else
// msg = "保存成功";
// }
// }
// }
// }
// catch (Exception ex)
// {
// log.Error(ex.Message);
// return ex.Message;
// }
// return msg;
//}
/// <summary>
/// 上传到OA
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public string AgreeByOA(string json)
{
var jobject = JArray.Parse(json);
string sql = "";
string sqls = "";
string msg = "";
try
{
#region 推送OA
string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
log.Info("追加异常" + sql);
DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
if (dtUserCodeOA.Rows.Count <= 0)
{
log.Info(dtUserCodeOA.Rows.Count);
throw new Exception("发起账号OA系统中不存在!!");
}
DataTable dt = new DataTable();
var userInfo = new Dictionary<string, string>
{
{"userName", "ylzk-rest"},
{"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
{"loginName", UserCodeOA}
};
//var userInfo = new Dictionary<string, string>
// {
// {"userName", "ylzk-rest"},
// {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
// {"loginName", "ylzk-rest"}
// };
// 序列化Dictionary为JSON字符串
string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
log.Info("获取Tocken传入参数:" + jsonString);
var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
//var responseStr = httpGet(reqInterNme);
try
{
//JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
log.Info("输出Tocken参数:" + res);
string ID = res["id"].ToString();//获取Tockn
JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
string id = resultbidUser["id"].ToString(); //用户ID
string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
string postId = resultbidUser["postId"].ToString(); //岗位ID
//string Message = res["Message"].ToString();
if (!string.IsNullOrWhiteSpace(ID))
{
NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail dat = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datadetail();
NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass dds = new NFine.Domain._03_Entity.SRM.ICSSORRFQOA.datass();
//string sqlFile = "SELECT Attachment1,Attachment2 FROM ICSPREVENDORProductionInspection Where TEMPVENDORCODE='" + TEMPVENDORCODE + "'and WorkPoint='" + WorkPoint + "'";
//DataTable dts = SqlHelper.GetDataTableBySql(sqlFile);
//string fileName = "" + dts.Rows[0]["Attachment1"].ToString() + ";" + dts.Rows[0]["Attachment2"].ToString();
//string[] PrintParas = fileName.Split(';');
int sort = 1;
string fileUrl = "";
ICSSORRFQOA da = new ICSSORRFQOA();
da.appName = "collaboration";
dat.templateCode = "gysbj";
dat.draft = "0";
dat.relateDoc = "";//(OA 公文附件 ID,默认为空,不使用)
dat.subject = "";//(OA 流程标题,默认为空,OA 端自动生成标题)
Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136 dm0021 = new Domain._03_Entity.SRM.ICSSORRFQOA.formmain_0136();
dm0021.field0001 = UserName;
dm0021.field0002 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
dm0021.field0011 = jobject[0]["rfqno"].ToString();//询价单号
dds.formmain_0136 = dm0021;
dat.data = dds;
// sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
//,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
//,c.ADDITION1,d.VenName cVenName,b.VENDORCODE,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,f.InvName
// FROM icsSORQUODETAILNORMAL c
// LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
// LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
// LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
//left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
// WHERE b.RFQCODE='" + jobject[0]["rfqno"] + "'and d.VenName='" + Vendors + "'";
sql = @"SELECT ROW_NUMBER() Over ( order by c.ITEMCODE desc ) As rowNum,c.ITEMCODE,c.ITEMNAME,f.InvStd,f.InvUnit
,c.REQUESTQUANTITY,e.Remark,c.Material,c.PROCESS,c.SurfaceTreatment,c.Other,c.QUOPRICE
,c.ADDITION1,d.VenName cVenName,b.VENDORCODE,ROUND(ROUND( QUOPRICE,2)/(1+(b.VENDORMEMO/CAST(100 AS float))),2) AS iUnitPrice,c.RFQCODE,g.VenName AS djvencode,f.InvName,CAST(c.REQUESTQUANTITY * c.QUOPRICE AS DECIMAL(10, 4)) as field0021
,h.SCQUOPRICE as field0026
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
left join ICSInventory f on c.ITEMCODE=f.InvCode and c.WorkPoint=f.WorkPoint
LEFT JOIN ( SELECT a.ITEMCODE,
STUFF((
SELECT DISTINCT ', ' + d2.VenName
FROM icsSORQUODETAILNORMAL a2
LEFT JOIN icsSORQUOTATION b2 ON a2.QUOTATIONCODE = b2.QUOTATIONCODE AND b2.WorkPoint = a2.WorkPoint
LEFT JOIN dbo.ICSVendor d2 ON b2.VENDORCODE = d2.VenCode AND b2.WorkPoint = d2.WorkPoint
WHERE a2.ITEMCODE = a.ITEMCODE AND a2.QUOSTATUS = 'PricingApproveByOA'
and a2.RFQCODE='" + jobject[0]["rfqno"] + @"'
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS VenName,
a.RFQCODE
FROM icsSORQUODETAILNORMAL a
WHERE a.QUOSTATUS = 'PricingApproveByOA'
GROUP BY a.ITEMCODE, a.RFQCODE)g ON c.RFQCODE=g.RFQCODE AND c.ITEMCODE=g.ITEMCODE
LEFT JOIN (SELECT
*
FROM (
SELECT
DISTINCT
ROW_NUMBER() OVER(PARTITION BY b.VENDORCODE,c.ITEMCODE ORDER BY a.CreateTime ASC) AS num,
d.VenName AS SupplierCode,
a.Price as SCQUOPRICE,
a.CreateTime as LOGDATE,
b.RFQCODE,
c.ITEMCODE
FROM
icsSORQUOTATION b
LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
WHERE
c.RFQCODE='" + jobject[0]["rfqno"] + @"'
) AS subquery
) h ON g.RFQCODE=h.RFQCODE AND d.VenName=h.SupplierCode and g.ITEMCODE=h.ITEMCODE and h.num='1'
WHERE c.RFQCODE='" + jobject[0]["rfqno"] + "'";
DataTable dtD = Repository().FindTableBySql(sql.ToString());
for (int k = 0; k < dtD.Rows.Count; k++)
{
List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137> formson_0137 = new List<NFine.Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137>();
Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137 dm0022 = new Domain._03_Entity.SRM.ICSSORRFQOA.formson_0137();
dm0022.field0003 = dtD.Rows[k]["cVenName"].ToString();
dm0022.field0004 = dtD.Rows[k]["VENDORCODE"].ToString();
dm0022.field0005 = dtD.Rows[k]["InvName"].ToString();
dm0022.field0006 = dtD.Rows[k]["InvStd"].ToString();
dm0022.field0007 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
dm0022.field0008 = Convert.ToDecimal(dtD.Rows[k]["iUnitPrice"].ToString());
dm0022.field0009 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
dm0022.field0012 = Convert.ToDecimal(dtD.Rows[k]["rowNum"].ToString());
dm0022.field0013 = dtD.Rows[k]["ITEMCODE"].ToString();
dm0022.field0014 = dtD.Rows[k]["InvUnit"].ToString();
dm0022.field0015 = Convert.ToDecimal(dtD.Rows[k]["REQUESTQUANTITY"].ToString());
dm0022.field0016 = Convert.ToDecimal(dtD.Rows[k]["Material"].ToString());
dm0022.field0017 = Convert.ToDecimal(dtD.Rows[k]["PROCESS"].ToString());
dm0022.field0018 = Convert.ToDecimal(dtD.Rows[k]["SurfaceTreatment"].ToString());
dm0022.field0019 = Convert.ToDecimal(dtD.Rows[k]["Other"].ToString());
dm0022.field0020 = Convert.ToDecimal(dtD.Rows[k]["QUOPRICE"].ToString());
dm0022.field0021 = Convert.ToDecimal(dtD.Rows[k]["field0021"].ToString());
dm0022.field0022 = dtD.Rows[k]["ADDITION1"].ToString();
dm0022.field0024 = dtD.Rows[k]["djvencode"].ToString();
dm0022.field0026 = (dtD.Rows[k]["field0026"].ToString() == "" ? 0 : Convert.ToDecimal(dtD.Rows[k]["field0026"].ToString()));
dds.formson_0137.Add(dm0022);
}
da.data = dat;
string input = JsonConvert.SerializeObject(da);
log.Info("传入参数" + input);
//}
string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/bpm/process/start?token=" + ID;
string resultBid = CertifiCationApp.HttpPost(APIURLBid, input);
JObject resBId = (JObject)JsonConvert.DeserializeObject(resultBid);
log.Info("输出参数" + resBId);
string Code = resBId["code"].ToString();//获取Tockn
if (Code == "0")
{
// 获取 app_bussiness_data 字段的值
string appBussinessDataJson = resBId["data"]["app_bussiness_data"].ToString();
// 解析 app_bussiness_data 的 JSON 数据
JObject appBussinessDataObject = JObject.Parse(appBussinessDataJson);
// 提取 affairId 和 summaryId 的值
string affairId = appBussinessDataObject["affairId"].ToString();
string summaryId = appBussinessDataObject["summaryId"].ToString();
for (int i = 0; i < jobject.Count; i++)
{
var resultss = jobject[i]["ZBVendorCode"].ToArray();
for (int s = 0; s < resultss.Length; s++)
{
string Vendors = resultss[s].ToString();
//string Vendors = resultss[0].ToString();
sql += @"update a
set a.QUOSTATUS='PricingApproveByOA'
from icsSORQUODETAILNORMAL a
left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
sql += " UPDATE icsSORRFQ SET STATUS='PricingApproveByOA',ADDITION1='" + affairId + "',ADDITION2=" + summaryId + " where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
}
}
log.Info("修改状态sql:" + sql);
SqlHelper.CmdExecuteNonQueryLi(sql);
}
else
{
for (int i = 0; i < jobject.Count; i++)
{
var resultss = jobject[i]["ZBVendorCode"].ToArray();
for (int s = 0; s < resultss.Length; s++)
{
string Vendors = resultss[s].ToString();
//string Vendors = resultss[0].ToString();
sqls += @"update a
set a.QUOSTATUS='Publish'
from icsSORQUODETAILNORMAL a
left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
}
}
SqlHelper.CmdExecuteNonQueryLi(sqls);
msg = "OA上传OA失败!";
}
}
}
catch (Exception ex)
{
for (int i = 0; i < jobject.Count; i++)
{
var resultss = jobject[i]["ZBVendorCode"].ToArray();
for (int s = 0; s < resultss.Length; s++)
{
string Vendors = resultss[s].ToString();
//string Vendors = resultss[0].ToString();
sqls += @"update a
set a.QUOSTATUS='Publish'
from icsSORQUODETAILNORMAL a
left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "' and c.VenName='" + Vendors + "'";
sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["rfqno"] + "' UPDATE icsSORRFQ2NORMALITEM SET Remark='" + jobject[i]["Remark"] + "' where RFQCODE='" + jobject[i]["rfqno"] + "' and ITEMCODE='" + jobject[i]["ITEMCODE"] + "'";
}
}
SqlHelper.CmdExecuteNonQueryLi(sqls);
log.Error(ex.Message);
msg = ex.Message;
}
#endregion
}
catch (Exception ex)
{
msg = "报错失败!" + ex.Message;
}
return msg;
}
/// <summary>
/// 上传到OA
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public string CleanAgreeByOA(string json)
{
var jobject = JArray.Parse(json);
string sql = "";
string sqls = "";
string msg = "";
try
{
#region 推送OA
string UserCodeOA = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
sql = "select id from OA.dbo.org_member where code='" + UserCodeOA + "'";
log.Info("追加异常" + sql);
DataTable dtUserCodeOA = SqlHelper.GetDataTableBySql(sql);
if (dtUserCodeOA.Rows.Count <= 0)
{
log.Info(dtUserCodeOA.Rows.Count);
throw new Exception("发起账号OA系统中不存在!!");
}
DataTable dt = new DataTable();
var userInfo = new Dictionary<string, string>
{
{"userName", "ylzk-rest"},
{"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
{"loginName", UserCodeOA}
};
//var userInfo = new Dictionary<string, string>
// {
// {"userName", "ylzk-rest"},
// {"password", "054d197d-73c2-4761-be58-a46efe6cd03f"},
// {"loginName", "ylzk-rest"}
// };
// 序列化Dictionary为JSON字符串
string jsonString = JsonConvert.SerializeObject(userInfo, Formatting.Indented);
log.Info("获取Tocken传入参数:" + jsonString);
var reqInterNme = "https://oa.ylzk.com.cn:6443/seeyon/rest/token";
string responseStr = CertifiCationApp.HttpPost(reqInterNme, jsonString);
//var responseStr = httpGet(reqInterNme);
try
{
//JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
log.Info("输出Tocken参数:" + res);
string ID = res["id"].ToString();//获取Tockn
JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
string id = resultbidUser["id"].ToString(); //用户ID
string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
string postId = resultbidUser["postId"].ToString(); //岗位ID
//string Message = res["Message"].ToString();
if (!string.IsNullOrWhiteSpace(ID))
{
var cancelInfo = new Dictionary<string, string>
{
{"affairId", jobject[0]["ADDITION1"].ToString()},
{"summaryId",jobject[0]["ADDITION2"].ToString()},
{"loginName", UserCodeOA}
};
// 序列化Dictionary为JSON字符串
string canceljsonString = JsonConvert.SerializeObject(cancelInfo, Formatting.Indented);
log.Info("传入参数" + canceljsonString);
//}
string APIURLBid = "https://oa.ylzk.com.cn:6443/seeyon/rest/affair/cancel?token=" + ID;
string resultBid = CertifiCationApp.HttpPost(APIURLBid, canceljsonString);
log.Info("输出参数" + resultBid);
if (resultBid == "true")
{
for (int i = 0; i < jobject.Count; i++)
{
sqls += @"update a
set a.QUOSTATUS='Publish'
from icsSORQUODETAILNORMAL a
left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
}
SqlHelper.CmdExecuteNonQueryLi(sqls);
}
}
}
catch (Exception ex)
{
for (int i = 0; i < jobject.Count; i++)
{
sqls += @"update a
set a.QUOSTATUS='Publish'
from icsSORQUODETAILNORMAL a
left join icsSORQUOTATION b ON a.QUOTATIONCODE=b.QUOTATIONCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON b.VENDORCODE=c.VenCode AND b.WorkPoint=c.WorkPoint
where b.RFQCODE='" + jobject[i]["RFQCODE"] + "'";
sqls += " UPDATE icsSORRFQ SET STATUS='Publish' where RFQCODE='" + jobject[i]["RFQCODE"] + "'";
}
SqlHelper.CmdExecuteNonQueryLi(sqls);
log.Error(ex.Message);
msg = ex.Message;
}
#endregion
}
catch (Exception ex)
{
msg = "报错失败!" + ex.Message;
}
return msg;
}
public static string HttpPost(string url, string body)
{
try
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
request.ContentType = "application/json; charset=utf-8";
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
return reader.ReadToEnd();
}
}
catch (WebException ex)
{
throw new Exception(ex.Message);
}
}
public string RejectCS(string json)
{
try
{
var jobject = JArray.Parse(json);
string result = "";
for (int i = 0; i < jobject.Count; i++)
{
string sql = "update icsSORQUODETAILNORMAL set QUOSTATUS='PricingReject' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count <= 0)
result = "保存失败";
else
result = "保存成功";
}
return result;
}
catch (Exception ex)
{
return ex.Message;
}
}
public String CreateBJ(string json)
{
try
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
WorkPoint = WorkPoint.Replace("'", "");
var jobject = JArray.Parse(json);
string Code = GetSercodeBJ(WorkPoint);
string result = "";
for (int i = 0; i < jobject.Count; i++)
{
string sql = "update icsSORQUODETAILNORMAL set COMPARECODE='" + Code + "',QUOSTATUS='PricingAppraising' where QUOTATIONCODE='" + jobject[i]["最新报价单号"] + "' and ITEMCODE='" + jobject[i]["Invcode"] + "'";
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count <= 0)
result = "保存失败";
else
result = "保存成功";
}
return result;
}
catch (Exception ex)
{
return ex.Message;
}
}
public string GetSercodeBJ(string workpoint)
{
string datetime = DateTime.Now.ToString("yyyyMMdd");
SqlParameter[] para = { new SqlParameter("@WorkPoint", workpoint), new SqlParameter("@TbName", "ICSSORQUODETAILNORMAL"), new SqlParameter("@CodeCol", "COMPARECODE"), new SqlParameter("@Pre", "CPE" + datetime), new SqlParameter("@NumLen", 3) };
DataTable table = Repository().FindTableByProc("Addins_GetSerialCode", para);
return table.Rows[0][0].ToString();
}
public DataTable GetInvType()
{
string sql = "select F_ItemName from Sys_SRM_Itemsdetail where F_ItemId='488c96cb-49a5-4ea5-9d12-5a21b4db1d82'";
DataTable table = Repository().FindTableBySql(sql);
return table;
}
public DataTable GetCurrencty()
{
string sql = "SELECT * from Sys_SRM_ItemsDetail where F_ItemId in (select F_Id from Sys_SRM_Items where F_enCode='base_currency')";
DataTable table = Repository().FindTableBySql(sql);
return table;
}
public int CloseRFQPrice(string VenCode, string RFQNO, string ReturnRemark)
{
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = string.Empty;
sql = @"UPDATE ICSSORRFQ2VENDOR SET ISCLOSED = '是',CauseOff='{0}' WHERE RFQCODE ='{1}' and VENDORCODE='{2}'";
sql = string.Format(sql, ReturnRemark, RFQNO, VenCode);
return SqlHelper.ExecuteNonQuery(sql);
}
/// <summary>
/// 获取动态列
/// </summary>
/// <param name="rfqcode"></param>
/// <param name="workpoint"></param>
/// <returns></returns>
public DataTable SelectSORRFQColumnName(string rfqcode, string workpoint)
{
string sql = @"declare @sql varchar(8000)
SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,Remark
into #Temp
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}' and c.WorkPoint='{1}'
select distinct cVenName as ColCaption,cVenName as ColFiledName from #Temp
drop table #Temp";
sql = string.Format(sql, rfqcode, workpoint);
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 查询
/// </summary>
/// <param name="rfqcode"></param>
/// <param name="workpoint"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetListSORRFQGridJsonTOZSUM(string rfqcode, string workpoint, ref Pagination jqgridparam)
{
string msg = string.Empty;
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" declare @sql varchar(8000)
SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.cVenName,c.REQUESTQUANTITY
into #TempSORRFQ
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
select @sql=isnull(@sql+',','')+' ['+cVenName+']'
from(select distinct cVenName from #TempSORRFQ)as a
set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
exec(@sql)";
sql = string.Format(sql, rfqcode, workpoint);
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
return dtr;
}
public DataTable GetSubGridJsonCourseInfoSORRFQ(string rfqcode, string workpoint, string ITEMCODE, ref Pagination jqgridparam)
{
string sql = @" SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.WorkPoint,b.VENDORCODE,c.ADDITION1
,Material,PROCESS,SurfaceTreatment,Other,c.AccountPeriod
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}' AND c.ITEMCODE='{1}'AND c.WorkPoint='{2}' ";
sql = string.Format(sql, rfqcode, ITEMCODE, workpoint);
return Repository().FindTablePageBySql(sql.ToString(), ref jqgridparam);
}
public DataTable SORRFQHistoryInfo(string rfqcode, string workpoint, string ITEMCODE, string VENDORCODE, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" SELECT c.ITEMCODE,c.ITEMNAME,a.Price as QUOPRICE,d.VenName cVenName,c.WorkPoint,b.VENDORCODE,c.LOGUSER,a.CreateTime as LOGDATE FROM icsSORQUOTATION b
LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}' AND c.workpoint='{1}'
AND c.ITEMCODE = '{2}'and b.VENDORCODE='{3}'";
sql = string.Format(sql, rfqcode, workpoint, ITEMCODE, VENDORCODE);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable SORRFQCourseHistoryInfoCahrs(string rfqcode, string workpoint, string ITEMCODE)
{
string sql = @" SELECT
DISTINCT
ROW_NUMBER() OVER(PARTITION BY b.VENDORCODE ORDER BY a.CreateTime ASC) AS num,d.VenName AS SupplierCode, a.Price as QUOPRICE,a.CreateTime as LOGDATE
FROM icsSORQUOTATION b
LEFT JOIN icsSORRFQ2VENDOR e ON b.RFQCODE=e.RFQCODE AND b.WorkPoint=e.WorkPoint AND b.VENDORCODE=e.VENDORCODE
LEFT JOIN icsSORQUODETAILNORMAL c ON c.RFQCODE=e.RFQCODE AND e.WorkPoint=c.WorkPoint AND c.QUOTATIONCODE=b.QUOTATIONCODE
LEFT JOIN dbo.ICSQuoteHistory a ON a.QuotationID=c.ID AND a.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}' AND c.workpoint='{1}' AND c.ITEMCODE ='{2}' ORDER BY a.CreateTime ASC ";
sql = string.Format(sql, rfqcode, workpoint, ITEMCODE);
return Repository().FindTableBySql(sql.ToString());
}
public DataTable GetMinPice(string RFQCODE, string ITEMCODE)
{
DataTable dt = new DataTable();
string sql = @"select min(QUOPRICE) as QUOPRICE from ICSSORQUODETAILNORMAL
WHERE 1=1
and RFQCODE='" + RFQCODE + "' and ITEMCODE='" + ITEMCODE + "'";
return Repository().FindTableBySql(sql.ToString());
}
public DataTable GetPOListExport(string rfqcode, string workpoint, ref Pagination jqgridparam)
{
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" declare @sql varchar(8000)
SELECT c.ITEMCODE AS 物料编码,c.ITEMNAME AS 物料名称,CAST(c.QUOPRICE AS DECIMAL(18,4)) as QUOPRICE,d.cVenName,CAST(c.REQUESTQUANTITY AS DECIMAL(18,2)) AS 需求数量
into #TempSORRFQ
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.cVenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
select @sql=isnull(@sql+',','')+' ['+cVenName+']'
from(select distinct cVenName from #TempSORRFQ)as a
set @sql='SELECT *
FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
exec(@sql)";
sql = string.Format(sql, rfqcode, workpoint);
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQbyChan(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
return dtr;
}
public DataTable GetPOListExport(string rfqno, string workpoint)
{
string sql = @"select
e.ITEMCODE as 物料代码,
e.ITEMNAME as 物料名称,
icsSORRFQ2VENDOR.VENDORCODE as 供应商代码,
VenName as 供应商名称,
CAST(D.QUOPRICE AS DECIMAL(18,4)) AS 最新报价,
d.ADDITION1 AS 货期,
e.REQUESTQUANTITY AS 数量,
f.InvStd AS 规格型,
d.material as 材料,
d.PROCESS as 加工,
d.SurfaceTreatment as 表面处理,
d.Other as 其他
FROM icsSORRFQ2VENDOR
left join icsvendor on ICSVendor.vencode=icsSORRFQ2VENDOR.VENDORCODE
left join icsSORQUOTATION c on c.vendorcode=icsSORRFQ2VENDOR.VENDORCODE and c.rfqcode=icsSORRFQ2VENDOR.RFQCODE
left join icsSORQUODETAILNORMAL d on d.QUOTATIONCODE=c.QUOTATIONCODE
left join icsSORRFQ2NORMALITEM e on e.RFQCODE=icsSORRFQ2VENDOR.RFQCODE and d.itemcode=e.itemcode
LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
where icsSORRFQ2VENDOR.RFQCODE='" + rfqno + @"'AND ISNULL(c.QUOTATIONCODE,'')<>'' order by e.ITEMCODE desc";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 获取供应商-生效价格
/// </summary>
/// <param name="rfqno"></param>
/// <param name="workpoint"></param>
/// <returns></returns>
public DataTable GettPerson(string rfqno, string workpoint)
{
string sql = @"SELECT distinct d.VenName cVenName, d.VenName as SupplierCode
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
where c.RFQCODE ='{0}'and c.WorkPoint='{1}'
";
sql = string.Format(sql, rfqno, workpoint);
DataTable table = SqlHelper.GetDataTableBySql(sql);
return table;
}
/// <summary>
/// 查询
/// </summary>
/// <param name="rfqcode"></param>
/// <param name="workpoint"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetListSORRFQ(string rfqno, string workpoint, ref Pagination jqgridparam)
{
string msg = string.Empty;
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" declare @sql varchar(8000)
SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
into #TempSORRFQ
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
select @sql=isnull(@sql+',','')+' ['+cVenName+']'
from(select distinct cVenName from #TempSORRFQ)as a
set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
exec(@sql)";
sql = string.Format(sql, rfqno, workpoint);
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
Dictionary<string, decimal> dic = new Dictionary<string, decimal>();
foreach (DataRow dr in dtr.Rows)
{
foreach (DataColumn col in dtr.Columns)
{
if (col.Caption == "ITEMCODE" || col.Caption == "ZBVendor" || col.Caption == "ITEMNAME" || col.Caption == "cVenName" || col.Caption == "QUOPRICE" || col.Caption == "IsTou" || col.Caption == "REQUESTQUANTITY" || col.Caption == "Remark")
continue;
if (dic.Keys.Contains(col.Caption))
dic[col.Caption] += Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"]));
else
{
dic.Add(col.Caption, Convert.ToDecimal(Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) * Convert.ToDecimal(dr["REQUESTQUANTITY"])));
}
}
}
if (!string.IsNullOrWhiteSpace(msg))
{
throw new Exception(msg);
}
DataRow drNew = dtr.NewRow();
string name = "";
decimal qty = decimal.MaxValue;
foreach (var item in dic)
{
drNew[item.Key] = item.Value;
if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
{
qty = Convert.ToDecimal(item.Value);
name = item.Key;
}
}
DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
dataColumn.DefaultValue = name; //为列设置默认值
dtr.Columns.Add(dataColumn);
dtr.Rows.Add(drNew);
return dtr;
}
/// <summary>
/// 查询
/// </summary>
/// <param name="rfqcode"></param>
/// <param name="workpoint"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetListSORRFQByDJ(string rfqno, string workpoint, ref Pagination jqgridparam)
{
string msg = string.Empty;
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" declare @sql varchar(8000)
SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark,'' AS ZBVendor
,f.InvStd
into #TempSORRFQ
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
LEFT JOIN dbo.ICSInventory f ON e.ITEMCODE=f.InvCode AND e.WorkPoint=f.WorkPoint
WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
select @sql=isnull(@sql+',','')+' ['+cVenName+']'
from(select distinct cVenName from #TempSORRFQ)as a
set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
exec(@sql)";
sql = string.Format(sql, rfqno, workpoint);
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTempSORRFQ(sql.ToString(), " " + "#TempSORRFQ" + " ", " drop table #TempSORRFQ", parameter.ToArray(), ref jqgridparam);
string name = "";
foreach (DataRow dr in dtr.Rows)
{
decimal qty = decimal.MaxValue;
foreach (DataColumn col in dtr.Columns)
{
if (col.Caption == "ITEMCODE" || col.Caption == "ZBVendor" || col.Caption == "ITEMNAME" || col.Caption == "cVenName" || col.Caption == "QUOPRICE" || col.Caption == "IsTou" || col.Caption == "REQUESTQUANTITY" || col.Caption == "Remark" || col.Caption == "InvStd")
continue;
if (Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) < qty && Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) > 0)
{
qty = Convert.ToDecimal(dr[col.Caption]);
name = col.Caption;
}
}
dr["ZBVendor"] = name;
}
//if (!string.IsNullOrWhiteSpace(msg))
//{
// throw new Exception(msg);
//}
//DataRow drNew = dtr.NewRow();
//string name = "";
//decimal qty = decimal.MaxValue;
//foreach (var item in dic)
//{
// drNew[item.Key] = item.Value;
// if (Convert.ToDecimal(item.Value) < qty && Convert.ToDecimal(item.Value) > 0)
// {
// qty = Convert.ToDecimal(item.Value);
// name = item.Key;
// }
//}
//DataColumn dataColumn = new DataColumn("ZBVendor", typeof(string));
//dataColumn.DefaultValue = name; //为列设置默认值
//dtr.Columns.Add(dataColumn);
//dtr.Rows.Add(drNew);
return dtr;
}
public DataTable GetSORRVenDorFile(string rfqcode)
{
//string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
DataTable dt = new DataTable();
string sql = @"SELECT Filename FROM ICSSORRFQ WHERE RFQCODE='{0}'";
sql = string.Format(sql, rfqcode);
dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 查询
/// </summary>
/// <param name="rfqcode"></param>
/// <param name="workpoint"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetListSORRFQbyRemark(string rfqno, string workpoint)
{
string msg = string.Empty;
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" declare @sql varchar(8000)
SELECT c.ITEMCODE,c.ITEMNAME,c.QUOPRICE,d.VenName cVenName,c.REQUESTQUANTITY,e.Remark
into #TempSORRFQ
FROM icsSORQUODETAILNORMAL c
LEFT JOIN icsSORQUOTATION b ON c.QUOTATIONCODE=b.QUOTATIONCODE AND b.WorkPoint=c.WorkPoint
LEFT JOIN icsSORRFQ2NORMALITEM e ON c.RFQCODE=e.RFQCODE AND c.WorkPoint=e.WorkPoint AND c.ITEMCODE=e.ITEMCODE
LEFT JOIN dbo.ICSVendor d ON b.VENDORCODE=d.VenCode AND b.WorkPoint=d.WorkPoint
WHERE c.RFQCODE='{0}'and c.WorkPoint='{1}'
select @sql=isnull(@sql+',','')+' ['+cVenName+']'
from(select distinct cVenName from #TempSORRFQ)as a
set @sql='SELECT STUFF((select'','' + cVenName from (SELECT DISTINCT cVenName FROM #TempSORRFQ ) DD for xml path('''')),1,1,'''') as IsTou,*
FROM #TempSORRFQ PIVOT(MAX(QUOPRICE) FOR cVenName IN ('+@sql+'))a '
exec(@sql) drop table #TempSORRFQ ";
sql = string.Format(sql, rfqno, workpoint);
DataTable dtr = SqlHelper.GetDataTableBySql(sql.ToString());
return dtr;
}
/// <summary>
/// 获取采购订单信息
/// </summary>
/// <param name="rfqcode"></param>
/// <returns></returns>
public DataTable GetItemDocByPO(string queryJson, ref Pagination jqgridparam, string WorkPoint)
{
string ParentId = "";
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = string.Empty;
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (queryParam["status"].ToString() == "1")
{
sql = @"SELECT DISTINCT
a.id,
a.POCode,
a.Sequence,
b.InvCode,
a.Quantity,
a.CreateDateTime,
b.InvName,
b.InvStd,
a.PlanArriveDate,
b.InvUnit
FROM
dbo.ICSPurchaseOrder a
LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
WHERE
a.STATUS = '2'
AND EXISTS (
SELECT 1
FROM dbo.ICSWareHouseLotInfoLog c2
WHERE c2.TransCode = a.POCode AND c2.TransSequence = a.Sequence AND c2.Quantity = a.Quantity
) ";
}
else if (queryParam["status"].ToString() == "2")
{
sql = @"SELECT DISTINCT
a.id,
a.POCode,
a.Sequence,
b.InvCode,
a.Quantity,
a.CreateDateTime,
b.InvName,
b.InvStd,
a.PlanArriveDate,
b.InvUnit
FROM
dbo.ICSPurchaseOrder a
LEFT JOIN dbo.ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
LEFT JOIN dbo.ICSWareHouseLotInfoLog c ON a.POCode = c.TransCode AND a.Sequence = c.TransSequence
WHERE
a.STATUS = '2'
AND NOT EXISTS (
SELECT 1
FROM dbo.ICSWareHouseLotInfoLog c2
WHERE c2.TransCode = a.POCode
AND c2.TransSequence = a.Sequence
AND c2.Quantity = a.Quantity -- 这里检查的是单个条目的匹配,不是总和
)";
}
else
{
sql = @"SELECT DISTINCT a.id,
a.POCode,
a.Sequence,
b.InvCode,
a.Quantity,
a.CreateDateTime,
b.InvName,
b.InvStd,
b.InvUnit,
PlanArriveDate
FROM dbo.ICSPurchaseOrder a
LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
Where 1=1 and a.STATUS='2'";
}
if (!string.IsNullOrWhiteSpace(queryParam["cPOID"].ToString()))
{
sql += " and a.POCode like '%" + queryParam["cPOID"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
{
sql += " and a.CreateDateTime >= '" + queryParam["BegiondDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
{
sql += " and a.CreateDateTime <= '" + queryParam["EnddDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["cInvCode"].ToString()))
{
sql += " and b.InvCode ='" + queryParam["cInvCode"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["cInvName"].ToString()))
{
sql += " and b.InvName ='" + queryParam["cInvName"].ToString() + "' ";
}
//if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
//{
// sql += " and posrm.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
//}
ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
}
if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
{
return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
}
else
{
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
}
/// <summary>
/// 获取采购订单信息
/// </summary>
/// <param name="rfqcode"></param>
/// <returns></returns>
public DataTable GetRFByPU(string queryJson, ref Pagination jqgridparam, string WorkPoint)
{
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = string.Empty;
//string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
sql = @"SELECT a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
WHERE b.F_EnCode = 'ERP001' and a.F_EnabledMark='1' and a.F_ItemCode='" + WorkPoint + "'";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
if (dt.Rows.Count > 0)
{
sql = @" select pu_AppHead.cCode,pu_AppBody.ivouchrowno,pu_AppBody.cInvCode,Inv.cInvName,Inv.cInvStd,
Umit.cComUnitName as INVUOM ,pu_AppBody.fQuantity,pu_AppHead.dDate,pu_AppBody.dRequirDate
,pu_AppBody.dArriveDate,pu_AppBody.cbMemo,'请购单'as Source,pu_AppBody.cpersonnameexec
into #Temp
From {0}.dbo.pu_AppHead with(nolock)
inner join {0}.dbo.pu_AppBody with(nolock) on pu_AppHead.id=pu_AppBody.id
left join (select irequiretrackstyle as extend_b_cinvcode_v_inventory_irequiretrackstyle,bproductbill as extend_b_cinvcode_v_inventory_bproductbill,cinvcode as keyextend_b_cinvcode_v_inventory_cinvcode
from {0}.dbo.v_inventory) extend_b_cinvcode_v_inventory on keyextend_b_cinvcode_v_inventory_cinvcode=pu_appbody.cinvcode
LEFT JOIN {0}.dbo.Inventory Inv ON pu_AppBody.cInvCode=Inv.cInvCode
LEFT JOIN {0}.dbo.ComputationUnit Umit ON Inv.cComUnitCode = Umit.cComunitCode
Where 1=1
And ( 1=1 And (cVoucherState = N'审核') And (cAppAdvanceCondic = N'0')
) and isnull(cbcloser,N'')=N''
";
}
if (!string.IsNullOrWhiteSpace(queryParam["cCode"].ToString()))
{
sql += " and pu_AppHead.cCode like '%" + queryParam["cCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
{
sql += " and pu_AppHead.dDate >= '" + queryParam["BegiondDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
{
sql += " and pu_AppHead.dDate <= '" + queryParam["EnddDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
{
sql += " and pu_AppBody.cInvCode ='" + queryParam["InvCode"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
{
sql += " and Inv.cInvName ='" + queryParam["InvName"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["cpersonnameexec"].ToString()))
{
sql += " and pu_AppBody.cpersonnameexec like '%" + queryParam["cpersonnameexec"].ToString() + "%' ";
}
sql = string.Format(sql, dt.Rows[0]["F_Description"].ToString());
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp4(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
return dtr;
//return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 获取供应商列表-询报价
/// </summary>
/// <returns></returns>
public DataTable GetVendor(string rfqno, string workpoint)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = @"select '' as F_VenCode,'' as cVenName
union all
SELECT distinct a.VENDORCODE as F_VenCode,c.VenName as cVenName from ICSSORQUOTATION a
left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON a.VENDORCODE=c.VenCode AND a.WorkPoint=c.WorkPoint
WHERE a.RFQCODE='" + rfqno + "' and a.WorkPoint='" + workpoint + "' ";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 退回
/// </summary>
/// <param name="POCodeRow"></param>
/// <param name="ArriveDate"></param>
/// <returns></returns>
public int WatchBJByDJBack(string rfqno, string Vendor, string workpoint)
{
int count = 0;
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
string sql = string.Empty;
//keyValue = keyValue.Substring(1, keyValue.Length - 2);
//已改多站点
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
sql += @" UPDATE b SET b.QUOSTATUS='Back' ,LOGUSER='" + UserCode + "'" +
",LOGDATE='" + DateTime.Now.ToString("yyyy-MM-dd") + @"'
from ICSSORQUOTATION a
left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
where a.RFQCODE ='" + rfqno + "'and a.VENDORCODE='" + Vendor + "' and a.WorkPoint='" + workpoint + "'";
StringBuilder Str = new StringBuilder(sql);
string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
if (MailOpen == "true")
{
string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
int SendPort = 25;
if (!string.IsNullOrEmpty(StrSendPort))
SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
string sqlEmail = @"SELECT a.VenCode,b.F_Email,a.VenName FROM dbo.ICSVendor a
LEFT JOIN dbo.Sys_SRM_User b ON a.VenCode=b.F_VenCode AND a.WorkPoint=b.F_Location
WHERE a.VenCode='" + Vendor + "'and a.WorkPoint='" + workpoint + "' ";
DataTable dtMail = SqlHelper.GetDataTableBySql(sqlEmail);
foreach (DataRow dr in dtMail.Rows)
{
string cVenCode = dr["VenCode"].ToString();
string TOAddress = dr["F_Email"].ToString();
string[] Partint = TOAddress.Split(';');
if (!string.IsNullOrEmpty(TOAddress))
{
foreach (var p in Partint)
{
string CCAddress = "";
string Subject = "有来自佑伦SRM平台信息";
bool isBodyHtml = false;
string F_RealName = dr["VenName"].ToString();
string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
string body = F_RealName + ":";
body += " \r\n\r\n\r\n 您有一个询价单号:" + rfqno + "对应的报价单已退回 ,请登录系统重新报价!";
body += "\r\n";
body += " 顺颂商祺!";
body += "\r\n";
body += " 佑伦真空设备科技有限公司";
body += "\r\n";
body += " " + NowDate;
string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
if (!string.IsNullOrEmpty(TOAddress))
{
try
{
SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
count = Repository().ExecuteBySql(Str);
}
catch (Exception ex)
{
throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
}
}
else
{
throw new Exception("请先维护供应商:" + F_RealName + "邮箱!");
}
}
}
}
}
else
{
count = Repository().ExecuteBySql(Str);
}
return count;
}
/// <summary>
/// 询价单子表查询
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetSubGridJson(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT b.itemcode,b.itemname,b.ITEMTYPE,a.invstd,b.unit,REQUESTQUANTITY,memo FROM icsSORRFQ2NORMALITEM b
left join ICSINVENTORY a on a.invcode=b.itemcode and a.workpoint=b.workpoint
where RFQCODE='{0}'";
sql = string.Format(sql, RFQCODE);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string GetBidItemCode(string WorkPoint, string Vendor)
{
string BidItemCode = string.Empty;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
if (!string.IsNullOrEmpty(WorkPoint))
{
string Date = DateTime.Now.ToString("yy");
string Muoth = DateTime.Now.ToString("MM");
string Day = DateTime.Now.ToString("dd");
string Pre = "SRM" + WorkPoint;
BidItemCode = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 5);
}
if (!string.IsNullOrWhiteSpace(BidItemCode))
{
string sqlISHave = @"SELECT InvCode FROM ICSINVENTORY a
WHERE a.InvCode = '{0}'";
sqlISHave = string.Format(sqlISHave, BidItemCode);
DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
if (dtIsHave.Rows.Count > 0)
{
throw new Exception("正式物料已存在!");
}
}
return BidItemCode;
}
public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
{
string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
}
}
}