纽威
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.
 
 
 
 
 

1118 lines
67 KiB

using NFine.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using NFine.Code;
using System.Data.Common;
using NFine.Domain._03_Entity.SRM;
using System.Configuration;
using System.Net;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.IO;
using NFine.Domain._03_Entity.WMS;
using NFine.Data.Extensions;
namespace NFine.Application.WMS
{
public class WMSDeleteReceipts : RepositoryFactory<ICSVendor>
{
public int DeleteReceipt(string codes, string type)
{
try
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
DateTime MTime = DateTime.Now;
StringBuilder sqlString = new StringBuilder();
#region 工单领料 售后领料
if (type == "2" || type == "12")
{
#region SAP(三层结构)
string IsSuccess = "";
string ErrorMessage = "";
string sql1 = $@"select DISTINCT A.ApplyCode from ICSMOApply A
WHERE A.ApplyCode in({codes})";
DataTable Sapdt1 = Repository().FindDataSetBySql(sql1).Tables[0];
if (Sapdt1.Rows.Count == 0)
{
throw new Exception("单据查询失败");//单据查询失败
}
for (int i = 0; i < Sapdt1.Rows.Count; i++)
{
var code = Sapdt1.Rows[i]["ApplyCode"].ToString();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
Info.NEWID = Guid.NewGuid().ToString();
Info.DANJU = Sapdt1.Rows[i]["ApplyCode"].ToString();
Info.STATE = "0";
string sql = $@"select A.ID,A.ApplyCode,A.InvCode,A.Sequence,A.SAPSequence,A.Quantity,A.IssueQuantity
,ISNULL(B.BatchCode,'') AS BatchCode,A.WorkPoint,A.WHCode from ICSMOApply A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE A.ApplyCode ='{code}'";
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
if (Sapdt.Rows.Count == 0)
{
throw new Exception("单据查询失败");//单据查询失败
}
List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["ApplyCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["IssueQuantity"].ToDecimal();
SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
Item.DANJU = dr["ApplyCode"].ToString();
Item.POSNR = dr["SAPSequence"].ToString();
Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["IssueQuantity"].ToString()), 3);
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.DANJU = dr["ApplyCode"].ToString();
ItemLine.POSNR = dr["SAPSequence"].ToString();
ItemLine.MATNR = dr["InvCode"].ToString();
ItemLine.GERNR = dr["BatchCode"].ToString();
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["IssueQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString())|| Convert.ToDecimal(dr["Quantity"].ToString())==0)
{
sqlString.Append($@"DELETE FROM ICSMOApply WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','2','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.Z_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.Z_GERNR = ItemLineList.ToArray();
}
else
{
Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
result = Client.CallZWMS_SK_WS_PZ(Info);
if (result.Z_NULL == "N")
{
foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
{
IsSuccess = "N";
ErrorMessage += resultItem.L_MESSAGE + "/r/n";
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
#endregion
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 委外领料
else if (type == "5")
{
#region SAP(三层结构)
string IsSuccess = "";
string ErrorMessage = "";
string sql1 = $@"select DISTINCT A.ApplyCode from ICSOApply A
WHERE A.ApplyCode in({codes})";
DataTable Sapdt1 = Repository().FindDataSetBySql(sql1).Tables[0];
if (Sapdt1.Rows.Count == 0)
{
throw new Exception("单据查询失败");//单据查询失败
}
for (int i = 0; i < Sapdt1.Rows.Count; i++)
{
var code = Sapdt1.Rows[i]["ApplyCode"].ToString();
string sql = $@" select Distinct A.ApplyCode,A.WorkPoint from ICSOApply A
where A.ApplyCode='{code}'";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int j = 0; j < dt.Rows.Count; j++)
{
string chksql = @"select SUM(Quantity) AS Quantity,SUM(IssueQuantity) AS IssueQuantity from ICSOApply
where ApplyCode='{0}' and WorkPoint='{1}'
GROUP BY ApplyCode,WorkPoint";
chksql = string.Format(chksql, dt.Rows[j]["ApplyCode"].ToString(), dt.Rows[j]["WorkPoint"].ToString());
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
Info.NEWID = Guid.NewGuid().ToString();
Info.DANJU = dt.Rows[j]["ApplyCode"].ToString();
Info.STATE = "0";
List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
sql = @" select A.ApplyCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.IssueQuantity
,ISNULL(B.BatchCode,'') AS BatchCode,A.ID,A.WorkPoint,A.WHCode from ICSOApply A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE ApplyCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[j]["ApplyCode"].ToString(), dt.Rows[j]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["ApplyCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["IssueQuantity"].ToDecimal();
SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
Item.DANJU = dr["ApplyCode"].ToString();
Item.POSNR = dr["SAPSequence"].ToString();
Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["IssueQuantity"].ToString()), 3);
ItemList.Add(Item);
ItemLine.DANJU = dr["ApplyCode"].ToString();
ItemLine.POSNR = dr["SAPSequence"].ToString();
ItemLine.MATNR = dr["InvCode"].ToString();
ItemLine.GERNR = dr["BatchCode"].ToString();
ItemLineList.Add(ItemLine);
if (Convert.ToDecimal(dr["IssueQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString())||Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSOApply WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','5','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.Z_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.Z_GERNR = ItemLineList.ToArray();
}
else
{
Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
result = Client.CallZWMS_SK_WS_PZ(Info);
if (result.Z_NULL == "N")
{
foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
{
IsSuccess = "N";
ErrorMessage += resultItem.L_MESSAGE + "/r/n";
}
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
#endregion
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 销售发货
else if (type == "7")
{
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select Distinct A.SDNCode,A.WorkPoint from ICSSDN A
where A.SDNCode in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
string chksql = @"select SUM(Quantity) AS Quantity,SUM(SDNQuantity) AS SDNQuantity from ICSSDN
where SDNCode='{0}' and WorkPoint='{1}'
GROUP BY SDNCode,WorkPoint";
chksql = string.Format(chksql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ();
SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1();
List<SAPCallBackDispatchVPN.ZWMS_DO_HEAD> headlist = new List<SAPCallBackDispatchVPN.ZWMS_DO_HEAD>();
SAPCallBackDispatchVPN.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPN.ZWMS_DO_HEAD();
head.VBELN = dt.Rows[i]["SDNCode"].ToString();
headlist.Add(head);
Info.T_HEAD = headlist.ToArray();
List<SAPCallBackDispatchVPN.ZWMS_DO_ITEM> ItemList = new List<SAPCallBackDispatchVPN.ZWMS_DO_ITEM>();
List<SAPCallBackDispatchVPN.ZWMS_DO_GERNR> ItemLineList = new List<SAPCallBackDispatchVPN.ZWMS_DO_GERNR>();
Info.T_RETURN = new SAPCallBackDispatchVPN.ZWMS_DO_RETURN[1];
sql = @" select A.ID,A.WorkPoint,A.WHCode, A.SDNCode,A.InvCode,A.SAPSequence,A.Sequence,A.Quantity,A.SDNQuantity
,ISNULL(B.BatchCode,'') AS BatchCode from ICSSDN A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE SDNCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["SDNCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["SDNQuantity"].ToDecimal();
SAPCallBackDispatchVPN.ZWMS_DO_GERNR ItemLine = new SAPCallBackDispatchVPN.ZWMS_DO_GERNR();
SAPCallBackDispatchVPN.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPN.ZWMS_DO_ITEM();
Item.VBELN = dr["SDNCode"].ToString();
Item.POSNR = dr["SAPSequence"].ToString();
Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["SDNQuantity"].ToString()), 3);
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.VBELN = dr["SDNCode"].ToString();
ItemLine.POSNR = dr["SAPSequence"].ToString();
ItemLine.GERNR = dr["BatchCode"].ToString();
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["SDNQuantity"].ToString()) || Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSSDN WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','7','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.T_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.T_GERNR = ItemLineList.ToArray();
}
SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse();
result = Client.CallZWMS_SK_DO_GZ(Info);
foreach (SAPCallBackDispatchVPN.ZWMS_DO_RETURN resultItem in result.T_RETURN)
{
if (resultItem.ZFLG == "N")
{
IsSuccess = "N";
ErrorMessage += resultItem.ZMESS + "/r/n";
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 其他出库
else if (type == "8")
{
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select Distinct A.OutCode,A.WorkPoint from ICSOtherOut A
where A.OutCode in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
string chksql = @"select SUM(Quantity) AS Quantity,SUM(OutQuantity) AS OutQuantity from ICSOtherOut
where OutCode='{0}' and WorkPoint='{1}'
GROUP BY OutCode,WorkPoint";
chksql = string.Format(chksql, dt.Rows[i]["OutCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["OutQuantity"]))
{
SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
Info.NEWID = Guid.NewGuid().ToString();
Info.DANJU = dt.Rows[i]["OutCode"].ToString();
Info.STATE = "0";
List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
sql = @"select A.ID, A.OutCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.OutQuantity
,ISNULL(B.BatchCode,'') AS BatchCode,A.WorkPoint,A.WHCode from ICSOtherOut A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE OutCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[i]["OutCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["OutCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["OutQuantity"].ToDecimal();
SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
Item.DANJU = dr["OutCode"].ToString();
Item.POSNR = dr["SAPSequence"].ToString();
Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["OutQuantity"].ToString()), 3);
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.DANJU = dr["OutCode"].ToString();
ItemLine.POSNR = dr["SAPSequence"].ToString();
ItemLine.MATNR = dr["InvCode"].ToString();
ItemLine.GERNR = dr["BatchCode"].ToString();
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["OutQuantity"].ToString()) || Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSOtherOut WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','8','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.Z_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.Z_GERNR = ItemLineList.ToArray();
}
else
{
Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
result = Client.CallZWMS_SK_WS_PZ(Info);
if (result.Z_NULL == "N")
{
foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
{
IsSuccess = "N";
ErrorMessage += resultItem.L_MESSAGE + "/r/n";
}
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 物料调拨
else if (type == "10")
{
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select Distinct A.TransferNO,A.WorkPoint from ICSTransfer A
where A.TransferNO in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
string chksql = @"select SUM(Quantity) AS Quantity,SUM(TransferQuantity) AS TransferQuantity from ICSTransfer
where TransferNO='{0}' and WorkPoint='{1}'
GROUP BY TransferNO,WorkPoint";
chksql = string.Format(chksql, dt.Rows[i]["TransferNO"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
Info.NEWID = Guid.NewGuid().ToString();
Info.DANJU = dt.Rows[i]["TransferNO"].ToString();
Info.STATE = "0";
List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
sql = @" select A.ID,A.WorkPoint,A.FromWarehouseCode, A.TransferNO,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.TransferQuantity
,ISNULL(B.BatchCode,'') AS BatchCode from ICSTransfer A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE TransferNO='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[i]["TransferNO"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["TransferNO"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["FromWarehouseCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["TransferQuantity"].ToDecimal();
SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
Item.DANJU = dr["TransferNO"].ToString();
Item.POSNR = dr["SAPSequence"].ToString();
Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["TransferQuantity"].ToString()), 3);
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.DANJU = dr["TransferNO"].ToString();
ItemLine.POSNR = dr["SAPSequence"].ToString();
ItemLine.MATNR = dr["InvCode"].ToString();
ItemLine.GERNR = dr["BatchCode"].ToString();
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["TransferQuantity"].ToString()) || Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSTransfer WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','10','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.Z_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.Z_GERNR = ItemLineList.ToArray();
}
else
{
Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
result = Client.CallZWMS_SK_WS_PZ(Info);
if (result.Z_NULL == "N")
{
foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
{
IsSuccess = "N";
ErrorMessage += resultItem.L_MESSAGE + "/r/n";
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 检验合格单
else if (type == "13")
{
#region SAP(检验合格单为两层结构 一行对应一个序列号)
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select A.DNCode,A.WorkPoint,Quantity,A.Sequence,A.WHCode,A.ID,A.INVCode,A.RCVQuantity
from ICSDeliveryNotice A
where A.DNCode in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSDeliveryNotice
where DNCode='{0}' and WorkPoint='{1}'
GROUP BY DNCode,WorkPoint";
chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
sql = @"select A.DNCode, SUM(Convert(decimal(18,6),A.RCVQuantity)) AS RCVQuantity,B.BatchCode from ICSDeliveryNotice A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE DNCode='{0}' AND A.WorkPoint='{1}'
GROUP BY A.DNCode,B.BatchCode";
sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
if (Sapdt.Rows.Count == 0)
{
throw new Exception("单据查询失败");//单据查询失败
}
string id = dt.Rows[i]["ID"].ToString();
string dnCode = dt.Rows[i]["DNCode"].ToString();
string invCode = dt.Rows[i]["INVCode"].ToString();
string workPoint = dt.Rows[i]["WorkPoint"].ToString();
string whCode = dt.Rows[i]["WHCode"].ToString();
string quantity = dt.Rows[i]["Quantity"].ToString();
string sequence = dt.Rows[i]["Sequence"].ToString();
decimal dnQuantity = dt.Rows[i]["RCVQuantity"].ToDecimal();
sqlString.Append($@"DELETE FROM ICSDeliveryNotice WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','13','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU Client = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU();
SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1 Info = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKU1();
Info.NEWID = Guid.NewGuid().ToString();
Info.PRUEFLOS = Sapdt.Rows[0]["DNCode"].ToString();
Info.L_LME = System.Decimal.Round(Convert.ToDecimal(Sapdt.Rows[0]["RCVQuantity"].ToString()), 3);
Info.SERNP = Sapdt.Rows[0]["BatchCode"].ToString();
Info.Z_GERNR = new SAPCallBackJYHGDVPN.ZWEBS_GERNR[0];
SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse result = new SAPCallBackJYHGDVPN.ZWMS_SK_WS_RUKUResponse();
result = Client.CallZWMS_SK_WS_RUKU(Info);
if (result.Z_NULL == "N")
{
IsSuccess = "N";
ErrorMessage += result.L_MESSAGE;
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
#endregion
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 机加工入库
else if (type == "14")
{
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select Distinct A.RCVCode,A.WorkPoint from ICSManufactureReceive A
where A.RCVCode in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
string chksql = @"select SUM(Quantity) AS Quantity,SUM(RCVQuantity) AS RCVQuantity from ICSManufactureReceive
where RCVCode='{0}' and WorkPoint='{1}'
GROUP BY RCVCode,WorkPoint";
chksql = string.Format(chksql, dt.Rows[i]["RCVCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
Info.NEWID = Guid.NewGuid().ToString();
Info.DANJU = dt.Rows[i]["RCVCode"].ToString();
Info.STATE = "0";
List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
sql = @"select A.ID,A.WorkPoint,A.WHCode,A.RCVCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.RCVQuantity
,ISNULL(B.BatchCode,'') AS BatchCode from ICSManufactureReceive A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE RCVCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[i]["RCVCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["RCVCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["RCVQuantity"].ToDecimal();
SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
Item.DANJU = dr["RCVCode"].ToString();
Item.POSNR = dr["SAPSequence"].ToString();
Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["RCVQuantity"].ToString()), 3);
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.DANJU = dr["RCVCode"].ToString();
ItemLine.POSNR = dr["SAPSequence"].ToString();
ItemLine.MATNR = dr["InvCode"].ToString();
ItemLine.GERNR = dr["BatchCode"].ToString();
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["RCVQuantity"].ToString()) || Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSManufactureReceive WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','14','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.Z_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.Z_GERNR = ItemLineList.ToArray();
}
else
{
Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
result = Client.CallZWMS_SK_WS_PZ(Info);
if (result.Z_NULL == "N")
{
foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
{
IsSuccess = "N";
ErrorMessage += resultItem.L_MESSAGE + "/r/n";
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 成本中心退料
else if (type == "15")
{
#region SAP(三层结构)
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select Distinct A.InCode,A.WorkPoint from ICSOtherIn A
where A.InCode in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
var applyCode = dt.Rows[i]["InCode"].ToString();
var applyWorkPoint = dt.Rows[i]["WorkPoint"].ToString();
string chksql = @"select SUM(Quantity) AS Quantity,SUM(InQuantity) AS InQuantity from ICSOtherIn
where InCode='{0}' and WorkPoint='{1}'
GROUP BY InCode,WorkPoint";
chksql = string.Format(chksql, applyCode, applyWorkPoint);
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
Info.NEWID = Guid.NewGuid().ToString();
Info.DANJU = dt.Rows[i]["InCode"].ToString();
Info.STATE = "0";
List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
sql = @"select A.InCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.InQuantity
,ISNULL(B.BatchCode,'') AS BatchCode,A.ID,A.WHCode,A.WorkPoint from ICSOtherIn A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE InCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[i]["InCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["InCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["InQuantity"].ToDecimal();
SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
Item.DANJU = dnCode;
Item.POSNR = sequence;
Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["InQuantity"].ToString()), 3); ;
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.DANJU = dnCode;
ItemLine.POSNR = sequence;
ItemLine.MATNR = invCode;
ItemLine.GERNR = batchCode;
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["InQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString()) || Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSOtherIn WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','15','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.Z_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.Z_GERNR = ItemLineList.ToArray();
}
else
{
Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
result = Client.CallZWMS_SK_WS_PZ(Info);
if (result.Z_NULL == "N")
{
foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
{
IsSuccess = "N";
ErrorMessage += resultItem.L_MESSAGE + "/r/n";
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
#endregion
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion、
#region 退料单
else if (type == "16")
{
#region SAP(三层结构)
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select Distinct A.ApplyNegCode,A.WorkPoint from ICSMOApplyNeg A
where A.ApplyNegCode in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
var applyCode = dt.Rows[i]["ApplyNegCode"].ToString();
var applyWorkPoint = dt.Rows[i]["WorkPoint"].ToString();
string chksql = @"select SUM(B.Quantity) AS Quantity,SUM(B.IssueNegQuantity) AS IssueQuantity from ICSMOApplyNeg A
LEFT JOIN ICSMOApplyNegDetail B ON B.ApplyNegCode=A.ApplyNegCode AND B.WorkPoint=A.WorkPoint
where A.ApplyNegCode='{0}' and A.WorkPoint='{1}'
GROUP BY A.ApplyNegCode,A.WorkPoint";
chksql = string.Format(chksql, applyCode, applyWorkPoint);
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
if (Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"].ToString()) == 0)
{
//删除主表
sqlString.Append($@"DELETE FROM ICSMOApplyNeg WHERE ApplyNegCode='{applyCode}' and WorkPoint='{applyWorkPoint}';");
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ();
SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1();
Info.NEWID = Guid.NewGuid().ToString();
Info.DANJU = dt.Rows[i]["ApplyNegCode"].ToString();
Info.STATE = "0";
List<SAPCallBackDocVPN.ZWMS_PZ> ItemList = new List<SAPCallBackDocVPN.ZWMS_PZ>();
List<SAPCallBackDocVPN.ZWEBS_GERNR> ItemLineList = new List<SAPCallBackDocVPN.ZWEBS_GERNR>();
Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1];
sql = @" select A.ApplyNegCode,B.SAPSequence,B.InvCode,B.Sequence,B.Quantity,B.IssueNegQuantity
,ISNULL(C.BatchCode,'') AS BatchCode,B.WorkPoint,B.ID,B.WHCode from ICSMOApplyNeg A
LEFT JOIN ICSMOApplyNegDetail B ON B.ApplyNegCode=A.ApplyNegCode AND B.WorkPoint=A.WorkPoint
LEFT JOIN ICSExtension C ON C.ID=B.ExtensionID AND C.WorkPoint=B.WorkPoint
WHERE A.ApplyNegCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[i]["ApplyNegCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["ApplyNegCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["IssueNegQuantity"].ToDecimal() == 0 ? 0 : dr["IssueNegQuantity"].ToDecimal();
SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ();
SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR();
Item.DANJU = dnCode;
Item.POSNR = sequence;
Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["IssueNegQuantity"].ToString()), 3);
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.DANJU = dnCode;
ItemLine.POSNR = sequence;
ItemLine.MATNR = invCode;
ItemLine.GERNR = batchCode;
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["IssueNegQuantity"].ToString()) != Convert.ToDecimal(dr["Quantity"].ToString()) || Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSMOApplyNegDetail WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','16','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.Z_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.Z_GERNR = ItemLineList.ToArray();
}
else
{
Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1];
}
SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse();
result = Client.CallZWMS_SK_WS_PZ(Info);
if (result.Z_NULL == "N")
{
foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG)
{
IsSuccess = "N";
ErrorMessage += resultItem.L_MESSAGE + "/r/n";
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
#endregion
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
#region 销售退货单
else
{
string IsSuccess = "";
string ErrorMessage = "";
string sql = $@" select Distinct A.SDNCode,A.WorkPoint from ICSSDN A
where A.SDNCode in ({codes})";
DataTable dt = Repository().FindDataSetBySql(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
string chksql = @"select SUM(Quantity) AS Quantity,SUM(SDNQuantity) AS SDNQuantity from ICSSDN
where SDNCode='{0}' and WorkPoint='{1}'
GROUP BY SDNCode,WorkPoint";
chksql = string.Format(chksql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable chkdt = Repository().FindDataSetBySql(chksql).Tables[0];
SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ();
SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1();
List<SAPCallBackDispatchVPN.ZWMS_DO_HEAD> headlist = new List<SAPCallBackDispatchVPN.ZWMS_DO_HEAD>();
SAPCallBackDispatchVPN.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPN.ZWMS_DO_HEAD();
head.VBELN = dt.Rows[i]["SDNCode"].ToString();
headlist.Add(head);
Info.T_HEAD = headlist.ToArray();
List<SAPCallBackDispatchVPN.ZWMS_DO_ITEM> ItemList = new List<SAPCallBackDispatchVPN.ZWMS_DO_ITEM>();
List<SAPCallBackDispatchVPN.ZWMS_DO_GERNR> ItemLineList = new List<SAPCallBackDispatchVPN.ZWMS_DO_GERNR>();
Info.T_RETURN = new SAPCallBackDispatchVPN.ZWMS_DO_RETURN[1];
sql = @" select A.ID,A.WorkPoint,A.WHCode, A.SDNCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.SDNQuantity
,ISNULL(B.BatchCode,'') AS BatchCode from ICSSDN A
LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint
WHERE SDNCode='{0}' AND A.WorkPoint='{1}'";
sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
DataTable Sapdt = Repository().FindDataSetBySql(sql).Tables[0];
foreach (DataRow dr in Sapdt.Rows)
{
string id = dr["ID"].ToString();
string dnCode = dr["SDNCode"].ToString();
string invCode = dr["INVCode"].ToString();
string workPoint = dr["WorkPoint"].ToString();
string whCode = dr["WHCode"].ToString();
decimal quantity = dr["Quantity"].ToDecimal();
string sequence = dr["SAPSequence"].ToString();
string batchCode = dr["BatchCode"].ToString();
decimal dnQuantity = dr["SDNQuantity"].ToDecimal();
SAPCallBackDispatchVPN.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPN.ZWMS_DO_ITEM();
SAPCallBackDispatchVPN.ZWMS_DO_GERNR ItemLine = new SAPCallBackDispatchVPN.ZWMS_DO_GERNR();
Item.VBELN = dr["SDNCode"].ToString();
Item.POSNR = dr["SAPSequence"].ToString();
Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["SDNQuantity"].ToString()), 3);
ItemList.Add(Item);
if (dr["BatchCode"].ToString() != "")
{
ItemLine.VBELN = dr["SDNCode"].ToString();
ItemLine.POSNR = dr["SAPSequence"].ToString();
ItemLine.GERNR = dr["BatchCode"].ToString();
ItemLineList.Add(ItemLine);
}
if (Convert.ToDecimal(dr["Quantity"].ToString()) != Convert.ToDecimal(dr["SDNQuantity"].ToString()) || Convert.ToDecimal(dr["Quantity"].ToString()) == 0)
{
sqlString.Append($@"DELETE FROM ICSSDN WHERE ID='{id}';");
sqlString.Append($@"INSERT INTO ICSDeleteReceiptsLog VALUES(NEWID(),'{dnCode}','{sequence}','17','{workPoint}','{invCode}',{dnQuantity},null,'{MUSER}','{MUSERNAME}','{MTime}');");
}
}
if (ItemList.Count > 0)
{
Info.T_ITEM = ItemList.ToArray();
if (ItemLineList.Count > 0)
{
Info.T_GERNR = ItemLineList.ToArray();
}
else
{
Info.T_GERNR = new SAPCallBackDispatchVPN.ZWMS_DO_GERNR[1];
}
SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse();
result = Client.CallZWMS_SK_DO_GZ(Info);
foreach (SAPCallBackDispatchVPN.ZWMS_DO_RETURN resultItem in result.T_RETURN)
{
if (resultItem.ZFLG == "N")
{
IsSuccess = "N";
ErrorMessage += resultItem.ZMESS + "/r/n";
}
}
}
}
if (IsSuccess == "N")
{
throw new Exception(ErrorMessage);
}
if (sqlString.IsEmpty())
{
return 0;
}
int count = SqlHelper.CmdExecuteNonQueryLi(sqlString.ToString());
return count;
}
#endregion
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public string CheckReceipt(string codes, string type)
{
try
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
DateTime MTime = DateTime.Now;
string check = $@"IF EXISTS (SELECT ID FROM ICSWareHouseLotInfoLog WHERE TransType='15' AND TransCode IN ({codes}) )
BEGIN
RAISERROR('单据已占料,请先取消占料',16,1);
RETURN
END;";
//Repository().ExecuteBySql(check);
SqlHelper.CmdExecuteNonQueryLi(check);
string sql = String.Empty;
StringBuilder msg=new StringBuilder();
if (type == "14")
{
sql += $@"SELECT a.RCVCode as Code,a.Sequence,SUM(c.Quantity) as Quantity ,a.RCVQuantity as IssueQuantity
FROM ICSManufactureReceive a
left JOIN ICSInventoryLotDetail b ON a.RCVCode=b.TransCode AND a.Sequence=b.TransSequence
left JOIN ICSInventoryLot c ON c.LotNo=b.LotNo
WHERE a.RCVCode in ({codes})
AND b.LotNo NOT LIKE '%-%'
GROUP BY a.RCVCode,a.Sequence,a.RCVQuantity";
}
else if (type == "15")
{
sql += $@"SELECT a.InCode as Code,a.Sequence,SUM(c.Quantity) as Quantity ,a.InQuantity as IssueQuantity
FROM ICSOtherIn a
left JOIN ICSInventoryLotDetail b ON a.InCode=b.TransCode AND a.Sequence=b.TransSequence
left JOIN ICSInventoryLot c ON c.LotNo=b.LotNo
WHERE a.InCode in ({codes})
AND b.LotNo NOT LIKE '%-%'
GROUP BY a.InCode,a.Sequence,a.InQuantity";
}
else if (type == "16")
{
sql += $@"SELECT a.ApplyNegCode as Code,a.Sequence,SUM(c.Quantity) as Quantity ,a.IssueNegQuantity as IssueQuantity FROM ICSMOApplyNegDetail a
left JOIN ICSInventoryLotDetail b ON a.ApplyNegCode=b.TransCode AND a.Sequence=b.TransSequence
left JOIN ICSInventoryLot c ON c.LotNo=b.LotNo
WHERE a.ApplyNegCode in ({codes})
AND b.LotNo NOT LIKE '%-%'
GROUP BY a.ApplyNegCode,a.Sequence,a.IssueNegQuantity";
}
else if (type == "17")
{
sql += $@"SELECT a.SDNCode as Code,a.Sequence,SUM(c.Quantity) as Quantity ,a.SDNQuantity as IssueQuantity
FROM ICSSDN a
left JOIN ICSInventoryLotDetail b ON a.SDNCode=b.TransCode AND a.Sequence=b.TransSequence
left JOIN ICSInventoryLot c ON c.LotNo=b.LotNo
WHERE a.SDNCode in ({codes})
AND b.LotNo NOT LIKE '%-%'
GROUP BY a.SDNCode,a.Sequence,a.SDNQuantity";
}
if (!sql.IsEmpty())
{
var datas = Repository().FindDataSetBySql(sql).Tables[0];
if (datas.Rows.Count < 1)
return msg.ToString();
foreach (DataRow data in datas.Rows)
{
string code = data["Code"].ToString();
string sequence = data["Sequence"].ToString();
decimal quantity = data["Quantity"].ToDecimal();
decimal issueQuantity = data["IssueQuantity"].ToDecimal();
if (quantity != issueQuantity)
{
msg.Append($@"单据号:{code},行号:{sequence},已经生成条码,请先删除条码后再取消单据; ");
}
}
}
return msg.ToString();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}