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.
 
 
 
 

616 lines
36 KiB

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NFine.Code;
using NFine.Data.Extensions;
using NFine.Domain._03_Entity;
using NFine.Domain._03_Entity.SRM;
using NFine.Repository;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Runtime.Remoting.Lifetime;
using System.Text;
namespace NFine.Application
{
public class QuotedPriceApp : RepositoryFactory<ICSVendor>
{
//ICSWMS_SRMSysEntities db = new ICSWMS_SRMSysEntities();
//初次加载页面数据
public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,a.[STATUS] ,a.CREATEUSER,a.CREATEDATE,c.PURCHUGNAME,f.VenName cVenName,
case when isnull(g.QUOTATIONCODE,'')='' then '暂未报价' else g.QUOTATIONCODE end QUOTATIONCODE,g.LOGTIME,a.WorkPoint,case when isnull(g.QUOTATIONCODE,'')='' then 'WBJ' WHEN isnull(g.QUOTATIONCODE,'')<>'' AND isnull(h.QUOSTATUS,'')='' THEN 'YBJ' else h.QUOSTATUS end QUOSTATUS
from dbo.ICSSORRFQ a
left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.WorkPoint=b.WorkPoint
left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
left join ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE and a.workpoint=d.WorkPoint
LEFT JOIN dbo.ICSVendor f ON d.VENDORCODE=f.VenCode and a.workpoint=f.WorkPoint
left join dbo.ICSSORRFQ2NORMALITEM e on a.RFQCODE=e.RFQCODE and b.ITEMCODE=e.ITEMCODE and a.workpoint=e.WorkPoint
left join ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint and f.VenCode=g.VENDORCODE
left join ICSSORQUODETAILNORMAL h on g.QUOTATIONCODE=h.QUOTATIONCODE and g.WorkPoint=h.WorkPoint
--where a.STATUS='Publish'
where (ISNULL(a.STATUS,'')<>'New'OR ISNULL(a.STATUS,'')<>'Close')
";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["QUOTATIONCODE"].ToString()))
{
sql += " and QUOTATIONCODE like '%" + queryParam["QUOTATIONCODE"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["RFQCODE"].ToString()))
{
sql += " and a.RFQCODE like '%" + queryParam["RFQCODE"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["RFQName"].ToString()))
{
sql += " and a.RFQNAME like '%" + queryParam["RFQName"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["ItemCode"].ToString()))
{
sql += " and e.ITEMCODE like '%" + queryParam["ItemCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["ItemName"].ToString()))
{
sql += " and e.ITEMNAME like '%" + queryParam["ItemName"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
{
sql += " and a.CREATEDATE >='" + queryParam["BeginDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
{
sql += " and a.CREATEDATE <='" + queryParam["EndDate"].ToString() + "'";
}
if (!string.IsNullOrWhiteSpace(queryParam["StatusNew"].ToString()))
{
sql += " and a.[STATUS] = '" + queryParam["StatusNew"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["StatusPublish"].ToString()))
{
sql += " and a.[STATUS] = '" + queryParam["StatusPublish"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["StatusClose"].ToString()))
{
sql += " and a.[STATUS] = '" + queryParam["StatusClose"].ToString() + "' ";
}
//佑伦增加
if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
{
if (queryParam["ReleaseState"].ToString() == "0")
{
sql += " and isnull(g.QUOTATIONCODE, '') = ''";
}else if (queryParam["ReleaseState"].ToString() == "2")
{
sql += " and isnull(g.QUOTATIONCODE, '') <> ''";
}
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
{
sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor") || NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "TempVendor")
{
sql += " and f.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
//初次加载QuotedPriceDetails页面数据
public DataTable SelectOffer(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string VenCode = GetVendorCode(WorkPoint);
string sql = @"select newid() as ID, b.ID as EnquiryID, b.ITEMCODE, b.ITEMNAME as INVNAME,case when b.ITEMTYPE='Real' then '正式物料' else '临时物料' end as ITEMTYPE ,
b.RFQITEMREFERCODE ,b.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,'' as QUOPRICE ,'New' as QUOSTATUS,'' as COSTDETAILSREFERCODE,b.REQUESTQUANTITY,'' as VENDORREJECTREASON, '' as QUOBUYERPRICE,'' as VENDORMEMO,'' as LoadQUOPRICE,b.MEMO as PurchaseMEMO,
case when isnull(b.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS,d.InvStd,'' as ADDITION1
from ICSSORRFQ a
left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
left join ICSSORRFQ2VENDOR c on a.RFQCODE=c.RFQCODE and a.workpoint=b.WorkPoint
left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
LEFT JOIN dbo.ICSVendor e ON c.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
where a.RFQCODE='{0}'";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
{
//sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
sql += "and c.VENDORCODE='" + VenCode + "'";
}
sql = string.Format(sql, RFQCODE);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable SelectOfferByYL(string RFQCODE, ref Pagination jqgridparam, string WorkPoint)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string VenCode = GetVendorCode(WorkPoint);
string sql = @"select newid() as ID, b.ID as EnquiryID, b.ITEMCODE, b.ITEMNAME as INVNAME,case when b.ITEMTYPE='Real' then '正式物料' else '临时物料' end as ITEMTYPE ,
b.RFQITEMREFERCODE ,b.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,'' as QUOPRICE , '' AS Material,'' AS PROCESS,'' AS SurfaceTreatment,'' AS Other,'New' as QUOSTATUS,'' as COSTDETAILSREFERCODE,b.REQUESTQUANTITY,'' as VENDORREJECTREASON, '' as QUOBUYERPRICE,'' as VENDORMEMO,'' as LoadQUOPRICE,b.MEMO as PurchaseMEMO,
case when isnull(b.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS,d.InvStd,'' as ADDITION1
from ICSSORRFQ a
left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
left join ICSSORRFQ2VENDOR c on a.RFQCODE=c.RFQCODE and a.workpoint=b.WorkPoint
left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
LEFT JOIN dbo.ICSVendor e ON c.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
where a.RFQCODE='{0}'";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
{
//sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
sql += "and c.VENDORCODE='" + VenCode + "'";
}
sql = string.Format(sql, RFQCODE);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable SecondSelectOffer(string RFQCODE, string QUOTATIONCODE, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"select
b.ID as ID,
c.ID as EnquiryID,
b.ITEMCODE, b.ITEMNAME as INVNAME,
c.RFQITEMREFERCODE ,c.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,b.QUOPRICE, b.QUOPRICE as LoadQUOPRICE , b.COSTDETAILSREFERCODE,b.REQUESTQUANTITY, b.QUOBUYERPRICE ,b.COSTDETAILSREFERCODE as COSTDETAILSREFERCODEName,b.VENDORMEMO,c.MEMO as PurchaseMEMO
,b.QUOSTATUS,case when isnull(c.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS
,b.ADDITION1
from ICSSORQUOTATION a
left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
left join ICSSORRFQ2NORMALITEM c on b.RFQCODE=c.RFQCODE and b.ITEMCODE=c.ITEMCODE and a.WorkPoint=c.WorkPoint
left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
LEFT JOIN dbo.ICSVendor e ON a.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
where a.RFQCODE='{0}' and a.QUOTATIONCODE='{1}'";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
{
//sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
sql += "and a.VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
}
sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable SecondSelectOfferByYL(string RFQCODE, string QUOTATIONCODE, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"select
b.ID as ID,
c.ID as EnquiryID,
b.ITEMCODE, b.ITEMNAME as INVNAME,
c.RFQITEMREFERCODE ,c.RFQITEMREFERCODE as RFQITEMREFERCODEName, d.InvUnit as UNIT,b.REFERPRICE ,b.QUOPRICE, b.QUOPRICE as LoadQUOPRICE , b.COSTDETAILSREFERCODE,b.REQUESTQUANTITY, b.QUOBUYERPRICE ,b.COSTDETAILSREFERCODE as COSTDETAILSREFERCODEName,b.VENDORMEMO,c.MEMO as PurchaseMEMO
,b.QUOSTATUS,case when isnull(c.HASCOSTDETAILS,0)=0 then '否' else '是' end HASCOSTDETAILS
,b.ADDITION1,b.Material AS Material,b.PROCESS AS PROCESS,b.SurfaceTreatment AS SurfaceTreatment, b.Other AS Other
from ICSSORQUOTATION a
left join ICSSORQUODETAILNORMAL b on a.QUOTATIONCODE=b.QUOTATIONCODE and a.WorkPoint=b.WorkPoint
left join ICSSORRFQ2NORMALITEM c on b.RFQCODE=c.RFQCODE and b.ITEMCODE=c.ITEMCODE and a.WorkPoint=c.WorkPoint
left join ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
LEFT JOIN dbo.ICSVendor e ON a.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
where a.RFQCODE='{0}' and a.QUOTATIONCODE='{1}'";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
{
//sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
sql += "and a.VENDORCODE='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
}
sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
//获取QuotedPriceDetails页面文本框值
public DataTable GetTxtInfo(string RFQCODE)
{
// string configSql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
// c.PURCHUGNAME ,c.PURCHUGCONECT ,d.VENDORCODE,e.cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE
// ,a.HASCOSTDETAILS
// from dbo.ICSSORRFQ a
// left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE
// left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
// left join dbo.ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE
// left join ICSVendor e on d.VENDORCODE=e.cVenCode
// left join ICSSORQUOTATION f on a.RFQCODE=f.RFQCODE WHERE a.RFQCODE='" + RFQCODE + "'";
string configSql = @"SELECT DISTINCT a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
g.F_FullName AS PURCHUGNAME,h.F_ItemName AS PURCHUGCONECT,d.VENDORCODE,e.VenName cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE
,a.HASCOSTDETAILS,a.FileName
FROM dbo.ICSSORRFQ a
LEFT JOIN ICSSORRFQ2NORMALITEM b ON a.RFQCODE=b.RFQCODE
--left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE
LEFT JOIN dbo.ICSSORRFQ2VENDOR d ON a.RFQCODE=d.RFQCODE
LEFT JOIN ICSVendor e ON d.VENDORCODE=e.VenCode
LEFT JOIN ICSSORQUOTATION f ON a.RFQCODE=f.RFQCODE
LEFT JOIN dbo.Sys_SRM_Items g ON a.purchugcode=g.F_EnCode
LEFT JOIN dbo.Sys_SRM_ItemsDetail h ON g.F_Id=h.F_ItemId AND a.PURTeam=h.F_ItemCode
WHERE a.RFQCODE='" + RFQCODE + "'";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
{
configSql += " and e.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
}
DataTable dt = SqlHelper.GetDataTableBySql(configSql);
return dt;
}
//新增获取报价单号
public string GetQuotationNo(string RFQCODE, string WorkPoint)
{
RFQCODE = RFQCODE.Substring(RFQCODE.Length - 6);
string Pre = RFQCODE;
string QuotationNo = "BJD" + GetCode(WorkPoint, "ICSSORQUOTATION", "QUOTATIONCODE", Pre, 3);
return QuotationNo;
}
/// <summary>
/// 上传供应商文件
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public int UpLoadFile(string FileName, string QuotationNo)
{
DataTable dt = new DataTable();
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = "";
sql += string.Format(@"update ICSSORQUOTATION set GYSFile='{0}'
where QUOTATIONCODE='{1}'",
FileName, QuotationNo);
sql += "\r\n";
StringBuilder Str = new StringBuilder(sql);
return Repository().ExecuteBySql(Str);
}
private string GetCode(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();
}
/// <summary>
/// 获取供应商列表
/// </summary>
/// <returns></returns>
public DataTable GetVendor(string RFQCODE)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = "";
sql = string.Format(@"select '' as VENDORCODE,'' as cVenName
union all
select VENDORCODE,b.cVenName from dbo.ICSSORRFQ2VENDOR a
left join dbo.ICSVendor b on a.VENDORCODE=b.cVenCode
WHERE VENDORCODE<>'' and RFQCODE='{0}'", RFQCODE);
string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
if (role != "admin")
{
sql += " and b.WorkPoint=" + WorkPoint.TrimEnd(',') + "";
}
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
public DataTable GetcVenName(string VenCode, string RFQCODE)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = "";
sql = string.Format(@" select VENDORCODE,b.cVenName,a.VENDORTYPE from ICSSORRFQ2VENDOR a
left join dbo.ICSVendor b on a.VENDORCODE=b.cVenCode
where a.VENDORCODE='{0}' and RFQCODE='{1}'", VenCode, RFQCODE);
//string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
//if (role != "admin")
//{
// sql += " and b.WorkPoint=" + WorkPoint.TrimEnd(',') + "";
//}
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
public string SaveQuotation(string keyValue)
{
string msg = "";
string sql = string.Empty;
JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
foreach (var item in res)
{
JObject jo = (JObject)item;
sql += @"
IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUOTATION WHERE QUOTATIONCODE='{4}'and WorkPoint = '{8}')
BEGIN
INSERT INTO dbo.ICSSORQUOTATION
(
ID, BUYERMEMO,COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,LOGDATE,LOGTIME, LOGUSER, PROCESSDATE, QUOTATIONCODE,
QUOTEDATE,RFQCODE, VENDORCODE,VENDORMEMO,WorkPoint,GYSFile
)
VALUES
(newid(),'{0}','{1}',getdate(),getdate(),'{2}',getdate(),getdate(),'{3}',getdate(),'{4}',getdate(),'{5}','{6}','{7}','{8}','{9}')
END
ELSE
BEGIN
UPDATE dbo.ICSSORQUOTATION
SET VENDORMEMO='{7}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{3}', WorkPoint='{8}',GYSFile='{9}'
WHERE QUOTATIONCODE='{4}' and WorkPoint = '{8}'
END ";
sql = string.Format(sql, jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), MUSER, MUSER, jo["QuotationNo"].ToString(), jo["RFQCODE"].ToString(), jo["VENDORCODE"].ToString(), jo["Description"].ToString(), jo["WorkPoint"].ToString(), jo["GYSFile"].ToString());
JArray Details = (JArray)JsonConvert.DeserializeObject(jo["Details"].ToString());
foreach (var detail in Details)
{
JObject Detail = (JObject)detail;
sql += @" IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUODETAILNORMAL WHERE ID='{0}')
BEGIN
INSERT INTO dbo.ICSSORQUODETAILNORMAL
(
ID, BUYERMEMO, COMPANYCODE, COSTDETAILSREFERCODE, CREATEDATE, CREATETIME,CREATEUSER,ITEMCODE,ITEMNAME, LOGDATE,LOGTIME,LOGUSER,QUOBUYERPRICE,QUOPRICE,QUOTATIONCODE,
QUOTEDATE,REQUESTQUANTITY,RFQCODE,UNIT,VENDORMEMO, WorkPoint,ADDITION1
)
VALUES
('{0}','{1}','{2}','{3}',getdate(),
getdate(),'{4}','{5}','{6}'
,getdate(),getdate(),'{7}','{8}','{9}','{10}',
getdate(),'{11}','{12}','{13}','{14}','{15}','{17}')
END
ELSE
BEGIN
UPDATE dbo.ICSSORQUODETAILNORMAL
SET QUOPRICE='{9}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{7}',QUOTEDATE=getdate(),WorkPoint='{15}',COSTDETAILSREFERCODE='{3}',VENDORMEMO='{14}',ADDITION1='{17}'
WHERE ID='{0}'
END ";
sql += @" INSERT INTO dbo.ICSQuoteHistory
(
ID, QuotationID, EnquiryID, Price, CreateUser, CreateTime,WorkPoint
)
VALUES
(newid(),'{0}','{16}','{9}','{4}',getdate(),'{15}')";
sql = string.Format(sql, Detail["ID"].ToString(), jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), Detail["COSTDETAILSREFERCODE"].ToString(), MUSER, Detail["ITEMCODE"].ToString(), Detail["INVNAME"].ToString(), MUSER, Detail["QUOBUYERPRICE"].ToString(),
Detail["QUOPRICE"].ToString() == "" ? 0 : Convert.ToDecimal(Detail["QUOPRICE"].ToString()), jo["QuotationNo"].ToString(), Detail["REQUESTQUANTITY"].ToString(), jo["RFQCODE"].ToString(), Detail["UNIT"].ToString(), Detail["VENDORMEMO"].ToString(), jo["WorkPoint"].ToString(), Detail["EnquiryID"].ToString(), Detail["ADDITION1"].ToString());
}
}
try
{
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
else
{
msg = "发布报价失败!";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public string SaveQuotationByYL(string keyValue)
{
string msg = "";
string sql = string.Empty;
JArray res = (JArray)JsonConvert.DeserializeObject(keyValue);
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
foreach (var item in res)
{
JObject jo = (JObject)item;
sql += @"
IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUOTATION WHERE QUOTATIONCODE='{4}'and WorkPoint = '{8}')
BEGIN
INSERT INTO dbo.ICSSORQUOTATION
(
ID, BUYERMEMO,COMPANYCODE,CREATEDATE,CREATETIME,CREATEUSER,LOGDATE,LOGTIME, LOGUSER, PROCESSDATE, QUOTATIONCODE,
QUOTEDATE,RFQCODE, VENDORCODE,VENDORMEMO,WorkPoint,GYSFile
)
VALUES
(newid(),'{0}','{1}',getdate(),getdate(),'{2}',getdate(),getdate(),'{3}',getdate(),'{4}',getdate(),'{5}','{6}','{7}','{8}','{9}')
END
ELSE
BEGIN
UPDATE dbo.ICSSORQUOTATION
SET VENDORMEMO='{7}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{3}', WorkPoint='{8}',GYSFile='{9}'
WHERE QUOTATIONCODE='{4}' and WorkPoint = '{8}'
END ";
sql = string.Format(sql, jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), MUSER, MUSER, jo["QuotationNo"].ToString(), jo["RFQCODE"].ToString(), jo["VENDORCODE"].ToString(), jo["Description"].ToString(), jo["WorkPoint"].ToString(), jo["GYSFile"].ToString());
JArray Details = (JArray)JsonConvert.DeserializeObject(jo["Details"].ToString());
foreach (var detail in Details)
{
JObject Detail = (JObject)detail;
sql += @" IF NOT EXISTS(SELECT * FROM dbo.ICSSORQUODETAILNORMAL WHERE ID='{0}')
BEGIN
INSERT INTO dbo.ICSSORQUODETAILNORMAL
(
ID, BUYERMEMO, COMPANYCODE, COSTDETAILSREFERCODE, CREATEDATE, CREATETIME,CREATEUSER,ITEMCODE,ITEMNAME, LOGDATE,LOGTIME,LOGUSER,QUOBUYERPRICE,QUOPRICE,QUOTATIONCODE,
QUOTEDATE,REQUESTQUANTITY,RFQCODE,UNIT,VENDORMEMO, WorkPoint,ADDITION1,Material,PROCESS,SurfaceTreatment,Other
)
VALUES
('{0}','{1}','{2}','{3}',getdate(),
getdate(),'{4}','{5}','{6}'
,getdate(),getdate(),'{7}','{8}','{9}','{10}',
getdate(),'{11}','{12}','{13}','{14}','{15}','{17}','{18}','{19}','{20}','{21}')
END
ELSE
BEGIN
UPDATE dbo.ICSSORQUODETAILNORMAL
SET QUOPRICE='{9}',LOGDATE=getdate(),LOGTIME=getdate(),LOGUSER='{7}',QUOTEDATE=getdate(),WorkPoint='{15}',COSTDETAILSREFERCODE='{3}',VENDORMEMO='{14}',ADDITION1='{17}',Material='{18}',PROCESS='{19}',SurfaceTreatment='{20}',Other='{21}'
WHERE ID='{0}'
END ";
sql += @" INSERT INTO dbo.ICSQuoteHistory
(
ID, QuotationID, EnquiryID, Price, CreateUser, CreateTime,WorkPoint
)
VALUES
(newid(),'{0}','{16}','{9}','{4}',getdate(),'{15}')";
sql = string.Format(sql, Detail["ID"].ToString(), jo["MEMO"].ToString(), jo["COMPANYCODE"].ToString(), Detail["COSTDETAILSREFERCODE"].ToString(), MUSER, Detail["ITEMCODE"].ToString(), Detail["INVNAME"].ToString(), MUSER, Detail["QUOBUYERPRICE"].ToString(),
Detail["QUOPRICE"].ToString() == "" ? 0 : Convert.ToDecimal(Detail["QUOPRICE"].ToString()), jo["QuotationNo"].ToString(), Detail["REQUESTQUANTITY"].ToString(), jo["RFQCODE"].ToString(), Detail["UNIT"].ToString(), Detail["VENDORMEMO"].ToString(), jo["WorkPoint"].ToString(), Detail["EnquiryID"].ToString(), Detail["ADDITION1"].ToString(), Detail["Material"].ToString()==""? "0" : Detail["Material"].ToString(), Detail["PROCESS"].ToString()==""?"0": Detail["PROCESS"].ToString(), Detail["SurfaceTreatment"].ToString() == "" ? "0" : Detail["SurfaceTreatment"].ToString(), Detail["Other"].ToString() == "" ? "0" : Detail["Other"].ToString());
}
}
try
{
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
else
{
msg = "发布报价失败!";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public DataTable SecondGetTxtInfo(string RFQCODE, string QUOTATIONCODE)
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" select distinct a.RFQCODE,a.RFQNAME,a.PURCHUGCODE,b.ITEMTYPE ,
c.PURCHUGNAME ,c.PURCHUGCONECT ,d.VENDORCODE,e.VenName cVenName,d.VENDORTYPE ,b.CURRENCY,d.TAXRATE,d.PAYMENTCONDITION,a.MEMO ,b.COMPANYCODE ,
g.VENDORMEMO,g.QUOTATIONCODE,g.QUOTEDATE,a.HASCOSTDETAILS
from dbo.ICSSORRFQ a
left join ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
left join ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint
left join dbo.ICSPURCHUG c on a.PURCHUGCODE=c.PURCHUGCODE and a.workpoint=c.WorkPoint
left join dbo.ICSSORRFQ2VENDOR d on a.RFQCODE=d.RFQCODE and a.workpoint=d.WorkPoint
left join ICSVendor e on d.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
left join ICSSORQUOTATION f on a.RFQCODE=f.RFQCODE and a.workpoint=f.WorkPoint
where a.RFQCODE='{0}' and g.QUOTATIONCODE='{1}' ";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
{
sql += " and e.VenCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
}
sql = string.Format(sql, RFQCODE, QUOTATIONCODE);
return Repository().FindTableBySql(sql.ToString());
}
public DataTable GetVenDorFileTB(string QUOTATIONCODE)
{
string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
DataTable dt = new DataTable();
string sql = @"SELECT GYSFile FROM ICSSORQUOTATION WHERE QUOTATIONCODE='{0}' and VENDORCODE='{1}'";
sql = string.Format(sql, QUOTATIONCODE, Vendor);
dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
public DataTable GetSORRVenDorFile(string QUOTATIONCODE)
{
string Vendor = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
DataTable dt = new DataTable();
string sql = @"SELECT Filename FROM ICSSORQUOTATION a
LEFT JOIN ICSSORRFQ b ON a.RFQCODE=b.RFQCODE WHERE
QUOTATIONCODE='{0}' and VENDORCODE='{1}'";
sql = string.Format(sql, QUOTATIONCODE, Vendor);
dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
public DataTable GetVenDorFileSSOR(string rfqno)
{
DataTable dt = new DataTable();
string sql = @"
SELECT b.GYSFile,b.VENDORCODE,b.QUOTATIONCODE,c.F_Account FROM ICsSORRFQ a
LEFT JOIN ICSSORQUOTATION b ON a.RFQCODE=b.RFQCODE AND a.workpoint=b.WorkPoint
left join Sys_SRM_User c on b.VENDORCODE=c.F_VenCode
WHERE a.RFQCODE='{0}'";
sql = string.Format(sql, rfqno);
dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 获取供应商档案
/// </summary>
/// <returns></returns>
public string GetVendorCode(string WorkPoint)
{
string sql = string.Empty;
string VenCode = string.Empty;
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
if (UserName != "admin")
{
sql = @"select b.VenCode cVenCode from Sys_SRM_User a
left join ICSVendor b on a.F_VenCode=b.VenCode
where F_Account='" + UserCode + "'and a.F_Location='" + WorkPoint + "'";
DataTable GetVenCode = SqlHelper.GetDataTableBySql(sql);
if (GetVenCode.Rows.Count > 0)
{
VenCode = GetVenCode.Rows[0]["cVenCode"].ToString();
}
}
return VenCode;
}
public DataTable GetPOListExport(string RFQCODE, string WorkPoint)
{
//string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
//DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
//string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
//string DBName = dtU9.Rows[0]["DBName"].ToString();
string VenCode = GetVendorCode(WorkPoint);
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"select b.ID as ID,
b.ITEMCODE as 物料编码,
b.ITEMNAME as 物料名称,
d.InvStd as 规格型号,
b.UNIT AS 单位,
b.REQUESTQUANTITY AS 预计需求数量,
'' as 报价,
''AS 货期,
Material as 材料,
PROCESS as 加工,
SurfaceTreatment as 表面处理,
Other as 其他
from ICSSORRFQ a
LEFT JOIN ICSSORRFQ2NORMALITEM b on a.RFQCODE=b.RFQCODE and a.workpoint=b.WorkPoint
LEFT JOIN ICSSORRFQ2VENDOR c on a.RFQCODE=c.RFQCODE and a.workpoint=b.WorkPoint
LEFT JOIN ICSINVENTORY d on b.ITEMCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
LEFT JOIN dbo.ICSVendor e ON c.VENDORCODE=e.VenCode and a.workpoint=e.WorkPoint
LEFT JOIN ICSSORQUOTATION g on a.RFQCODE=g.RFQCODE and a.workpoint=g.WorkPoint and e.VenCode=g.VENDORCODE
LEFT JOIN ICSSORQUODETAILNORMAL h on g.QUOTATIONCODE=h.QUOTATIONCODE and g.WorkPoint=h.WorkPoint
where a.RFQCODE='{0}'";
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
{
//sql += " and f.cVenCode in (SELECT cVenCode FROM ICSVendor where cVenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
sql += "and c.VENDORCODE='" + VenCode + "'";
}
sql = string.Format(sql, RFQCODE);
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
public DataTable GetICSImport(string savePath)
{
return FileToExcel.ExcelToTable(savePath);
}
}
}