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.
1814 lines
100 KiB
1814 lines
100 KiB
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using NFine.Code;
|
|
using NFine.Data.Extensions;
|
|
using NFine.Domain._03_Entity.SRM;
|
|
using NFine.Domain.Entity.ProductManage;
|
|
using NFine.Domain.IRepository.ProductManage;
|
|
using NFine.Repository;
|
|
using NFine.Repository.ProductManage;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Data.Common;
|
|
using System.Data.SqlClient;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
|
|
namespace NFine.Application
|
|
{
|
|
public class InvoiceManageApp : RepositoryFactory<ICSVendor>
|
|
{
|
|
|
|
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.ID,a.DocNo,a.MUSER,a.MUSERName,CONVERT(VARCHAR(100),a.MTIME,23) AS MTIME,
|
|
CASE Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '记账' WHEN 3 THEN '退回' END STATUS,
|
|
CASE Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '记账' WHEN 3 THEN '退回' END HIDDSTATUS,
|
|
CASE InvoiceType WHEN 02 THEN '普票' WHEN 01 THEN '专票' END INVOICETYPE,Tax,
|
|
CASE ISNULL(IsERP, 0) WHEN 0 THEN '否' WHEN 1 THEN '是' END ISERP,
|
|
SupplierCode,SupplierName,PubUser,CONVERT(VARCHAR(100),PubTime,23) AS PubTime,Remark,PaperNo,a.WorkPoint,a.dVouDate,a.Filename,a.FilePath
|
|
FROM ICSInvoiceNew a
|
|
left join ( select distinct a.DocNo,e.CreatePerson,a.WorkPoint,e.pocode,b.src_CADocNo,e.InvCode FROM ICSInvoiceNew a
|
|
left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
|
|
left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
|
|
left join dbo.ICSPurchaseOrder e on c.POCode=e.POCode and c.PORow=e.Sequence and c.WorkPoint=e.WorkPoint) b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
|
|
left join ICSINVENTORY f on b.InvCode=f.invCode and b.WorkPoint=f.WorkPoint
|
|
WHERE 1=1";
|
|
if (!string.IsNullOrWhiteSpace(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["DocNo"].ToString()))
|
|
{
|
|
sql += " and a.DocNo like '%" + queryParam["DocNo"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["SupplierCode"].ToString()))
|
|
{
|
|
sql += " and a.SupplierCode like '%" + queryParam["SupplierCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["SupplierName"].ToString()))
|
|
{
|
|
sql += " and a.SupplierName like '%" + queryParam["SupplierName"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
|
|
{
|
|
sql += " and a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
|
|
{
|
|
sql += " and a.MTIME <= '" + queryParam["TimeTo"].ToString() + "' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["PoCode"].ToString()))
|
|
{
|
|
sql += " and b.PoCode like '%" + queryParam["PoCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["CACOde"].ToString()))
|
|
{
|
|
sql += " and b.src_CADocNo like '%" + queryParam["CACOde"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
|
|
{
|
|
sql += " and f.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
|
|
{
|
|
sql += " and f.InvName like '%" + queryParam["InvName"].ToString() + "%'";
|
|
}
|
|
}
|
|
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"))
|
|
{
|
|
sql += " and a.SupplierCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=b.WorkPoint)AND a.SupplierName='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
|
|
}
|
|
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
public string ChridenList(string keyValue, string WorkPoint)
|
|
{
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
|
|
string msg = "";
|
|
string sql = "SELECT DocNo FROM dbo.ICSInvoiceNewDetail WHERE DocNo in ({0}) and WorkPoint='{1}'";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), WorkPoint);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
int Count = dt.Rows.Count;
|
|
if (Count <= 0)
|
|
{
|
|
msg = "该单据无表单明细信息,请点开查看!";
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
public DataTable GetGridJsonAdmin(string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
|
|
string sql = @" SELECT DISTINCT a.ID,a.DocNo,a.MUSER,a.MUSERName,CONVERT(VARCHAR(100),a.MTIME,23) AS MTIME,
|
|
CASE Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '记账' WHEN 3 THEN '退回' END STATUS,
|
|
CASE Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '记账' WHEN 3 THEN '退回' END HIDDSTATUS,
|
|
CASE a.InvoiceType WHEN 02 THEN '普票' WHEN 01 THEN '专票' END INVOICETYPE,a.Tax,
|
|
CASE ISNULL(a.IsERP, 0) WHEN 0 THEN '否' WHEN 1 THEN '是' END ISERP,
|
|
a.SupplierCode,a.SupplierName,a.PubUser,CONVERT(VARCHAR(100),a.PubTime,23) AS PubTime,a.Remark,a.PaperNo,a.WorkPoint,a.dVouDate,a.Filename,a.FilePath
|
|
FROM ICSInvoiceNew a
|
|
left join ( select distinct a.DocNo,e.CreatePerson,a.WorkPoint,e.pocode,b.src_CADocNo,e.InvCode FROM ICSInvoiceNew a
|
|
left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
|
|
left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
|
|
left join dbo.ICSPurchaseOrder e on c.POCode=e.POCode and c.PORow=e.Sequence and c.WorkPoint=e.WorkPoint
|
|
) b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint left join ICSINVENTORY f on b.InvCode=f.invCode and b.WorkPoint=f.WorkPoint WHERE 1=1 AND a.Status IN (1,2,3)";
|
|
// string sql = @" SELECT DISTINCT a.ID,a.DocNo,a.MUSER,a.MUSERName,CONVERT(VARCHAR(100),a.MTIME,23) AS MTIME,
|
|
// CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '记账' WHEN 3 THEN '退回' END STATUS,
|
|
// CASE InvoiceType WHEN 0 THEN '普票' WHEN 1 THEN '专票' END INVOICETYPE,Tax,
|
|
// CASE ISNULL(IsERP, 0) WHEN 0 THEN '否' WHEN 1 THEN '是' END ISERP,
|
|
// SupplierCode,SupplierName,PubUser,CONVERT(VARCHAR(100),PubTime,23) AS PubTime,a.Remark,PaperNo,a.WorkPoint,d.CreatePerson
|
|
// from ICSInvoice a
|
|
// LEFT join ICSInvoiceDetail b ON a.DocNo=b.DocNo
|
|
// left JOIN view_PoMain c ON b.ASNNo = c.DNNO AND b.InvCode = c.InvCode
|
|
// LEFT JOIN dbo.ICSPO_PoMain d ON c.POCode=d.POCode WHERE 1=1 AND a.Status IN (1,2,3) ";
|
|
if (!string.IsNullOrWhiteSpace(queryJson))
|
|
{
|
|
|
|
if (!string.IsNullOrWhiteSpace(queryParam["DocNo"].ToString()))
|
|
{
|
|
sql += " and a.DocNo like '%" + queryParam["DocNo"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["SupplierCode"].ToString()))
|
|
{
|
|
sql += " and a.SupplierCode like '%" + queryParam["SupplierCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["SupplierName"].ToString()))
|
|
{
|
|
sql += " and a.SupplierName like '%" + queryParam["SupplierName"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["CreatePerson"].ToString()))
|
|
{
|
|
sql += " and b.CreatePerson like '%" + queryParam["CreatePerson"].ToString() + "%' ";
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
|
|
{
|
|
sql += " and a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
|
|
{
|
|
sql += " and a.MTIME <= '" + queryParam["TimeTo"].ToString() + "' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["PoCode"].ToString()))
|
|
{
|
|
sql += " and b.PoCode like '%" + queryParam["PoCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["CACOde"].ToString()))
|
|
{
|
|
sql += " and b.src_CADocNo like '%" + queryParam["CACOde"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
|
|
{
|
|
sql += " and f.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
|
|
{
|
|
sql += " and f.InvName like '%" + queryParam["InvName"].ToString() + "%'";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
|
|
{
|
|
string ReleaseState = queryParam["ReleaseState"].ToString();
|
|
if (ReleaseState == "1")
|
|
sql += " and a.Status = '1'";
|
|
else if (ReleaseState == "2")
|
|
sql += " and a.Status = '2'";
|
|
else if (ReleaseState == "3")
|
|
sql += " and a.Status = '3'";
|
|
}
|
|
}
|
|
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"))
|
|
{
|
|
sql += " and a.SupplierCode in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=a.WorkPoint)AND a.SupplierName='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
|
|
}
|
|
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
|
|
{
|
|
sql = SqlHelper.OrganizeByVendor_F_ParentIdBYDZ(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
|
|
}
|
|
//dt = SqlHelper.GetDataTableBySql(sql);
|
|
//else
|
|
//{
|
|
// if (NFine.Code.OperatorProvider.Provider.GetCurrent().IsSystem == false)
|
|
// {
|
|
// sql += " and d.CreatePerson='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'";
|
|
// }
|
|
//}
|
|
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 子表查询
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetSubGridJson(string ID, ref Pagination jqgridparam, 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 DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
|
|
string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint2", WorkPoint);
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
// string sql = @"SELECT DISTINCT a.ID,a.InvCode,j.InvName,a.Qty,j.InvUnit AS InvUom,
|
|
// CAST(a.TaxPriceSell AS DECIMAL(18,2)) AS Price,CAST(g.ioriSum AS DECIMAL(18,2)) AS Total,
|
|
// a.Src_CADocNo AS CACOde,f.POCode,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
|
|
// FROM ICSInvoiceNewDetail a
|
|
// left join ICSCANew c on a.Src_CADocNo=c.DocNo and a.WorkPoint=c.WorkPoint
|
|
//LEFT JOIN ICSCANewdetail e ON c.DocNo=e.DocNo AND a.Src_CADocLineNo=e.DocLineNo AND a.InvCode=e.InvCode
|
|
// LEFT JOIN (SELECT ioriSum,AutoID,iOriMoney,iOriTaxPrice FROM {2}.dbo.rdrecords01 with(nolock)) g ON e.EATTRIBUTE1=g.AutoID
|
|
// LEFT JOIN dbo.ICSPurchaseOrder f ON e.POCode=f.POCode AND e.porow=f.Sequence and e.WorkPoint=f.WorkPoint and e.InvCode=f.InvCode
|
|
//LEFT JOIN ICSINVENTORY j ON f.invcode=j.invCode AND j.WorkPoint=f.WorkPoint
|
|
// WHERE a.DocNo = '{0}' AND a.WorkPoint = '{1}' ";
|
|
|
|
string sql = @"SELECT DISTINCT a.ID,a.InvCode,j.InvName,a.Qty,j.InvUnit AS InvUom,
|
|
CAST(a.TaxPriceSell AS DECIMAL(18,2)) AS Price,CAST(g.ioriSum AS DECIMAL(18,2)) AS Total,
|
|
a.Src_CADocNo AS CACOde,f.POCode,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
|
|
FROM ICSInvoiceNewDetail a
|
|
left join ICSCANew c on a.Src_CADocNo=c.DocNo and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSCANewdetail e ON c.DocNo=e.DocNo AND a.Src_CADocLineNo=e.DocLineNo AND a.InvCode=e.InvCode
|
|
LEFT JOIN " + Views + @" g ON e.EATTRIBUTE1=g.AutoID
|
|
LEFT JOIN dbo.ICSPurchaseOrder f ON e.POCode=f.POCode AND e.porow=f.Sequence and e.WorkPoint=f.WorkPoint and e.InvCode=f.InvCode
|
|
LEFT JOIN ICSINVENTORY j ON f.invcode=j.invCode AND j.WorkPoint=f.WorkPoint
|
|
WHERE a.DocNo = '{0}' AND a.WorkPoint = '{1}' ";
|
|
sql = string.Format(sql, ID, WorkPoint, DBLANK);
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询送货单新增/修改页面数据
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetSubGridJson_Add(string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
//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 WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
|
|
DataTable dt = new DataTable();
|
|
var queryParam = queryJson.ToJObject();
|
|
string DBLANK = SqlHelper.GetItemsDetails("ERP001", queryParam["WorkPoint"].ToString());
|
|
string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", queryParam["WorkPoint"].ToString());
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
//lacy.xu modifly 2021-08-31 单价取值:采购订单行单价
|
|
// string sql = @"SELECT DISTINCT a.ID,b.InvCode,b.InvName,a.Qty,b.InvUom,
|
|
// CAST(a.TaxPriceSell AS DECIMAL(18,2)) AS Price,CAST(a.TotalMoneySell AS DECIMAL(18,2)) AS Total,
|
|
// a.Src_CADocNo AS CACOde,b.DNNO AS DNCOde,b.POCode
|
|
// FROM ICSInvoiceDetail a
|
|
// LEFT JOIN view_PoMain b ON a.ASNNo = b.DNNO AND a.InvCode = b.InvCode
|
|
// WHERE a.DocNo = '{0}' AND a.WorkPoint = '{1}' ";
|
|
//string sql = @"SELECT DISTINCT a.ID,a.DocNo AS ASDocNo,e.InvCode,f.InvName,f.InvStd,b.Src_CADocNo AS CACOde,
|
|
// b.Qty,
|
|
// f.InvStd InvUom,CAST(e.UnitPrice AS DECIMAL(18,2)) AS Price,
|
|
// ISNULL(g.ioriSum,0) AS Total,
|
|
// CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
|
|
// CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '完成' WHEN 3 THEN '退回' END STATUS,
|
|
// e.POCode AS POCode,CONVERT(VARCHAR(100),e.ReleaseDate,23) AS PODate,a.SupplierCode,a.PaperNo,d.EATTRIBUTE1
|
|
// ,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
|
|
// FROM ICSInvoiceNew a
|
|
// INNER JOIN (select sum(Qty )AS Qty,Src_CADocNo,DocNo,Src_CADocLineNo,InvCode from ICSInvoiceNewDetail group by Src_CADocNo,DocNo,Src_CADocLineNo,InvCode) b ON a.DocNo = b.DocNo
|
|
// LEFT JOIN ICSCANewDetail d on b.Src_CADocNo=d.DocNo and b.Src_CADocLineNo=d.DocLineNo and b.InvCode=d.InvCode
|
|
// LEFT JOIN (SELECT ioriSum,AutoID,iOriMoney,iOriTaxPrice FROM {1}.dbo.rdrecords01 with(nolock)) g ON d.EATTRIBUTE1=g.AutoID
|
|
// --LEFT JOIN Viewrd01 c ON d.EATTRIBUTE1=c.AutoID
|
|
// --LEFT JOIN Viewrd01 c ON c.cpoid=d.poCode AND c.ivouchrowno=d.porow and c.AutoID=a.EATTRIBUTE1
|
|
// left join dbo.ICSPurchaseOrder e on d.PoCode=e.POCode and d.PoRow=e.Sequence
|
|
// left join ICSINVENTORY f on d.InvCode=f.INVCODE and d.WorkPoint=f.WorkPoint
|
|
// WHERE a.DocNo = '{0}' ";
|
|
|
|
string sql = @"SELECT DISTINCT a.ID,a.DocNo AS ASDocNo,e.InvCode,f.InvName,f.InvStd,b.Src_CADocNo AS CACOde,
|
|
b.Qty,
|
|
f.InvStd InvUom,CAST(e.UnitPrice AS DECIMAL(18,2)) AS Price,
|
|
ISNULL(g.ioriSum,0) AS Total,
|
|
CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
|
|
CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '完成' WHEN 3 THEN '退回' END STATUS,
|
|
e.POCode AS POCode,CONVERT(VARCHAR(100),e.ReleaseDate,23) AS PODate,a.SupplierCode,a.PaperNo,d.EATTRIBUTE1
|
|
,ISNULL(g.iOriMoney,0) AS iOriMoney,ISNULL(g.iOriTaxPrice,0) AS iOriTaxPrice
|
|
FROM ICSInvoiceNew a
|
|
INNER JOIN (select sum(Qty )AS Qty,Src_CADocNo,DocNo,Src_CADocLineNo,InvCode from ICSInvoiceNewDetail group by Src_CADocNo,DocNo,Src_CADocLineNo,InvCode) b ON a.DocNo = b.DocNo
|
|
LEFT JOIN ICSCANewDetail d on b.Src_CADocNo=d.DocNo and b.Src_CADocLineNo=d.DocLineNo and b.InvCode=d.InvCode
|
|
left join dbo.ICSPurchaseOrder e on d.PoCode=e.POCode and d.PoRow=e.Sequence
|
|
LEFT JOIN " + Views + @" g ON d.EATTRIBUTE1=g.AutoID
|
|
|
|
left join ICSINVENTORY f on d.InvCode=f.INVCODE and d.WorkPoint=f.WorkPoint
|
|
WHERE a.DocNo = '{0}' ";
|
|
sql = string.Format(sql, queryParam["DocNo"].ToString(), DBLANK);
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 子表查询
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetSubGridJson(string CartonNo, string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
//var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.ID,c.ItemCODE,d.INVNAME,c.VenderLotNO,c.LOTQTY,c.TYPE
|
|
FROM dbo.ICSITEMLot2Carton a
|
|
LEFT JOIN dbo.ICSCarton b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN dbo.ICSINVENTORY d ON c.ItemCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
|
|
WHERE a.CartonNO='" + CartonNo + "' and a.WorkPoint='" + WorkPoint + "'";
|
|
if (!string.IsNullOrEmpty(queryJson))
|
|
{
|
|
sql += @"UNION ALL
|
|
SELECT a.ID,a.ItemCODE,b.INVNAME,a.VenderLotNO,a.LOTQTY,a.TYPE FROM
|
|
dbo.ICSITEMLot a
|
|
LEFT JOIN dbo.ICSINVENTORY b ON a.ItemCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ID IN (" + queryJson.TrimEnd(',') + ") and a.WorkPoint='" + WorkPoint + "'";
|
|
}
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
public DataTable GetSubGridJsonByCreate(string POCode, string PORow)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
//var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.ID, a.POCode,a.PORow,a.PODate,a.ORDERNO,a.VenCode,a.VenName,a.InvCode,
|
|
b.INVNAME,b.INVSTD,b.INVDESC,b.INVUOM,a.Quantity,ISNULL(c.CreatedQty,0) AS CreatedQty,isnull(c.InQty,0) as InQty,a.WorkPoint
|
|
FROM dbo.ICSPO_PoMain a
|
|
LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN (SELECT SUM(x.LOTQTY) CreatedQty,TransNO,TransLine,x.WorkPoint,
|
|
SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.LOTQTY ELSE 0 END) AS InQty
|
|
FROM dbo.ICSITEMLot x
|
|
LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
|
|
GROUP BY TransNO,TransLine,x.WorkPoint) c ON a.POCode=c.TransNO AND a.PORow=c.TransLine AND a.WorkPoint=c.WorkPoint
|
|
WHERE 1=1
|
|
and a.POCode='" + POCode + "' and a.PORow='" + PORow + "' and a.WorkPoint='" + WorkPoint + "'";
|
|
return Repository().FindTableBySql(sql.ToString());
|
|
}
|
|
|
|
public DataTable GetVendorLotNo(string VenCode, string WorkPoint)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
//var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string dtPre = DateTime.Now.ToString("yyyyMMdd");
|
|
string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSITEMLotNo','VendorLotNo','" + VenCode + dtPre + "',2";
|
|
return Repository().FindTableBySql(sql.ToString());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成条码
|
|
/// </summary>
|
|
/// <param name="POCode"></param>
|
|
/// <param name="PORow"></param>
|
|
/// <param name="keyValue"></param>
|
|
/// <returns></returns>
|
|
public int CreateItemLotNo(string POCode, string PORow, string keyValue)
|
|
{
|
|
var queryParam = keyValue.ToJObject();
|
|
int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
|
|
decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
|
|
decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
|
|
decimal LOTQTY = minPackQty;
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string VenCode = GetVendorCode(POCode, PORow, WorkPoint);
|
|
string Pre = VenCode + DateTime.Now.ToString("yyMMdd");
|
|
string sql = string.Empty;
|
|
string VendorLot = queryParam["VendorLot"].ToString();
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
|
|
for (int i = 0; i < createPageCount; i++)
|
|
{
|
|
if (i + 1 == createPageCount)
|
|
{
|
|
if (minPackQty * createPageCount > thisCreateQty)
|
|
{
|
|
LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
|
|
}
|
|
}
|
|
string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 5);
|
|
sql += string.Format(@"INSERT INTO dbo.ICSITEMLot
|
|
( ID ,LotNO ,ItemCODE ,TransNO ,TransLine ,VENDORITEMCODE ,VENDORCODE ,
|
|
VenderLotNO ,PRODUCTDATE ,LOTQTY ,ACTIVE ,Exdate ,WorkPoint ,
|
|
MUSER ,MUSERName ,MTIME ,TYPE,ORDERNO)
|
|
SELECT NEWID(),'{0}',InvCode,POCode,PORow,'',NULL,
|
|
'{1}',GETDATE(),'{2}','Y','2999-12-31 00:00:00.000','{3}',
|
|
'{4}','{5}',GETDATE(),'采购原料',ORDERNO
|
|
FROM dbo.ICSPO_PoMain WHERE POCode='{6}' AND PORow='{7}' AND WorkPoint='{3}'",
|
|
LotNo, VendorLot, LOTQTY, WorkPoint, MUSER, MUSERNAME, POCode, PORow);
|
|
sql += "\r\n";
|
|
}
|
|
int count = SqlHelper.ExecuteNonQuery(sql);
|
|
return count;
|
|
}
|
|
|
|
|
|
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();
|
|
}
|
|
|
|
public string GetVendorCode(string POCode, string PORow, string WorkPoint)
|
|
{
|
|
string sql = string.Format(@"SELECT VenCode FROM dbo.ICSPO_PoMain
|
|
WHERE POCode='{0}' AND PORow='{1}' AND WorkPoint='{2}'", POCode, PORow, WorkPoint);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
string VenCode = string.Empty;
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
VenCode = dt.Rows[0][0].ToString();
|
|
}
|
|
return VenCode;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除送货单内的条码或者箱号
|
|
/// </summary>
|
|
/// <param name="keyValue"></param>
|
|
/// <returns></returns>
|
|
public string DeleteInfo(string keyValue, string WorkPoint, string objInvCode)
|
|
{
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
// string sql = string.Format(@"DELETE
|
|
// FROM dbo.ICSInvoice
|
|
// WHERE ID IN ({0}) and WorkPoint ='{1}' ", keyValue.TrimEnd(','), WorkPoint);
|
|
string sql = string.Format(@"DELETE FROM ICSInvoiceNewDetail WHERE Src_CADocNo IN ({0}) and WorkPoint ='{1}'and InvCode in({2})
|
|
DELETE FROM ICSInvoiceNew WHERE ID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint, objInvCode.TrimEnd(','));
|
|
try
|
|
{
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
msg = ex.Message;
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除对账单
|
|
/// </summary>
|
|
/// <param name="keyValue"></param>
|
|
/// <returns></returns>
|
|
public string DeleteDocNo(string keyValue, string WorkPoint)
|
|
{
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
|
|
string sql = string.Empty;
|
|
if (string.IsNullOrEmpty(msg))
|
|
{
|
|
sql = string.Format(@"DELETE FROM ICSInvoiceNewDetail WHERE DocNo IN ({0}) and WorkPoint ='{1}'
|
|
DELETE FROM ICSInvoiceNew WHERE DocNo IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
return msg;
|
|
}
|
|
/// <summary>
|
|
/// 删除对账单
|
|
/// </summary>
|
|
/// <param name="keyValue"></param>
|
|
/// <returns></returns>
|
|
public string UpdatePaperNo(string keyValue, string PaperNo, string WorkPoint, string dVouDate)
|
|
{
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
dVouDate = dVouDate.Substring(1, dVouDate.Length - 2);
|
|
string sql = string.Empty;
|
|
if (string.IsNullOrEmpty(msg))
|
|
{
|
|
sql = @"UPDATE ICSInvoiceNew SET PaperNo='{0}',dVouDate='{2}' WHERE DocNo={1}";
|
|
sql = string.Format(sql, PaperNo, keyValue.TrimEnd(','), dVouDate);
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
public int UpDateByDocNo(string keyValue, string Status, string WorkPoint)
|
|
{
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
|
|
string sql = string.Empty;
|
|
// try
|
|
// {
|
|
// sql = @"select c.EATTRIBUTE2
|
|
// FROM ICSInvoiceNew a
|
|
// left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
|
|
// left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
|
|
// where a.DocNo={0}";
|
|
// DataTable dtcCode = SqlHelper.GetDataTableBySql(sql);
|
|
// for (int i = 0; i < dtcCode.Rows.Count; i++)
|
|
// {
|
|
// if (string.IsNullOrWhiteSpace(dtcCode.Rows[i]["EATTRIBUTE2"].ToString()))
|
|
// {
|
|
// throw new Exception("采购入库单已发生变更,请联系采购员!");
|
|
// }
|
|
// }
|
|
if (Status == "0")
|
|
{
|
|
sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = NULL,PubTime = NULL WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), Status);
|
|
}
|
|
else if (Status == "1")
|
|
{
|
|
sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = '{2}',PubTime = GETDATE() WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), Status, MUSER);
|
|
}
|
|
return SqlHelper.ExecuteNonQuery(sql);
|
|
//}
|
|
//catch (Exception ex)
|
|
//{
|
|
// throw new Exception(ex.Message);
|
|
//}
|
|
}
|
|
public void UpDateByDocNoBYPush(string keyValue, string Status, string WorkPoint)
|
|
{
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
|
|
//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 DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
|
|
string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", WorkPoint);
|
|
string sql = string.Empty;
|
|
try
|
|
{
|
|
|
|
//sql = @"select d.AutoID as EATTRIBUTE2
|
|
// FROM ICSInvoiceNew a
|
|
// left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
|
|
// left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
|
|
// left join {1}.dbo.RdRecords01 d on c.EATTRIBUTE1=d.AutoID
|
|
// where a.DocNo={0}";
|
|
|
|
sql = @"select d.AutoID as EATTRIBUTE2
|
|
FROM ICSInvoiceNew a
|
|
left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
|
|
left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint AND b.Src_CADocLineNo=c.DocLineNo
|
|
LEFT JOIN " + Views + @" d ON c.EATTRIBUTE1 = d.AutoID
|
|
where a.DocNo in ({0})";
|
|
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), DBLANK);
|
|
DataTable dtcCode = SqlHelper.GetDataTableBySql(sql);
|
|
for (int i = 0; i < dtcCode.Rows.Count; i++)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(dtcCode.Rows[i]["EATTRIBUTE2"].ToString()))
|
|
{
|
|
throw new Exception("采购入库单已发生变更,请联系采购员!");
|
|
}
|
|
}
|
|
if (Status == "0")
|
|
{
|
|
sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = NULL,PubTime = NULL WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), Status);
|
|
}
|
|
else if (Status == "1")
|
|
{
|
|
sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',PubUser = '{2}',PubTime = GETDATE() WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), Status, MUSER);
|
|
}
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
public int UpDateByDocNoAdmin(string keyValue, string Status)
|
|
{
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
string sql = string.Empty;
|
|
if (Status == "2")
|
|
{
|
|
sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',CAComptTime = GETDATE(),CAComptUser = '{2}',ModifyTime = GETDATE(),ModifyUser = '{2}'
|
|
WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), Status, MUSER);
|
|
}
|
|
else if (Status == "3")
|
|
{
|
|
sql = @"UPDATE ICSInvoiceNew SET STATUS = '{1}',CAComptTime = NULL,CAComptUser = NULL,ModifyTime =NULL,ModifyUser = NULL
|
|
WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), Status);
|
|
}
|
|
return SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
|
|
public void Bookkeeping2(string keyValue, string PaperNo, string WorkPoint)
|
|
{
|
|
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
|
|
string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", WorkPoint);
|
|
string DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
|
|
string sql = string.Empty;
|
|
string msg = string.Empty;
|
|
string U8ConnStr = string.Empty;
|
|
//根据站点选择需要生成发票的u8数据库
|
|
if (WorkPoint == "01")
|
|
{
|
|
U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr"].ConnectionString;
|
|
}
|
|
else if (WorkPoint == "02")
|
|
{
|
|
U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr02"].ConnectionString;
|
|
}
|
|
else if (WorkPoint == "03")
|
|
{
|
|
U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr03"].ConnectionString;
|
|
}
|
|
else
|
|
{
|
|
U8ConnStr = ConfigurationManager.ConnectionStrings["U8connstr"].ConnectionString;
|
|
}
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
PaperNo = PaperNo.Substring(1, PaperNo.Length - 2);
|
|
DateTime date = Convert.ToDateTime(DateTime.Now);
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
SqlConnection conn = new System.Data.SqlClient.SqlConnection(U8ConnStr);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
|
|
#region [查询发票号和供应商是否存在]
|
|
string cContactCode = string.Empty;
|
|
string cContactName = string.Empty;
|
|
string BIDocNo = keyValue.TrimEnd(',').Replace("'", "");
|
|
string[] PrintParas = BIDocNo.Split(',');
|
|
PaperNo = PaperNo.TrimEnd(',');
|
|
string[] PrintPara = PaperNo.Split(',');
|
|
string VenderCode = string.Empty;
|
|
for (int i = 0; i <= PrintParas.Length - 1; i++)
|
|
{
|
|
#region 判断入库单是否发生变更
|
|
sql = @"select d.AutoID as EATTRIBUTE2
|
|
FROM ICSInvoiceNew a
|
|
left join ICSInvoiceNewDetail b on a.DocNo=b.DocNo and a.WorkPoint=b.WorkPoint
|
|
left join dbo.ICSCANewdetail c on b.Src_CadocNO=c.DocNO and b.WorkPoint=c.WorkPoint
|
|
left join {1}.dbo.RdRecords01 d on c.EATTRIBUTE1=d.AutoID
|
|
where a.DocNo='{0}'";
|
|
sql = string.Format(sql, PrintParas[i].ToString(), DBLANK);
|
|
DataTable dtcCode = SqlHelper.GetDataTableBySql(sql);
|
|
for (int s = 0; s < dtcCode.Rows.Count; s++)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(dtcCode.Rows[s]["EATTRIBUTE2"].ToString()))
|
|
{
|
|
throw new Exception("采购入库单已发生变更,请联系采购员!");
|
|
}
|
|
}
|
|
#endregion
|
|
#region [获取发票的供应商编码]
|
|
sql = @"SELECT SupplierCode FROM ICSInvoiceNew WHERE DocNo = '{0}'";
|
|
sql = string.Format(sql, PrintParas[i].ToString());
|
|
DataTable dtVender = SqlHelper.GetDataTableBySql(sql);
|
|
if (dtVender != null && dtVender.Rows.Count > 0 && !string.IsNullOrWhiteSpace(dtVender.Rows[0][0].ToString()))
|
|
VenderCode = dtVender.Rows[0][0].ToString();
|
|
#endregion
|
|
|
|
string sqlPurBillVouch = @"SELECT * FROM PurBillVouch WHERE cPBVCode = {0}";
|
|
sqlPurBillVouch = string.Format(sqlPurBillVouch, PrintPara[i].ToString().Trim());
|
|
DataTable dtPurBillVouch = SqlHelper.GetDataTableBySqlWithConn(U8ConnStr, sqlPurBillVouch);
|
|
if (dtPurBillVouch != null && dtPurBillVouch.Rows.Count > 0 && !string.IsNullOrWhiteSpace(dtPurBillVouch.Rows[0][0].ToString()))
|
|
{
|
|
throw new Exception("发票号" + PrintPara[i].ToString().Trim() + "已存在!");
|
|
}
|
|
else
|
|
{
|
|
string sqlVendor = @"SELECT a.cVenCode,b.cContactCode,b.cContactName
|
|
FROM Vendor a
|
|
LEFT JOIN Ven_Contact b ON a.cVenPerson = b.cContactName
|
|
WHERE a.cVenCode='{0}'";
|
|
sqlVendor = string.Format(sqlVendor, VenderCode);
|
|
DataTable dtVendor = SqlHelper.GetDataTableBySqlWithConn(U8ConnStr, sqlVendor);
|
|
if (dtVendor != null && dtVendor.Rows.Count > 0)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(dtVendor.Rows[0]["cVenCode"].ToString()))
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "U8供应商不存在!");
|
|
}
|
|
//else if (string.IsNullOrWhiteSpace(dtVendor.Rows[0]["cContactCode"].ToString()))
|
|
//{
|
|
// throw new Exception("发票号" + PrintParas[i].ToString() + "U8供应商联系人不存在!");
|
|
//}
|
|
else
|
|
{
|
|
cContactCode = dtVendor.Rows[0]["cContactCode"].ToString();
|
|
cContactName = dtVendor.Rows[0]["cContactName"].ToString();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region [回写U8发票]
|
|
|
|
sql = @"SELECT DISTINCT a.invcode as cinvcode ,b.DocNo,e.InvoiceType,e.SupplierCode,e.Tax,e.ComptUser,c.CreatePerson,f. VenPayCond cVenPayCond,f.VenBank cVenBank,f.VenAccount cVenAccount,c.DepCode GroupCode,c.POCode,
|
|
h.cCode as ReturnDoc,
|
|
g.irowno as ReturnDocLine,
|
|
e.dVouDate,a.Qty as Qty,c.POType SubjectCode
|
|
--g.iQuantity as Qty
|
|
|
|
from ICSInvoiceNewDetail a
|
|
LEFT JOIN ICSInvoiceNew e ON a.DocNo = e.DocNo AND a.WorkPoint = e.WorkPoint
|
|
LEFT JOIN ICSCANEWdetail b ON a.Src_Cadocno=b.DocNo and a.InvCode =b.InvCode AND a.sRC_CadocLineNO=b.DocLineNo
|
|
|
|
--LEFT JOIN view_PoMain b ON a.ASNNo = b.DNNO AND a.InvCode = b.InvCode
|
|
LEFT JOIN dbo.ICSPurchaseOrder c ON b.POCode=c.POCode AND b.PORow=c.Sequence
|
|
LEFT JOIN dbo.ICSVendor f ON c.VenCode=f.VenCode AND c.WorkPoint=f.WorkPoint
|
|
-- LEFT JOIN {1}.dbo.rdrecords01 g ON b.EATTRIBUTE1=g.AutoID
|
|
--LEFT JOIN {1}.dbo.rdrecord01 h ON g.ID=h.ID
|
|
LEFT JOIN (SELECT irowno,iQuantity,AutoID,ID FROM {1}.dbo.rdrecords01 )g ON b.EATTRIBUTE1=g.AutoID
|
|
LEFT JOIN (SELECT cCode,ID FROM {1}.dbo.rdrecord01) h ON g.ID=h.ID
|
|
WHERE a.DocNO = '{0}'";
|
|
sql = string.Format(sql, PrintParas[i].ToString(), DBLANK);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
//int id = 0, did = 0;
|
|
//string cVouchType = "PURBILL";
|
|
string cAcc_Id = U8ConnStr.Substring(U8ConnStr.IndexOf("UFDATA_") + 7, 3);
|
|
//FindInvoiceIDFromERP(U8ConnStr, cVouchType, cAcc_Id, dt.Rows.Count, out id, out did);
|
|
//判断是否在U8中开票过
|
|
string ISPUR = @" select * from " + Views + @" v
|
|
LEFT JOIN ICSCANEWdetail b ON b.EATTRIBUTE1=v.AutoID
|
|
LEFT JOIN ICSInvoiceNewDetail c ON c.Src_Cadocno = b.DocNo and c.Src_CADocLineNo=b.DocLineNo AND b.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSInvoiceNew e ON c.DocNo = e.DocNo AND c.WorkPoint = e.WorkPoint
|
|
where e.DocNO ='{0}'";
|
|
ISPUR = string.Format(ISPUR, PrintParas[i].ToString(), DBLANK);
|
|
DataTable dtPUR = SqlHelper.GetDataTableBySql(ISPUR);
|
|
if (dtPUR == null || dtPUR.Rows.Count <= 0)
|
|
{
|
|
throw new Exception("发票号:" + PrintPara[i].ToString().Trim() + "中的入库单已在U8中开票,无法记账!");
|
|
}
|
|
sql = "";
|
|
string SqlDetail = "";
|
|
if (dt != null)
|
|
{
|
|
|
|
Dictionary<string, int> dic = SqlHelper.GetAllCode("" + cAcc_Id + "", "PURBILL", "" + dt.Rows.Count + "");
|
|
int iFatherId = Convert.ToInt32(dic["iFatherId"].ToString());
|
|
int iChildId = Convert.ToInt32(dic["iChildId"].ToString());
|
|
#region [主表]
|
|
string cPBVBillType = dt.Rows[0]["InvoiceType"].ToString();
|
|
string SubjectCode = dt.Rows[0]["SubjectCode"].ToString();
|
|
string cVenCode = dt.Rows[0]["SupplierCode"].ToString();
|
|
string iPBVTaxRate = dt.Rows[0]["Tax"].ToString();
|
|
string cPBVMaker = dt.Rows[0]["CreatePerson"].ToString();
|
|
if (string.IsNullOrWhiteSpace(cPBVMaker))
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "制单人不存在!");
|
|
}
|
|
string DepCode = dt.Rows[0]["GroupCode"].ToString();//部门编码
|
|
string VenPayCond = dt.Rows[0]["cVenPayCond"].ToString();//支付方式
|
|
string cVenBank = dt.Rows[0]["cVenBank"].ToString();//银行
|
|
string cVenAccount = dt.Rows[0]["cVenAccount"].ToString();//银行账号
|
|
string dVouDate = dt.Rows[0]["dVouDate"].ToString();//开票时间
|
|
// string sqlErp = @" INSERT INTO PurBillVouch (PBVID,cPBVBillType,cPBVCode,cPTCode,dPBVDate,
|
|
// cVenCode,cUnitCode,cexch_name,cExchRate,iPBVTaxRate,cPBVMemo,cInCode,cBusType,
|
|
// cPBVMaker,bNegative,bOriginal,bFirst,iVTid,cSource,iDiscountTaxType,
|
|
// cContactCode,cVenPerson,IsWfControlled)
|
|
// select {0},'{1}',{2},'99',GETDATE(),
|
|
// '{3}','{3}','人民币',1,{4},'',cCode,'普通采购',
|
|
// '{5}',0,0,0,8163,'采购','{6}','{7}','{8}',0
|
|
// from RdRecord01 a
|
|
// Left join RdRecords01 b on a.ID =b.ID
|
|
// Where cCode ='{9}'and irowno='{10}'";
|
|
string sqlErp = "";
|
|
if (VenPayCond != "")
|
|
{
|
|
sqlErp = @" INSERT INTO PurBillVouch (PBVID,cPBVBillType,cPBVCode,cPTCode,dPBVDate,
|
|
cVenCode,cUnitCode,cexch_name,cExchRate,iPBVTaxRate,cPBVMemo,cInCode,cBusType,
|
|
cPBVMaker,bNegative,bOriginal,bFirst,iVTid,cSource,iDiscountTaxType,
|
|
cContactCode,cVenPerson,IsWfControlled,cDepCode,cPayCode ,cVenAccount
|
|
,cVenBank,dVouDate,cPersonCode )
|
|
VALUES({0},'{1}',{2},'{14}',CONVERT(varchar(12),GETDATE(),23),
|
|
'{3}','{3}','人民币',1,{4},'','cInCode','普通采购',
|
|
'{5}',0,0,0,131468,'采购',0
|
|
,'{7}','{8}',0,'{9}','{10}','{11}','{12}','{13}','{15}')";
|
|
}
|
|
else
|
|
{
|
|
sqlErp = @" INSERT INTO PurBillVouch (PBVID,cPBVBillType,cPBVCode,cPTCode,dPBVDate,
|
|
cVenCode,cUnitCode,cexch_name,cExchRate,iPBVTaxRate,cPBVMemo,cInCode,cBusType,
|
|
cPBVMaker,bNegative,bOriginal,bFirst,iVTid,cSource,iDiscountTaxType,
|
|
cContactCode,cVenPerson,IsWfControlled,cDepCode,cPayCode ,cVenAccount,
|
|
cVenBank,dVouDate,cPersonCode )
|
|
VALUES({0},'{1}',{2},'{14}',CONVERT(varchar(12),GETDATE(),23),
|
|
'{3}','{3}','人民币',1,{4},'','cInCode','普通采购',
|
|
'{5}',0,0,0,131468,'采购',0
|
|
,'{7}','{8}',0,'{9}',NUll,'{11}','{12}','{13}','{15}')";
|
|
}
|
|
sqlErp = string.Format(sqlErp, iFatherId, cPBVBillType, PrintPara[i].ToString().Trim(), cVenCode, Convert.ToDecimal(iPBVTaxRate),
|
|
cPBVMaker, cPBVBillType, cContactCode, cContactName, DepCode, VenPayCond, cVenAccount, cVenBank, dVouDate, SubjectCode, MUSER);
|
|
|
|
cmd.CommandText = sqlErp;
|
|
try
|
|
{
|
|
int count = cmd.ExecuteNonQuery();
|
|
if (count <= 0)
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表头失败,受影响行数<=0;");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表头失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
|
|
}
|
|
//int main = SqlHelper.ExecuteNonQueryWithConn(U8ConnStr, sqlErp);
|
|
//if (main <= 0)
|
|
// msg = "主表插入失败!";
|
|
#region [子表]
|
|
int rowCount = 0;
|
|
foreach (DataRow row in dt.Rows)
|
|
{
|
|
rowCount++;
|
|
//string ReturnDoc = row["ReturnDoc"].ToString();
|
|
//string ReturnDocLine = row["ReturnDocLine"].ToString();
|
|
string cInvCode = row["cinvcode"].ToString();
|
|
decimal iPBVQuantity = Convert.ToDecimal(row["Qty"].ToString());
|
|
string ReturnDoc = row["ReturnDoc"].ToString();
|
|
string ReturnDocLine = row["ReturnDocLine"].ToString();
|
|
//string cPBVBillType = dt.Rows[0]["InvoiceType"].ToString();
|
|
//string iPBVTaxRate = dt.Rows[0]["Tax"].ToString();
|
|
//decimal taxPrice = Convert.ToDecimal(row["TaxPriceSell"].ToString());
|
|
//decimal price = 0;
|
|
//decimal iOriMoney = 0;
|
|
//decimal iOriTaxPrice = 0;
|
|
//decimal ioriSum = 0;
|
|
//decimal tax = Convert.ToDecimal(iPBVTaxRate) / 100;
|
|
//if (cPBVBillType == "01")
|
|
//{
|
|
// price = taxPrice / (1 + tax);//无税单价
|
|
// iOriMoney = Math.Round(price * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//金额
|
|
// iOriTaxPrice = Math.Round(decimal.Parse(iOriMoney.ToString()) * tax, 2, MidpointRounding.AwayFromZero);//税额
|
|
// ioriSum = Math.Round(decimal.Parse(taxPrice.ToString()) * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//价税合计
|
|
//}
|
|
//else
|
|
//{
|
|
// price = taxPrice - taxPrice * tax;
|
|
// iOriMoney = Math.Round(price * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//金额
|
|
// iOriTaxPrice = Math.Round(taxPrice * tax * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//税额
|
|
// ioriSum = Math.Round(decimal.Parse(taxPrice.ToString()) * iPBVQuantity, 2, MidpointRounding.AwayFromZero);//价税合计
|
|
//}
|
|
string sqlErps = @"
|
|
INSERT INTO PurBillVouchs
|
|
(ID,PBVID,cInvCode,bExBill,iPBVQuantity,
|
|
iNum,iOriCost,iOriTaxCost,iOriTaxPrice,iOriMoney,
|
|
iOriSum,iCost,iMoney,iTaxPrice,iSum,
|
|
iTaxRate,RdsId,UpSoType,bCosting,bTaxCost,
|
|
iinvexchrate,brettax,ivouchrowno,iPOsID)
|
|
select {0},{1},'{2}', 0,{3},
|
|
0,b.iOriCost,
|
|
ROUND(iOriTaxCost,4) AS iOriTaxCost,--原币含税单价
|
|
ROUND(iOriTaxPrice,2) AS iOriTaxPrice ,--原币税额
|
|
ROUND(iOriMoney,2)AS iOriMoney,--原币金额
|
|
ROUND(b.iOriSum,2) AS iOriSum,--原币价税合计
|
|
ROUND(iUnitCost,4) AS iCost,--本币无税单价
|
|
ROUND(b.iPrice,2) AS iMoney,--本币金额
|
|
ROUND(iTaxPrice,2) AS iTaxPrice, --本币税额
|
|
--round(round(round(iOriCost*a.iExchRate,4)*{3} ,2)*(1+b.iTaxRate /100),2) AS iSum,
|
|
round(b.iSum,2) AS iSum,--本币价税合计
|
|
b.iTaxRate,
|
|
b.AutoID ,'rd',0,1,0,
|
|
0,{4},b.iPOsID
|
|
from RdRecord01 a
|
|
Left join RdRecords01 b on a.ID =b.ID
|
|
LEFT JOIN dbo.exch z ON a.cExch_Name =z.cexch_name AND z.itype='2' AND z.iYear='{7}' AND z.iperiod='{8}'
|
|
Where cCode ='{5}'and irowno='{6}'";
|
|
sqlErps += @"update b set iSumBillQuantity=isnull(c.iPBVQuantity,0)
|
|
from RdRecord01 a inner join RdRecords01 b on a.id=b.ID
|
|
Left join RdRecord01 d on a.ID =d.ID
|
|
left join (
|
|
select RdsId,sum(isnull(iPBVQuantity ,0)) iPBVQuantity from PurBillVouchs group by RdsId) c on b.autoid=c.RdsId
|
|
Where d.cCode ='{5}'and b.irowno='{6}'";
|
|
sqlErps = string.Format(sqlErps, iChildId, iFatherId, cInvCode, iPBVQuantity, rowCount, ReturnDoc, ReturnDocLine, date.Year, date.Month);
|
|
cmd.CommandText = sqlErps;
|
|
try
|
|
{
|
|
int count = cmd.ExecuteNonQuery();
|
|
if (count <= 0)
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表体失败,受影响行数<=0;");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "生成发票单表体失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
|
|
}
|
|
//int sub = SqlHelper.ExecuteNonQueryWithConn(U8ConnStr, sqlErps);
|
|
//if (sub <= 0)
|
|
// msg = "子表插入失败!";
|
|
iChildId--;
|
|
}
|
|
SqlDetail = @"update x set iInvQTY=y.iQuantity,fPoValidQuantity=y.iQuantity
|
|
from PO_Podetails x inner join (
|
|
select a.iPOsID ,sum(a.iQuantity)iQuantity from RdRecords01 a right join PurBillVouchs b on a.autoid=b.RdsId
|
|
inner join PurBillVouch c on b.pbvid=c.pbvid where cPBVCode in ({0})
|
|
group by a.iPOsID) y on x.ID=y.iPOsID
|
|
";
|
|
SqlDetail += @"update aa set iInvMoney=bb.iOriSum,iNatInvMoney=bb.iSum
|
|
from PO_Podetails aa
|
|
right join
|
|
(select iPOsID,sum(isnull(iOriSum ,0)) as iOriSum,sum(isnull(iSum ,0)) as iSum
|
|
from PurBillVouch a inner JOIN PurBillVouchs b on a.pbvid=b.pbvid
|
|
where cPBVCode in ({0})
|
|
group by iPOsID) bb on aa.id=bb.iPOsID
|
|
|
|
";
|
|
SqlDetail = string.Format(SqlDetail, PrintPara[i].ToString().Trim());
|
|
cmd.CommandText = SqlDetail;
|
|
try
|
|
{
|
|
int count = cmd.ExecuteNonQuery();
|
|
if (count <= 0)
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "回写采购订单失败,受影响行数<=0;");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception("发票号" + PrintParas[i].ToString() + "回写采购订单失败!异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
|
|
}
|
|
//int subqty = SqlHelper.ExecuteNonQueryWithConn(U8ConnStr, SqlDetail);
|
|
//if (subqty <= 0)
|
|
// msg = "回写采购订单失败!";
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
cmd.Transaction.Commit();
|
|
#endregion
|
|
#region [更新发票状态和信息]
|
|
sql = @"UPDATE ICSInvoiceNew SET Status = '2',ModifyUser = '{1}',ModifyTime = GETDATE(),
|
|
ComptUser = '{1}',ComptTime = GETDATE(),IsERP = 1
|
|
WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','), MUSER);
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string sqlError = @"UPDATE ICSInvoiceNew SET Status = '1',ModifyUser = NULL,ModifyTime = NULL,
|
|
ComptUser = NULL,ComptTime = NULL,IsERP = NULL
|
|
WHERE DocNo IN ({0})";
|
|
sqlError = string.Format(sqlError, keyValue.TrimEnd(','));
|
|
SqlHelper.ExecuteNonQuery(sqlError);
|
|
msg += ex.Message;
|
|
cmd.Transaction.Rollback();
|
|
throw new Exception(ex.Message);
|
|
}
|
|
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
|
|
|
|
public string Bookkeeping(string keyValue, string PaperNo, string WorkPoint)
|
|
{
|
|
string sql = string.Empty;
|
|
string sqlUp = string.Empty;
|
|
string msg = string.Empty;
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
DateTime date = Convert.ToDateTime(DateTime.Now);
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
try
|
|
{
|
|
|
|
sql = @"SELECT DISTINCT
|
|
a.DocNo+a.WorkPoint as Costre,
|
|
a.DocNo,a.WorkPoint,
|
|
e.PaperNo,
|
|
e.InvoiceType cPBVBillType,
|
|
e.SupplierCode cVenCode,cast(e.Tax as nvarchar(50)) iPBVTaxRate,
|
|
e.ComptUser,f. VenPayCond ,f.VenBank cVenBank,
|
|
f.VenAccount cVenAccount,c.DepCode DepCode,
|
|
e.dVouDate dPBVDate
|
|
,c.POType SubjectCode,
|
|
a.invcode as cInvCode ,
|
|
cast(a.Qty as nvarchar(50)) as iPBVQuantity,
|
|
b.EATTRIBUTE2 as ReturnDocID,
|
|
b.EATTRIBUTE1 as ReturnDocLineID,
|
|
cast(year(GETDATE()) as nvarchar(50)) [Year],
|
|
cast(MONTH(GETDATE()) as nvarchar(50)) [Month],
|
|
b.DeductionAmount
|
|
INTO #TempERP
|
|
from ICSInvoiceNewDetail a
|
|
LEFT JOIN ICSInvoiceNew e ON a.DocNo = e.DocNo AND a.WorkPoint = e.WorkPoint
|
|
LEFT JOIN ICSCANEWdetail b ON a.Src_Cadocno=b.DocNo and a.InvCode =b.InvCode AND a.sRC_CadocLineNO=b.DocLineNo
|
|
LEFT JOIN dbo.ICSPurchaseOrder c ON b.POCode=c.POCode AND b.PORow=c.Sequence
|
|
LEFT JOIN dbo.ICSVendor f ON c.VenCode=f.VenCode AND c.WorkPoint=f.WorkPoint
|
|
where a.DocNo in (" + keyValue.TrimEnd(',') + @")
|
|
|
|
|
|
select distinct Costre,WorkPoint,cPBVBillType,PaperNo as cPBVCode,dPBVDate,cVenCode,iPBVTaxRate,'" + MUSERName + "' as cPBVMaker, '" + MUSER + "' as cContactCode,'" + MUSER + @"' as MUSER,SubjectCode,getdate(),cVenBank,cVenAccount,VenPayCond,DepCode,'' as cContactName FROM #TempERP
|
|
select Costre, WorkPoint,cInvCode,iPBVQuantity, ReturnDocID,ReturnDocLineID,Year,Month,DeductionAmount FROM #TempERP
|
|
DROP TABLE #TempERP";
|
|
|
|
DataSet DSet = SqlHelper.GetDataSetBySql(sql);
|
|
|
|
string Inputstr = SqlHelper.DataSetToJson(DSet, "details", "Costre");
|
|
string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "PurBillVouch/Create";
|
|
string result = HttpPost(APIURL, Inputstr);
|
|
JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
|
|
string MessAge = Obj["Message"].ToString();
|
|
string Success = Obj["Success"].ToString();
|
|
if (Success.ToUpper() == "FALSE")
|
|
{
|
|
throw new Exception("ERP接口调用失败:" + MessAge);
|
|
}
|
|
else
|
|
{
|
|
sqlUp = @"UPDATE ICSInvoiceNew SET Status = '2',ModifyUser = '{1}',ModifyTime = GETDATE(),
|
|
ComptUser = '{1}',ComptTime = GETDATE(),IsERP = 1
|
|
WHERE DocNo IN ({0})";
|
|
sqlUp = string.Format(sqlUp, keyValue.TrimEnd(','), MUSER);
|
|
SqlHelper.ExecuteNonQuery(sqlUp);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
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 int ReturnByDocNo(string keyValue, string WorkPoint)
|
|
{
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
string sql = @"UPDATE ICSInvoiceNew SET Status = '3',IsERP = NULL
|
|
WHERE DocNo IN ({0})";
|
|
sql = string.Format(sql, keyValue.TrimEnd(','));
|
|
return SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
|
|
// public static void FindInvoiceIDFromERP(string connectstring, string IDtype, string cAcc_id, int rowCount, out int id, out int DID)
|
|
// {
|
|
// try
|
|
// {
|
|
// string str = @"DECLARE @ID int
|
|
// DECLARE @DID int
|
|
// SET @ID = 0
|
|
// SET @DID = 0
|
|
//
|
|
// IF NOT EXISTS (SELECT * FROM ufsystem..ua_identity WHERE cacc_id = '{0}' AND cVouchType = '{1}')
|
|
// BEGIN
|
|
// INSERT INTO ufsystem..ua_identity(cAcc_Id,cVouchType,iFatherId,iChildId) VALUES('{0}','{1}',1,1)
|
|
//
|
|
// SELECT @ID = ifatherID + 1 ,@DID = ichildID + {2}
|
|
// FROM ufsystem..ua_identity
|
|
// WHERE cVouchType = '{1}'
|
|
// AND cAcc_id = '{0}'
|
|
// END
|
|
// ELSE
|
|
// BEGIN
|
|
// UPDATE ufsystem..ua_identity
|
|
// SET ifatherID = ifatherID + 1,ichildID = ichildID + {2}
|
|
// WHERE cVouchType = '{1}' AND cAcc_id = '{0}'
|
|
// END
|
|
// select ifatherID ID,ichildID DID FROM ufsystem..ua_identity
|
|
// WHERE cVouchType = '{1}' AND cAcc_id = '{0}' ";
|
|
// str = string.Format(str, cAcc_id, IDtype, rowCount.ToString());
|
|
// DataTable dt = SqlHelper.GetDataTableBySqlWithConn(connectstring, str);
|
|
// if (dt.Rows.Count == 0)
|
|
// {
|
|
// throw new Exception("ID取得失败");
|
|
// }
|
|
// id = Convert.ToInt32(dt.Rows[0]["ID"]) + 1000000000;
|
|
// DID = Convert.ToInt32(dt.Rows[0]["DID"]) + 1000000000;
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// throw new Exception(ex.Message);
|
|
// }
|
|
// }
|
|
|
|
public string ChangeStatusBySTNO(string keyValue)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
string sql = string.Empty;
|
|
sql = "SELECT STNO FROM dbo.ICSPOArrive WHERE STNO IN (" + keyValue.TrimEnd(',') + ")";
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
string STNO = dr["STNO"].ToString();
|
|
if (!string.IsNullOrEmpty(STNO))
|
|
{
|
|
msg += "送货单号:" + STNO + "已生成到货单,无法删除!";
|
|
}
|
|
}
|
|
if (string.IsNullOrEmpty(msg))
|
|
{
|
|
sql = string.Format(@"DELETE FROM dbo.ICSASNDETAIL WHERE STNO IN ({0}) and WorkPoint ='{1}'
|
|
DELETE FROM dbo.ICSASN WHERE STNO IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除送货单
|
|
/// </summary>
|
|
/// <param name="keyValue"></param>
|
|
/// <returns></returns>
|
|
public string DeleteCartonNo(string keyValue)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
|
|
string sql = string.Format(@"SELECT * FROM dbo.ICSASNDETAIL
|
|
WHERE LOTNO IN (
|
|
SELECT LotNO FROM dbo.ICSITEMLot2Carton WHERE CartonNO in ({0}) and WorkPoint='{1}') and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
sql = string.Format(@"DELETE FROM dbo.ICSCarton WHERE CartonNO in ({0}) and WorkPoint='{1}'
|
|
DELETE FROM dbo.ICSITEMLot2Carton WHERE CartonNO in ({0}) and WorkPoint='{1}' ", keyValue.TrimEnd(','), WorkPoint);
|
|
DbHelper.ExecuteNonQuery(CommandType.Text, sql);
|
|
}
|
|
else
|
|
{
|
|
msg = "所选箱号中已有加入送货单中,请先在送单号中删除!";
|
|
}
|
|
|
|
return msg;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 选择明细
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
/// 增加EATTRIBUTE2记录入库单号 判断U8入库单是否有更改
|
|
public DataTable GetInfoByVenCode(string queryJson, ref Pagination jqgridparam, string WorkPoint)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
//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 DBLANK = SqlHelper.GetItemsDetails("ERP001", WorkPoint);
|
|
string Views = SqlHelper.GetItemsDetails("ViewsWorkpoint", WorkPoint);
|
|
// string sql = @"SELECT b.ID,a.DocNo AS ASDocNo,c.InvCode,d.InvName,d.InvStd,
|
|
// sum(CAST(b.qty AS DECIMAL(18,2))) AS RkQty,
|
|
// d.InvUnit InvUom,CAST(c.UnitPrice AS DECIMAL(18,2)) AS PoPrice,
|
|
// CAST(c.UnitPrice*a.Tax AS DECIMAL(18,2)) AS TotalPrice,
|
|
// CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
|
|
// CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '完成' WHEN 3 THEN '退回' END STATUS,
|
|
// c.POCode AS POCode,CONVERT(VARCHAR(100),c.ReleaseDate,23) AS PODate,a.SupplierCode,f.AutoID as EATTRIBUTE2
|
|
// FROM ICSCANew a
|
|
// INNER JOIN ICSCANewDetail b ON a.DocNo = b.DocNo
|
|
// left join {0}.dbo.RdRecords01 f on b.EATTRIBUTE1=f.AutoID
|
|
// LEFT JOIN dbo.ICSPurchaseOrder c ON b.pocode = c.pocode AND b.porow=c.Sequence
|
|
//LEFT JOIN ICSINVENTORY d ON c.invCode=d.invCode AND d.WorkPoint=c.WorkPoint
|
|
// LEFT JOIN ICSInvoiceNewDetail e ON b.DocNo=e.Src_CADocNo AND b.DocLineNo=e.Src_CADocLineNo
|
|
// WHERE 1=1 AND a.Status = 2 AND e.DocNo IS NULL";
|
|
|
|
string sql = @"SELECT b.ID,a.DocNo AS ASDocNo,c.InvCode,d.InvName,d.InvStd,
|
|
sum(CAST(b.qty AS DECIMAL(18,2))) AS RkQty,
|
|
d.InvUnit InvUom,CAST(c.UnitPrice AS DECIMAL(18,2)) AS PoPrice,
|
|
CAST(c.UnitPrice*a.Tax AS DECIMAL(18,2)) AS TotalPrice,
|
|
CONVERT(VARCHAR(100),a.MTIME,23) AS ASDate,
|
|
CASE a.Status WHEN 0 THEN '开立' WHEN 1 THEN '发布' WHEN 2 THEN '完成' WHEN 3 THEN '退回' END STATUS,
|
|
c.POCode AS POCode,CONVERT(VARCHAR(100),c.ReleaseDate,23) AS PODate,a.SupplierCode,f.AutoID as EATTRIBUTE2
|
|
FROM ICSCANew a
|
|
INNER JOIN ICSCANewDetail b ON a.DocNo = b.DocNo
|
|
LEFT JOIN " + Views + @" f ON b.EATTRIBUTE1=f.AutoID
|
|
LEFT JOIN dbo.ICSPurchaseOrder c ON b.pocode = c.pocode AND b.porow=c.Sequence
|
|
LEFT JOIN ICSINVENTORY d ON c.invCode=d.invCode AND d.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInvoiceNewDetail e ON b.DocNo=e.Src_CADocNo AND b.DocLineNo=e.Src_CADocLineNo
|
|
WHERE 1=1 AND a.Status = 2 AND e.DocNo IS NULL";
|
|
// --AND a.STNO NOT IN (SELECT Src_ASNDocNo FROM ICSCADetail) AND a.SupplierCode = '51085'
|
|
if (!string.IsNullOrEmpty(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["ASDocNo"].ToString()))
|
|
sql += " AND a.DocNo like '%" + queryParam["ASDocNo"].ToString() + "%'";
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
|
|
sql += " AND c.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
|
|
//if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
|
|
// sql += " AND c.InvName like '%" + queryParam["InvName"].ToString() + "%'";
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
|
|
sql += " AND d.InvName like '%" + queryParam["InvName"].ToString() + "%'";
|
|
if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
|
|
sql += " AND c.POCode like '%" + queryParam["POCode"].ToString() + "%'";
|
|
}
|
|
|
|
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
|
|
sql += " AND a.SupplierCode in (SELECT VenCode FROM ICSVendor where VenName = '" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "'AND WorkPoint=a.WorkPoint)";
|
|
else
|
|
sql += " AND a.SupplierCode = '" + queryParam["VenCode"].ToString() + "'";
|
|
|
|
sql += " AND a.WorkPoint='" + WorkPoint + "'";
|
|
sql += @" GROUP BY b.ID,a.DocNo,c.InvCode,d.InvName,d.InvStd,d.InvUnit,c.UnitPrice,a.MTIME,a.Status,
|
|
c.POCode,c.ReleaseDate,a.SupplierCode,a.Tax,f.AutoID ";
|
|
sql = string.Format(sql, DBLANK);
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取供应商列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public DataTable GetVendor()
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
string sql = @"
|
|
select '' as F_VenCode,'' as cVenName
|
|
union all
|
|
SELECT DISTINCT a.F_VenCode,isnull(b.VenName,'') as cVenName FROM dbo.Sys_SRM_User a
|
|
LEFT JOIN dbo.ICSVendor b ON a.F_VenCode=b.VenCode and a.F_Location=b.WorkPoint
|
|
WHERE a.F_VenCode IS NOT NULL AND a.F_VenCode <>''";
|
|
string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
|
|
if (role != "admin")
|
|
{
|
|
sql += " and b.WorkPoint in (" + WorkPoint + ")";
|
|
}
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
return dt;
|
|
}
|
|
|
|
public string GetDocNo(string InvoiceType, string WorkPoint, string Vendor)
|
|
{
|
|
string DocNo = string.Empty;
|
|
//string SupplierCode = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
|
|
string SupplierName = string.Empty;
|
|
if (!string.IsNullOrEmpty(Vendor))
|
|
{
|
|
string Date = DateTime.Now.ToString("yy");
|
|
string Pre = "BI" + Vendor + Date;
|
|
DocNo = GetSerialCode(WorkPoint, "ICSInvoiceNew", "DocNo", Pre, 5);
|
|
SupplierName = GetSupplierName(Vendor, WorkPoint);
|
|
}
|
|
if (!string.IsNullOrEmpty(DocNo))
|
|
{
|
|
string sql = string.Empty;
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
|
|
sql = @"INSERT INTO ICSInvoiceNew (ID,DocNo,Status,BizType,SupplierCode,SupplierName,Tax,InvoiceType,MUSER,MUSERName,MTIME,WorkPoint)
|
|
VALUES (NEWID(),'{0}',0,0,'{1}','{2}',17,'{3}','{4}','{5}',GETDATE(),'{6}')";
|
|
sql = string.Format(sql, DocNo, Vendor, SupplierName, InvoiceType, MUSER, MUSERNAME, WorkPoint);
|
|
|
|
try
|
|
{
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
return DocNo;
|
|
}
|
|
|
|
public string GetDocNoByPerson(string SupplierCode, string InvoiceType, string WorkPoint)
|
|
{
|
|
string DocNo = string.Empty;
|
|
string Date = DateTime.Now.ToString("yy");
|
|
string Pre = "BI" + SupplierCode + Date;
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DocNo = GetSerialCode(WorkPoint, "ICSInvoiceNew", "DocNo", Pre, 5);
|
|
if (!string.IsNullOrEmpty(DocNo))
|
|
{
|
|
string sql = string.Empty;
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string SupplierName = GetSupplierName(SupplierCode, WorkPoint);
|
|
sql = @"INSERT INTO ICSInvoiceNew (ID,DocNo,Status,BizType,SupplierCode,SupplierName,Tax,InvoiceType,MUSER,MUSERName,MTIME,WorkPoint)
|
|
VALUES (NEWID(),'{0}',0,0,'{1}','{2}',0,'{3}','{4}','{5}',GETDATE(),'{6}')";
|
|
sql = string.Format(sql, DocNo, SupplierCode, SupplierName, InvoiceType, MUSER, MUSERNAME, WorkPoint);
|
|
|
|
try
|
|
{
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
return DocNo;
|
|
}
|
|
|
|
public string GetSupplierName(string SupplierCode, string WorkPoint)
|
|
{
|
|
string sql = @"SELECT VenName as cVenName FROM ICSVendor WHERE VenCode = '{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, SupplierCode, WorkPoint);
|
|
try
|
|
{
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrEmpty(dt.Rows[0][0].ToString()))
|
|
return dt.Rows[0][0].ToString();
|
|
else
|
|
return "";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
|
|
public string CheckSTNO_ItemCode(string JsonData, string DocNo, string WorkPoint)
|
|
{
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
string sql = string.Empty;
|
|
// sql = @"INSERT INTO ICSCADetail(ID,DocNo,DocLineNo,Src_ASNDocNo,Src_ASNDocLineNo,
|
|
// InvCode,Qty,InvUom,MUSER,MUSERName,MTIME,WorkPoint)
|
|
// SELECT NEWID(),'{0}',[送货单行],[送货单号],[送货单行],[条码号],[条码数量],[单位],
|
|
// '{1}','{2}',GETDATE(),'{3}'
|
|
// FROM view_PoMain
|
|
// WHERE [条码号] IN (" + JsonData.TrimEnd(',') + ")";
|
|
// sql = string.Format(sql, DocNo, MUSER, MUSERNAME, WorkPoint);
|
|
string[] PrintParas = JsonData.TrimEnd(',').Split(',');
|
|
for (int i = 0; i < PrintParas.Length; i++)
|
|
{
|
|
sql += @"INSERT INTO ICSInvoiceNewDetail (ID,DocNo,DocLineNo,Src_CADocNo,Src_CADocLineNo,InvCode,Qty,InvUom,
|
|
TaxPriceSell,TotalMoneySell,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT NEWID(),'{0}',1,a.DocNo,b.DocLineNo,c.InvCode,
|
|
CAST(b.qty AS DECIMAL(18,2)) AS RkQty,d.InvUnit,
|
|
CAST(c.UnitPrice AS DECIMAL(18,2)) AS PoPrice,
|
|
CAST(c.UnitPrice*b.Qty AS DECIMAL(18,2)) AS TotalPrice,'{1}','{2}',GETDATE(),'{3}'
|
|
FROM ICSCANew a
|
|
LEFT JOIN ICSCANewDetail b ON a.DocNo = b.DocNo
|
|
LEFT JOIN ICSPurchaseOrder c ON b.pocode = c.pocode AND b.porow=c.Sequence
|
|
LEFT JOIN ICSINVENTORY d ON c.invCode=d.invCode AND d.WorkPoint=c.WorkPoint
|
|
WHERE b.ID in({4})";
|
|
sql += @"UPDATE ICSInvoiceNew SET Tax=b.Tax from
|
|
(select a.Tax from dbo.ICSCANew a
|
|
LEFT JOIN ICSCANewDetail b ON a.DOcNo=b.DOcNo AND a.WorkPoint=b.WorkPoint
|
|
WHERE b.ID = {4}) b
|
|
Where ICSInvoiceNew.DocNo='{0}'";
|
|
sql = string.Format(sql, DocNo, MUSER, MUSERNAME, WorkPoint, PrintParas[i]);
|
|
}
|
|
try
|
|
{
|
|
SqlHelper.CmdExecuteNonQueryLi(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
msg = ex.Message;
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
public string CheckSTNO_CartonNo(string JsonData, string STNO)
|
|
{
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
string sql = string.Empty;
|
|
sql = @"INSERT INTO dbo.ICSASNDETAIL
|
|
( ASNDETAILID ,CREATEDATE ,CREATETIME ,CREATEUSER ,
|
|
ITEMCODE ,ITEMNAME ,LOGDATE ,LOGTIME ,LOGUSER ,
|
|
LOTNO ,PLANQTY ,STDSTATUS ,STLINE ,
|
|
STNO ,WorkPoint)
|
|
SELECT NEWID(),GETDATE(),GETDATE(),'" + MUSER + @"',
|
|
a.INVCODE,b.INVNAME,GETDATE(),GETDATE(),'" + MUSER + @"',
|
|
a.LotNO,c.LOTQTY,'0',0,
|
|
'" + STNO + "','" + WorkPoint + @"'
|
|
FROM dbo.ICSITEMLot2Carton a
|
|
LEFT JOIN dbo.ICSINVENTORY b ON a.INVCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
WHERE a.CartonNO IN (" + JsonData.TrimEnd(',') + ") and a.WorkPoint='" + WorkPoint + "'";
|
|
try
|
|
{
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
|
|
return msg;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取箱号主表信息
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetCartonGridJson(string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT Serial,a.CartonNO,CartonStatus,PrintTimes,
|
|
lastPrintTime,a.MUSERName,a.MTIME,EATTRIBUTE8
|
|
FROM dbo.ICSCarton a
|
|
LEFT JOIN
|
|
(SELECT COUNT(x.LotNO) AS LotNoCount,CartonNO,x.WorkPoint FROM dbo.ICSITEMLot2Carton x
|
|
LEFT JOIN dbo.ICSITEMLot y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
|
|
GROUP BY CartonNO,x.WorkPoint) b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
|
|
WHERE b.LotNoCount>0 and a.EATTRIBUTE3='SRM'
|
|
AND a.CartonNo not IN
|
|
(SELECT b.CartonNO FROM dbo.ICSASNDETAIL a inner JOIN dbo.ICSITEMLot2Carton b ON a.LOTNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
|
|
";
|
|
if (!string.IsNullOrWhiteSpace(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["CartonNo"].ToString()))
|
|
{
|
|
sql += " and a.CartonNO like '%" + queryParam["CartonNo"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["OrderNo"].ToString()))
|
|
{
|
|
sql += " and b.OrderNO like '%" + queryParam["OrderNo"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["TransNo"].ToString()))
|
|
{
|
|
sql += " and b.TransNO like '%" + queryParam["TransNO"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["TransLine"].ToString()))
|
|
{
|
|
sql += " and b.TransLine like '%" + queryParam["TransLine"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
|
|
{
|
|
sql += " and a.EATTRIBUTE8 like '%" + queryParam["VenCode"].ToString() + "%' ";
|
|
}
|
|
}
|
|
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
|
|
{
|
|
sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
|
|
}
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 箱号子表查询
|
|
/// </summary>
|
|
/// <param name="CartonNo"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetCartonSubGridJson(string CartonNo, ref Pagination jqgridparam)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
//var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.LotNO, a.ID,c.ItemCODE,d.INVNAME,c.VenderLotNO,c.LOTQTY,
|
|
c.TYPE,b.EATTRIBUTE8,c.ORDERNO,c.TransNO,c.TransLine,d.INVDESC,d.INVTYPE,e.MEMO,d.INVSTD,d.INVPARSETYPE
|
|
FROM dbo.ICSITEMLot2Carton a
|
|
LEFT JOIN dbo.ICSCarton b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN dbo.ICSINVENTORY d ON c.ItemCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN dbo.ICSPO_PoMain e ON c.TransNO=e.POCode AND c.TransLine =e.PORow AND a.WorkPoint=e.WorkPoint
|
|
WHERE a.CartonNO='" + CartonNo + "' and a.WorkPoint='" + WorkPoint + "'";
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
public DataTable GetASNListGridJson(string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.ASNDETAILID, a.STNO,a.ITEMCODE,d.INVNAME,d.INVTYPE,d.INVDESC,h.ReMark,a.LOTNO,b.VenderLotNO,
|
|
b.LOTQTY,c.CartonNO,e.VENDORCODE,f.cVenName,
|
|
b.TransNO,b.TransLine,g.F_RealName,CONVERT(NVARCHAR(50),e.CREATETIME,23) as CREATETIME,d.INVSTD,d.INVPARSETYPE,case
|
|
when a.RECEIVEQTY is null then '否'
|
|
else '是'
|
|
end as IsReceive
|
|
|
|
FROM dbo.ICSASNDETAIL a
|
|
LEFT JOIN dbo.ICSITEMLot b ON a.LOTNO=b.LotNO AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN dbo.ICSITEMLot2Carton c ON a.LOTNO=c.LotNO AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN dbo.ICSINVENTORY d ON a.ITEMCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN dbo.ICSASN e ON a.STNO=e.STNO AND a.WorkPoint=e.WorkPoint
|
|
LEFT JOIN dbo.ICSVendor f ON e.VENDORCODE=f.VenCode AND a.WorkPoint=f.WorkPoint
|
|
LEFT JOIN dbo.Sys_SRM_User g ON e.LOGUSER=g.F_Account and g.F_Location=a.WorkPoint
|
|
LEFT JOIN dbo.ICSPO_PoMain h ON b.TransNO=h.POCode AND b.TransLine=h.PORow AND a.WorkPoint=h.WorkPoint where 1=1";
|
|
if (!string.IsNullOrWhiteSpace(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["STNO"].ToString()))
|
|
{
|
|
sql += " and a.STNO like '%" + queryParam["STNO"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
|
|
{
|
|
sql += " and e.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
|
|
{
|
|
sql += " and f.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
|
|
{
|
|
sql += " and e.CREATETIME >= '%" + queryParam["BeginDate"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
|
|
{
|
|
sql += " and e.CREATETIME <= '%" + queryParam["EndDate"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["VenderLotNO"].ToString()))
|
|
{
|
|
sql += " and b.VenderLotNO = '%" + queryParam["VenderLotNO"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["IsReceive"].ToString()))
|
|
{
|
|
string IsReceive = queryParam["IsReceive"].ToString();
|
|
if (IsReceive == "1")
|
|
{
|
|
sql += " and isnull(a.RECEIVEQTY,0) <>0 ";
|
|
}
|
|
else if (IsReceive == "2")
|
|
{
|
|
sql += " and isnull(a.RECEIVEQTY,0)=0 ";
|
|
}
|
|
}
|
|
}
|
|
sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
|
|
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 + "'AND WorkPoint=a.WorkPoint)";
|
|
}
|
|
//DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
|
|
public DataTable GetASNListExport(string keyVaule)
|
|
{
|
|
//var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.STNO AS 送货单号,a.ITEMCODE 物料编码,d.INVNAME 物料名称,d.INVSTD AS 规格型号,
|
|
d.INVPARSETYPE AS 存货代码
|
|
,d.INVTYPE 描述1,d.INVDESC 描述2,h.ReMark 行备注,case
|
|
when a.RECEIVEQTY is null then '否'
|
|
else '是'
|
|
end as 是否到货,
|
|
a.LOTNO 条码,b.VenderLotNO 条码批次,
|
|
b.LOTQTY 数量,c.CartonNO 箱号,e.VENDORCODE 供应商编码,f.cVenName 供应商名称,
|
|
b.TransNO 采购单号,b.TransLine 采购单行,g.F_RealName 维护人, CONVERT(NVARCHAR(50),e.CREATETIME,23) as CREATETIME 维护时间
|
|
FROM dbo.ICSASNDETAIL a
|
|
LEFT JOIN dbo.ICSITEMLot b ON a.LOTNO=b.LotNO AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN dbo.ICSITEMLot2Carton c ON a.LOTNO=c.LotNO AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN dbo.ICSINVENTORY d ON a.ITEMCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN dbo.ICSASN e ON a.STNO=e.STNO AND a.WorkPoint=e.WorkPoint
|
|
LEFT JOIN dbo.ICSVendor f ON e.VENDORCODE=f.VenCode AND a.WorkPoint=f.WorkPoint
|
|
LEFT JOIN dbo.Sys_SRM_User g ON e.LOGUSER=g.F_Account
|
|
LEFT JOIN dbo.ICSPO_PoMain h ON b.TransNO=h.POCode AND b.TransLine=h.PORow AND a.WorkPoint=h.WorkPoint where 1=1";
|
|
sql += " and a.ASNDETAILID in (" + keyVaule + ")";
|
|
sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
return dt;
|
|
}
|
|
|
|
public DataTable GetASNListExport(string ORDERNO, string STNO, string BeginDate, string EndDate, string VenCode, string VenName, string VenderLotNO, string IsReceive)
|
|
{
|
|
//var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.STNO AS 送货单号,h.ORDERNO as 项目号,a.ITEMCODE 物料编码,d.INVNAME 物料名称,
|
|
d.INVSTD AS 规格型号,d.INVPARSETYPE AS 存货代码,
|
|
d.INVTYPE 描述1,d.INVDESC 描述2,h.ReMark 行备注,case
|
|
when a.RECEIVEQTY is null then '否'
|
|
else '是'
|
|
end as 是否到货,
|
|
a.LOTNO 条码,b.VenderLotNO 条码批次,
|
|
b.LOTQTY 数量,c.CartonNO 箱号,e.VENDORCODE 供应商编码,f.cVenName 供应商名称,
|
|
b.TransNO 采购单号,b.TransLine 采购单行,g.F_RealName 维护人,CONVERT(NVARCHAR(50),e.CREATETIME,23) as CREATETIME 维护时间
|
|
FROM dbo.ICSASNDETAIL a
|
|
LEFT JOIN dbo.ICSITEMLot b ON a.LOTNO=b.LotNO AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN dbo.ICSITEMLot2Carton c ON a.LOTNO=c.LotNO AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN dbo.ICSINVENTORY d ON a.ITEMCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN dbo.ICSASN e ON a.STNO=e.STNO AND a.WorkPoint=e.WorkPoint
|
|
LEFT JOIN dbo.ICSVendor f ON e.VENDORCODE=f.VenCode AND a.WorkPoint=f.WorkPoint
|
|
LEFT JOIN dbo.Sys_SRM_User g ON e.LOGUSER=g.F_Account
|
|
LEFT JOIN dbo.ICSPO_PoMain h ON b.TransNO=h.POCode AND b.TransLine=h.PORow AND a.WorkPoint=h.WorkPoint where 1=1";
|
|
if (!string.IsNullOrWhiteSpace(ORDERNO))
|
|
sql += " and a.ORDERNO like '%" + ORDERNO + "%'";
|
|
if (!string.IsNullOrWhiteSpace(STNO))
|
|
sql += " and a.STNO like '%" + STNO + "%'";
|
|
if (!string.IsNullOrWhiteSpace(BeginDate))
|
|
sql += " and e.CREATETIME >= '" + BeginDate + "'";
|
|
if (!string.IsNullOrWhiteSpace(BeginDate))
|
|
sql += " and e.CREATETIME <= '" + EndDate + "'";
|
|
if (!string.IsNullOrWhiteSpace(VenCode))
|
|
sql += " and e.VENDORCODE like '%" + VenCode + "%'";
|
|
if (!string.IsNullOrWhiteSpace(VenCode))
|
|
sql += " and f.cVenName like '%" + VenName + "%'";
|
|
if (!string.IsNullOrWhiteSpace(VenderLotNO))
|
|
sql += " and b.VenderLotNO like '%" + VenderLotNO + "%'";
|
|
if (IsReceive == "1")
|
|
{
|
|
sql += " and isnull(a.RECEIVEQTY,0)<>0";
|
|
}
|
|
else if (IsReceive == "2")
|
|
{
|
|
sql += " and isnull(a.RECEIVEQTY,0)=0";
|
|
}
|
|
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 + "'AND WorkPoint=a.WorkPoint)";
|
|
}
|
|
sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
return dt;
|
|
}
|
|
|
|
public string CheckIsAll(string STNO)
|
|
{
|
|
string sql = @"SELECT * FROM dbo.ICSASNDETAIL WHERE STNO='" + STNO + "' AND ISNULL(RECEIVEQTY,0)<>0";
|
|
sql += " and WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
return "0";
|
|
}
|
|
else
|
|
{
|
|
return "1";
|
|
}
|
|
}
|
|
// public void ISInvoice(string queryJson, string WorkPoint)
|
|
// {
|
|
// string sql = string.Empty;
|
|
// WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
|
|
// queryJson = queryJson.Substring(1, queryJson.Length - 2);
|
|
// string msg = string.Empty;
|
|
// try
|
|
// {
|
|
|
|
// try
|
|
// {
|
|
// sql = @"SELECT * FROM dbo.ICSInvoiceNewDetail a
|
|
// WHERE a.Src_CADocNo in({0}) and WorkPoint='{1}'
|
|
// ";
|
|
// sql = string.Format(sql, queryJson.TrimEnd(','), WorkPoint);
|
|
// DataTable dtID = SqlHelper.GetDataTableBySql(sql);
|
|
// if (dtID.Rows.Count > 0)
|
|
// {
|
|
// throw new Exception("对账单已加入发发票");
|
|
// }
|
|
// }
|
|
|
|
// catch (Exception ex)
|
|
// {
|
|
// throw new Exception(ex.Message);
|
|
// }
|
|
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// throw new Exception(ex.Message);
|
|
// }
|
|
|
|
// }
|
|
/// <summary>
|
|
/// 判断发票是否存在
|
|
/// </summary>
|
|
/// <param name="TEMPVENDORCODE"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable ISPaperNo(string PaperNo)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT * FROM ICSInvoiceNew WHERE PaperNo='" + PaperNo + "' ";
|
|
dt = SqlHelper.GetDataTableBySql(sql);
|
|
return dt;
|
|
}
|
|
public string GetVendorWorkPoint(string WorkPoint)
|
|
{
|
|
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string msg = "";
|
|
string VenCode = "";
|
|
string sql = " SELECT VenCode FROM dbo.ICSVendor WHERE VenName='" + MUSERNAME + "'and WorkPoint='" + WorkPoint + "'";
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
VenCode = dt.Rows[0]["VenCode"].ToString();
|
|
}
|
|
else
|
|
{
|
|
msg = "该站点没有供应商信息,请确认!";
|
|
}
|
|
var JsonData = new
|
|
{
|
|
VenCode = VenCode,
|
|
mag = msg
|
|
};
|
|
return (JsonData.ToJson());
|
|
}
|
|
/// <summary>
|
|
/// 获取文件路径
|
|
/// </summary>
|
|
/// <param name="DocNo"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetInvoiceFile(string DocNo)
|
|
{
|
|
//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, DocNo);
|
|
dt = SqlHelper.GetDataTableBySql(sql);
|
|
return dt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 上传文件变更订单状态为确认中,新增上传次数
|
|
/// </summary>
|
|
/// <param name="PoCode"></param>
|
|
/// <param name="FileName"></param>
|
|
/// <param name="FilePath"></param>
|
|
/// <returns></returns>
|
|
public string UpLoadFile(string PoCode, string FileName, string FilePath, string WorkPoint)
|
|
{
|
|
string msg = "";
|
|
try
|
|
{
|
|
string sql = @"UPDATE ICSInvoiceNew SET Filename = '{1}',FilePath = '{2}' WHERE DocNo = '{0}' and WorkPoint='{3}'";
|
|
sql = string.Format(sql, PoCode, FileName, FilePath,WorkPoint);
|
|
int count = SqlHelper.ExecuteNonQuery(sql);
|
|
if (count <= 0)
|
|
msg = "上传失败";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
msg = ex.Message.ToString();
|
|
}
|
|
return msg;
|
|
}
|
|
}
|
|
}
|