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.
32864 lines
1.8 MiB
32864 lines
1.8 MiB
|
|
using ICSSoft.Common;
|
|
using ICSSoft.Entity;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using NFine.Code;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ICSSoft.DataProject
|
|
{
|
|
/// <summary>
|
|
/// 使用中
|
|
/// 提交业务处理
|
|
/// </summary>
|
|
public class ICSSubmitService
|
|
{
|
|
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
private static string connString = System.Configuration.ConfigurationManager.AppSettings["ConnStr"];
|
|
private static string enableCode = "";
|
|
private static string excessQtySql = "";
|
|
|
|
#region 源头单据信息
|
|
/// <summary>
|
|
/// 源头单据信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransInformationGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
string sql = string.Empty;
|
|
string arrivalCtrlSql = string.Empty;
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
//string enableCode = "";
|
|
//string excessQtySql = "";
|
|
#region SLQ
|
|
string sqlCheck = @"
|
|
--判断源头单据是否存在
|
|
IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {6})
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo035") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
//销售发货绑定快递单号不验证单据是否完成
|
|
//if (TransType != TransTypeEnum.SalesBindCourierDoc.GetDescription())
|
|
//{
|
|
// sqlCheck += @"--判断源头单据是否已完成
|
|
// IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {7})
|
|
// BEGIN
|
|
|
|
// RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo535"), JsonData.TransCode) + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// ";
|
|
//}
|
|
|
|
//查询是否需要去除单据中已发完明细
|
|
string excludeSql = @"DECLARE @ExcludeEnable BIT
|
|
SET @ExcludeEnable=(SELECT Enable FROM ICSConfiguration WHERE Code='excludeInvDelivered')";
|
|
|
|
if (TransType == TransTypeEnum.ASN.GetDescription() || TransType == TransTypeEnum.OASN.GetDescription())
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.EATTRIBUTE4 AS module,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
--a.WHCode,
|
|
inv.AmountUnit,
|
|
--wh.WarehouseName AS WHName,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
--CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
{4}
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
--LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
--LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WHCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2}
|
|
Order By asn.Sequence ASC";
|
|
}
|
|
else if (TransType == TransTypeEnum.RTTwoStepTransferDocIn.GetDescription())
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.EATTRIBUTE4 AS module,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.ToWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
(select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='4f733e37-445b-4534-8ec0-9f88d0842381') AS TransEnable,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.ToWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
}
|
|
else
|
|
{
|
|
sql = @"SELECT DISTINCT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.EATTRIBUTE4 AS module,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
(select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='4f733e37-445b-4534-8ec0-9f88d0842381') AS TransEnable,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
ISNULL(inv.EATTRIBUTE1, '') AS EATTRIBUTE1,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
{4}
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WHCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} {5} ";
|
|
}
|
|
|
|
|
|
string Picksql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
|
|
c.Code,
|
|
c.InvCode,
|
|
c.InvName,
|
|
c.InvStd,
|
|
c.InvUnit,
|
|
FLOOR(c.iQuantity) AS iQuantity,
|
|
d.WarehouseCode,
|
|
d.LocationCode,
|
|
d.LotNO,
|
|
FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
|
|
CONVERT(varchar(100),d.MTIME, 23) MTIME,
|
|
FLOOR(f.QTYTotal) QTYTotal INTO #temp
|
|
FROM
|
|
({0}) c
|
|
LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND ((LEN(ISNULL(c.WHCode,''))<=0) OR (LEN(ISNULL(c.WHCode,''))>0) AND c.WhCode=d.WarehouseCode) AND d.WorkPoint='{1}' AND d.Quantity>0
|
|
left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
|
|
LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
|
|
|
|
|
|
DECLARE @ItemCode VARCHAR(50),
|
|
@QTY DECIMAL(18,3),
|
|
@ItemCodeCurrent VARCHAR(50),
|
|
@QTYCurrent DECIMAL(18,3),
|
|
@iQuantityCurrent DECIMAL(18,3),
|
|
@CanDelete BIT,
|
|
@Row INT,
|
|
@rowCurrent INT
|
|
SET @Row = @@rowcount
|
|
SET @rowCurrent=1
|
|
SET @CanDelete=0
|
|
SET @ItemCode=''
|
|
|
|
WHILE @rowCurrent<=@Row
|
|
BEGIN
|
|
SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
|
|
|
|
PRINT(@rowCurrent)
|
|
IF @ItemCode<>@ItemCodeCurrent
|
|
BEGIN
|
|
SET @ItemCode=@ItemCodeCurrent
|
|
SET @QTY=0
|
|
SET @CanDelete=0
|
|
END
|
|
|
|
IF @CanDelete=1
|
|
BEGIN
|
|
DELETE FROM #temp WHERE rowNo=@rowCurrent
|
|
SET @rowCurrent += 1
|
|
CONTINUE
|
|
END
|
|
|
|
SET @QTY += @QTYCurrent
|
|
IF @QTY>=@iQuantityCurrent
|
|
BEGIN
|
|
SET @CanDelete=1
|
|
END
|
|
|
|
SET @rowCurrent += 1
|
|
END
|
|
SELECT * FROM #temp
|
|
DROP TABLE #temp
|
|
";
|
|
#endregion
|
|
|
|
bool isDeliveryNotice = false; //送货、到货、含委外
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
string singleWhere = string.Empty; //判断源头单据是否存在的过滤条件
|
|
string completeWhere = string.Empty; //判断单据是否已完成的过滤条件
|
|
string invWhere = ""; //查询特殊物料要求的过滤条件
|
|
bool isMerge = false; //合并发料
|
|
string columnsMerge = string.Empty; //合并发料查询源头单据表的特殊列名
|
|
string tableNameMerge = string.Empty; //合并发料查询源头单据表名
|
|
string sqls = string.Empty;
|
|
string sqlCheckSign = "";
|
|
string isRTOut = "0";
|
|
string isPN = "0";
|
|
string whcode = "";
|
|
string EATTRIBUTE = "";
|
|
DataTable flag = null;
|
|
|
|
#region 检料表信息
|
|
//enableCode = "";
|
|
//excessQtySql = "";
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over001";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单备料sql
|
|
sqls = @" SELECT
|
|
c.MOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
b.InvUnit,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOPick a
|
|
inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
enableCode = "Over002";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
enableCode = "Over003";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over004";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外备料SQL
|
|
sqls = @" select
|
|
c.OOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOOPick a
|
|
left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
enableCode = "Over005";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
//enableCode = "Over006";
|
|
excessQtySql = "";
|
|
#region 委外材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 销售发货SQL
|
|
sqls = @" select
|
|
a.SDNCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSSDN a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 其它出库SQL
|
|
sqls = @" select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOtherOut a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 借用SQL
|
|
sqls = @"select
|
|
a.BrrowCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSBrrow a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 物料调拨
|
|
sqls = @" select
|
|
a.TransferNO as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.FromWarehouseCode as WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSTransfer a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 两步调出
|
|
sqls = @"select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WHCode ,
|
|
a.ExtensionID
|
|
from ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 出库
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.DNCode AS TransCode,
|
|
a.DNDetailID AS DetailID,
|
|
a.DNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.RCVQuantity,0) AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.DNCode='{0}' AND a.WorkPoint='{1}' AND a.DNType='2' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.DNCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.DNCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
}
|
|
#region 采购退货(采购订单)
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.DNCode AS TransCode,
|
|
a.DNDetailID AS DetailID,
|
|
a.DNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
isnull(a.Quantity,0) - isnull(a.RCVQuantity,0) AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.DNCode='{0}' AND a.WorkPoint='{1}' AND a.DNType='1' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.DNCode='{0}' AND a.WorkPoint='{1}'";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
#region 工单关联
|
|
else if (TransType == TransTypeEnum.ICSMOReceive.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.MOCode AS TransCode,
|
|
a.Sequence AS TransSequence,";
|
|
|
|
tableName = @"ICSMO a ";
|
|
|
|
where = @" a.MOCode='{0}' AND a.WorkPoint='{1}' and a.ERPStatus<>'3'";
|
|
|
|
singleWhere = @" a.MOCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.MOCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 委外发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
{
|
|
if (JsonData.IsRTOut == "1")
|
|
{
|
|
isRTOut = "1";
|
|
}
|
|
else
|
|
{
|
|
isRTOut = "0";
|
|
}
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode004' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.OOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.OOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.OOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.Status<>'3' and isnull(a.EATTRIBUTE1,'')<>'1' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
singleWhere = @" b.OOCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.OOCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.ODNCode AS TransCode,
|
|
a.ODNDetailID AS DetailID,
|
|
a.ODNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.RCVQuantity,0) AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSODeliveryNotice a ";
|
|
|
|
where = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.ODNType='2' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.ODNCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 委外退货(委外采购订单)
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBackPo.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.ODNCode AS TransCode,
|
|
a.ODNDetailID AS DetailID,
|
|
a.ODNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.Quantity - ISNULL(a.RCVQuantity,0) AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSODeliveryNotice a ";
|
|
|
|
where = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.ODNType='1' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.ODNCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 生产发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode001' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,
|
|
ISNULL(a.EATTRIBUTE3, isnull(A.Quantity,0)) as DHexcessQty,";
|
|
|
|
tableName = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1'
|
|
AND ((@ExcludeEnable=1 AND dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{2}', 2, 2,'')-ISNULL(a.IssueQuantity,0)>0) OR (@ExcludeEnable=0 OR @ExcludeEnable IS NULL)) ";
|
|
|
|
//海格仓库领料
|
|
if (JsonData.DepType != null && JsonData.DepType == "W") { invWhere += @" and (isnull(inv.EATTRIBUTE11,'') ='0' and isnull(inv.EATTRIBUTE12,'') ='False')"; }
|
|
//海格生产领料
|
|
else if (JsonData.DepType != null && JsonData.DepType == "P") { invWhere += @" and ( isnull(inv.EATTRIBUTE12,'') ='True')"; }
|
|
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnInvOut", JsonData.User, cmd);
|
|
singleWhere = @" b.MOCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
|
|
#region 锐腾杂发控制线边仓发料
|
|
DataTable rtdt = null;
|
|
|
|
string rtsql = @"select a.F_ItemCode,a.F_Define1 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='d51a7d1a-cc8a-4b8e-b306-d4ef3a108549' and a.F_EnabledMark='1' AND a.F_ItemCode='{0}'";
|
|
rtsql = string.Format(rtsql, JsonData.User);
|
|
rtdt = DBHelper.SQlReturnData(rtsql, cmd);
|
|
if (rtdt != null && rtdt.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < rtdt.Rows.Count; i++)
|
|
{
|
|
whcode = rtdt.Rows[i]["F_Define1"].ToString();
|
|
}
|
|
}
|
|
|
|
if (whcode != "")
|
|
{
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1' and a.WHCode in ({2})";
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 生产发料——自动出库
|
|
else if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode001' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,
|
|
ISNULL(a.EATTRIBUTE3, isnull(A.Quantity,0)) as DHexcessQty,";
|
|
|
|
tableName = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1'
|
|
AND ((@ExcludeEnable=1 AND dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{2}', 2, 2,'')-ISNULL(a.IssueQuantity,0)>0) OR (@ExcludeEnable=0 OR @ExcludeEnable IS NULL)) ";
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnInvOutAuto", JsonData.User, cmd);
|
|
|
|
singleWhere = @" b.MOCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 销售出库(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode007' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSDN a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3'
|
|
AND a.Quantity-ISNULL(a.SDNQuantity,0)>0";
|
|
|
|
singleWhere = @" a.SDNCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.SDNQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 销售发货单-快递单
|
|
else if (TransType == TransTypeEnum.SalesBindCourierDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode007' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSSD a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.EATTRIBUTE3 AS CourierCode,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSSD a ";
|
|
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.SSDQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 销售出库-出库单(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsPNU9())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode013' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
isnull(a.EATTRIBUTE3,'') AS FDQuantity,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSSD a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
isnull(a.EATTRIBUTE3,'') AS FDQuantity,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSSD a
|
|
";
|
|
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
|
|
singleWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.SSDQuantity,0)";
|
|
}
|
|
else
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode013' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
'' AS FDQuantity,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSSD a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
'' AS FDQuantity,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSSD a ";
|
|
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
|
|
singleWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.SSDQuantity,0)";
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region 盘点
|
|
else if (TransType == TransTypeEnum.Check.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
a.Quantity,
|
|
a.SelectLevel AS LocationCode,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.CheckCode AS TransCode,
|
|
a.ID,
|
|
'' AS Type,";
|
|
|
|
tableName = @"ICSCheck a ";
|
|
|
|
where = @" a.CheckCode='{0}' AND a.WorkPoint='{1}' ";
|
|
|
|
singleWhere = @" a.CheckCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.CheckCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>0";
|
|
}
|
|
#endregion
|
|
#region 一步调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
if (JsonData.IsPN == "1")
|
|
{
|
|
isPN = "1";
|
|
}
|
|
else
|
|
{
|
|
isPN = "0";
|
|
}
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode009' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
string Wsql = @"select ColumnCode from ICSColumnEnable where TableCode='ICSTransfer' and Enable='1' and WorkPoint='{0}'";
|
|
DataTable chekdt = DBHelper.SQlReturnData(Wsql, cmd);
|
|
if (chekdt.Rows.Count > 0)
|
|
{
|
|
EATTRIBUTE = "a." + chekdt.Rows[0]["ColumnCode"].ToString();
|
|
}
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableNameMerge = @"ICSTransfer a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
isnull(a.EATTRIBUTE3,'') AS ToWorkPoint,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
ISNULL(tlo.F_Define1,'') AS MLocationCode,
|
|
ISNULL(tlo.F_Define2,'') AS MWareHouseCode,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
ISNULL(tlo.F_Define1,'') AS MLocationCode,
|
|
ISNULL(tlo.F_Define2,'') AS MWareHouseCode,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableName = @"ICSTransfer a
|
|
LEFT JOIN (select a.F_Define1,a.F_Define2 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_EnCode='TransLocation') tlo ON a.ToWarehouseCode=tlo.F_Define2";
|
|
|
|
if (isPN == "1")
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3' and a.type='3' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
}
|
|
singleWhere = @" a.TransferNO='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
|
|
}
|
|
#endregion
|
|
#region 物料调拨-自动
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocAuto.GetDescription())
|
|
{
|
|
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode009' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
string Wsql = @"select ColumnCode from ICSColumnEnable where TableCode='ICSTransfer' and Enable='1' and WorkPoint='{0}'";
|
|
DataTable chekdt = DBHelper.SQlReturnData(Wsql, cmd);
|
|
if (chekdt.Rows.Count > 0)
|
|
{
|
|
EATTRIBUTE = "a." + chekdt.Rows[0]["ColumnCode"].ToString();
|
|
}
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableNameMerge = @"ICSTransfer a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} {5} ";
|
|
#endregion
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3' ";
|
|
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnInvTransAuto", JsonData.User, cmd);
|
|
|
|
singleWhere = @" a.TransferNO='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 调拨申请单(领料)
|
|
else if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
if (JsonData.IsPN == "1")
|
|
{
|
|
isPN = "1";
|
|
}
|
|
else
|
|
{
|
|
isPN = "0";
|
|
}
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,isnull(a.EATTRIBUTE29,'') AS OutWorkPoint,isnull(a.EATTRIBUTE30,'') AS InWorkPoint,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableNameMerge = @"ICSTransferApplication a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT DISTINCT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
(select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='4f733e37-445b-4534-8ec0-9f88d0842381') AS TransEnable,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} order by a.InvCode asc";
|
|
#endregion
|
|
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
a.FromWarehouseCode,
|
|
'' AS Type,isnull(a.EATTRIBUTE29,'') AS OutWorkPoint,isnull(a.EATTRIBUTE30,'') AS InWorkPoint,
|
|
ISNULL(tlo.F_Define1,'') AS MLocationCode,
|
|
ISNULL(tlo.F_Define2,'') AS MWareHouseCode,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableName = @"ICSTransferApplication a
|
|
LEFT JOIN (select a.F_Define1,a.F_Define2 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_EnCode='TransLocation') tlo ON a.ToWarehouseCode=tlo.F_Define2";
|
|
|
|
if (isPN == "1")
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.Status='2' AND a.Status<>'3' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='2' AND a.Status<>'3' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
}
|
|
singleWhere = @" a.TransferNO='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.StepTransferDocIn.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 两步调出(合并发料)
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode010' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-a.OutQuantity>0";
|
|
|
|
singleWhere = @" a.OutCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.OutQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 其他出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.OutQuantity, 0)>0";
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnOtherOut", JsonData.User, cmd);
|
|
singleWhere = @" a.OutCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.OutQuantity,0)";
|
|
|
|
|
|
#region 锐腾杂发控制线边仓发料
|
|
DataTable rtdt = null;
|
|
|
|
string rtsql = @"select a.F_ItemCode,a.F_Define1 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='d51a7d1a-cc8a-4b8e-b306-d4ef3a108549' and a.F_EnabledMark='1' AND a.F_ItemCode='{0}'";
|
|
rtsql = string.Format(rtsql, JsonData.User);
|
|
rtdt = DBHelper.SQlReturnData(rtsql, cmd);
|
|
if (rtdt != null && rtdt.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < rtdt.Rows.Count; i++)
|
|
{
|
|
whcode = rtdt.Rows[i]["F_Define1"].ToString();
|
|
}
|
|
}
|
|
|
|
if (whcode != "")
|
|
{
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.OutQuantity, 0)>0 and a.WHCode in ({2})";
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 其他出库-自动出库
|
|
else if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
sqlCheck += @"IF EXISTS (SELECT 1
|
|
FROM ICSOtherOut a
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=a.InvCode AND inv.WorkPoint=a.WorkPoint
|
|
WHERE {2} " + DBHelper.SearchConditonGet("Trans_btnOtherOut", JsonData.User, cmd) + @")
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo530") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = false;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.OutQuantity, 0)>0 ";
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnOtherOutAuto", JsonData.User, cmd);
|
|
singleWhere = @" a.OutCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.OutQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 红字其他入库
|
|
else if (TransType == TransTypeEnum.OtherInRedDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.InQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherIn a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.InQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherIn a ";
|
|
|
|
where = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-a.InQuantity>0 AND a.Type='2'";
|
|
singleWhere = @" a.InCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.InQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode002' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,
|
|
ISNULL(a.EATTRIBUTE3,'') AS Memo,";
|
|
|
|
tableNameMerge = @"ICSMOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,
|
|
ISNULL(a.EATTRIBUTE3,'') AS Memo,
|
|
";
|
|
tableName = @"ICSMOApply a ";
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
singleWhere = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
// 东辉增加备用字段
|
|
//受益部门(EATTRIBUTE)、单据类型EATTRIBUTE2、
|
|
//RD编号EATTRIBUTE5、项目编号EATTRIBUTE8、实际领用部门DepName、备注EATTRIBUTE11
|
|
if (DBHelper.IsU9())
|
|
{
|
|
columns += @"isnull(a.EATTRIBUTE15,'') as EATTRIBUTE1,
|
|
isnull(a.EATTRIBUTE17,'') as EATTRIBUTE2,
|
|
isnull(a.EATTRIBUTE5,'') as EATTRIBUTE5,
|
|
isnull(a.EATTRIBUTE8,'') as EATTRIBUTE8,
|
|
isnull(its.F_itemName,'') as DepName,
|
|
isnull(a.EATTRIBUTE11,'') as EATTRIBUTE11,
|
|
isnull(lotinfo.qty,0) as invLotQty,
|
|
";
|
|
tableName = @"ICSMOApply a
|
|
LEFT join Sys_SRM_Items it on it.F_EnCode = 'LYDep'
|
|
LEFT join Sys_SRM_ItemsDetail its on it.F_id = its.f_itemid and its.F_itemcode = a.DepCode
|
|
left join (select invcode,sum(Quantity) as qty from icswarehouselotinfo group by invcode) lotinfo on a.invcode = lotinfo.invcode
|
|
|
|
";
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
sqlCheck += @"
|
|
DECLARE @status VARCHAR(20)
|
|
select top 1 @status = status from ICSMOApply where ApplyCode='" + JsonData.TransCode + @"'
|
|
IF(@status!=2)
|
|
BEGIN
|
|
RAISERROR('单据不是审核状态无法发料',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
#endregion
|
|
#region 补料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode012' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOReplenishment a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ReplenishmentCode AS TransCode,
|
|
a.ReplenishmentDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOReplenishment a ";
|
|
|
|
where = @" a.ReplenishmentCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
singleWhere = @" a.ReplenishmentCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.ReplenishmentCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode005' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOApply a ";
|
|
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
singleWhere = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 开立材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode003' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
singleWhere = @" a.IssueCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
|
|
#region 锐腾杂发控制线边仓发料
|
|
DataTable rtdt = null;
|
|
|
|
string rtsql = @"select a.F_ItemCode,a.F_Define1 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='d51a7d1a-cc8a-4b8e-b306-d4ef3a108549' and a.F_EnabledMark='1' AND a.F_ItemCode='{0}'";
|
|
rtsql = string.Format(rtsql, JsonData.User);
|
|
rtdt = DBHelper.SQlReturnData(rtsql, cmd);
|
|
if (rtdt != null && rtdt.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < rtdt.Rows.Count; i++)
|
|
{
|
|
whcode = rtdt.Rows[i]["F_Define1"].ToString();
|
|
}
|
|
}
|
|
|
|
if (whcode != "")
|
|
{
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0 and a.WHCode in ({2})";
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode006' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
singleWhere = @" a.IssueCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.RCVQuantity, 0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSPurchaseReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
|
|
singleWhere = @" a.RCVCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.RCVQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOutsourcingReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.RCVCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 借用(合并发料)
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode011' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.BrrowQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSBrrow a
|
|
INNER JOIN ICSMOPickMerge mer ON a.BrrowDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.BrrowQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSBrrow a ";
|
|
|
|
where = @" a.BrrowCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.BrrowQuantity,0)>0";
|
|
|
|
singleWhere = @" a.BrrowCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.BrrowCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.BrrowQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 送货单
|
|
else if (TransType == TransTypeEnum.ASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.ASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
ISNULL(asn.DNQuantity,0) AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],
|
|
--东辉新增
|
|
case when its.F_Define1 is not null then '1' else '0' end as needScan,
|
|
--海格自定义档案 急料期限
|
|
case when DATEDIFF(hour, getDate(), isnull(potemp.PlanArriveDate,'2000-01-01 00:00:00'))<=(isnull(itts.F_Define1,0)*24) then 1 else 0 end as isUrgency,invinfo.InvIQC,
|
|
case when invinfo.INVIQC =1 then isnull(ins.enable,0) else '1' end as inspection,isnull(ins.QualifiedQuantity,0) as PassQuantity,
|
|
POQuantity , YDNQuantity , (POQuantity-YDNQuantity) as NDNQuantity,";
|
|
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint
|
|
LEFT join Sys_SRM_Items it on it.F_EnCode = 'Arrive_inv'
|
|
LEFT join Sys_SRM_ItemsDetail its on it.F_id = its.f_itemid and SUBSTRING(a.InvCode, 1, 1) = its.F_Define1
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1
|
|
LEFT join Sys_SRM_Items itt on itt.F_EnCode = 'Urgent001'
|
|
LEFT join Sys_SRM_ItemsDetail itts on itt.F_id = itts.f_itemid -- itts.F_Define1
|
|
INNER JOIN ICSInventoryLotDetail lotdetail ON a.LotNo=lotdetail.LotNo AND a.WorkPoint=lotdetail.WorkPoint
|
|
INNER JOIN ICSInventory invinfo on invinfo.invcode = a.invcode AND a.WorkPoint=invinfo.WorkPoint
|
|
LEFT join
|
|
(select c.Quantity as POQuantity ,SUM(a.DNQuantity) as YDNQuantity,c.pocode ,c.sequence,c.PlanArriveDate
|
|
from ICSASNDetail a
|
|
inner join ICSInventoryLotdetail b on a.lotno =b.lotno
|
|
inner join ICSPurchaseOrder c on b.transcode = c.pocode and b.transSequence = c.sequence
|
|
GROUP BY c.pocode ,c.sequence,c.Quantity,c.PlanArriveDate) potemp on lotdetail.transcode = potemp.pocode and lotdetail.transSequence = potemp.sequence
|
|
";
|
|
|
|
where = @" asn.ASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
|
|
singleWhere = @" asn.ASNCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" asn.ASNCode='{0}' AND a.WorkPoint='{1}' AND asn.Quantity>ISNULL(asn.DNQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 委外送货单
|
|
else if (TransType == TransTypeEnum.OASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.OASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
ISNULL(asn.ODNQuantity,0) AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],isnull(ins.QualifiedQuantity,0) as PassQuantity,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSOASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
|
|
where = @" asn.OASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
singleWhere = @" asn.OASNCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" asn.OASNCode='{0}' AND a.WorkPoint='{1}' AND asn.Quantity>ISNULL(asn.ODNQuantity,0)";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
#region 入库
|
|
#region 采购入库
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 采购入库-入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.ApplyNegCode AS TransCode,lot.LotNo,
|
|
a.Sequence AS TransSequence";
|
|
|
|
tableName = @"ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg d ON a.ApplyNegCode=d.ApplyNegCode AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail cc on a.ApplyNegCode=cc.TransCode AND a.Sequence=cc.TransSequence and a.Workpoint=cc.Workpoint
|
|
INNER JOIN ICSInventoryLot lot on cc.lotno=lot.lotno and cc.workpoint=lot.workpoint";
|
|
|
|
where = @" a.ApplyNegCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>a.IssueNegQuantity AND d.Status<>'3'";
|
|
|
|
singleWhere = @" a.ApplyNegCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.ApplyNegCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueNegQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.OApplyNegCode AS TransCode,
|
|
a.Sequence AS TransSequence";
|
|
|
|
tableName = @"ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg d ON a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint";
|
|
|
|
where = @" a.OApplyNegCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>a.IssueNegQuantity AND d.Status<>'3'";
|
|
|
|
singleWhere = @" a.OApplyNegCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.OApplyNegCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.IssueNegQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureMESReceive.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.SourceCode,
|
|
a.SourceSequence,
|
|
ISNULL(a.RCVQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSManufactureReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status='1' AND a.Quantity>ISNULL(a.RCVQuantity, 0)";
|
|
|
|
singleWhere = @" a.RCVCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.RCVQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 销售出库-红字出库单原条码
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutRedYuanDoc.GetDescription())
|
|
{
|
|
columns = @"a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSSD a ";
|
|
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status='1' AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
singleWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.SSDQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 两步调入
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @"a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.InQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherIn a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
singleWhere = @" a.InCode='{0}' AND a.WorkPoint='{1}'";
|
|
completeWhere = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.InQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 锐腾两步调入
|
|
else if (TransType == TransTypeEnum.RTTwoStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.TransferNo='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.TransferNo='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.TransferNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.TransferQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SOCode ,
|
|
a.SDNDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
|
|
singleWhere = @" a.SDNCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.SDNQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 拆卸单
|
|
else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
columns = @"a.DABDOCCode AS TransCode,
|
|
a.DABDOCDetailID AS DetailID,
|
|
a.DABDOCType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.DABDOCQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSDisassemblyDoc a";
|
|
|
|
where = @" a.DABDOCCode='{0}' AND a.WorkPoint='{1}' AND a.DABDOCType='2' AND a.Status<>'3' ";
|
|
|
|
singleWhere = @" a.DABDOCCode='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.DABDOCCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>ISNULL(a.DABDOCQuantity,0)";
|
|
}
|
|
#endregion
|
|
#region 归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
columns = @"a.ReturnCode AS TransCode,
|
|
a.ReturnDetailID AS DetailID,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.ReturnQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSReturn a ";
|
|
|
|
where = @" a.ReturnCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity>ISNULL(a.ReturnQuantity, 0)";
|
|
|
|
singleWhere = @" a.ReturnCode='{0}' AND a.Status<>'3' AND a.WorkPoint='{1}'";
|
|
|
|
completeWhere = @" a.ReturnCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity>ISNULL(a.ReturnQuantity,0)";
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
if (string.IsNullOrWhiteSpace(columns) || string.IsNullOrWhiteSpace(tableName) || string.IsNullOrWhiteSpace(where))
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));
|
|
#region 判断是否启用匹配库位
|
|
|
|
if ((flag != null && flag.Rows.Count > 0) || isRTOut == "1")
|
|
//if (true)
|
|
{
|
|
sql = @"select * into #maintemp from (" + sql + @")a
|
|
select * into #resulttemp from #maintemp
|
|
truncate table #resulttemp
|
|
select a.lotno,a.locationcode,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime,a.warehousecode,isnull(ext.ProjectCode,'')as ProjectCode, isnull(ext.Version,'')as Version,
|
|
isnull(ext.Brand,'')as Brand,
|
|
isnull(ext.cFree1,'')as cFree1,
|
|
isnull(ext.cFree2,'') cFree2,
|
|
isnull(ext.cFree3,'') cFree3,
|
|
isnull(ext.cFree4,'') cFree4,
|
|
isnull(ext.cFree5,'') cFree5,
|
|
isnull(ext.cFree6,'') cFree6,
|
|
isnull(ext.cFree7,'') cFree7,
|
|
isnull(ext.cFree8,'') cFree8,
|
|
isnull(ext.cFree9,'') cFree9,
|
|
isnull(ext.cFree10,'') cFree10,ISNULL(ext.BatchCode, '') BatchCode into #barcodetemp
|
|
from ICSWareHouseLotInfo a INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN
|
|
(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp
|
|
group by invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE) b on a.invcode = b.invcode
|
|
where (a.warehousecode = b.whcode or ISNULL(b.whcode,'')='') and a.Quantity-a.lockQuantity>0 and
|
|
|
|
((LEN(ISNULL(b.ProjectCode,''))<=0)or((LEN(ISNULL(b.ProjectCode,''))>0) and ext.ProjectCode = b.ProjectCode))
|
|
and ((LEN(ISNULL(b.Version,''))<=0)or((LEN(ISNULL(b.Version,''))>0) and ext.Version =b.Version)) and
|
|
((LEN(ISNULL(b.Brand,''))<=0)or ((LEN(ISNULL(b.Brand,''))>0) and ext.Brand =b.Brand)) and
|
|
((LEN(ISNULL(b.BatchCode,''))<=0)or((LEN(ISNULL(b.BatchCode,''))>0) and ext.BatchCode =b.BatchCode)) and
|
|
((LEN(ISNULL(b.cFree1,''))<=0)or((LEN(ISNULL(b.cFree1,''))>0) and ext.cFree1 =b.cFree1)) and
|
|
((LEN(ISNULL(b.cFree2,''))<=0)or((LEN(ISNULL(b.cFree2,''))>0) and ext.cFree2 =b.cFree2)) and
|
|
((LEN(ISNULL(b.cFree3,''))<=0)or((LEN(ISNULL(b.cFree3,''))>0) and ext.cFree3 =b.cFree3)) and
|
|
((LEN(ISNULL(b.cFree4,''))<=0)or((LEN(ISNULL(b.cFree4,''))>0) and ext.cFree4 =b.cFree4)) and
|
|
((LEN(ISNULL(b.cFree5,''))<=0)or((LEN(ISNULL(b.cFree5,''))>0) and ext.cFree5 =b.cFree5)) and
|
|
((LEN(ISNULL(b.cFree6,''))<=0)or((LEN(ISNULL(b.cFree6,''))>0) and ext.cFree6 =b.cFree6)) and
|
|
((LEN(ISNULL(b.cFree7,''))<=0)or((LEN(ISNULL(b.cFree7,''))>0) and ext.cFree7 =b.cFree7)) and
|
|
((LEN(ISNULL(b.cFree8,''))<=0)or((LEN(ISNULL(b.cFree8,''))>0) and ext.cFree8 =b.cFree8)) and
|
|
((LEN(ISNULL(b.cFree9,''))<=0)or((LEN(ISNULL(b.cFree9,''))>0) and ext.cFree9 =b.cFree9)) and
|
|
((LEN(ISNULL(b.cFree10,''))<=0)or((LEN(ISNULL(b.cFree10,''))>0) and ext.cFree10 =b.cFree10)) order by a.mtime
|
|
|
|
BEGIN
|
|
DECLARE @transSequence VARCHAR(50);--当前循环的行号
|
|
DECLARE @qty decimal(18, 4);--条码表数量
|
|
DECLARE @needqty decimal(18, 4);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--本行所需数量
|
|
DECLARE @locationcode VARCHAR(50);--本行所在库位
|
|
DECLARE @WHCode VARCHAR(50);--本行所在仓库
|
|
DECLARE @invcode VARCHAR(50);--本行条码
|
|
DECLARE @mtime DATE;
|
|
DECLARE @issueQuantity decimal(18, 4);
|
|
DECLARE tempCursor CURSOR FOR (select transSequence from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity,@issueQuantity=issueQuantity from #maintemp where transSequence = @transSequence
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(a.quantity,0), @locationcode = isnull(a.locationcode,''),@lotno = isnull(a.lotno,''),@WHCode = isnull(a.warehousecode,''),@mtime=a.mtime,@invcode = b.invcode from #barcodetemp a
|
|
right JOIN(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp where transSequence=@transSequence)b on a.invcode = b.invcode
|
|
and ((isnull(b.ProjectCode,'')<>'' and b.ProjectCode = a.ProjectCode) or isnull(b.ProjectCode,'') ='') and
|
|
((isnull(b.Version,'')<>'' and b.Version = a.Version) or isnull(b.Version,'') ='') and
|
|
((isnull(b.Brand,'')<>'' and b.Brand = a.Brand )or isnull(b.Brand,'') ='') and
|
|
((isnull(b.cFree1,'')<>'' and b.cFree1 =a.cFree1) or isnull(b.cFree1,'') ='') and
|
|
((isnull(b.cFree2,'')<>'' and b.cFree2 =a.cFree2 )or isnull(b.cFree2,'') ='') and
|
|
((isnull(b.cFree3,'')<>'' and b.cFree3 =a.cFree3 )or isnull(b.cFree3,'') ='') and
|
|
((isnull(b.cFree4,'')<>'' and b.cFree4 =a.cFree4 )or isnull(b.cFree4,'') ='') and
|
|
((isnull(b.cFree5,'')<>'' and b.cFree5 =a.cFree5) or isnull(b.cFree5,'') ='') and
|
|
((isnull(b.cFree6,'')<>'' and b.cFree6 =a.cFree6 )or isnull(b.cFree6,'') ='') and
|
|
((isnull(b.cFree7,'')<>'' and b.cFree7 =a.cFree7) or isnull(b.cFree7,'') ='') and
|
|
((isnull(b.cFree8,'')<>'' and b.cFree8 =a.cFree8) or isnull(b.cFree8,'') ='') and
|
|
((isnull(b.cFree9,'')<>'' and b.cFree9 =a.cFree9) or isnull(b.cFree9,'') ='') and
|
|
((isnull(b.cFree10,'')<>'' and b.cFree10 =a.cFree10) or isnull(b.cFree10,'') ='') and
|
|
((isnull(b.BatchCode,'')<>'' and b.BatchCode =a.BatchCode) or isnull(b.BatchCode,'') ='')ORDER BY a.mtime,a.locationcode
|
|
IF(@needqty-@issueQuantity-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],@mtime,InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),@qty,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE if(@needqty-@issueQuantity-@qty<0 and ISNULL(@lotno, '')<>''and @needqty-@issueQuantity>0)
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],@mtime,InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),case WHEN ISNULL(@qty, 0)=0 THEN 0 else @needqty-@issueQuantity end ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
update #barcodetemp set quantity = @qty-@needqty+-@issueQuantity where lotno = @lotno
|
|
SET @needqty=@needqty-@issueQuantity-@qty
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],@mtime,InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),0 ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
|
|
SET @needqty=0
|
|
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
|
|
select id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,sum(LocationQty)as LocationQty,isMatched,AmountUnit,LotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #resulttemp GROUP BY id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,isMatched,AmountUnit,LotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ORDER BY locationcode ASC ,InvCode ASC
|
|
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
}
|
|
#endregion
|
|
if (isDeliveryNotice)//送货、到货、含委外
|
|
{
|
|
#region SLQ
|
|
sql = sqlCheck + @"SELECT a.ID,
|
|
{0}
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
'' AS WHCode,
|
|
inv.AmountUnit,
|
|
'' AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN ISNULL(inv.BatchEnable, '0')='1' THEN ext.BatchCode ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
}
|
|
else if (isMerge)//合并发料
|
|
{
|
|
#region SLQ
|
|
string sqlMerge = "SELECT ID FROM ICSMOPickMerge WHERE MergeID='" + JsonData.TransCode + "' AND WorkPoint='" + JsonData.WorkPoint + "'";
|
|
|
|
DataTable sign = DBHelper.SQlReturnData(sqlMerge, cmd);
|
|
if (sign != null && sign.Rows.Count > 0)
|
|
{
|
|
string whereMerge = string.Format("mer.MergeID='{0}' AND mer.WorkPoint='{1}'", JsonData.TransCode, JsonData.WorkPoint);
|
|
sql = string.Format(sql, columnsMerge, tableNameMerge, whereMerge, JsonData.TransCode, excessQtySql, invWhere, singleWhere, completeWhere);
|
|
}
|
|
else
|
|
{
|
|
sql = @" BEGIN
|
|
IF EXISTS(SELECT a.ID FROM {1} INNER JOIN ICSMOPickMerge c ON a.ID=c.SourceID AND a.WorkPoint=c.WorkPoint WHERE {2})
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo194") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sqlCheck + sql + @"
|
|
END";
|
|
}
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
sql = sqlCheck + sql;
|
|
}
|
|
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint, whcode);
|
|
singleWhere = string.Format(singleWhere, JsonData.TransCode, JsonData.WorkPoint);
|
|
completeWhere = string.Format(completeWhere, JsonData.TransCode, JsonData.WorkPoint);
|
|
sql = excludeSql + sql;
|
|
sql = string.Format(sql, columns, tableName, where, JsonData.TransCode, excessQtySql, invWhere, singleWhere, completeWhere);
|
|
|
|
sqls = string.Format(sqls, JsonData.TransCode, JsonData.WorkPoint);
|
|
Picksql = string.Format(Picksql, sqls, JsonData.WorkPoint);
|
|
|
|
//DataTable table2 = DBHelper.SQlReturnData(Picksql, cmd);
|
|
//return table2;
|
|
log.Debug("源头单据sql:" + sql);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 源头单据信息
|
|
/// <summary>
|
|
/// 源头单据信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable NewTransInformationGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
string sql = string.Empty;
|
|
string arrivalCtrlSql = string.Empty;
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
string enableCode = "";
|
|
string excessQtySql = "";
|
|
#region SLQ
|
|
string sqlCheck = @"IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {2})
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo035") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
|
|
//查询是否需要去除单据中已发完明细
|
|
string excludeSql = @"DECLARE @ExcludeEnable BIT
|
|
SET @ExcludeEnable=(SELECT Enable FROM ICSConfiguration WHERE Code='excludeInvDelivered')";
|
|
|
|
if (TransType == TransTypeEnum.ASN.GetDescription() || TransType == TransTypeEnum.OASN.GetDescription())
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
--a.WHCode,
|
|
inv.AmountUnit,
|
|
--wh.WarehouseName AS WHName,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
--CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
{4}
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
--LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
--LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WHCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2}
|
|
Order By asn.Sequence ASC";
|
|
}
|
|
else if (TransType == TransTypeEnum.RTTwoStepTransferDocIn.GetDescription())
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.ToWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
(select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='4f733e37-445b-4534-8ec0-9f88d0842381') AS TransEnable,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.ToWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
}
|
|
else
|
|
{
|
|
// sql = @"SELECT a.ID,
|
|
// {0}
|
|
//aply.sumQty,aply.sumIsQty,
|
|
// convert(varchar(100),'') AS LocationCode,
|
|
// convert(varchar(100),'') AS LotNo,
|
|
// convert(varchar(10),'') AS ToWarehouseCode,
|
|
// 0 AS LocationQty,
|
|
// 0 AS isMatched,
|
|
// a.InvCode,
|
|
// inv.InvName,
|
|
// inv.InvStd,
|
|
// a.Quantity,
|
|
// inv.InvUnit,
|
|
// a.Amount,
|
|
// a.WHCode,
|
|
// inv.AmountUnit,
|
|
// wh.WarehouseName AS WHName,
|
|
// (select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
// inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
// where b.F_id='4f733e37-445b-4534-8ec0-9f88d0842381') AS TransEnable,
|
|
// ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
// a.ExtensionID,
|
|
// CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
// ISNULL(ext.Version, '') AS Version,
|
|
// ISNULL(ext.Brand, '') AS Brand,
|
|
// ISNULL(ext.cFree1, '') AS cFree1,
|
|
// ISNULL(ext.cFree2, '') AS cFree2,
|
|
// ISNULL(ext.cFree3, '') AS cFree3,
|
|
// ISNULL(ext.cFree4, '') AS cFree4,
|
|
// ISNULL(ext.cFree5, '') AS cFree5,
|
|
// ISNULL(ext.cFree6, '') AS cFree6,
|
|
// ISNULL(ext.cFree7, '') AS cFree7,
|
|
// ISNULL(ext.cFree8, '') AS cFree8,
|
|
// ISNULL(ext.cFree9, '') AS cFree9,
|
|
// ISNULL(ext.cFree10, '') AS cFree10,
|
|
// ISNULL(inv.EATTRIBUTE1, '') AS EATTRIBUTE1,
|
|
// a.MUSER AS [User],
|
|
// a.MTIME AS [MTime]
|
|
// {4}
|
|
// FROM {1}
|
|
// INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
// INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
// LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
// LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WHCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
// WHERE {2} {5} {6}";
|
|
|
|
sql = @"SELECT DISTINCT isnull(a.EATTRIBUTE8,'') AS ProjectName,isnull(a.EATTRIBUTE3,'') AS VenCode,
|
|
{0}
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
}
|
|
|
|
|
|
string Picksql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
|
|
c.Code,
|
|
c.InvCode,
|
|
c.InvName,
|
|
c.InvStd,
|
|
c.InvUnit,
|
|
FLOOR(c.iQuantity) AS iQuantity,
|
|
d.WarehouseCode,
|
|
d.LocationCode,
|
|
d.LotNO,
|
|
FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
|
|
CONVERT(varchar(100),d.MTIME, 23) MTIME,
|
|
FLOOR(f.QTYTotal) QTYTotal INTO #temp
|
|
FROM
|
|
({0}) c
|
|
LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND ((LEN(ISNULL(c.WHCode,''))<=0) OR (LEN(ISNULL(c.WHCode,''))>0) AND c.WhCode=d.WarehouseCode) AND d.WorkPoint='{1}' AND d.Quantity>0
|
|
left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
|
|
LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
|
|
|
|
|
|
DECLARE @ItemCode VARCHAR(50),
|
|
@QTY DECIMAL(18,3),
|
|
@ItemCodeCurrent VARCHAR(50),
|
|
@QTYCurrent DECIMAL(18,3),
|
|
@iQuantityCurrent DECIMAL(18,3),
|
|
@CanDelete BIT,
|
|
@Row INT,
|
|
@rowCurrent INT
|
|
SET @Row = @@rowcount
|
|
SET @rowCurrent=1
|
|
SET @CanDelete=0
|
|
SET @ItemCode=''
|
|
|
|
WHILE @rowCurrent<=@Row
|
|
BEGIN
|
|
SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
|
|
|
|
PRINT(@rowCurrent)
|
|
IF @ItemCode<>@ItemCodeCurrent
|
|
BEGIN
|
|
SET @ItemCode=@ItemCodeCurrent
|
|
SET @QTY=0
|
|
SET @CanDelete=0
|
|
END
|
|
|
|
IF @CanDelete=1
|
|
BEGIN
|
|
DELETE FROM #temp WHERE rowNo=@rowCurrent
|
|
SET @rowCurrent += 1
|
|
CONTINUE
|
|
END
|
|
|
|
SET @QTY += @QTYCurrent
|
|
IF @QTY>=@iQuantityCurrent
|
|
BEGIN
|
|
SET @CanDelete=1
|
|
END
|
|
|
|
SET @rowCurrent += 1
|
|
END
|
|
SELECT * FROM #temp
|
|
DROP TABLE #temp
|
|
";
|
|
#endregion
|
|
|
|
bool isDeliveryNotice = false; //送货、到货、含委外
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
string order = string.Empty; //查询源头单据的过滤条件
|
|
string invWhere = ""; //查询特殊物料要求的过滤条件
|
|
bool isMerge = false; //合并发料
|
|
string columnsMerge = string.Empty; //合并发料查询源头单据表的特殊列名
|
|
string tableNameMerge = string.Empty; //合并发料查询源头单据表名
|
|
string sqls = string.Empty;
|
|
string sqlCheckSign = "";
|
|
string isRTOut = "0";
|
|
string isPN = "0";
|
|
string whcode = "";
|
|
string EATTRIBUTE = "";
|
|
DataTable flag = null;
|
|
|
|
#region 检料表信息
|
|
//enableCode = "";
|
|
//excessQtySql = "";
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over001";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单备料sql
|
|
sqls = @" SELECT
|
|
c.MOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
b.InvUnit,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOPick a
|
|
inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
enableCode = "Over002";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
enableCode = "Over003";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over004";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外备料SQL
|
|
sqls = @" select
|
|
c.OOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOOPick a
|
|
left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
enableCode = "Over005";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
//enableCode = "Over006";
|
|
excessQtySql = "";
|
|
#region 委外材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 销售发货SQL
|
|
sqls = @" select
|
|
a.SDNCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSSDN a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 其它出库SQL
|
|
sqls = @" select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOtherOut a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 借用SQL
|
|
sqls = @"select
|
|
a.BrrowCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSBrrow a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 物料调拨
|
|
sqls = @" select
|
|
a.TransferNO as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.FromWarehouseCode as WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSTransfer a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 两步调出
|
|
sqls = @"select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WHCode ,
|
|
a.ExtensionID
|
|
from ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 出库
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.DNCode AS TransCode,
|
|
a.DNDetailID AS DetailID,
|
|
a.DNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.RCVQuantity,0) AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
'' AS CusName,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSDeliveryNotice a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(RCVQuantity) AS sumIsQty,WorkPoint,DNCode from ICSDeliveryNotice GROUP BY WorkPoint,DNCode) aply ON aply.WorkPoint=b.WorkPoint AND aply.DNCode=b.DNCode";
|
|
|
|
where = @" a.DNCode='{0}' AND a.WorkPoint='{1}' AND a.DNType='2' AND a.Status<>'3'";
|
|
|
|
|
|
}
|
|
#region 采购退货(采购订单)
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.DNCode AS TransCode,
|
|
a.DNDetailID AS DetailID,
|
|
a.DNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.Quantity - a.RCVQuantity AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
'' AS CusName,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.DNCode='{0}' AND a.WorkPoint='{1}' AND a.DNType='1' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
//#region 工单关联
|
|
//else if (TransType == TransTypeEnum.ICSMOReceive.GetDescription())
|
|
//{
|
|
// isDeliveryNotice = true;
|
|
// columns = @"a.MOCode AS TransCode,
|
|
// a.Sequence AS TransSequence,";
|
|
|
|
// tableName = @"ICSMO a ";
|
|
|
|
// where = @" a.MOCode='{0}' AND a.WorkPoint='{1}' and a.ERPStatus<>'3'";
|
|
//}
|
|
//#endregion
|
|
#region 委外发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
{
|
|
if (JsonData.IsRTOut == "1")
|
|
{
|
|
isRTOut = "1";
|
|
}
|
|
else
|
|
{
|
|
isRTOut = "0";
|
|
}
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode004' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.OOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.OOCode AS TransCode";
|
|
|
|
tableName = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN (SELECT SUM(a.Quantity) AS sumQty,SUM(a.IssueQuantity) AS sumIsQty,a.WorkPoint,b.OOCode from ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint GROUP BY a.WorkPoint,b.OOCode) aply ON aply.WorkPoint=b.WorkPoint AND aply.OOCode=b.OOCode";
|
|
|
|
//where = @" b.OOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.Status<>'3' and isnull(a.EATTRIBUTE1,'')<>'1' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.SupplyType='3' AND b.Status<>'3' and isnull(a.EATTRIBUTE1,'')<>'1' ";
|
|
}
|
|
else
|
|
{
|
|
where = @" b.OOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.Status<>'3' and isnull(a.EATTRIBUTE1,'')<>'1' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by b.OOCode asc";
|
|
}
|
|
#endregion
|
|
#region 委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.ODNCode AS TransCode";
|
|
|
|
tableName = @"ICSODeliveryNotice a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(RCVQuantity) AS sumIsQty,WorkPoint,ODNCode from ICSODeliveryNotice GROUP BY WorkPoint,ODNCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.ODNCode=a.ODNCode";
|
|
|
|
//where = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.ODNType='2' AND a.Status<>'3'";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.ODNType='2' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @"a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.ODNType='2' AND a.Status<>'3'";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.ODNCode asc";
|
|
}
|
|
#endregion
|
|
#region 委外退货(委外采购订单)
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBackPo.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.ODNCode AS TransCode,
|
|
a.ODNDetailID AS DetailID,
|
|
a.ODNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.Quantity - ISNULL(a.RCVQuantity,0) AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
'' AS CusName,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSODeliveryNotice a ";
|
|
|
|
where = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.ODNType='1' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 生产发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode001' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
'' AS CusName,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
'' AS CusName,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,
|
|
ISNULL(a.EATTRIBUTE3, isnull(A.Quantity,0)) as DHexcessQty,";
|
|
|
|
tableName = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1'
|
|
AND ((@ExcludeEnable=1 AND dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{2}', 2, 2,'')-ISNULL(a.IssueQuantity,0)>0) OR (@ExcludeEnable=0 OR @ExcludeEnable IS NULL)) ";
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnInvOut", JsonData.User, cmd);
|
|
|
|
|
|
#region 锐腾杂发控制线边仓发料
|
|
DataTable rtdt = null;
|
|
|
|
string rtsql = @"select a.F_ItemCode,a.F_Define1 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='d51a7d1a-cc8a-4b8e-b306-d4ef3a108549' and a.F_EnabledMark='1' AND a.F_ItemCode='{0}'";
|
|
rtsql = string.Format(rtsql, JsonData.User);
|
|
rtdt = DBHelper.SQlReturnData(rtsql, cmd);
|
|
if (rtdt != null && rtdt.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < rtdt.Rows.Count; i++)
|
|
{
|
|
whcode = rtdt.Rows[i]["F_Define1"].ToString();
|
|
}
|
|
}
|
|
|
|
if (whcode != "")
|
|
{
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1' and a.WHCode in ({2})";
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 生产发料——自动出库
|
|
else if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode001' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
'' AS CusName,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
'' AS CusName,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,
|
|
ISNULL(a.EATTRIBUTE3, isnull(A.Quantity,0)) as DHexcessQty,";
|
|
|
|
tableName = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1'
|
|
AND ((@ExcludeEnable=1 AND dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{2}', 2, 2,'')-ISNULL(a.IssueQuantity,0)>0) OR (@ExcludeEnable=0 OR @ExcludeEnable IS NULL)) ";
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnInvOutAuto", JsonData.User, cmd);
|
|
|
|
}
|
|
#endregion
|
|
#region 销售出库(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode007' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSDN a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3'
|
|
AND a.Quantity-ISNULL(a.SDNQuantity,0)>0";
|
|
}
|
|
#endregion
|
|
#region 销售发货单-快递单
|
|
else if (TransType == TransTypeEnum.SalesBindCourierDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode007' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSDN a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
a.EATTRIBUTE3 AS CourierCode,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 销售出库-出库单(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsPNU9())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode013' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
isnull(a.EATTRIBUTE3,'') AS FDQuantity,
|
|
a.SDNCode,
|
|
a.Type,a.CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSSD a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SSDCode AS TransCode";
|
|
|
|
tableName = @"ICSSSD a
|
|
--INNER JOIN ICSSO b on a.SDNCode=b.SOcode and a.SDNSequence=b.Sequence and a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(SSDQuantity) AS sumIsQty,WorkPoint,SSDCode from ICSSSD GROUP BY WorkPoint,SSDCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.SSDCode=a.SSDCode";
|
|
|
|
//where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-a.SSDQuantity>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' ";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.SSDQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.SSDCode asc";
|
|
}
|
|
else
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode013' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
'' AS FDQuantity,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSSD a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SSDCode AS TransCode,
|
|
a.SSDDetailID AS DetailID,
|
|
'' AS FDQuantity,
|
|
a.SDNCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSSD a ";
|
|
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-a.SSDQuantity>0";
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region 盘点
|
|
else if (TransType == TransTypeEnum.Check.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
a.Quantity,
|
|
a.SelectLevel AS LocationCode,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.CheckCode AS TransCode,
|
|
a.ID,
|
|
'' AS Type,";
|
|
|
|
tableName = @"ICSCheck a ";
|
|
|
|
where = @" a.CheckCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 一步调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
if (JsonData.IsPN == "1")
|
|
{
|
|
isPN = "1";
|
|
}
|
|
else
|
|
{
|
|
isPN = "0";
|
|
}
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode009' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
string Wsql = @"select ColumnCode from ICSColumnEnable where TableCode='ICSTransfer' and Enable='1' and WorkPoint='{0}'";
|
|
DataTable chekdt = DBHelper.SQlReturnData(Wsql, cmd);
|
|
if (chekdt.Rows.Count > 0)
|
|
{
|
|
EATTRIBUTE = "a." + chekdt.Rows[0]["ColumnCode"].ToString();
|
|
}
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'' AS CusName,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableNameMerge = @"ICSTransfer a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
aply.sumQty,aply.sumIsQty,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
isnull(a.EATTRIBUTE3,'') AS ToWorkPoint,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
'' AS CusName,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableName = @"ICSTransfer a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(TransferQuantity) AS sumIsQty,WorkPoint,TransferNO from ICSTransfer GROUP BY WorkPoint,TransferNO) aply ON aply.WorkPoint=a.WorkPoint AND aply.TransferNO=a.TransferNO";
|
|
|
|
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
if (isPN == "1")
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3' and a.type='3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3'";
|
|
}
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.TransferQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.TransferNO asc";
|
|
|
|
}
|
|
#endregion
|
|
#region 物料调拨-自动
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocAuto.GetDescription())
|
|
{
|
|
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode009' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
string Wsql = @"select ColumnCode from ICSColumnEnable where TableCode='ICSTransfer' and Enable='1' and WorkPoint='{0}'";
|
|
DataTable chekdt = DBHelper.SQlReturnData(Wsql, cmd);
|
|
if (chekdt.Rows.Count > 0)
|
|
{
|
|
EATTRIBUTE = "a." + chekdt.Rows[0]["ColumnCode"].ToString();
|
|
}
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableNameMerge = @"ICSTransfer a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} {5} ";
|
|
#endregion
|
|
if (!EATTRIBUTE.Equals(""))
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
'" + EATTRIBUTE + @" as NewWorkPoint,'
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
}
|
|
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3' ";
|
|
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnInvTransAuto", JsonData.User, cmd);
|
|
}
|
|
#endregion
|
|
#region 调拨申请单(领料)
|
|
else if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
if (JsonData.IsPN == "1")
|
|
{
|
|
isPN = "1";
|
|
}
|
|
else
|
|
{
|
|
isPN = "0";
|
|
}
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,isnull(a.EATTRIBUTE29,'') AS OutWorkPoint,isnull(a.EATTRIBUTE30,'') AS InWorkPoint,
|
|
a.Sequence AS TransSequence,
|
|
'' AS CusName,
|
|
ISNULL(a.TransferQuantity,0) AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableNameMerge = @"ICSTransferApplication a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT DISTINCT
|
|
{0}
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.TransferNO AS TransCode";
|
|
|
|
tableName = @"ICSTransferApplication a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(TransferQuantity) AS sumIsQty,WorkPoint,TransferNO from ICSTransferApplication GROUP BY WorkPoint,TransferNO) aply ON aply.WorkPoint=a.WorkPoint AND aply.TransferNO=a.TransferNO";
|
|
|
|
if (isPN == "1")
|
|
{
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.Status='2' AND a.Status<>'3'";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.TransferQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.TransferNO asc";
|
|
|
|
}
|
|
else
|
|
{
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='2' AND a.Status<>'3'";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.TransferQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.TransferQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.TransferNO asc";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
#endregion
|
|
#region 调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.StepTransferDocIn.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 两步调出(合并发料)
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode010' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-a.OutQuantity>0";
|
|
}
|
|
#endregion
|
|
#region 其他出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode";
|
|
|
|
tableName = @"ICSOtherOut a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(OutQuantity) AS sumIsQty,WorkPoint,OutCode from ICSOtherOut GROUP BY WorkPoint,OutCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.OutCode=a.OutCode";
|
|
|
|
// where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.OutQuantity, 0)>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.OutQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.OutQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.OutQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.OutQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.OutQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.OutCode asc";
|
|
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnOtherOut", JsonData.User, cmd);
|
|
|
|
#region 锐腾杂发控制线边仓发料
|
|
DataTable rtdt = null;
|
|
|
|
string rtsql = @"select a.F_ItemCode,a.F_Define1 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='d51a7d1a-cc8a-4b8e-b306-d4ef3a108549' and a.F_EnabledMark='1' AND a.F_ItemCode='{0}'";
|
|
rtsql = string.Format(rtsql, JsonData.User);
|
|
rtdt = DBHelper.SQlReturnData(rtsql, cmd);
|
|
if (rtdt != null && rtdt.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < rtdt.Rows.Count; i++)
|
|
{
|
|
whcode = rtdt.Rows[i]["F_Define1"].ToString();
|
|
}
|
|
}
|
|
|
|
if (whcode != "")
|
|
{
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.OutQuantity, 0)>0 and a.WHCode in ({2})";
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 其他出库-自动出库
|
|
else if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
sqlCheck += @"IF EXISTS (SELECT 1
|
|
FROM ICSOtherOut a
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=a.InvCode AND inv.WorkPoint=a.WorkPoint
|
|
WHERE {2} " + DBHelper.SearchConditonGet("Trans_btnOtherOut", JsonData.User, cmd) + @")
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo530") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = false;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.OutQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.OutQuantity, 0)>0 ";
|
|
invWhere = DBHelper.SearchConditonGet("Trans_btnOtherOutAuto", JsonData.User, cmd);
|
|
}
|
|
#endregion
|
|
#region 红字其他入库
|
|
else if (TransType == TransTypeEnum.OtherInRedDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.InQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherIn a
|
|
INNER JOIN ICSMOPickMerge mer ON a.id=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.InQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherIn a ";
|
|
|
|
where = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-a.InQuantity>0 AND a.Type='2'";
|
|
}
|
|
#endregion
|
|
#region 领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode002' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode
|
|
";
|
|
tableName = @"ICSMOApply a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(IssueQuantity) AS sumIsQty,WorkPoint,ApplyCode from ICSMOApply GROUP BY WorkPoint,ApplyCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.ApplyCode=a.ApplyCode";
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.ApplyCode asc";
|
|
|
|
// 东辉增加备用字段
|
|
//受益部门(EATTRIBUTE)、单据类型EATTRIBUTE2、
|
|
//RD编号EATTRIBUTE5、项目编号EATTRIBUTE8、实际领用部门DepName、备注EATTRIBUTE11
|
|
if (DBHelper.IsU9())
|
|
{
|
|
columns += @"isnull(a.EATTRIBUTE15,'') as EATTRIBUTE1,
|
|
isnull(a.EATTRIBUTE17,'') as EATTRIBUTE2,
|
|
isnull(a.EATTRIBUTE5,'') as EATTRIBUTE5,
|
|
isnull(a.EATTRIBUTE8,'') as EATTRIBUTE8,
|
|
isnull(its.F_itemName,'') as DepName,
|
|
isnull(a.EATTRIBUTE11,'') as EATTRIBUTE11,
|
|
isnull(lotinfo.qty,0) as invLotQty,
|
|
";
|
|
tableName = @"ICSMOApply a
|
|
LEFT join Sys_SRM_Items it on it.F_EnCode = 'LYDep'
|
|
LEFT join Sys_SRM_ItemsDetail its on it.F_id = its.f_itemid and its.F_itemcode = a.DepCode
|
|
left join (select invcode,sum(Quantity) as qty from icswarehouselotinfo group by invcode) lotinfo on a.invcode = lotinfo.invcode
|
|
|
|
";
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
sqlCheck += @"
|
|
DECLARE @status VARCHAR(20)
|
|
select top 1 @status = status from ICSMOApply where ApplyCode='" + JsonData.TransCode + @"'
|
|
IF(@status!=2)
|
|
BEGIN
|
|
RAISERROR('单据不是审核状态无法发料',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
#endregion
|
|
#region 补料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode012' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOReplenishment a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ReplenishmentCode AS TransCode,
|
|
a.ReplenishmentDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOReplenishment a ";
|
|
|
|
where = @" a.ReplenishmentCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode005' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
'' AS CusName,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOApply a ";
|
|
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
#endregion
|
|
#region 开立材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode003' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
#region 锐腾杂发控制线边仓发料
|
|
DataTable rtdt = null;
|
|
|
|
string rtsql = @"select a.F_ItemCode,a.F_Define1 from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='d51a7d1a-cc8a-4b8e-b306-d4ef3a108549' and a.F_EnabledMark='1' AND a.F_ItemCode='{0}'";
|
|
rtsql = string.Format(rtsql, JsonData.User);
|
|
rtdt = DBHelper.SQlReturnData(rtsql, cmd);
|
|
if (rtdt != null && rtdt.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < rtdt.Rows.Count; i++)
|
|
{
|
|
whcode = rtdt.Rows[i]["F_Define1"].ToString();
|
|
}
|
|
}
|
|
|
|
if (whcode != "")
|
|
{
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0 and a.WHCode in ({2})";
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode006' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.IssueQuantity,0)>0";
|
|
}
|
|
#endregion
|
|
#region 开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode";
|
|
|
|
tableName = @"ICSPurchaseReceive a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(RCVQuantity) AS sumIsQty,WorkPoint,RCVCode from ICSPurchaseReceive GROUP BY WorkPoint,RCVCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.RCVCode=a.RCVCode";
|
|
|
|
//where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.RCVCode asc";
|
|
}
|
|
#endregion
|
|
#region 开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode";
|
|
|
|
tableName = @"ICSOutsourcingReceive a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(RCVQuantity) AS sumIsQty,WorkPoint,RCVCode from ICSOutsourcingReceive GROUP BY WorkPoint,RCVCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.RCVCode=a.RCVCode";
|
|
|
|
//where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.RCVCode asc";
|
|
}
|
|
#endregion
|
|
#region 借用(合并发料)
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode011' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.BrrowQuantity,0) AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSBrrow a
|
|
INNER JOIN ICSMOPickMerge mer ON a.BrrowDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.BrrowQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSBrrow a ";
|
|
|
|
where = @" a.BrrowCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' AND a.Quantity-ISNULL(a.BrrowQuantity,0)>0";
|
|
}
|
|
#endregion
|
|
#region 送货单
|
|
else if (TransType == TransTypeEnum.ASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.ASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
ISNULL(asn.DNQuantity,0) AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],
|
|
--东辉新增
|
|
case when its.F_Define1 is not null then '1' else '0' end as needScan,
|
|
--海格自定义档案 急料期限
|
|
case when DATEDIFF(hour, getDate(), isnull(potemp.PlanArriveDate,'2000-01-01 00:00:00'))<=(isnull(itts.F_Define1,0)*24) then 1 else 0 end as isUrgency,invinfo.InvIQC,
|
|
case when invinfo.INVIQC =1 then isnull(ins.enable,0) else '1' end as inspection,
|
|
POQuantity , YDNQuantity , (POQuantity-YDNQuantity) as NDNQuantity,";
|
|
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint
|
|
LEFT join Sys_SRM_Items it on it.F_EnCode = 'Arrive_inv'
|
|
LEFT join Sys_SRM_ItemsDetail its on it.F_id = its.f_itemid and SUBSTRING(a.InvCode, 1, 1) = its.F_Define1
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1
|
|
LEFT join Sys_SRM_Items itt on itt.F_EnCode = 'Urgent001'
|
|
LEFT join Sys_SRM_ItemsDetail itts on itt.F_id = itts.f_itemid -- itts.F_Define1
|
|
INNER JOIN ICSInventoryLotDetail lotdetail ON a.LotNo=lotdetail.LotNo AND a.WorkPoint=lotdetail.WorkPoint
|
|
INNER JOIN ICSInventory invinfo on invinfo.invcode = a.invcode AND a.WorkPoint=invinfo.WorkPoint
|
|
LEFT join
|
|
(select c.Quantity as POQuantity ,SUM(a.DNQuantity) as YDNQuantity,c.pocode ,c.sequence,c.PlanArriveDate
|
|
from ICSASNDetail a
|
|
inner join ICSInventoryLotdetail b on a.lotno =b.lotno
|
|
inner join ICSPurchaseOrder c on b.transcode = c.pocode and b.transSequence = c.sequence
|
|
GROUP BY c.pocode ,c.sequence,c.Quantity,c.PlanArriveDate) potemp on lotdetail.transcode = potemp.pocode and lotdetail.transSequence = potemp.sequence
|
|
";
|
|
|
|
where = @" asn.ASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
|
|
}
|
|
#endregion
|
|
#region 委外送货单
|
|
else if (TransType == TransTypeEnum.OASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.OASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
ISNULL(asn.ODNQuantity,0) AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSOASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint ";
|
|
|
|
where = @" asn.OASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
|
|
}
|
|
#endregion
|
|
#endregion
|
|
#region 入库
|
|
#region 采购入库
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 采购入库-入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode";
|
|
|
|
tableName = @"ICSPurchaseReceive a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(RCVQuantity) AS sumIsQty,WorkPoint,RCVCode from ICSPurchaseReceive GROUP BY WorkPoint,RCVCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.RCVCode=a.RCVCode";
|
|
|
|
//where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-a.SSDQuantity>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.RCVCode asc";
|
|
}
|
|
#endregion
|
|
#region 委外入库-入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode";
|
|
|
|
tableName = @"ICSOutsourcingReceive a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(RCVQuantity) AS sumIsQty,WorkPoint,RCVCode from ICSOutsourcingReceive GROUP BY WorkPoint,RCVCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.RCVCode=a.RCVCode";
|
|
|
|
//where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-a.SSDQuantity>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.RCVCode asc";
|
|
}
|
|
#endregion
|
|
#region 审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT DISTINCT
|
|
{0}
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
#endregion
|
|
columns = @"a.ApplyNegCode AS TransCode";
|
|
|
|
tableName = @"ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg d ON a.ApplyNegCode=d.ApplyNegCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(IssueNegQuantity) AS sumIsQty,WorkPoint,ApplyNegCode from ICSMOApplyNegDetail GROUP BY WorkPoint,ApplyNegCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.ApplyNegCode=a.ApplyNegCode";
|
|
|
|
//where = @" a.OApplyNegCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>a.IssueNegQuantity AND d.Status<>'3'";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND d.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.ApplyNegCode='{0}' AND a.WorkPoint='{1}' AND d.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueNegQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.ApplyNegCode asc";
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT DISTINCT
|
|
{0}
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
//columns = @"a.OApplyNegCode AS TransCode,
|
|
// a.Sequence AS TransSequence";
|
|
|
|
columns = @"a.OApplyNegCode AS TransCode";
|
|
|
|
tableName = @"ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg d ON a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(IssueNegQuantity) AS sumIsQty,WorkPoint,OApplyNegCode from ICSOApplyNegDetail GROUP BY WorkPoint,OApplyNegCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.OApplyNegCode=a.OApplyNegCode";
|
|
|
|
//where = @" a.OApplyNegCode='{0}' AND a.WorkPoint='{1}' AND a.Quantity>a.IssueNegQuantity AND d.Status<>'3'";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND d.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.OApplyNegCode='{0}' AND a.WorkPoint='{1}' AND d.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueNegQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.IssueNegQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.OApplyNegCode asc";
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
{
|
|
columns = @"a.MOCode AS TransCode";
|
|
|
|
tableName = @"ICSMO a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(RCVQuantity) AS sumIsQty,WorkPoint,MOCode from ICSMO GROUP BY WorkPoint,MOCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.MOCode=a.MOCode";
|
|
|
|
//where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-a.SSDQuantity>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.MOStatus<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.MOCode='{0}' AND a.WorkPoint='{1}' AND a.MOStatus<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.RCVQuantity,0)>0";
|
|
}
|
|
|
|
|
|
if (JsonData.WHCode != "")
|
|
{
|
|
where += @" and a.whcode='{3}'";
|
|
}
|
|
|
|
order = @"order by a.MOCode asc";
|
|
}
|
|
#endregion
|
|
#region 开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureMESReceive.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.SourceCode,
|
|
a.SourceSequence,
|
|
ISNULL(a.RCVQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSManufactureReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status='1' AND a.Quantity>ISNULL(a.RCVQuantity, 0)";
|
|
}
|
|
#endregion
|
|
#region 返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 销售出库-红字出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutRedDoc.GetDescription())
|
|
{
|
|
//columns = @"a.SSDCode AS TransCode,
|
|
// a.SSDDetailID AS DetailID,
|
|
// a.SDNCode,
|
|
// a.Type,
|
|
// a.Sequence AS TransSequence,
|
|
// ISNULL(a.SSDQuantity,0) AS IssueQuantity,";
|
|
|
|
//tableName = @"ICSSSD a ";
|
|
|
|
//where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status='1' AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
|
|
columns = @"a.SSDCode AS TransCode";
|
|
|
|
tableName = @"ICSSSD a
|
|
--INNER JOIN ICSSO b on a.SDNCode=b.SOcode and a.SDNSequence=b.Sequence and a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(SSDQuantity) AS sumIsQty,WorkPoint,SSDCode from ICSSSD GROUP BY WorkPoint,SSDCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.SSDCode=a.SSDCode";
|
|
|
|
//where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-a.SSDQuantity>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3' ";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.SSDQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.SSDCode asc";
|
|
}
|
|
#endregion
|
|
#region 销售出库-红字出库单原条码
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutRedYuanDoc.GetDescription())
|
|
{
|
|
columns = @"a.SSDCode AS TransCode";
|
|
|
|
tableName = @"ICSSSD a ";
|
|
|
|
where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status='1' AND a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
|
|
|
|
}
|
|
#endregion
|
|
#region 两步调入
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @"a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.InQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherIn a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 锐腾两步调入
|
|
else if (TransType == TransTypeEnum.RTTwoStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.TransferNo='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SOCode ,
|
|
a.SDNDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.SDNQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
columns = @"a.InCode AS TransCode";
|
|
|
|
tableName = @"ICSOtherIn a
|
|
LEFT JOIN (SELECT SUM(Quantity) AS sumQty,SUM(InQuantity) AS sumIsQty,WorkPoint,InCode from ICSOtherIn GROUP BY WorkPoint,InCode) aply ON aply.WorkPoint=a.WorkPoint AND aply.InCode=a.InCode";
|
|
|
|
//where = @" a.SSDCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' AND a.Quantity-a.SSDQuantity>0";
|
|
|
|
if (JsonData.TransCode == "")
|
|
{
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
else
|
|
{
|
|
where = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3' ";
|
|
}
|
|
|
|
if (JsonData.TransSelect == "当天单据")
|
|
{
|
|
where += @" and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.InQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "7天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.InQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "30天内单据")
|
|
{
|
|
where += @" and a.mtime >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE))
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) AND a.Quantity-ISNULL(a.InQuantity,0)>0";
|
|
}
|
|
else if (JsonData.TransSelect == "已完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.InQuantity,0)=0";
|
|
}
|
|
else if (JsonData.TransSelect == "未完成")
|
|
{
|
|
where += @" AND a.Quantity-ISNULL(a.InQuantity,0)>0";
|
|
}
|
|
|
|
order = @"order by a.InCode asc";
|
|
}
|
|
#endregion
|
|
#region 拆卸单
|
|
else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
columns = @"a.DABDOCCode AS TransCode,
|
|
a.DABDOCDetailID AS DetailID,
|
|
a.DABDOCType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.DABDOCQuantity,0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSDisassemblyDoc a";
|
|
|
|
where = @" a.DABDOCCode='{0}' AND a.WorkPoint='{1}' AND a.DABDOCType='2' AND a.Status<>'3' ";
|
|
}
|
|
#endregion
|
|
#region 归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
if (string.IsNullOrWhiteSpace(columns) || string.IsNullOrWhiteSpace(tableName) || string.IsNullOrWhiteSpace(where))
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));
|
|
#region 判断是否启用匹配库位
|
|
|
|
if ((flag != null && flag.Rows.Count > 0) || isRTOut == "1")
|
|
//if (true)
|
|
{
|
|
sql = @"select * into #maintemp from (" + sql + @")a
|
|
select * into #resulttemp from #maintemp
|
|
truncate table #resulttemp
|
|
select a.lotno,a.locationcode,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime,a.warehousecode,isnull(ext.ProjectCode,'')as ProjectCode, isnull(ext.Version,'')as Version,
|
|
isnull(ext.Brand,'')as Brand,
|
|
isnull(ext.cFree1,'')as cFree1,
|
|
isnull(ext.cFree2,'') cFree2,
|
|
isnull(ext.cFree3,'') cFree3,
|
|
isnull(ext.cFree4,'') cFree4,
|
|
isnull(ext.cFree5,'') cFree5,
|
|
isnull(ext.cFree6,'') cFree6,
|
|
isnull(ext.cFree7,'') cFree7,
|
|
isnull(ext.cFree8,'') cFree8,
|
|
isnull(ext.cFree9,'') cFree9,
|
|
isnull(ext.cFree10,'') cFree10,ISNULL(ext.BatchCode, '') BatchCode into #barcodetemp
|
|
from ICSWareHouseLotInfo a INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN
|
|
(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp
|
|
group by invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE) b on a.invcode = b.invcode
|
|
where (a.warehousecode = b.whcode or ISNULL(b.whcode,'')='') and a.Quantity-a.lockQuantity>0 and
|
|
|
|
((LEN(ISNULL(b.ProjectCode,''))<=0)or((LEN(ISNULL(b.ProjectCode,''))>0) and ext.ProjectCode = b.ProjectCode))
|
|
and ((LEN(ISNULL(b.Version,''))<=0)or((LEN(ISNULL(b.Version,''))>0) and ext.Version =b.Version)) and
|
|
((LEN(ISNULL(b.Brand,''))<=0)or ((LEN(ISNULL(b.Brand,''))>0) and ext.Brand =b.Brand)) and
|
|
((LEN(ISNULL(b.BatchCode,''))<=0)or((LEN(ISNULL(b.BatchCode,''))>0) and ext.BatchCode =b.BatchCode)) and
|
|
((LEN(ISNULL(b.cFree1,''))<=0)or((LEN(ISNULL(b.cFree1,''))>0) and ext.cFree1 =b.cFree1)) and
|
|
((LEN(ISNULL(b.cFree2,''))<=0)or((LEN(ISNULL(b.cFree2,''))>0) and ext.cFree2 =b.cFree2)) and
|
|
((LEN(ISNULL(b.cFree3,''))<=0)or((LEN(ISNULL(b.cFree3,''))>0) and ext.cFree3 =b.cFree3)) and
|
|
((LEN(ISNULL(b.cFree4,''))<=0)or((LEN(ISNULL(b.cFree4,''))>0) and ext.cFree4 =b.cFree4)) and
|
|
((LEN(ISNULL(b.cFree5,''))<=0)or((LEN(ISNULL(b.cFree5,''))>0) and ext.cFree5 =b.cFree5)) and
|
|
((LEN(ISNULL(b.cFree6,''))<=0)or((LEN(ISNULL(b.cFree6,''))>0) and ext.cFree6 =b.cFree6)) and
|
|
((LEN(ISNULL(b.cFree7,''))<=0)or((LEN(ISNULL(b.cFree7,''))>0) and ext.cFree7 =b.cFree7)) and
|
|
((LEN(ISNULL(b.cFree8,''))<=0)or((LEN(ISNULL(b.cFree8,''))>0) and ext.cFree8 =b.cFree8)) and
|
|
((LEN(ISNULL(b.cFree9,''))<=0)or((LEN(ISNULL(b.cFree9,''))>0) and ext.cFree9 =b.cFree9)) and
|
|
((LEN(ISNULL(b.cFree10,''))<=0)or((LEN(ISNULL(b.cFree10,''))>0) and ext.cFree10 =b.cFree10)) order by a.mtime
|
|
|
|
BEGIN
|
|
DECLARE @transSequence VARCHAR(50);--当前循环的行号
|
|
DECLARE @qty decimal(18, 4);--条码表数量
|
|
DECLARE @needqty decimal(18, 4);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--本行所需数量
|
|
DECLARE @locationcode VARCHAR(50);--本行所在库位
|
|
DECLARE @WHCode VARCHAR(50);--本行所在仓库
|
|
DECLARE @invcode VARCHAR(50);--本行条码
|
|
DECLARE @mtime DATE;
|
|
DECLARE @issueQuantity decimal(18, 4);
|
|
DECLARE tempCursor CURSOR FOR (select transSequence from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity,@issueQuantity=issueQuantity from #maintemp where transSequence = @transSequence
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(a.quantity,0), @locationcode = isnull(a.locationcode,''),@lotno = isnull(a.lotno,''),@WHCode = isnull(a.warehousecode,''),@mtime=a.mtime,@invcode = b.invcode from #barcodetemp a
|
|
right JOIN(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp where transSequence=@transSequence)b on a.invcode = b.invcode
|
|
and ((isnull(b.ProjectCode,'')<>'' and b.ProjectCode = a.ProjectCode) or isnull(b.ProjectCode,'') ='') and
|
|
((isnull(b.Version,'')<>'' and b.Version = a.Version) or isnull(b.Version,'') ='') and
|
|
((isnull(b.Brand,'')<>'' and b.Brand = a.Brand )or isnull(b.Brand,'') ='') and
|
|
((isnull(b.cFree1,'')<>'' and b.cFree1 =a.cFree1) or isnull(b.cFree1,'') ='') and
|
|
((isnull(b.cFree2,'')<>'' and b.cFree2 =a.cFree2 )or isnull(b.cFree2,'') ='') and
|
|
((isnull(b.cFree3,'')<>'' and b.cFree3 =a.cFree3 )or isnull(b.cFree3,'') ='') and
|
|
((isnull(b.cFree4,'')<>'' and b.cFree4 =a.cFree4 )or isnull(b.cFree4,'') ='') and
|
|
((isnull(b.cFree5,'')<>'' and b.cFree5 =a.cFree5) or isnull(b.cFree5,'') ='') and
|
|
((isnull(b.cFree6,'')<>'' and b.cFree6 =a.cFree6 )or isnull(b.cFree6,'') ='') and
|
|
((isnull(b.cFree7,'')<>'' and b.cFree7 =a.cFree7) or isnull(b.cFree7,'') ='') and
|
|
((isnull(b.cFree8,'')<>'' and b.cFree8 =a.cFree8) or isnull(b.cFree8,'') ='') and
|
|
((isnull(b.cFree9,'')<>'' and b.cFree9 =a.cFree9) or isnull(b.cFree9,'') ='') and
|
|
((isnull(b.cFree10,'')<>'' and b.cFree10 =a.cFree10) or isnull(b.cFree10,'') ='') and
|
|
((isnull(b.BatchCode,'')<>'' and b.BatchCode =a.BatchCode) or isnull(b.BatchCode,'') ='')ORDER BY a.mtime,a.locationcode
|
|
IF(@needqty-@issueQuantity-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],@mtime,InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),@qty,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE if(@needqty-@issueQuantity-@qty<0 and ISNULL(@lotno, '')<>''and @needqty-@issueQuantity>0)
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],@mtime,InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),case WHEN ISNULL(@qty, 0)=0 THEN 0 else @needqty-@issueQuantity end ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
update #barcodetemp set quantity = @qty-@needqty+-@issueQuantity where lotno = @lotno
|
|
SET @needqty=@needqty-@issueQuantity-@qty
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],@mtime,InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),0 ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
|
|
SET @needqty=0
|
|
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
|
|
select id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,sum(LocationQty)as LocationQty,isMatched,AmountUnit,LotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #resulttemp GROUP BY id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,isMatched,AmountUnit,LotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ORDER BY locationcode ASC ,InvCode ASC
|
|
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
}
|
|
#endregion
|
|
if (isDeliveryNotice)//送货、到货、含委外
|
|
{
|
|
#region SLQ
|
|
sql = sqlCheck + @"SELECT a.ID,
|
|
{0}
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
'' AS WHCode,
|
|
inv.AmountUnit,
|
|
'' AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN ISNULL(inv.BatchEnable, '0')='1' THEN ext.BatchCode ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
}
|
|
//else if (isMerge)//合并发料
|
|
//{
|
|
// #region SLQ
|
|
// string sqlMerge = "SELECT ID FROM ICSMOPickMerge WHERE MergeID='" + JsonData.TransCode + "' AND WorkPoint='" + JsonData.WorkPoint + "'";
|
|
|
|
// DataTable sign = DBHelper.SQlReturnData(sqlMerge, cmd);
|
|
// if (sign != null && sign.Rows.Count > 0)
|
|
// {
|
|
// string whereMerge = string.Format("mer.MergeID='{0}' AND mer.WorkPoint='{1}'", JsonData.TransCode, JsonData.WorkPoint);
|
|
// sql = string.Format(sql, columnsMerge, tableNameMerge, whereMerge, JsonData.TransCode, excessQtySql, invWhere);
|
|
// }
|
|
// else
|
|
// {
|
|
// sql = @" BEGIN
|
|
// IF EXISTS(SELECT a.ID FROM {1} INNER JOIN ICSMOPickMerge c ON a.ID=c.SourceID AND a.WorkPoint=c.WorkPoint WHERE {2})
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo194") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// " + sqlCheck + sql + @"
|
|
// END";
|
|
// }
|
|
// #endregion
|
|
//}
|
|
else
|
|
{
|
|
sql = sqlCheck + sql;
|
|
}
|
|
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint, whcode, JsonData.WHCode);
|
|
sql = excludeSql + sql;
|
|
sql = string.Format(sql, columns, tableName, where, JsonData.TransCode, excessQtySql, invWhere, order);
|
|
|
|
sqls = string.Format(sqls, JsonData.TransCode, JsonData.WorkPoint);
|
|
Picksql = string.Format(Picksql, sqls, JsonData.WorkPoint);
|
|
|
|
//DataTable table2 = DBHelper.SQlReturnData(Picksql, cmd);
|
|
//return table2;
|
|
//log.Debug("源头单据sql:" + sql);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 源头单据信息
|
|
/// <summary>
|
|
/// 获取工单生成的子线条码信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MOWireInformationGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
string sql = string.Empty;
|
|
string arrivalCtrlSql = string.Empty;
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
string excessQtySql = "";
|
|
#region SLQ
|
|
string sqlCheck = @"";
|
|
|
|
//查询是否需要去除单据中已发完明细
|
|
string excludeSql = @"";
|
|
|
|
|
|
#endregion
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
string sqls = string.Empty;
|
|
string whcode = "";
|
|
|
|
#region 出库
|
|
|
|
columns = @"a.MOCode AS TransCode,
|
|
a.ID AS DetailID,
|
|
a.LotNo,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL(a.Quantity,0) AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSMOSubInventoryLot a
|
|
";
|
|
|
|
where = @" a.MOCode='{0}' AND a.WorkPoint='{1}' ";
|
|
#endregion
|
|
|
|
#region SLQ
|
|
sql = sqlCheck + @"SELECT a.ID,
|
|
{0}
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
'' AS WHCode,
|
|
inv.AmountUnit,
|
|
'' AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN ISNULL(inv.BatchEnable, '0')='1' THEN ext.BatchCode ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
|
|
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint, whcode);
|
|
sql = excludeSql + sql;
|
|
sql = string.Format(sql, columns, tableName, where, JsonData.TransCode, excessQtySql);
|
|
|
|
log.Debug("工单子线条码sql:" + sql);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 源头单据检料表信息
|
|
/// <summary>
|
|
/// 源头单据信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransPickGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region 原拣料SLQ
|
|
|
|
// string Picksql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
|
|
// c.Code,
|
|
// c.InvCode,
|
|
// c.InvName,
|
|
// c.InvStd,
|
|
//c.InvUnit,
|
|
// FLOOR(c.iQuantity) AS iQuantity,
|
|
// d.WarehouseCode,
|
|
// d.LocationCode,
|
|
// d.LotNO,
|
|
// FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
|
|
// CONVERT(varchar(100),d.MTIME, 23) MTIME,
|
|
// FLOOR(f.QTYTotal) QTYTotal INTO #temp
|
|
// FROM
|
|
// ({0}) c
|
|
// LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND ((LEN(ISNULL(c.WHCode,''))<=0) OR (LEN(ISNULL(c.WHCode,''))>0) AND c.WhCode=d.WarehouseCode) AND d.WorkPoint='{1}' AND d.Quantity>0
|
|
// left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
|
|
// LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
|
|
|
|
|
|
//DECLARE @ItemCode VARCHAR(50),
|
|
// @QTY DECIMAL(18,3),
|
|
// @ItemCodeCurrent VARCHAR(50),
|
|
// @QTYCurrent DECIMAL(18,3),
|
|
// @iQuantityCurrent DECIMAL(18,3),
|
|
// @CanDelete BIT,
|
|
// @Row INT,
|
|
// @rowCurrent INT
|
|
//SET @Row = @@rowcount
|
|
//SET @rowCurrent=1
|
|
//SET @CanDelete=0
|
|
//SET @ItemCode=''
|
|
|
|
//WHILE @rowCurrent<=@Row
|
|
// BEGIN
|
|
// SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
|
|
|
|
//PRINT(@rowCurrent)
|
|
// IF @ItemCode<>@ItemCodeCurrent
|
|
// BEGIN
|
|
// SET @ItemCode=@ItemCodeCurrent
|
|
// SET @QTY=0
|
|
// SET @CanDelete=0
|
|
// END
|
|
|
|
// IF @CanDelete=1
|
|
// BEGIN
|
|
// DELETE FROM #temp WHERE rowNo=@rowCurrent
|
|
// SET @rowCurrent += 1
|
|
// CONTINUE
|
|
// END
|
|
|
|
// SET @QTY += @QTYCurrent
|
|
// IF @QTY>=@iQuantityCurrent
|
|
// BEGIN
|
|
// SET @CanDelete=1
|
|
// END
|
|
|
|
// SET @rowCurrent += 1
|
|
// END
|
|
//SELECT * FROM #temp
|
|
//DROP TABLE #temp
|
|
//";
|
|
#endregion
|
|
#region SLQ
|
|
|
|
string Picksql = @" EXEC ICSPicking '{0}', '{1}','{2}', '{3}'";
|
|
#endregion
|
|
string sqls = string.Empty;
|
|
string type = string.Empty;
|
|
bool isMerge = true;
|
|
|
|
|
|
#region 检料表信息
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
#region 工单备料sql
|
|
type = "1";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
#region 工单备料(自动出库)sql
|
|
type = "1";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
#region 工单领料SQL
|
|
type = "2";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
#region 工单补料SQL
|
|
type = "12";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
#region 工单材料出库SQL
|
|
type = "3";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
#region 委外备料SQL
|
|
type = "4";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
#region 委外领料SQL
|
|
type = "5";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
#region 委外材料出库SQL
|
|
type = "6";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
#region 销售发货SQL
|
|
type = "7";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
#region 其他出库SQL
|
|
type = "8";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
#region 其他出库(自动出库)SQL
|
|
type = "8";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
#region 借用SQL
|
|
type = "9";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
#region 物料调拨
|
|
type = "10";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocAuto.GetDescription())
|
|
{
|
|
#region 物料调拨
|
|
type = "10";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
#region 两步调出
|
|
type = "11";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
#region 销售出库单
|
|
type = "16";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
#region 调拨申请单
|
|
type = "17";
|
|
#endregion
|
|
}
|
|
|
|
if (isMerge)
|
|
{
|
|
string sqlMerge = "SELECT ID FROM ICSMOPickMerge WHERE MergeID='" + JsonData.TransCode + "' AND WorkPoint='" + JsonData.WorkPoint + "'";
|
|
DataTable sign = DBHelper.SQlReturnData(sqlMerge, cmd);
|
|
if (sign != null && sign.Rows.Count > 0)
|
|
{
|
|
isMerge = true;
|
|
}
|
|
else
|
|
{
|
|
isMerge = false;
|
|
}
|
|
}
|
|
#endregion
|
|
JsonData.TransCode = "'" + JsonData.TransCode + "'";
|
|
JsonData.TransCode = JsonData.TransCode.TrimEnd(',').Replace("'", "''");
|
|
Picksql = string.Format(Picksql, JsonData.TransCode, type, isMerge, JsonData.WorkPoint);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(Picksql, cmd);
|
|
return table;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 源头单据检料表信息
|
|
/// <summary>
|
|
/// 源头单据信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransPickGetByItem(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region 原拣料SLQ
|
|
|
|
// string Picksql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
|
|
// c.Code,
|
|
// c.InvCode,
|
|
// c.InvName,
|
|
// c.InvStd,
|
|
//c.InvUnit,
|
|
// FLOOR(c.iQuantity) AS iQuantity,
|
|
// d.WarehouseCode,
|
|
// d.LocationCode,
|
|
// d.LotNO,
|
|
// FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
|
|
// CONVERT(varchar(100),d.MTIME, 23) MTIME,
|
|
// FLOOR(f.QTYTotal) QTYTotal INTO #temp
|
|
// FROM
|
|
// ({0}) c
|
|
// LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND ((LEN(ISNULL(c.WHCode,''))<=0) OR (LEN(ISNULL(c.WHCode,''))>0) AND c.WhCode=d.WarehouseCode) AND d.WorkPoint='{1}' AND d.Quantity>0
|
|
// left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
|
|
// LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
|
|
|
|
|
|
//DECLARE @ItemCode VARCHAR(50),
|
|
// @QTY DECIMAL(18,3),
|
|
// @ItemCodeCurrent VARCHAR(50),
|
|
// @QTYCurrent DECIMAL(18,3),
|
|
// @iQuantityCurrent DECIMAL(18,3),
|
|
// @CanDelete BIT,
|
|
// @Row INT,
|
|
// @rowCurrent INT
|
|
//SET @Row = @@rowcount
|
|
//SET @rowCurrent=1
|
|
//SET @CanDelete=0
|
|
//SET @ItemCode=''
|
|
|
|
//WHILE @rowCurrent<=@Row
|
|
// BEGIN
|
|
// SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
|
|
|
|
//PRINT(@rowCurrent)
|
|
// IF @ItemCode<>@ItemCodeCurrent
|
|
// BEGIN
|
|
// SET @ItemCode=@ItemCodeCurrent
|
|
// SET @QTY=0
|
|
// SET @CanDelete=0
|
|
// END
|
|
|
|
// IF @CanDelete=1
|
|
// BEGIN
|
|
// DELETE FROM #temp WHERE rowNo=@rowCurrent
|
|
// SET @rowCurrent += 1
|
|
// CONTINUE
|
|
// END
|
|
|
|
// SET @QTY += @QTYCurrent
|
|
// IF @QTY>=@iQuantityCurrent
|
|
// BEGIN
|
|
// SET @CanDelete=1
|
|
// END
|
|
|
|
// SET @rowCurrent += 1
|
|
// END
|
|
//SELECT * FROM #temp
|
|
//DROP TABLE #temp
|
|
//";
|
|
#endregion
|
|
#region SLQ
|
|
|
|
string Picksql = @" EXEC ICSPickingByItem '{0}', '{5}','{1}','{4}','{2}', '{3}'";
|
|
#endregion
|
|
string sqls = string.Empty;
|
|
string type = string.Empty;
|
|
bool isMerge = true;
|
|
|
|
|
|
#region 检料表信息
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
#region 工单备料sql
|
|
type = "1";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
#region 工单备料(自动出库)sql
|
|
type = "1";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
#region 工单领料SQL
|
|
type = "2";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
#region 工单补料SQL
|
|
type = "12";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
#region 工单材料出库SQL
|
|
type = "3";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
#region 委外备料SQL
|
|
type = "4";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
#region 委外领料SQL
|
|
type = "5";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
#region 委外材料出库SQL
|
|
type = "6";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
#region 销售发货SQL
|
|
type = "7";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
#region 其他出库SQL
|
|
type = "8";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
#region 其他出库(自动出库)SQL
|
|
type = "8";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
#region 借用SQL
|
|
type = "9";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
#region 物料调拨
|
|
type = "10";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocAuto.GetDescription())
|
|
{
|
|
#region 物料调拨
|
|
type = "10";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
#region 两步调出
|
|
type = "11";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
#region 销售出库单
|
|
type = "16";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
#region 调拨申请单
|
|
type = "17";
|
|
#endregion
|
|
}
|
|
|
|
if (isMerge)
|
|
{
|
|
string sqlMerge = "SELECT ID FROM ICSMOPickMerge WHERE MergeID='" + JsonData.TransCode + "' AND WorkPoint='" + JsonData.WorkPoint + "'";
|
|
DataTable sign = DBHelper.SQlReturnData(sqlMerge, cmd);
|
|
if (sign != null && sign.Rows.Count > 0)
|
|
{
|
|
isMerge = true;
|
|
}
|
|
else
|
|
{
|
|
isMerge = false;
|
|
}
|
|
}
|
|
#endregion
|
|
JsonData.TransCode = "'" + JsonData.TransCode + "'";
|
|
JsonData.TransCode = JsonData.TransCode.TrimEnd(',').Replace("'", "''");
|
|
Picksql = string.Format(Picksql, JsonData.TransCode, type, isMerge, JsonData.WorkPoint, JsonData.InvCode, JsonData.TransSequence);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(Picksql, cmd);
|
|
return table;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 根据组件捡料
|
|
/// <summary>
|
|
/// 根据组件捡料
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransPickGetByZJCode(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region SLQ
|
|
|
|
string Picksql = @" EXEC ICSPickingDYS '{0}', '{1}','{2}','{3}','{4}'";
|
|
#endregion
|
|
string sqls = string.Empty;
|
|
string type = string.Empty;
|
|
bool isMerge = true;
|
|
|
|
|
|
#region 检料表信息
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
#region 工单备料sql
|
|
type = "1";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
#region 工单备料(自动出库)sql
|
|
type = "1";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
#region 工单领料SQL
|
|
type = "2";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
#region 工单补料SQL
|
|
type = "12";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
#region 工单材料出库SQL
|
|
type = "3";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
#region 委外备料SQL
|
|
type = "4";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
#region 委外领料SQL
|
|
type = "5";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
#region 委外材料出库SQL
|
|
type = "6";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
#region 销售发货SQL
|
|
type = "7";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
#region 其他出库SQL
|
|
type = "8";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
#region 其他出库(自动出库)SQL
|
|
type = "8";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
#region 借用SQL
|
|
type = "9";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
#region 物料调拨
|
|
type = "10";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocAuto.GetDescription())
|
|
{
|
|
#region 物料调拨
|
|
type = "10";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
#region 两步调出
|
|
type = "11";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
#region 销售出库单
|
|
type = "16";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
#region 调拨申请单
|
|
type = "17";
|
|
#endregion
|
|
}
|
|
|
|
if (isMerge)
|
|
{
|
|
string sqlMerge = "SELECT ID FROM ICSMOPickMerge WHERE MergeID='" + JsonData.TransCode + "' AND WorkPoint='" + JsonData.WorkPoint + "'";
|
|
DataTable sign = DBHelper.SQlReturnData(sqlMerge, cmd);
|
|
if (sign != null && sign.Rows.Count > 0)
|
|
{
|
|
isMerge = true;
|
|
}
|
|
else
|
|
{
|
|
isMerge = false;
|
|
}
|
|
}
|
|
#endregion
|
|
JsonData.TransCode = "'" + JsonData.TransCode + "'";
|
|
JsonData.TransCode = JsonData.TransCode.TrimEnd(',').Replace("'", "''");
|
|
Picksql = string.Format(Picksql, JsonData.TransCode, type, JsonData.InvCode, isMerge, JsonData.WorkPoint);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(Picksql, cmd);
|
|
return table;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 所有未完成单据号
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransCodeGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region SLQ
|
|
//string sqlCheck = @"IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {2})
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo035") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// ";
|
|
string sql = @"SELECT
|
|
{0},a.MTime
|
|
FROM {1}
|
|
WHERE {2}
|
|
order by {3}";
|
|
#endregion
|
|
|
|
bool isDeliveryNotice = false; //送货、到货、含委外
|
|
bool MOApplyWithBin = false; //生产领料-库位
|
|
bool OtherOutDocWithBin = false; //杂发-库位
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
string orderby = string.Empty; //查询源头单据的排序方式
|
|
bool isMerge = false; //合并发料
|
|
string columnsMerge = string.Empty; //合并发料查询源头单据表的特殊列名
|
|
string tableNameMerge = string.Empty; //合并发料查询源头单据表名
|
|
#region 出库
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.DNCode AS TransCode";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.DNType='2' AND a.Status='2' AND (a.Quantity-ISNULL(a.RCVQuantity,0))>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.DNCode AS TransCode";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.DNType='2' AND a.Status='1' AND ISNUL(a.RCVQuantity,0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
|
|
#endregion
|
|
#region 其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.OutCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSOtherOut a ";
|
|
|
|
where = @" a.Status='1' AND a.WorkPoint='{1}' and a.Quantity>ISNULL(a.OutQuantity, 0)";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 借用
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.BrrowCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSBrrow a ";
|
|
|
|
where = @" a.Status='2' AND a.WorkPoint='{1}' and a.Quantity>ISNULL(a.BrrowQuantity, 0)";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 其他出库-自动出库
|
|
else if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.OutCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSOtherOut a
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=a.InvCode AND inv.WorkPoint=a.WorkPoint ";
|
|
|
|
where = @" a.Status='1' AND a.WorkPoint='{1}' and a.Quantity>ISNULL(a.OutQuantity, 0)";
|
|
|
|
where += DBHelper.SearchConditonGet("Trans_btnOtherOutAuto", JsonData.User, cmd);
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 红字其他入库
|
|
else if (TransType == TransTypeEnum.OtherInRedDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.InCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSOtherIn a ";
|
|
|
|
where = @" a.Status='1' AND a.WorkPoint='{1}' and a.Quantity>ISNULL(a.InQuantity,0) and a.EATTRIBUTE2='2'";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 一步调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.TransferNO AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status='1' AND a.Quantity>ISNULL(a.TransferQuantity,0) AND Type='1'";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 自动调拨
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocAuto.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.TransferNO AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSTransfer a
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=a.InvCode AND inv.WorkPoint=a.WorkPoint ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status='1' AND a.Quantity>ISNULL(a.TransferQuantity,0) AND Type='1' ";
|
|
|
|
where += DBHelper.SearchConditonGet("Trans_btnInvTransAuto", JsonData.User, cmd);
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 调拨申请单(合并发料)
|
|
else if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.TransferNO AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSTransferApplication a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status='2' AND a.Quantity>ISNULL(a.TransferQuantity,0) AND Type='1'";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.OApplyNegCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg d ON a.OApplyNegCode=d.OApplyNegCode AND a.WorkPoint=d.WorkPoint";
|
|
|
|
where = @" a.WorkPoint='{1}' AND d.Status='1' AND a.Quantity>ISNULL(a.IssueNegQuantity,0) AND d.Type='1'";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 生产发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT b.MOCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @" ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1' and a.Quantity-ISNULL(a.IssueQuantity,0)>0 --dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{2}', 2, 2,'')-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 生产发料——自动出库
|
|
else if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT b.MOCode AS TransCode,b.MTIME";
|
|
|
|
tableName = @" ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=a.InvCode AND inv.WorkPoint=a.WorkPoint ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1' and a.Quantity-ISNULL(a.IssueQuantity,0)>0 --dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'{2}', 2, 2,'')-ISNULL(a.IssueQuantity,0)>0";
|
|
|
|
where += DBHelper.SearchConditonGet("Trans_btnInvOutAuto", JsonData.User, cmd);
|
|
|
|
orderby = @" b.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 开立材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.IssueCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @" ICSMOIssue a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' and a.Quantity-ISNULL(a.IssueQuantity, 0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 生产发料-领料申请单
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.ApplyCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @" ICSMOApply a";
|
|
|
|
where = @" a.Status='2' AND a.WorkPoint='{1}' and a.Quantity-ISNULL(a.IssueQuantity, 0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.IssueCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @" ICSOIssue a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' and a.Quantity-ISNULL(a.IssueQuantity, 0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.ApplyCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @" ICSOApply a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' and a.Quantity-ISNULL(a.IssueQuantity, 0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 委外发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT b.OOCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @" ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.SupplyType='3' AND b.Status<>'3' and a.EATTRIBUTE1<>'1' and a.Quantity-ISNULL(a.IssueQuantity, 0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 销售出库(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.SDNCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' and a.Quantity-ISNULL(a.SDNQuantity,0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 销售出库(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesBindCourierDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.SDNCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' and a.Quantity-ISNULL(a.SDNQuantity,0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 销售出库-出库单(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.SSDCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSSSD a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' and a.Quantity-ISNULL(a.SSDQuantity,0)>0";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#region 盘点
|
|
else if (TransType == TransTypeEnum.Check.GetDescription())
|
|
{
|
|
|
|
columns = @" DISTINCT a.CheckCode AS TransCode,a.MTIME";
|
|
|
|
tableName = @"ICSCheck a ";
|
|
|
|
where = @" a.WorkPoint='{1}' ";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
#region 入库
|
|
#region 生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.ApplyNegcode AS TransCode";
|
|
|
|
tableName = @"ICSMOApplyNegDetail b
|
|
inner join ICSMOApplyNeg a on a.ApplyNegcode=b.ApplyNegcode and a.workpoint=b.workpoint";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Type='3' AND a.Status='2' AND b.Quantity>ISNULL(b.IssueNegQuantity, 0)";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
else
|
|
{
|
|
//throw new Exception();
|
|
}
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint, enableCode);
|
|
sql = string.Format(sql, columns, tableName, where, orderby);
|
|
log.Debug("源头单据sql : " + sql);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 所有未完成单据号
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MoLotInfoGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region SLQ
|
|
//string sqlCheck = @"IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {2})
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo035") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// ";
|
|
string sql = @"--条码 子线数量
|
|
select {0},a.MTime from {1}
|
|
where {2}
|
|
SELECT
|
|
{0},a.MTime
|
|
FROM {1}
|
|
WHERE
|
|
order by {3}";
|
|
#endregion
|
|
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
string orderby = string.Empty; //查询源头单据的排序方式
|
|
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
columns = @" a.lotno, a.Quantity*ISNULL(d.EATTRIBUTE6, 1) Quantity ";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
inner join ICSInventoryLotDetail b
|
|
on a.lotno = b.lotno and a.WorkPoint = b.WorkPoint
|
|
inner join ICSMO c
|
|
on c.MOCode = b.TransCode and c.Sequence = b.TransSequence and c.WorkPoint = b.WorkPoint
|
|
inner join ICSInventory d on a.invcode = d.invcode and a.WorkPoint = d.WorkPoint";
|
|
|
|
where = @" c.MOCode = '{0}' and a.EATTRIBUTE1 is null and a.WorkPoint='{1}'";
|
|
|
|
orderby = @" a.MTIME DESC";
|
|
}
|
|
else
|
|
{
|
|
//throw new Exception();
|
|
}
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint, enableCode);
|
|
sql = string.Format(sql, columns, tableName, where, orderby);
|
|
log.Debug("海格工单条码查询sql : " + sql);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable SRMItemsGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
string TransType = JsonData.TransType;
|
|
#region SLQ
|
|
string sql = @"SELECT
|
|
{0}
|
|
FROM {1}
|
|
WHERE {2}
|
|
";
|
|
#endregion
|
|
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
#region 出库
|
|
columns = @" DISTINCT its.F_define1 AS TransCode";
|
|
|
|
tableName = @" Sys_SRM_Items it
|
|
inner join Sys_SRM_ItemsDetail its on it.F_id = its.f_itemid ";
|
|
|
|
where = @" it.F_ENCODE='{0}' ";
|
|
|
|
|
|
where = string.Format(where, JsonData.TransType);
|
|
sql = string.Format(sql, columns, tableName, where, JsonData.TransCode);
|
|
log.Debug("获取自定义档案: " + sql);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#region 条码信息
|
|
/// <summary>
|
|
/// 条码信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static Result BarCodeInformationGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
DataTable table = new DataTable();
|
|
DataTable ZLtable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string ScanType = DBHelper.ScanTypeCheck(JsonData.Code, JsonData.WorkPoint, cmd);
|
|
if (string.IsNullOrEmpty(JsonData.Code) && JsonData.IsLotNoCapper != "1")
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
string sql = "";
|
|
string PNTranfersql = "";
|
|
string LotTypesql = "";
|
|
string Losql = "";
|
|
string WLosql = "";
|
|
string Lotsplitsql = "";
|
|
string Printsql = "";
|
|
string LotJLSql = "";
|
|
string sqlNew = "";
|
|
string LotType = "";
|
|
bool iszl = false;
|
|
string zlqty = "0";
|
|
bool needIns = ICSControlModeService.GetOrderIns(EnumHelper.GetDBValue(typeof(TransTypeEnum), TransType));
|
|
|
|
#region SLQ
|
|
if (TransType == TransTypeEnum.LocationSeatch.GetDescription())
|
|
{
|
|
if (JsonData.IsLotNoCapper == "1")
|
|
{
|
|
if (JsonData.Code == "")
|
|
{
|
|
Losql = @"
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
|
|
|
|
set @b =
|
|
'
|
|
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint and lot.type=''3''
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' and a.InvCode=s.INVCode and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE))
|
|
group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME
|
|
|
|
'
|
|
|
|
exec(@b)
|
|
|
|
|
|
";
|
|
}
|
|
else
|
|
{
|
|
Losql = @"
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
|
|
|
|
set @b =
|
|
'
|
|
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint and lot.type=''3''
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' and a.InvCode=s.INVCode and a.mtime >= CAST(GETDATE() AS DATE)
|
|
AND a.mtime < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) and a.invcode=''{2}''
|
|
group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME
|
|
|
|
'
|
|
|
|
exec(@b)
|
|
|
|
|
|
";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//库存查询排除仓库
|
|
string whsql = @"SELECT b.F_ItemCode FROM Sys_SRM_Items a
|
|
INNER JOIN Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='OutWHCode' AND b.F_EnabledMark='1' ";
|
|
whsql = string.Format(whsql);
|
|
DataTable dtt = DBHelper.SQlReturnData(whsql, cmd);
|
|
//库存查询界面批次是否扫描
|
|
if (null == JsonData.BatchCode || JsonData.BatchCode == "")
|
|
{
|
|
|
|
if (dtt.Rows.Count > 0 && dtt != null)
|
|
{
|
|
Losql = @" DECLARE @wheresql VARCHAR(MAX)
|
|
DECLARE @groupsql VARCHAR(MAX)
|
|
DECLARE @aa VARCHAR(MAX)
|
|
DECLARE @bb VARCHAR(MAX)
|
|
DECLARE @cc VARCHAR(MAX)
|
|
DECLARE @dd VARCHAR(MAX)
|
|
DECLARE @ee VARCHAR(MAX)
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
select @dd=id from ICSInventory where InvStd LIKE '%{2}%'
|
|
IF @dd IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.InvStd LIKE ''%{2}%'' '
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @ee=id from ICSInventoryLot where lotno = '{2}'
|
|
IF @ee IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.InvCode=(SELECT InvCode FROM ICSInventoryLot WHERE LotNo=''{2}'')'
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @aa=id from ICSWareHouseLotInfo where LotNo='{2}'
|
|
IF @aa IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and a.lotno=''{2}'' and s.invcode IN(SELECT invcode FROM ICSWareHouseLotInfo where LotNo=''{2}'') and a.invcode=s.invcode '
|
|
set @groupsql=' group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @bb=id from ICSLocation where LocationCode='{2}'
|
|
IF @bb IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.locationcode=s.locationcode and a.LocationCode=''{2}'' '
|
|
set @groupsql = 'group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @cc=id from ICSInventory where invcode='{2}'
|
|
IF @cc IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.invcode=''{2}'' '
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
IF @aa IS NULL and @bb IS NULL and @cc IS NULL and @dd IS NULL and @ee IS NULL
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo478") + @"',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
set @b =
|
|
|
|
'SELECT a.WareHouseCode, a.WorkPoint
|
|
INTO #BarCodeTemp
|
|
FROM ICSWareHouse a
|
|
LEFT JOIN (
|
|
SELECT b.F_ItemCode
|
|
FROM Sys_SRM_Items a
|
|
INNER JOIN Sys_SRM_ItemsDetail b ON a.F_Id = b.F_ItemId
|
|
WHERE a.F_EnCode = ''OutWHCode'' AND b.F_EnabledMark = ''1''
|
|
) AS temp ON a.WareHouseCode = temp.F_ItemCode
|
|
WHERE temp.F_ItemCode IS NULL
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a LEFT JOIN ICSWareHouseLotInfo b ON a.LotNo = b.LotNo WHERE a.LotNo = ''{2}'' AND b.LotNo IS NULL)
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
inner join #BarCodeTemp wh on a.WareHouseCode=wh.WareHouseCode and a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo
|
|
where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode and s.WarehouseCode=wh.WareHouseCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' '+ @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
inner join #BarCodeTemp wh on a.WareHouseCode=wh.WareHouseCode and a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo
|
|
where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode and s.WarehouseCode=wh.WareHouseCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' ' + @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
DROP TABLE #BarCodeTemp
|
|
'
|
|
END
|
|
PRINT @b
|
|
exec(@b)
|
|
";
|
|
}
|
|
else
|
|
{
|
|
Losql = @" DECLARE @wheresql VARCHAR(MAX)
|
|
DECLARE @groupsql VARCHAR(MAX)
|
|
DECLARE @aa VARCHAR(MAX)
|
|
DECLARE @bb VARCHAR(MAX)
|
|
DECLARE @cc VARCHAR(MAX)
|
|
DECLARE @dd VARCHAR(MAX)
|
|
DECLARE @ee VARCHAR(MAX)
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
select @dd=id from ICSInventory where InvStd LIKE '%{2}%'
|
|
IF @dd IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.InvStd LIKE ''%{2}%'' '
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @ee=id from ICSInventoryLot where lotno = '{2}'
|
|
IF @ee IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.InvCode=(SELECT InvCode FROM ICSInventoryLot WHERE LotNo=''{2}'')'
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @aa=id from ICSWareHouseLotInfo where LotNo='{2}'
|
|
IF @aa IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and a.lotno=''{2}'' and s.invcode IN(SELECT invcode FROM ICSWareHouseLotInfo where LotNo=''{2}'') and a.invcode=s.invcode '
|
|
set @groupsql=' group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @bb=id from ICSLocation where LocationCode='{2}'
|
|
IF @bb IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.locationcode=s.locationcode and a.LocationCode=''{2}'' '
|
|
set @groupsql = 'group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @cc=id from ICSInventory where invcode='{2}'
|
|
IF @cc IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.invcode=''{2}'' '
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
IF @aa IS NULL and @bb IS NULL and @cc IS NULL and @dd IS NULL and @ee IS NULL
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo478") + @"',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
set @b =
|
|
'IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a LEFT JOIN ICSWareHouseLotInfo b ON a.LotNo = b.LotNo WHERE a.LotNo = ''{2}'' AND b.LotNo IS NULL)
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' '+ @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' ' + @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
|
|
'
|
|
END
|
|
PRINT @b
|
|
exec(@b)
|
|
";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
if (dtt.Rows.Count > 0 && dtt != null)
|
|
{
|
|
Losql = @" DECLARE @wheresql VARCHAR(MAX)
|
|
DECLARE @groupsql VARCHAR(MAX)
|
|
DECLARE @aa VARCHAR(MAX)
|
|
DECLARE @bb VARCHAR(MAX)
|
|
DECLARE @cc VARCHAR(MAX)
|
|
DECLARE @dd VARCHAR(MAX)
|
|
DECLARE @ee VARCHAR(MAX)
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
--select @ee=lotinfo.id from ICSWareHouseLotInfo lotinfo
|
|
--INNER JOIN ICSInventoryLot lot ON lotinfo.lotno=lot.lotno and lotinfo.workpoint=lot.workpoint
|
|
--INNER JOIN ICSExtension exx ON lot.ExtensionID=exx.id and lot.workpoint=exx.workpoint
|
|
--where exx.BatchCode = '{2}'
|
|
--IF @ee IS not NULL
|
|
|
|
select @ee=id from ICSInventoryLot where lotno = '{2}'
|
|
IF @ee IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.InvCode=(SELECT InvCode FROM ICSInventoryLot WHERE LotNo=''{2}'')'
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @dd=a.id from ICSInventory a INNER JOIN ICSInventoryLot b ON a.invcode=b.invcode and a.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.InvStd LIKE '%{2}%' AND c.BatchCode='{4}'
|
|
IF @dd IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.InvStd LIKE ''%{2}%'' and ext.BatchCode= ''{4}'' '
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @aa=a.id from ICSWareHouseLotInfo a INNER JOIN ICSInventoryLot b ON a.lotno=b.lotno and a.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.LotNo='{2}' AND c.BatchCode='{4}'
|
|
IF @aa IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and a.lotno=''{2}'' and ext.BatchCode= ''{4}'' and s.invcode IN(SELECT invcode FROM ICSWareHouseLotInfo where LotNo=''{2}'') and a.invcode=s.invcode '
|
|
set @groupsql=' group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @bb=a.id from ICSLocation a inner join ICSWareHouseLotInfo aa on a.locationcode=aa.locationcode
|
|
INNER JOIN ICSInventoryLot b ON aa.lotno=b.lotno and aa.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.LocationCode='{2}' AND c.BatchCode='{4}'
|
|
IF @bb IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.locationcode=s.locationcode and a.LocationCode=''{2}'' and ext.BatchCode= ''{4}'' '
|
|
set @groupsql = 'group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @cc=a.id from ICSInventory a INNER JOIN ICSInventoryLot b ON a.invcode=b.invcode and a.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.invcode='{2}' AND c.BatchCode='{4}'
|
|
IF @cc IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.invcode=''{2}'' and ext.BatchCode= ''{4}'' '
|
|
set @groupsql='group by b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
IF @aa IS NULL and @bb IS NULL and @cc IS NULL and @dd IS NULL and @ee IS NULL
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo478") + @"',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
set @b =
|
|
'SELECT a.WareHouseCode, a.WorkPoint
|
|
INTO #BarCodeTemp
|
|
FROM ICSWareHouse a
|
|
LEFT JOIN (
|
|
SELECT b.F_ItemCode
|
|
FROM Sys_SRM_Items a
|
|
INNER JOIN Sys_SRM_ItemsDetail b ON a.F_Id = b.F_ItemId
|
|
WHERE a.F_EnCode = ''OutWHCode'' AND b.F_EnabledMark = ''1''
|
|
) AS temp ON a.WareHouseCode = temp.F_ItemCode
|
|
WHERE temp.F_ItemCode IS NULL
|
|
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a LEFT JOIN ICSWareHouseLotInfo b ON a.LotNo = b.LotNo WHERE a.LotNo = ''{2}'' AND b.LotNo IS NULL)
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
inner join #BarCodeTemp wh on a.WareHouseCode=wh.WareHouseCode and a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo
|
|
where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode and s.WarehouseCode=wh.WareHouseCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and ext.BatchCode= ''{4}'' and a.WorkPoint=''{3}'' '+ @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
inner join #BarCodeTemp wh on a.WareHouseCode=wh.WareHouseCode and a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo
|
|
where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode and s.WarehouseCode=wh.WareHouseCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' ' + @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
DROP TABLE #BarCodeTemp
|
|
|
|
'
|
|
END
|
|
|
|
exec(@b)
|
|
";
|
|
}
|
|
else
|
|
{
|
|
Losql = @" DECLARE @wheresql VARCHAR(MAX)
|
|
DECLARE @groupsql VARCHAR(MAX)
|
|
DECLARE @aa VARCHAR(MAX)
|
|
DECLARE @bb VARCHAR(MAX)
|
|
DECLARE @cc VARCHAR(MAX)
|
|
DECLARE @dd VARCHAR(MAX)
|
|
DECLARE @ee VARCHAR(MAX)
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
--select @ee=lotinfo.id from ICSWareHouseLotInfo lotinfo
|
|
--INNER JOIN ICSInventoryLot lot ON lotinfo.lotno=lot.lotno and lotinfo.workpoint=lot.workpoint
|
|
--INNER JOIN ICSExtension exx ON lot.ExtensionID=exx.id and lot.workpoint=exx.workpoint
|
|
--where exx.BatchCode = '{2}'
|
|
--IF @ee IS not NULL
|
|
|
|
select @ee=id from ICSInventoryLot where lotno = '{2}'
|
|
IF @ee IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.InvCode=(SELECT InvCode FROM ICSInventoryLot WHERE LotNo=''{2}'')'
|
|
set @groupsql='group by lot.EATTRIBUTE2,b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @dd=a.id from ICSInventory a INNER JOIN ICSInventoryLot b ON a.invcode=b.invcode and a.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.InvStd LIKE '%{2}%' AND c.BatchCode='{4}'
|
|
IF @dd IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.InvStd LIKE ''%{2}%'' and ext.BatchCode= ''{4}'' '
|
|
set @groupsql='group by lot.EATTRIBUTE2,b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @aa=a.id from ICSWareHouseLotInfo a INNER JOIN ICSInventoryLot b ON a.lotno=b.lotno and a.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.LotNo='{2}' AND c.BatchCode='{4}'
|
|
IF @aa IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and a.lotno=''{2}'' and ext.BatchCode= ''{4}'' and s.invcode IN(SELECT invcode FROM ICSWareHouseLotInfo where LotNo=''{2}'') and a.invcode=s.invcode '
|
|
set @groupsql=' group by lot.EATTRIBUTE2,b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @bb=a.id from ICSLocation a inner join ICSWareHouseLotInfo aa on a.locationcode=aa.locationcode
|
|
INNER JOIN ICSInventoryLot b ON aa.lotno=b.lotno and aa.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.LocationCode='{2}' AND c.BatchCode='{4}'
|
|
IF @bb IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.locationcode=s.locationcode and a.LocationCode=''{2}'' and ext.BatchCode= ''{4}'' '
|
|
set @groupsql = 'group by lot.EATTRIBUTE2,b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @cc=a.id from ICSInventory a INNER JOIN ICSInventoryLot b ON a.invcode=b.invcode and a.workpoint=b.workpoint
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where a.invcode='{2}' AND c.BatchCode='{4}'
|
|
IF @cc IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.invcode=''{2}'' and a.invcode=s.invcode and ext.BatchCode= ''{4}'' '
|
|
set @groupsql='group by lot.EATTRIBUTE2,b.LocationName,lot.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
IF @aa IS NULL and @bb IS NULL and @cc IS NULL and @dd IS NULL and @ee IS NULL
|
|
BEGIN
|
|
RAISERROR('查询的编码不存在!',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
set @b =
|
|
'IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a LEFT JOIN ICSWareHouseLotInfo b ON a.LotNo = b.LotNo WHERE a.LotNo = ''{2}'' AND b.LotNo IS NULL)
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,ISNULL(lot.EATTRIBUTE2,'') AS Memo,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and ext.BatchCode= ''{4}'' and a.WorkPoint=''{3}'' '+ @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,lot.ProductDate,ISNULL(lot.EATTRIBUTE2,'') AS Memo,
|
|
a.WarehouseCode,a.LocationCode,b.LocationName,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' ' + @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
END
|
|
|
|
'
|
|
END
|
|
|
|
exec(@b)
|
|
";
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
else if (TransType == TransTypeEnum.WLotNoSearch.GetDescription())
|
|
{
|
|
WLosql = @"DECLARE @wheresql VARCHAR(MAX)
|
|
DECLARE @groupsql VARCHAR(MAX)
|
|
DECLARE @aa VARCHAR(MAX)
|
|
DECLARE @bb VARCHAR(MAX)
|
|
DECLARE @cc VARCHAR(MAX)
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
|
|
|
|
select @aa=id from ICSInventoryLot where LotNo='{2}'
|
|
IF @aa IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and a.lotno=''{2}'' and s.invcode IN(SELECT invcode FROM ICSInventoryLot where LotNo=''{2}'') and a.invcode=s.invcode '
|
|
set @groupsql=' group by a.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @bb=id from ICSInventory where invcode='{2}'
|
|
IF @bb IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.invcode=''{2}'' and a.invcode=s.invcode '
|
|
set @groupsql='group by a.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
select @cc=b.id from ICSInventoryLot b
|
|
INNER JOIN ICSExtension c ON b.ExtensionID=c.id and b.workpoint=c.workpoint where c.BatchCode='{2}'
|
|
|
|
IF @cc IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and ext.BatchCode=''{2}'' and a.invcode=s.invcode '
|
|
set @groupsql=' group by a.ProductDate,ext.BatchCode,inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MUSERName,a.MTIME'
|
|
END
|
|
|
|
IF @aa IS NULL and @bb IS NULL and @cc IS NULL
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo478") + @"',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
set @b =
|
|
'
|
|
SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,a.ProductDate,
|
|
a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MUSERName AS UserName,
|
|
CONVERT(varchar(16), a.MTIME, 120) AS [MTime]
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,INVCode,workpoint from ICSInventoryLot left join ICSWareHouseLotInfo b on a.lotno = b.lotno where quantity>0 and b.lotno is null group by INVCode,workpoint)s ON a.workpoint=s.workpoint
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo ON a.LotNo = lotinfo.LotNo
|
|
WHERE a.Quantity>0 and AND lotinfo.LotNo IS NULL and a.WorkPoint=''{3}'' ' + @wheresql + @groupsql +' order by a.InvCode,ext.BatchCode
|
|
|
|
'
|
|
END
|
|
PRINT @b
|
|
exec(@b)";
|
|
}
|
|
else if (TransType == TransTypeEnum.CodeSplitSearch.GetDescription())
|
|
{
|
|
Lotsplitsql = @"select
|
|
isnull(case
|
|
WHEN a.Type = 22 THEN d.EATTRIBUTE8
|
|
WHEN a.Type = 23 THEN e.EATTRIBUTE8
|
|
WHEN a.Type = 2 THEN a.EATTRIBUTE8
|
|
WHEN a.Type = 3 THEN f.EATTRIBUTE8
|
|
WHEN a.Type = 5 THEN qt.EATTRIBUTE8
|
|
WHEN a.Type = 12 THEN a.EATTRIBUTE8
|
|
WHEN a.Type = 0 THEN a.EATTRIBUTE8
|
|
WHEN a.Type = 24 THEN a.EATTRIBUTE8
|
|
WHEN a.Type = 201 THEN a.EATTRIBUTE8
|
|
WHEN a.Type = 203 THEN a.EATTRIBUTE8
|
|
ELSE NULL
|
|
END ,'')as xm,
|
|
isnull(case
|
|
WHEN a.Type = 22 THEN d.EATTRIBUTE3
|
|
WHEN a.Type = 23 THEN e.EATTRIBUTE3
|
|
WHEN a.Type = 2 THEN a.EATTRIBUTE3
|
|
WHEN a.Type = 5 THEN qt.EATTRIBUTE3
|
|
WHEN a.Type = 12 THEN a.EATTRIBUTE3
|
|
WHEN a.Type = 0 THEN a.EATTRIBUTE3
|
|
WHEN a.Type = 24 THEN a.EATTRIBUTE3
|
|
WHEN a.Type = 201 THEN a.EATTRIBUTE8
|
|
WHEN a.Type = 203 THEN a.EATTRIBUTE8
|
|
ELSE NULL
|
|
END ,'')as gys,
|
|
|
|
isnull(case
|
|
WHEN a.Type = 23 THEN e.EATTRIBUTE7
|
|
WHEN a.Type = 3 THEN f.EATTRIBUTE7
|
|
ELSE NULL
|
|
END ,'')as jyy,
|
|
isnull(case
|
|
WHEN a.Type = 22 THEN d.EATTRIBUTE6
|
|
WHEN a.Type = 23 THEN e.EATTRIBUTE6
|
|
WHEN a.Type = 3 THEN f.EATTRIBUTE6
|
|
WHEN a.Type = 5 THEN qt.EATTRIBUTE6
|
|
WHEN a.Type = 2 THEN a.EATTRIBUTE6
|
|
WHEN a.Type = 12 THEN a.EATTRIBUTE6
|
|
WHEN a.Type = 0 THEN a.EATTRIBUTE6
|
|
WHEN a.Type = 24 THEN a.EATTRIBUTE6
|
|
WHEN a.Type = 101 THEN a.EATTRIBUTE6
|
|
ELSE NULL
|
|
END ,'')as ywy,
|
|
|
|
isnull(h.BatchCode,'') as pc,
|
|
-- Ʒ
|
|
isnull(e.RCVCode ,'')as ddh,
|
|
isnull(e.EATTRIBUTE4 ,'')as dz,
|
|
--ԭ
|
|
isnull(d.EATTRIBUTE9 ,'')as cslh,
|
|
-- Ʒ
|
|
isnull(a.EATTRIBUTE10 ,'')as mbbl,
|
|
isnull(a.EATTRIBUTE7,'') as xqfl,
|
|
--
|
|
isnull(b.InvName,'') as pm,
|
|
isnull(a.WorkPoint ,'')as zd,
|
|
isnull(a.InvCode ,'')as ph,
|
|
isnull(b.InvStd ,'')as ggxh,
|
|
isnull(b.EATTRIBUTE9 ,'')as khlh,
|
|
isnull(b.InvUnit ,'')as dw,
|
|
a1.Quantity as sl,
|
|
FORMAT(a.MTIME, 'yyyy-MM-dd')as rq,
|
|
a1.LotNo as OLDLotNo,
|
|
a2.EATTRIBUTE1 as YTLotNo
|
|
FROM
|
|
ICSWareHouseLotInfo a1
|
|
LEFT JOIN ICSInventoryLot a
|
|
ON
|
|
a.LotNo =
|
|
CASE
|
|
WHEN LEN(a1.LotNo) > 25 THEN a1.LotNo
|
|
ELSE
|
|
CASE
|
|
WHEN CHARINDEX('-', a1.LotNo) > 0 THEN LEFT(a1.LotNo, CHARINDEX('-', a1.LotNo) - 1)
|
|
ELSE a1.LotNo
|
|
END
|
|
END
|
|
AND a.WorkPoint = a1.WorkPoint
|
|
LEFT JOIN ICSInventoryLot a2 on a1.LotNo=a2.LotNo and a1.WorkPoint=a2.WorkPoint
|
|
|
|
INNER JOIN ICSInventory b ON b.InvCode = a1.InvCode AND b.WorkPoint = a1.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail c ON a.LotNO = c.LotNO AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSPurchaseReceive d ON d.RCVCode = c.TransCode AND d.Sequence = c.TransSequence AND d.WorkPoint = c.WorkPoint AND a.Type = 22
|
|
LEFT JOIN ICSOutsourcingReceive e ON e.RCVCode = c.TransCode AND e.Sequence = c.TransSequence AND e.WorkPoint = c.WorkPoint AND a.Type = 23
|
|
LEFT join ICSMO f on f.MOCode=c.TransCode and f.Sequence=c.TransSequence and f.WorkPoint=c.WorkPoint and a.Type =3
|
|
LEFT join ICSOtherIn qt on qt.InCode=c.TransCode and qt.Sequence=c.TransSequence and qt.WorkPoint=c.WorkPoint and a.Type =5
|
|
|
|
LEFT join ICSExtension h on h.ID=a2.ExtensionID and h.WorkPoint=a2.WorkPoint --and a.Type <> 22 and a.Type <> 23 and a.Type <> 3
|
|
where a1.lotno like '{2}%' and a1.workpoint='{3}' ";
|
|
}
|
|
else if (TransType == TransTypeEnum.CodePrint.GetDescription())
|
|
{
|
|
|
|
Printsql = @"select ISNULL(C.LotNo,'') AS LOTNO,ISNULL(B.InvCode,'') AS InvCode,ISNULL(d.InvName,'') AS INVNAME,ISNULL(d.InvStd,'') AS INVSTD,ISNULL(C.Quantity,0) AS LotQty,c.LocationCode,
|
|
ISNULL(c.MTIME,'') AS MTIME,ISNULL(f.VenCode,'') AS VenCode,ISNULL(h.VenName,'') AS cVenName,ISNULL(d.InvUnit,'') AS InvUnit,ISNULL(f.POCode,'') AS POCode,ISNULL(f.EATTRIBUTE4,'') AS EATTRIBUTE4,ISNULL(d.InvUnit,'') AS InvUnit,ISNULL(g.BatchCode,'') AS BatchCode from ICSInventoryLot B
|
|
left join ICSWareHouseLotInfo C ON B.LotNO=C.LotNO and B.WorkPoint=c.WorkPoint
|
|
left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
left join ICSInventoryLotDetail e on b.lotNo=e.LotNo and b.WorkPoint=e.WorkPoint
|
|
LEFT JOIN ICSPurchaseOrder f ON f.POCode=e.TransCode AND f.Sequence=e.TransSequence AND f.WorkPoint=e.WorkPoint
|
|
left join ICSVendor h on f.VenCode=h.VenCode and e.WorkPoint=h.WorkPoint
|
|
left join ICSExtension g on b.ExtensionID=g.ID and b.WorkPoint=g.WorkPoint
|
|
where B.LotNo='{2}' AND B.workpoint='{3}' AND C.Quantity>0
|
|
UNION ALL
|
|
select ISNULL(C.LotNo,'') AS LOTNO,ISNULL(B.InvCode,'') AS InvCode,ISNULL(d.InvName,'') AS INVNAME,ISNULL(d.InvStd,'') AS INVSTD,ISNULL(C.Quantity,0) AS LotQty,c.LocationCode,
|
|
ISNULL(c.MTIME,'') AS MTIME,'' AS VenCode,'' AS cVenName,d.InvUnit,'' AS POCode,'' AS EATTRIBUTE4,d.InvUnit,g.BatchCode from ICSInventoryLot B
|
|
left join ICSWareHouseLotInfo C ON B.LotNO=C.LotNO and B.WorkPoint=c.WorkPoint
|
|
left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
left join ICSInventoryLotDetail e on b.lotNo=e.LotNo and b.WorkPoint=e.WorkPoint
|
|
left join ICSExtension g on b.ExtensionID=g.ID and b.WorkPoint=g.WorkPoint
|
|
where B.LotNo='{2}' AND B.workpoint='{3}' AND C.Quantity>0
|
|
UNION ALL
|
|
select ISNULL(C.LotNo,'') AS LOTNO,ISNULL(B.InvCode,'') AS InvCode,ISNULL(d.InvName,'') AS INVNAME,ISNULL(d.InvStd,'') AS INVSTD,ISNULL(C.Quantity,0) AS LotQty,c.LocationCode,
|
|
ISNULL(c.MTIME,'') AS MTIME,ISNULL(f.VenCode,'') AS VenCode,ISNULL(h.VenName,'') AS cVenName,ISNULL(d.InvUnit,'') AS InvUnit,ISNULL(f.POCode,'') AS POCode,ISNULL(f.EATTRIBUTE4,'') AS EATTRIBUTE4,ISNULL(d.InvUnit,'') AS InvUnit,ISNULL(g.BatchCode,'') AS BatchCode from ICSInventoryLot B
|
|
inner join ICSWareHouseLotInfo C ON B.LotNO=C.LotNO and B.WorkPoint=c.WorkPoint
|
|
inner join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
inner join ICSInventoryLotDetail e on b.lotNo=e.LotNo and b.WorkPoint=e.WorkPoint
|
|
inner JOIN ICSPurchaseOrder f ON f.POCode=e.TransCode AND f.Sequence=e.TransSequence AND f.WorkPoint=e.WorkPoint
|
|
inner join ICSVendor h on f.VenCode=h.VenCode and e.WorkPoint=h.WorkPoint
|
|
inner join ICSExtension g on b.ExtensionID=g.ID and b.WorkPoint=g.WorkPoint
|
|
where B.InvCode='{2}' AND B.workpoint='{3}' AND C.Quantity>0
|
|
UNION ALL
|
|
select ISNULL(C.LotNo,'') AS LOTNO,ISNULL(B.InvCode,'') AS InvCode,ISNULL(d.InvName,'') AS INVNAME,ISNULL(d.InvStd,'') AS INVSTD,ISNULL(C.Quantity,0) AS LotQty,c.LocationCode,
|
|
ISNULL(c.MTIME,'') AS MTIME,'' AS VenCode,'' AS cVenName,d.InvUnit,'' AS POCode,'' AS EATTRIBUTE4,d.InvUnit,g.BatchCode from ICSInventoryLot B
|
|
inner join ICSWareHouseLotInfo C ON B.LotNO=C.LotNO and B.WorkPoint=c.WorkPoint
|
|
inner join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
inner join ICSInventoryLotDetail e on b.lotNo=e.LotNo and b.WorkPoint=e.WorkPoint
|
|
inner join ICSExtension g on b.ExtensionID=g.ID and b.WorkPoint=g.WorkPoint
|
|
where B.InvCode='{2}' AND B.workpoint='{3}' AND C.Quantity>0
|
|
";
|
|
}
|
|
else if (TransType == TransTypeEnum.LotJL.GetDescription())
|
|
{
|
|
LotJLSql = @"select
|
|
a.LotNo,
|
|
a.TransCode,
|
|
a.TransSequence,
|
|
a.MTime,
|
|
bb.Name AS TransType,
|
|
a.InvCode,
|
|
o.BatchCode,
|
|
c.InvName,
|
|
c.InvStd,
|
|
a.Quantity,
|
|
|
|
d.WarehouseName AS FromWarehouseName,
|
|
f.LocationName AS FromLocationName,
|
|
d1.WarehouseName AS ToWarehouseName,
|
|
f1.LocationName AS ToLocationName,
|
|
a.MUSERName
|
|
|
|
|
|
from ICSWareHouseLotInfoLog a
|
|
inner join ICSInventoryLot b on b.LotNo=a.LotNo --and b.WorkPoint=a.WorkPoint
|
|
inner join ICSInventory c on c.InvCode=a.InvCode and c.WorkPoint=a.WorkPoint
|
|
left join ICSWarehouse d on d.WarehouseCode=a.FromWarehouseCode and a.WorkPoint=d.WorkPoint
|
|
left join ICSLocation f on f.LocationCode=a.FromLocationCode and a.WorkPoint=f.WorkPoint
|
|
left join ICSWarehouse d1 on d1.WarehouseCode=a.ToWarehouseCode and d1.WorkPoint=a.WorkPoint
|
|
left join ICSLocation f1 on f1.LocationCode=a.ToLocationCode and f1.WorkPoint=a.WorkPoint
|
|
left join ICSExtension o on o.ID=b.ExtensionID and o.WorkPoint=b.WorkPoint
|
|
left join ICSType BB with (nolock) on a.BusinessCode=bb.Code and bb.TableCode='ICSWareHouseLotInfoLog' and bb.ColumnCode='businesscode'
|
|
where a.lotno='{2}' and bb.Name<>'拆分前'
|
|
|
|
|
|
";
|
|
}
|
|
else
|
|
{
|
|
//派纳调拨,不用站点条件
|
|
if (DBHelper.IsPNU9() && TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,
|
|
{0}
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'" + ScanType + @"' AS ScanType
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.LotNo='{2}' ";
|
|
}
|
|
else
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
{0}
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'" + ScanType + @"' AS ScanType
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE bom.TContainerCode='{2}' ";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
#region 验证是否到货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.PurchaseReceiveDRCoffeeDoc.GetDescription() || TransType == TransTypeEnum.PurchaseReceiveDRCoffeeDoc.GetDescription())
|
|
{
|
|
|
|
string arrivalCtrlSql = string.Format(@"IF NOT EXISTS(SELECT
|
|
1
|
|
FROM ICSInventoryLot lot
|
|
INNER JOIN ICSASNDetail asde ON asde.LotNo=lot.LotNo AND asde.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSDeliveryNotice dn ON dn.ASNCode=asde.ASNCode AND dn.WorkPoint=asde.WorkPoint
|
|
WHERE lot.LotNo='{0}' AND lot.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo532"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(arrivalCtrlSql, cmd);
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
string arrivalCtrlSql = string.Format(@"IF NOT EXISTS(SELECT
|
|
1
|
|
FROM ICSInventoryLot lot
|
|
INNER JOIN ICSOASNDetail asde ON asde.LotNo=lot.LotNo AND asde.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSODeliveryNotice dn ON dn.OASNCode=asde.OASNCode AND dn.WorkPoint=asde.WorkPoint
|
|
WHERE lot.LotNo='{0}' AND lot.WorkPoint='{1}'
|
|
--铭锋特殊 委外订单和到货单源头均为委外订单
|
|
union
|
|
select 1 FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSODeliveryNotice d ON b.TransCode=d.ODNCode AND b.TransSequence=d.Sequence AND b.WorkPoint=d.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo532"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(arrivalCtrlSql, cmd);
|
|
}
|
|
#endregion
|
|
|
|
//验证条码是否存在
|
|
string verifyLotExistSql = "";
|
|
if (DBHelper.IsPNU9() && TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
verifyLotExistSql = string.Format(@"IF NOT EXISTS(SELECT 1 FROM ICSInventoryLot WHERE LotNo='{0}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
}
|
|
else
|
|
{
|
|
verifyLotExistSql = string.Format(@"IF NOT EXISTS(SELECT 1 FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
}
|
|
|
|
DBHelper.ExecuteNonQuery(verifyLotExistSql, cmd);
|
|
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,
|
|
{0}
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
isnull((select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='500fb2a3-c597-4371-ab18-b280b55d571e'),'') AS LotSplitEnable,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'" + ScanType + @"' AS ScanType
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' ";
|
|
}
|
|
else
|
|
{
|
|
#region 验证是否到货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.PurchaseReceiveDRCoffeeDoc.GetDescription())
|
|
{
|
|
|
|
string arrivalCtrlSql = string.Format(@"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
WorkPoint,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{0}' AND WorkPoint='{1}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
a.WorkPoint,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
IF NOT EXISTS(SELECT
|
|
1
|
|
FROM #TempICSBomALL con
|
|
INNER JOIN ICSContainerLot conlot ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON lot.LotNo=conlot.LotNo AND lot.WorkPoint=conlot.WorkPoint
|
|
INNER JOIN ICSASNDetail asde ON asde.LotNo=lot.LotNo AND asde.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSDeliveryNotice dn ON dn.ASNCode=asde.ASNCode AND dn.WorkPoint=asde.WorkPoint
|
|
WHERE con.TContainerCode='{0}' AND con.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo532"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
|
|
|
|
DROP TABLE #TempICSBomALL", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(arrivalCtrlSql, cmd);
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
string arrivalCtrlSql = string.Format(@"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
WorkPoint,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{0}' AND WorkPoint='{1}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
a.WorkPoint,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
IF NOT EXISTS(SELECT
|
|
1
|
|
FROM #TempICSBomALL con
|
|
INNER JOIN ICSContainerLot conlot ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON lot.LotNo=conlot.LotNo AND lot.WorkPoint=conlot.WorkPoint
|
|
INNER JOIN ICSOASNDetail asde ON asde.LotNo=lot.LotNo AND asde.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSODeliveryNotice dn ON dn.OASNCode=asde.OASNCode AND dn.WorkPoint=asde.WorkPoint
|
|
WHERE con.TContainerCode='{0}' AND con.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo532"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
|
|
|
|
DROP TABLE #TempICSBomALL", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(arrivalCtrlSql, cmd);
|
|
}
|
|
#endregion
|
|
|
|
//验证箱号中的条码是否存在
|
|
string verifyLotExistSql = string.Format(@"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
WorkPoint,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{0}' AND WorkPoint='{1}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
a.WorkPoint,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
IF NOT EXISTS(SELECT 1 FROM #TempICSBomALL a
|
|
INNER JOIN ICSContainerLot b ON b.ContainerID=a.ID AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE a.TContainerCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DROP TABLE #TempICSBomALL", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(verifyLotExistSql, cmd);
|
|
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
{0}
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'" + ScanType + @"' AS ScanType
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN #TempICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE bom.TContainerCode='{2}' AND a.WorkPoint='{3}' AND a.Quantity>0";
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
bool isOut = false; //出库标记
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string columnsLOCODE = string.Empty;
|
|
string columnsLONAME = string.Empty;
|
|
string columnsWHCODE = string.Empty;
|
|
string columnsWHNAME = string.Empty;
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //排序
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription() //采购退货
|
|
|| TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() //委外发料
|
|
|| TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription() //委外发料
|
|
|| TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription() //委外退货
|
|
|| TransType == TransTypeEnum.MOIssueDoc.GetDescription() //生产发料
|
|
|| TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription() //生产发料——自动出库
|
|
|| TransType == TransTypeEnum.SalesShipmentDoc.GetDescription() //销售出库
|
|
|| TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription() //销售出库
|
|
|| TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription() //一步调拨
|
|
|| TransType == TransTypeEnum.StepTransferDocIn.GetDescription() //调拨
|
|
|| TransType == TransTypeEnum.StepNoTransferDocIn.GetDescription() //无源头调拨
|
|
|| TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription() //调拨申请单
|
|
|| TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription() //两步调出
|
|
|| TransType == TransTypeEnum.OtherOutDoc.GetDescription() //其他出库
|
|
|| TransType == TransTypeEnum.OtherInRedDoc.GetDescription() //红字其他入库
|
|
|| TransType == TransTypeEnum.Check.GetDescription() //盘点
|
|
|| TransType == TransTypeEnum.MOApply.GetDescription() //领料申请单
|
|
|| TransType == TransTypeEnum.MOReplenishment.GetDescription() //领料申请单
|
|
|| TransType == TransTypeEnum.OOApply.GetDescription() //委外领料申请单
|
|
|| TransType == TransTypeEnum.MOIssue.GetDescription() //开立材料出库单
|
|
|| TransType == TransTypeEnum.OOIssue.GetDescription() //开立委外材料出库单
|
|
|| TransType == TransTypeEnum.PurchaseReceive.GetDescription() //开立红字入库单
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription()//开立委外红字入库单
|
|
|| TransType == TransTypeEnum.BrrowDoc.GetDescription() //借用
|
|
|| TransType == TransTypeEnum.TransferLibrary.GetDescription() //移库
|
|
|| TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription() //移库
|
|
|| TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription() //采购退货-采购订单
|
|
|| TransType == TransTypeEnum.OutsourcingReturnBackPo.GetDescription() //委外退货-委外采购订单
|
|
//|| TransType == TransTypeEnum.DisassemblyDoc.GetDescription() //拆卸单(散件生成条码入库)
|
|
)
|
|
{
|
|
isOut = true;
|
|
}
|
|
//库位查询
|
|
if (TransType == TransTypeEnum.LocationSeatch.GetDescription())
|
|
{
|
|
// Losql = @"" + Losql + "group by a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,s.WarehouseCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,s.sumQty,inv.AmountUnit,ext.ID,ext.ProjectCode,ext.Version,ext.Brand, " +
|
|
// "ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MTIME";
|
|
|
|
// columns = @"s.WarehouseCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,sum(a.Quantity) as Qty,s.sumQty,";
|
|
|
|
// tableName = @"ICSWareHouseLotInfo a
|
|
//LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
//INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
//INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
//LEFT JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode from ICSWareHouseLotInfo group by WarehouseCode,INVCode)s
|
|
//ON a.INVCode=s.INVCode ";
|
|
|
|
}
|
|
//库位查询
|
|
else if (TransType == TransTypeEnum.CodePrint.GetDescription())
|
|
{
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
//两步调入条码
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSOtherIn Otin
|
|
INNER JOIN ICSTransfer tra ON Otin.TransferDetailID=tra.TransferDetailID AND Otin.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSOtherOut out ON out.TransferDetailID=tra.TransferDetailID AND out.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON out.OutCode=log.TransCode AND out.Sequence=log.TransSequence AND out.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND Otin.InCode = '" + JsonData.TransCode + @"')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo036") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql + "AND Otin.InCode = '" + JsonData.TransCode + @"'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSOtherIn Otin
|
|
INNER JOIN ICSTransfer tra ON Otin.TransferDetailID=tra.TransferDetailID AND Otin.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSOtherOut out ON out.TransferDetailID=tra.TransferDetailID AND out.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON out.OutCode=log.TransCode AND out.Sequence=log.TransSequence AND out.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql + "AND Otin.InCode = '" + JsonData.TransCode + @"'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSOtherIn Otin
|
|
INNER JOIN ICSTransfer tra ON Otin.TransferDetailID=tra.TransferDetailID AND Otin.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSOtherOut out ON out.TransferDetailID=tra.TransferDetailID AND out.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON out.OutCode=log.TransCode AND out.Sequence=log.TransSequence AND out.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
|
|
}
|
|
//销售退货-原条码(可支持一个条码多次发货,汇总数量,目前加了限制:785-793行)
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND sdn.Type='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo037") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT log.LotNo FROM ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND sdn.Type='1' AND log.BusinessCode='19'
|
|
GROUP BY log.LotNo HAVING COUNT(log.LotNo)>=2)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo191"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql + @"AND sdn.Type='1'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql + @"AND sdn.Type='1'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
}
|
|
//销售出库红字出库单-原条码(可支持一个条码多次发货,汇总数量,目前加了限制:785-793行)
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutRedYuanDoc.GetDescription())
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT log.ID FROM ICSWareHouseLotInfoLog log
|
|
WHERE log.LotNo='{2}' AND log.WorkPoint='{3}' AND log.BusinessCode IN ('19','55'))
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo037") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT log.LotNo FROM ICSWareHouseLotInfoLog log
|
|
WHERE log.LotNo='{2}' AND log.WorkPoint='{3}' AND log.BusinessCode IN ('19','55')
|
|
GROUP BY log.LotNo HAVING COUNT(log.LotNo)>=2)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo191"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql + @" AND log.BusinessCode IN ('19','55')
|
|
GROUP BY inv.LotEnable,log.ID,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
log.ID AS LogID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @" ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql + @"AND log.BusinessCode IN ('19','55')
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @" ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
}
|
|
//生产(委外)退料-原条码+新条码
|
|
//先校验日志里面是否有原条码(同一种类型的条码只能发一次料才能原条码退,不然更新源头单据数量有问题,根据LogID判断是否原条码退回),如果没有查询新条码
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
string type = "13";
|
|
string msglanguage = "WMSAPIInfo185";
|
|
if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
|
|
{
|
|
type = "14";
|
|
msglanguage = "WMSAPIInfo186";
|
|
}
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
type = "15";
|
|
msglanguage = "WMSAPIInfo187";
|
|
}
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription())
|
|
{
|
|
type = "5";
|
|
msglanguage = "WMSAPIInfo188";
|
|
}
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription())
|
|
{
|
|
type = "6";
|
|
msglanguage = "WMSAPIInfo189";
|
|
}
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
type = "7";
|
|
msglanguage = "WMSAPIInfo190";
|
|
}
|
|
#region 新条码
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sqlNew = @"IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
" + sql;
|
|
//东辉生产退料不需要检验 先注释
|
|
|
|
// IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
|
|
|
|
|
|
|
|
|
|
// INNER JOIN ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
|
|
|
|
|
|
|
|
|
|
|
|
// LEFT JOIN ICSInspection ins ON a.LotNo = ins.LotNo AND a.WorkPoint = ins.WorkPoint
|
|
|
|
|
|
|
|
|
|
|
|
// WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}' AND(b.InvIQC = '1'AND ins.LotNo IS NULL))
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"', 16, 1);
|
|
// RETURN
|
|
//END
|
|
|
|
if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
(select negg.WHCode from ICSMOApplyNegDetail neg
|
|
INNER JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
inner join ICSInventoryLotDetail lotdetail on neg.ApplyNegCode=lotdetail.TransCode
|
|
and neg.Sequence=lotdetail.TransSequence
|
|
where lotdetail.LotNo=a.LotNo and lotdetail.WorkPoint=a.WorkPoint) AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
'' AS LogID,
|
|
ext.BatchCode AS BatchCode,";
|
|
}
|
|
|
|
if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
(select negg.WHCode from ICSOApplyNegDetail neg
|
|
INNER JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
inner join ICSInventoryLotDetail lotdetail on neg.OApplyNegCode=lotdetail.TransCode
|
|
and neg.Sequence=lotdetail.TransSequence
|
|
where lotdetail.LotNo=a.LotNo and lotdetail.WorkPoint=a.WorkPoint) AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
'' AS LogID,
|
|
ext.BatchCode AS BatchCode,";
|
|
}
|
|
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1 ";
|
|
}
|
|
else
|
|
{
|
|
sqlNew = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
" + sql;
|
|
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
|
|
sqlNew = string.Format(sqlNew, columns, tableName, JsonData.Code, JsonData.WorkPoint, zlqty);
|
|
#endregion
|
|
#region 原条码
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = sql + @" AND log.BusinessCode IN('" + type + @"') GROUP BY inv.LotEnable,log.ID,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN(invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')= '1') OR ISNULL(invBat.BatchEnable, '0')= '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME
|
|
";
|
|
sql = @"IF EXISTS(" + sql + @")
|
|
BEGIN
|
|
" + sql + @"
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
" + sqlNew + @"
|
|
END";
|
|
sql = @"IF EXISTS(SELECT log.LotNo FROM ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND log.BusinessCode='" + type + @"'
|
|
GROUP BY log.LotNo HAVING COUNT(log.LotNo)>=2)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode(msglanguage), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
log.ID AS LogID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = sql + @" AND log.BusinessCode IN('" + type + @"') GROUP BY inv.LotEnable,log.ID,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN(invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')= '1') OR ISNULL(invBat.BatchEnable, '0')= '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME
|
|
";
|
|
sql = @"IF EXISTS(" + sql + @")
|
|
BEGIN
|
|
" + sql + @"
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
" + sqlNew + @"
|
|
END";
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
" + sql;
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
log.ID AS LogID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
|
|
#region 新条码
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sqlNew = @"IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
" + sql;
|
|
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1 ";
|
|
}
|
|
else
|
|
{
|
|
sqlNew = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
" + sql;
|
|
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
|
|
sqlNew = string.Format(sqlNew, columns, tableName, JsonData.Code, JsonData.WorkPoint, zlqty);
|
|
#endregion
|
|
#region 原条码
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = sql + @" AND log.BusinessCode IN('27') GROUP BY inv.LotEnable,log.ID,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN(invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')= '1') OR ISNULL(invBat.BatchEnable, '0')= '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME
|
|
";
|
|
sql = @"IF EXISTS(" + sql + @")
|
|
BEGIN
|
|
" + sql + @"
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
" + sqlNew + @"
|
|
END";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
log.ID AS LogID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = sql + @" AND log.BusinessCode IN('27') GROUP BY inv.LotEnable,log.ID,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN(invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')= '1') OR ISNULL(invBat.BatchEnable, '0')= '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME
|
|
";
|
|
sql = @"IF EXISTS(" + sql + @")
|
|
BEGIN
|
|
" + sql + @"
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
" + sqlNew + @"
|
|
END";
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
" + sql;
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
log.ID AS LogID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
//分批
|
|
else if (TransType == TransTypeEnum.LOTSplit.GetDescription() || TransType == TransTypeEnum.LOTMerge.GetDescription())
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND a.Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
--冻结条码不可分批合批(待增加提示11.13)
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND a.Freeze!=0)
|
|
BEGIN
|
|
--RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RAISERROR('条码已冻结,不能操作!',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
|
|
columns = @"a.Quantity,
|
|
a.Quantity*(lot.Amount/lot.Quantity) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,isnull(lot.EATTRIBUTE4,'') as EATTRIBUTE4,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(split.SplitLotNo, a.LotNo+'-1') AS SplitLotNo,";
|
|
|
|
tableName = @"ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN (SELECT EATTRIBUTE1 AS LotNo,WorkPoint,EATTRIBUTE1+'-'+CAST((MAX(CAST(reverse(substring(reverse(LotNo),1,charindex('-',reverse(LotNo)) - 1)) AS INT))+1) AS VARCHAR) AS SplitLotNo FROM ICSInventoryLot GROUP BY EATTRIBUTE1,WorkPoint) split ON a.LotNo=split.LotNo --AND a.WorkPoint=split.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
//出库条码
|
|
else if (isOut)
|
|
{
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription() || TransType == TransTypeEnum.MOApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssue.GetDescription() || TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.OOApply.GetDescription() || TransType == TransTypeEnum.OOIssue.GetDescription()
|
|
|| TransType == TransTypeEnum.SalesShipmentDoc.GetDescription() || TransType == TransTypeEnum.OtherOutDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.BrrowDoc.GetDescription() || TransType == TransTypeEnum.StepTransferDocIn.GetDescription()
|
|
|| TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription() || TransType == TransTypeEnum.MOReplenishment.GetDescription()
|
|
|| TransType == TransTypeEnum.OtherInRedDoc.GetDescription() || TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
if (JsonData.IsPick != "1")
|
|
{
|
|
ZLtable = ICSControlModeService.GetZL();
|
|
if (ZLtable == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo471"));
|
|
}
|
|
|
|
for (int i = 0; i < ZLtable.Rows.Count; i++)
|
|
{
|
|
|
|
string zlName = ZLtable.Rows[i]["Name"].ToString();
|
|
string zlTransCode = ZLtable.Rows[i]["BusinessCode"].ToString();
|
|
string Enable = ZLtable.Rows[i]["Enable"].ToString();
|
|
if (JsonData.TransType.Equals(zlName))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
if (JsonData.TransCode.Contains("~"))
|
|
{
|
|
JsonData.TransCode = JsonData.TransCode.Substring(0, JsonData.TransCode.IndexOf('~'));
|
|
}
|
|
string zlsql = @"IF NOT EXISTS(select a.Quantity from ICSWareHouseLotInfoLog a
|
|
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode
|
|
--left join ICSType c on a.BusinessCode=c.Code and c.tablecode='ICSWareHouseLotInfoLog' and c.ColumnCode='BusinessCode'
|
|
where b.LotNo='{0}' and b.WorkPoint='{1}' and a.TransType='15' and (a.TransCode='{3}' or a.MergeID='{3}') and isnull(a.EATTRIBUTE2,'')<>'1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo469") + @"',16,1);
|
|
RETURN
|
|
END
|
|
select sum(a.Quantity) AS Quantity from ICSWareHouseLotInfoLog a
|
|
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode
|
|
--left join ICSType c on a.BusinessCode=c.Code and c.tablecode='ICSWareHouseLotInfoLog' and c.ColumnCode='BusinessCode'
|
|
where b.LotNo='{0}' and b.WorkPoint='{1}' and a.TransType='15' and (a.TransCode='{3}' or a.MergeID='{3}') and isnull(a.EATTRIBUTE2,'')<>'1'";
|
|
zlsql = string.Format(zlsql, JsonData.Code, JsonData.WorkPoint, JsonData.TransType, JsonData.TransCode);
|
|
DataTable zlltable = DBHelper.SQlReturnData(zlsql, cmd);
|
|
if (zlltable != null || zlltable.Rows.Count > 0)
|
|
{
|
|
|
|
zlqty = zlltable.Rows[0]["Quantity"].ToString();
|
|
iszl = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
//东辉盘点 判断是否存在于子表
|
|
if (TransType == TransTypeEnum.Check.GetDescription())
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' )
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSCheckDetail a inner join ICSCheck b on a.CheckID = b.id WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND b.CheckCode = '{5}')
|
|
BEGIN
|
|
RAISERROR('盘点单无此条码数据!',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
|
|
}
|
|
else //原逻辑
|
|
{
|
|
if (DBHelper.IsPNU9() && TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.Quantity>0 AND a.Freeze='1')
|
|
BEGIN
|
|
RAISERROR('条码状态:冻结,无法出库,请确认!',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
else
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND a.Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND a.Quantity>0 AND a.Freeze='1')
|
|
BEGIN
|
|
RAISERROR('条码状态:冻结,无法出库,请确认!',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
//log.Debug(sql);
|
|
}
|
|
|
|
|
|
|
|
if (iszl)
|
|
{
|
|
columns = @"{0} as Quantity,
|
|
{0}*(lot.Amount/lot.Quantity) AS Amount,
|
|
a.id AS LogID,
|
|
a.FromWarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
inv.LotEnable,
|
|
a.FromLocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
columns = string.Format(columns, zlqty);
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint and a.transtype='15'
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.FromLocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
if (DBHelper.IsPNU9() && TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
#region 派纳一步调拨sql单独
|
|
PNTranfersql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.Quantity>0 AND a.Freeze='1')
|
|
BEGIN
|
|
RAISERROR('条码状态:冻结,无法出库,请确认!',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.lotno=b.LotNo
|
|
INNER JOIN ICSTransfer c ON b.TransCode=c.TransferNO and b.TransSequence=c.Sequence
|
|
where c.TransferNO='{5}' GROUP BY a.LotNo
|
|
HAVING COUNT(b.LotNo)>0
|
|
)
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.lotno=b.LotNo
|
|
INNER JOIN ICSTransfer c ON b.TransCode=c.TransferNO and b.TransSequence=c.Sequence
|
|
where a.LotNo='{2}')
|
|
BEGIN
|
|
RAISERROR('请扫描该调拨单生成的条码!',16,1);
|
|
RETURN
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,
|
|
(a.Quantity-a.lockQuantity) AS Quantity,
|
|
(a.Quantity-a.lockQuantity)*(lot.Amount/lot.Quantity) AS Amount,
|
|
'' AS LogID,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
inv.LotEnable,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'LOTNO' AS ScanType
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo --AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail b ON a.lotno=b.LotNo
|
|
INNER JOIN ICSTransfer c ON b.TransCode=c.TransferNO and b.TransSequence=c.Sequence
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID --AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode --AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode --AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode --AND a.WorkPoint=invBat.WorkPoint
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.LotNo='{2}'
|
|
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT DISTINCT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,
|
|
(a.Quantity-a.lockQuantity) AS Quantity,
|
|
(a.Quantity-a.lockQuantity)*(lot.Amount/lot.Quantity) AS Amount,
|
|
'0' AS SUMLotCount,
|
|
'0' AS ISSUMLotCount,
|
|
'' AS LogID,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
inv.LotEnable,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'LOTNO' AS ScanType
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo --AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID --AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode --AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode --AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode --AND a.WorkPoint=invBat.WorkPoint
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.LotNo='{2}'
|
|
END";
|
|
#endregion
|
|
}
|
|
columns = @"(a.Quantity-a.lockQuantity) AS Quantity,
|
|
(a.Quantity-a.lockQuantity)*(lot.Amount/lot.Quantity) AS Amount,
|
|
'' AS LogID,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
inv.LotEnable,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
'0' AS SUMLotCount,
|
|
'0' AS ISSUMLotCount,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
//if (DBHelper.IsPNU9() && TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
//{
|
|
// tableName = @"ICSWareHouseLotInfo a
|
|
//INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo --AND a.WorkPoint=lot.WorkPoint
|
|
//INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID --AND lot.WorkPoint=ext.WorkPoint
|
|
//INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode --AND a.WorkPoint=wh.WorkPoint
|
|
//INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode --AND a.WorkPoint=loc.WorkPoint
|
|
//LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode --AND a.WorkPoint=invBat.WorkPoint";
|
|
//}
|
|
//else
|
|
//{
|
|
tableName = @"ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
//}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
-- IF EXISTS(SELECT 1 FROM ICSInventoryLot a
|
|
-- INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
-- LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
-- LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1
|
|
-- LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
-- LEFT JOIN #TempICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
-- LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
-- INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
-- WHERE bom.TContainerCode='{2}' AND a.WorkPoint='{3}' AND inv.InvIQC='1' AND ins.LotNo IS NULL)
|
|
-- BEGIN
|
|
-- RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
-- RETURN;
|
|
-- END
|
|
" + sql + @"
|
|
DROP TABLE #TempICSBomALL";
|
|
|
|
columns = @"(a.Quantity-a.lockQuantity) AS Quantity,
|
|
(a.Quantity-a.lockQuantity)*(lot.Amount/lot.Quantity) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
";
|
|
}
|
|
|
|
|
|
}
|
|
//入库条码
|
|
else
|
|
{
|
|
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
|
|
if ((TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.PurchaseReceiveDRCoffeeDoc.GetDescription() || TransType == TransTypeEnum.DeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription() || TransType == TransTypeEnum.ODeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.MOStockINByProduct.GetDescription() || TransType == TransTypeEnum.MOStockINByProductNoTrans.GetDescription()
|
|
|| TransType == TransTypeEnum.OOStockINByProduct.GetDescription() || TransType == TransTypeEnum.OtherInDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription() || TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription()) && needIns)
|
|
{
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}')
|
|
BEGIN
|
|
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND (b.InvIQC='1' AND ins.LotNo IS NULL))
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND b.InvIQC='1' AND ins.enable = 1 AND ISNULL(ins.QualifiedQuantity, 0)+ISNULL(ins.WaiveQuantity, 0)<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo533") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
else if ((TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription() || TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceive.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureMESReceive.GetDescription()) && needIns)
|
|
{
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}')
|
|
BEGIN
|
|
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND (b.InvFQC='1' AND ins.LotNo IS NULL))
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND b.InvIQC='1' AND ins.enable = 1 AND ISNULL(ins.QualifiedQuantity, 0)+ISNULL(ins.WaiveQuantity, 0)<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo533") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}')
|
|
BEGIN
|
|
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
|
|
|
|
|
|
|
|
ControlMode mode = ICSControlModeService.GetSuLocation();
|
|
|
|
//获取条码类型
|
|
LotTypesql = @"IF NOT EXISTS(SELECT Type FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo461") + @"',16,1);
|
|
RETURN
|
|
END
|
|
SELECT Type FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
LotTypesql = string.Format(LotTypesql, JsonData.Code, JsonData.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(LotTypesql, cmd);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
LotType = dt.Rows[0]["Type"].ToString();
|
|
}
|
|
|
|
if (mode != null)
|
|
{
|
|
if (mode.itemCode.Equals("LocationRemind01"))//固定库位:物料和库位绑定,显示库位名称列表
|
|
{
|
|
columnsLONAME = @"
|
|
(SELECT locat.LocationName from ICSWareHouseLotInfo loinfo
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=loinfo.LocationCode and loinfo.WorkPoint=locat.WorkPoint
|
|
where loinfo.lotno=a.lotno and loinfo.invcode=a.invcode and a.WorkPoint=loinfo.WorkPoint) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
(SELECT locat.LocationCode from ICSWareHouseLotInfo loinfo
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=loinfo.LocationCode and loinfo.WorkPoint=locat.WorkPoint
|
|
where loinfo.lotno=a.lotno and loinfo.invcode=a.invcode and a.WorkPoint=loinfo.WorkPoint) AS LocationCode,";
|
|
|
|
}
|
|
else if (mode.itemCode.Equals("LocationRemind02"))//在库库位:物料有库存的对应库位,显示库位名称列表
|
|
{
|
|
columnsLONAME = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationName
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo on wh.LocationCode=lotinfo.LocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and lotinfo.Quantity>0
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationCode
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo on wh.LocationCode=lotinfo.LocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and lotinfo.Quantity>0
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationCode,";
|
|
}
|
|
else if (mode.itemCode.Equals("LocationRemind03"))//最近一次出入库的库位,显示库位名称
|
|
{
|
|
columnsLONAME = @"
|
|
(SELECT Top 1 locat.LocationName from ICSWareHouseLotInfoLog log
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=log.ToLocationCode and log.WorkPoint=locat.WorkPoint where log.TransType='2' and a.InvCode=log.InvCode AND a.WorkPoint=log.WorkPoint
|
|
ORDER BY log.Mtime desc) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
(SELECT Top 1 locat.LocationCode from ICSWareHouseLotInfoLog log
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=log.ToLocationCode and log.WorkPoint=locat.WorkPoint where log.TransType='2' and a.InvCode=log.InvCode AND a.WorkPoint=log.WorkPoint
|
|
ORDER BY log.Mtime desc) AS LocationCode,";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
if (DBHelper.IsPNU9())
|
|
{
|
|
columnsLONAME = @" '' AS LocationName,";
|
|
columnsLOCODE = @" '' AS LocationCode,";
|
|
}
|
|
else
|
|
{
|
|
columnsLONAME = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationName
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfoLog lotinfo on wh.LocationCode=lotinfo.ToLocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and (lotinfo.TransType='2' OR lotinfo.TransType='3')
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationName,";
|
|
columnsLOCODE = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationCode
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfoLog lotinfo on wh.LocationCode=lotinfo.ToLocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and (lotinfo.TransType='2' OR lotinfo.TransType='3')
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationCode,";
|
|
}
|
|
|
|
|
|
}
|
|
|
|
#region 根据条码类型找到单据仓库信息
|
|
if (LotType.Equals("1"))
|
|
{//生产退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("2"))
|
|
{//委外退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("3"))
|
|
{//工单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSMO a WHERE a.MOCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSMO a WHERE a.MOCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("4"))
|
|
{//销售退货
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSSDN a WHERE a.SDNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSSDN a WHERE a.SDNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("5"))
|
|
{//其他入库
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSOtherIn a WHERE a.InCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSOtherIn a WHERE a.InCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("6"))
|
|
{//归还单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSReturn a WHERE a.ReturnCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSReturn a WHERE a.ReturnCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("7"))
|
|
{//采购到货单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("8"))
|
|
{//委外到货单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("9"))
|
|
{//成品入库单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSManufactureReceive a WHERE a.RCVCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSManufactureReceive a WHERE a.RCVCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("10"))
|
|
{//拒收单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("11"))
|
|
{//委外拒收单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("12"))
|
|
{//领料申请退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("13"))
|
|
{//材料出库退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("14"))
|
|
{//委外领料申请退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("15"))
|
|
{//委外材料出库退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("16"))
|
|
{//返工工单
|
|
columnsWHCODE = @"ISNULL((SELECT pick.WHCode FROM ICSMOPick pick LEFT JOIN ICSMO moo ON pick.MODetailID=moo.MODetailID AND pick.WorkPoint=moo.WorkPoint
|
|
WHERE moo.MOCode=lotdd.TransCode AND pick.Sequence=lotdd.TransSequence AND pick.WorkPoint=lotdd.WorkPoint),'') AS WHCode ";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT pick.WHCode FROM ICSMOPick pick LEFT JOIN ICSMO moo ON pick.MODetailID=moo.MODetailID AND pick.WorkPoint=moo.WorkPoint
|
|
WHERE moo.MOCode=lotdd.TransCode AND pick.Sequence=lotdd.TransSequence AND pick.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName ";
|
|
}
|
|
else if (LotType.Equals("22"))
|
|
{//采购入库单
|
|
columnsWHCODE = @"ISNULL((SELECT ssd.WHCode FROM ICSPurchaseReceive ssd
|
|
WHERE ssd.RCVCode=lotdd.TransCode AND ssd.Sequence=lotdd.TransSequence AND ssd.WorkPoint=lotdd.WorkPoint),'') AS WHCode ";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT ssd.WHCode FROM ICSPurchaseReceive ssd
|
|
WHERE ssd.RCVCode=lotdd.TransCode AND ssd.Sequence=lotdd.TransSequence AND ssd.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("24"))
|
|
{//销售发货-红字出库单
|
|
columnsWHCODE = @"ISNULL((SELECT ssd.WHCode FROM ICSSSD ssd
|
|
WHERE ssd.SSDCode=lotdd.TransCode AND ssd.Sequence=lotdd.TransSequence AND ssd.WorkPoint=lotdd.WorkPoint),'') AS WHCode ";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT ssd.WHCode FROM ICSSSD ssd
|
|
WHERE ssd.SSDCode=lotdd.TransCode AND ssd.Sequence=lotdd.TransSequence AND ssd.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else
|
|
{
|
|
columnsWHCODE = @"'' AS WHCode";
|
|
columnsWHNAME = @"'' AS WHName";
|
|
}
|
|
#endregion
|
|
|
|
if ((TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.PurchaseReceiveDRCoffeeDoc.GetDescription() || TransType == TransTypeEnum.DeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription() || TransType == TransTypeEnum.ODeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription() || TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.MOStockINByProductNoTrans.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceive.GetDescription() || TransType == TransTypeEnum.OOStockINByProduct.GetDescription()
|
|
|| TransType == TransTypeEnum.MOStockINByProduct.GetDescription() || TransType == TransTypeEnum.OtherInDoc.GetDescription() || TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription() || TransType == TransTypeEnum.ManufactureMESReceive.GetDescription()) && needIns)
|
|
{
|
|
if (DBHelper.IsPNU9() && TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
isnull(pev.EATTRIBUTE3,'') AS VenName,
|
|
{0},{2},
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSPurchaseReceive pev ON lotdd.TransCode=pev.RCVCode AND lotdd.TransSequence=pev.Sequence AND lotdd.WorkPoint=pev.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
else if (DBHelper.IsPNU9() && TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
isnull(pev.EATTRIBUTE3,'') AS VenName,
|
|
{0},{2},
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSOutsourcingReceive pev ON lotdd.TransCode=pev.RCVCode AND lotdd.TransSequence=pev.Sequence AND lotdd.WorkPoint=pev.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
else
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
{0},{2},
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
|
|
}
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
{0},{2},
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,
|
|
isnull(lotdd.TransCode,'') as TransCode,isnull(lotdd.TransSequence,'') as TransSequence,
|
|
sdn.SOCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
INNER join ICSSDN sdn on lotdd.transcode=sdn.sdncode and lotdd.TransSequence=sdn.Sequence and lotdd.WorkPoint=sdn.WorkPoint";
|
|
}
|
|
else if (TransType == TransTypeEnum.RTTwoStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
'','',
|
|
'',
|
|
'',
|
|
ext.BatchCode AS BatchCode,
|
|
isnull(lotdd.TransCode,'') as TransCode,isnull(lotdd.TransSequence,'') as TransSequence,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
{0},{2},
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,
|
|
isnull(lotdd.TransCode,'') as TransCode,isnull(lotdd.TransSequence,'') as TransSequence,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint";
|
|
}
|
|
|
|
|
|
|
|
columns = string.Format(columns, columnsWHCODE, columnsLONAME, columnsWHNAME, columnsLOCODE);
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
//检查容器内条码是否已入库
|
|
string existsSql = string.Format(@"IF EXISTS(SELECT 1
|
|
FROM ICSContainer con
|
|
INNER JOIN ICSContainerLot conlot ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo info ON info.LotNo=conlot.LotNo AND info.WorkPoint=conlot.WorkPoint
|
|
WHERE con.ContainerCode='{0}' AND con.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(existsSql, cmd);
|
|
|
|
string inspectedSql = string.Format(@"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{0}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
SELECT DISTINCT inv.InvCode FROM ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN #TempICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE bom.TContainerCode='{0}' AND a.WorkPoint='{1}' AND inv.InvIQC='1' AND ins.LotNo IS NULL
|
|
|
|
DROP TABLE #TempICSBomALL", JsonData.Code, JsonData.WorkPoint);
|
|
DataTable inspectDt = DBHelper.SQlReturnData(inspectedSql, cmd);
|
|
if (inspectDt != null && inspectDt.Rows.Count > 0)
|
|
{
|
|
var invCodeList = new List<string>();
|
|
foreach (DataRow row in inspectDt.Rows)
|
|
{
|
|
invCodeList.Add(row["InvCode"].ToString());
|
|
}
|
|
|
|
string invCodeString = string.Join(",", invCodeList);
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo536") + invCodeString);
|
|
}
|
|
|
|
sql = @"
|
|
WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
-- IF EXISTS(SELECT 1 FROM ICSInventoryLot a
|
|
-- INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
-- LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
-- LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1
|
|
-- LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
-- LEFT JOIN #TempICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
-- LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
-- INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
-- WHERE bom.TContainerCode='{2}' AND a.WorkPoint='{3}' AND inv.InvIQC='1' AND ins.LotNo IS NULL)
|
|
-- BEGIN
|
|
-- RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
-- RETURN;
|
|
-- END
|
|
" + sql + @"
|
|
DROP TABLE #TempICSBomALL";
|
|
|
|
if ((TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.PurchaseReceiveDRCoffeeDoc.GetDescription() || TransType == TransTypeEnum.DeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription() || TransType == TransTypeEnum.ODeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription() || TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceive.GetDescription()
|
|
|| TransType == TransTypeEnum.MOStockINByProduct.GetDescription() || TransType == TransTypeEnum.MOStockINByProductNoTrans.GetDescription()
|
|
|| TransType == TransTypeEnum.OOStockINByProduct.GetDescription() || TransType == TransTypeEnum.OtherInDoc.GetDescription() || TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription() || TransType == TransTypeEnum.ManufactureMESReceive.GetDescription()) && needIns)
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint";
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if (TransType != TransTypeEnum.LocationSeatch.GetDescription() && TransType != TransTypeEnum.CodePrint.GetDescription())
|
|
{
|
|
if (string.IsNullOrWhiteSpace(columns) || string.IsNullOrWhiteSpace(tableName))
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));
|
|
}
|
|
|
|
|
|
if (TransType == TransTypeEnum.LocationSeatch.GetDescription())
|
|
{
|
|
Losql = string.Format(Losql, columns, tableName, JsonData.Code, JsonData.WorkPoint, JsonData.BatchCode);
|
|
|
|
table = DBHelper.SQlReturnData(Losql, cmd);
|
|
}
|
|
else if (TransType == TransTypeEnum.LotJL.GetDescription())
|
|
{
|
|
LotJLSql = string.Format(LotJLSql, columns, tableName, JsonData.Code, JsonData.WorkPoint, JsonData.BatchCode);
|
|
|
|
table = DBHelper.SQlReturnData(LotJLSql, cmd);
|
|
}
|
|
else if (TransType == TransTypeEnum.WLotNoSearch.GetDescription())
|
|
{
|
|
WLosql = string.Format(WLosql, columns, tableName, JsonData.Code, JsonData.WorkPoint, JsonData.BatchCode);
|
|
|
|
table = DBHelper.SQlReturnData(WLosql, cmd);
|
|
}
|
|
else if (TransType == TransTypeEnum.CodeSplitSearch.GetDescription())
|
|
{
|
|
Lotsplitsql = string.Format(Lotsplitsql, columns, tableName, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
table = DBHelper.SQlReturnData(Lotsplitsql, cmd);
|
|
}
|
|
else if (DBHelper.IsPNU9() && TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
PNTranfersql = string.Format(PNTranfersql, columns, tableName, JsonData.Code, JsonData.WorkPoint, zlqty, JsonData.TransCode);
|
|
table = DBHelper.SQlReturnData(PNTranfersql, cmd);
|
|
}
|
|
else if (TransType == TransTypeEnum.CodePrint.GetDescription())
|
|
{
|
|
Printsql = string.Format(Printsql, columns, tableName, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
table = DBHelper.SQlReturnData(Printsql, cmd);
|
|
}
|
|
else
|
|
{
|
|
sql = string.Format(sql, columns, tableName, JsonData.Code, JsonData.WorkPoint, zlqty, JsonData.TransCode);
|
|
//sql += DBHelper.SearchConditonGet("Search", "f6d34ca8-a5d2-4a35-9ded-b19626954f57", cmd);
|
|
log.Info("条码sql:" + sql);
|
|
table = DBHelper.SQlReturnData(sql, cmd);
|
|
}
|
|
|
|
if (table == null || table.Rows.Count <= 0)
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo008"));//"未查询到条码数据!"
|
|
|
|
#region 出库检验是否符合源头单据
|
|
|
|
string msg = string.Empty;
|
|
bool isLimit = false;
|
|
string sqlCheckSign = @"select F_EnabledMark from Sys_SRM_Items where F_EnCode = 'OutWithLocationCode' and F_EnabledMark = '1'";
|
|
DataTable flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
if (isOut) // && TransType != TransTypeEnum.LOTSplit.GetDescription()
|
|
{//&& TransType != TransTypeEnum.TransferLibrary.GetDescription()
|
|
string Lot = "";
|
|
string workP = "";
|
|
if (TransType == TransTypeEnum.TransferLibrary.GetDescription())
|
|
{
|
|
foreach (DataRow drLot in table.Rows)
|
|
{
|
|
Lot = drLot["LotNo"].ToString();
|
|
sql = @"SELECT WarehouseCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, Lot, JsonData.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), Lot));
|
|
}
|
|
string whcode = dt.Rows[0]["WarehouseCode"].ToString();
|
|
if (!JsonData.WHCode.Equals(whcode))
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo395"), JsonData.WHCode, whcode));
|
|
}
|
|
}
|
|
|
|
}
|
|
else if (TransType != TransTypeEnum.LocationSeatch.GetDescription() && TransType != TransTypeEnum.StepNoTransferDocIn.GetDescription()
|
|
&& TransType != TransTypeEnum.CodePrint.GetDescription() && TransType != TransTypeEnum.CodeSplitSearch.GetDescription() && TransType != TransTypeEnum.LotJL.GetDescription())
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
WMSSourceDocumentModel model = new WMSSourceDocumentModel();
|
|
model.TransCode = JsonData.TransCode;
|
|
model.TransType = JsonData.TransType;
|
|
model.WorkPoint = JsonData.WorkPoint;
|
|
model.User = JsonData.User;
|
|
DataTable TransData = TransInformationGet(model);
|
|
DataView dataView = TransData.DefaultView;
|
|
|
|
foreach (DataRow drLot in table.Rows)
|
|
{
|
|
Lot = drLot["LotNo"].ToString();
|
|
//盘点不需要对比以下属性
|
|
if (TransType == TransTypeEnum.Check.GetDescription())
|
|
continue;
|
|
|
|
string rowFilter = "InvCode='" + drLot["InvCode"] + "'";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo041"), Lot, drLot["InvCode"]));
|
|
rowFilter += " AND (LEN(ISNULL(WHCode,''))<=0 OR (LEN(ISNULL(WHCode,''))>0 AND WHCode='" + drLot["WHCode"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo042"), Lot, drLot["WHCode"]));
|
|
|
|
rowFilter += " AND (LEN(ISNULL(ProjectCode,''))<=0 OR (LEN(ISNULL(ProjectCode,''))>0 AND ProjectCode='" + drLot["ProjectCode"] + "'))";
|
|
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["ProjectCode"], GetExtentionName("ProjectCode", JsonData.WorkPoint, cmd, language)));
|
|
|
|
rowFilter += "AND (LEN(ISNULL(BatchCode,''))<=0 OR (LEN(ISNULL(BatchCode,''))>0 AND BatchCode='" + drLot["BatchCode"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["BatchCode"], GetExtentionName("BatchCode", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(Version,''))<=0 OR (LEN(ISNULL(Version,''))>0 AND Version='" + drLot["Version"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["Version"], GetExtentionName("Version", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(Brand,''))<=0 OR (LEN(ISNULL(Brand,''))>0 AND Brand='" + drLot["Brand"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["Brand"], GetExtentionName("Brand", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree1,''))<=0 OR (LEN(ISNULL(cFree1,''))>0 AND cFree1='" + drLot["cFree1"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree1"], GetExtentionName("cFree1", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree2,''))<=0 OR (LEN(ISNULL(cFree2,''))>0 AND cFree2='" + drLot["cFree2"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree2"], GetExtentionName("cFree2", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree3,''))<=0 OR (LEN(ISNULL(cFree3,''))>0 AND cFree3='" + drLot["cFree3"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree3"], GetExtentionName("cFree3", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree4,''))<=0 OR (LEN(ISNULL(cFree4,''))>0 AND cFree4='" + drLot["cFree4"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree4"], GetExtentionName("cFree4", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree5,''))<=0 OR (LEN(ISNULL(cFree5,''))>0 AND cFree5='" + drLot["cFree5"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree5"], GetExtentionName("cFree5", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree6,''))<=0 OR (LEN(ISNULL(cFree6,''))>0 AND cFree6='" + drLot["cFree6"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree6"], GetExtentionName("cFree6", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree7,''))<=0 OR (LEN(ISNULL(cFree7,''))>0 AND cFree7='" + drLot["cFree7"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree7"], GetExtentionName("cFree7", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree8,''))<=0 OR (LEN(ISNULL(cFree8,''))>0 AND cFree8='" + drLot["cFree8"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree8"], GetExtentionName("cFree8", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree9,''))<=0 OR (LEN(ISNULL(cFree9,''))>0 AND cFree9='" + drLot["cFree9"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree9"], GetExtentionName("cFree9", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree10,''))<=0 OR (LEN(ISNULL(cFree10,''))>0 AND cFree10='" + drLot["cFree10"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree10"], GetExtentionName("cFree10", JsonData.WorkPoint, cmd, language)));
|
|
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
{
|
|
rowFilter += " AND LocationCode='" + drLot["LocationCode"] + "'";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo042"), Lot, drLot["LocationCode"]));
|
|
}
|
|
log.Info("1");
|
|
//保质期管理
|
|
var resultEffective = Effective(Lot, JsonData.WorkPoint, JsonData.TransType, cmd, language);
|
|
//0 - 已经是最早的批次
|
|
//1 - 不管控
|
|
//2 - 提醒
|
|
//3 - 限制
|
|
if (resultEffective == "2")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo181"), Lot) + Environment.NewLine;
|
|
}
|
|
else if (resultEffective == "3")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo182"), Lot) + Environment.NewLine;
|
|
isLimit = true;
|
|
}
|
|
string rowFilternew = rowFilter + " AND LEN(ISNULL(ProjectCode,''))>0";
|
|
string sqlnew = CheckTransnew(dataView, rowFilternew, "ProjectCode");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(BatchCode,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "BatchCode");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(Version,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "Version");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(Brand,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "Brand");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree1,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree1");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree2,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree2");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree3,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree3");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree4,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree4");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree5,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree5");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree6,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree6");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree7,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree7");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree8,''))>0 ";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree8");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree9,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree9");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree10,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree10");
|
|
|
|
|
|
|
|
//先进先出判断
|
|
if (!string.IsNullOrWhiteSpace(JsonData.CheckPassWord))
|
|
{
|
|
if (JsonData.CheckPassWord == "0")
|
|
{
|
|
var result = CanOut(Lot, JsonData.WorkPoint, JsonData.ScanLotCode, sqlnew, JsonData.TransType, cmd, language);
|
|
//0 - 已经是最早的批次
|
|
//1 - 不管控
|
|
//2 - 提醒
|
|
//3 - 限制
|
|
if (result == "2")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo178"), Lot) + Environment.NewLine;
|
|
}
|
|
else if (result == "3")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo179"), Lot) + Environment.NewLine;
|
|
isLimit = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var result = CanOut(Lot, JsonData.WorkPoint, JsonData.ScanLotCode, sqlnew, JsonData.TransType, cmd, language);
|
|
//0 - 已经是最早的批次
|
|
//1 - 不管控
|
|
//2 - 提醒
|
|
//3 - 限制
|
|
if (result == "2")
|
|
{
|
|
string tsql = @"
|
|
|
|
SELECT Top 1 a.F_ItemName
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='MtimeControl' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC";
|
|
tsql = string.Format(tsql);
|
|
DataTable dttt = DBHelper.SQlReturnData(tsql, cmd);
|
|
string Cansql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
|
|
SELECT top 1 a.LotNO,loca.LocationName FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id --AND b.WorkPoint=bext.WorkPoint
|
|
INNER JOIN ICSLocation loca on loca.LocationCode=a.LocationCode AND loca.WorkPoint=a.WorkPoint
|
|
WHERE ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO --AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id --AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND y.INVCode=b.INVCode " + sqlnew + @")
|
|
drop table #TEMPWareHouse";
|
|
|
|
if (!string.IsNullOrWhiteSpace(JsonData.ScanLotCode))
|
|
{
|
|
Cansql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
|
|
SELECT top 1 a.LotNO,loca.LocationName FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id --AND b.WorkPoint=bext.WorkPoint
|
|
INNER JOIN ICSLocation loca on loca.LocationCode=a.LocationCode AND loca.WorkPoint=a.WorkPoint
|
|
LEFT JOIN ICSWarehouseLotInfo loco ON a.LotNO = loco.LotNO AND loco.LotNO IN (" + JsonData.ScanLotCode + @")
|
|
WHERE ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO --AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id --AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND y.INVCode=b.INVCode " + sqlnew + @")
|
|
drop table #TEMPWareHouse";
|
|
Cansql = Cansql.Replace("1=1", "loco.LotNO is NULL");
|
|
}
|
|
|
|
if (dttt.Rows[0]["F_ItemName"].ToString() == "失效日期")
|
|
{
|
|
Cansql = string.Format(Cansql, Lot, JsonData.WorkPoint, "ISNULL(b.ExpirationDate,b.ProductDate)", "ISNULL(y.ExpirationDate,y.ProductDate)");
|
|
}
|
|
else if (dttt.Rows[0]["F_ItemName"].ToString() == "生产日期")
|
|
{
|
|
Cansql = string.Format(Cansql, Lot, JsonData.WorkPoint, "b.ProductDate", "y.ProductDate");
|
|
}
|
|
else
|
|
{
|
|
Cansql = string.Format(Cansql, Lot, JsonData.WorkPoint, "a.InDate", "x.InDate");
|
|
}
|
|
|
|
|
|
DataTable Newdttt = DBHelper.SQlReturnData(Cansql, cmd);
|
|
|
|
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo178"), Lot) + "推荐条码:" + Newdttt.Rows[0]["LotNO"] + ",推荐库位:" + Newdttt.Rows[0]["LocationName"] + Environment.NewLine;
|
|
}
|
|
else if (result == "3")
|
|
{
|
|
string tsql = @"
|
|
|
|
SELECT Top 1 a.F_ItemName
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='MtimeControl' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC";
|
|
tsql = string.Format(tsql);
|
|
DataTable dttt = DBHelper.SQlReturnData(tsql, cmd);
|
|
string Cansql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
|
|
SELECT top 1 a.LotNO,loca.LocationName FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id --AND b.WorkPoint=bext.WorkPoint
|
|
INNER JOIN ICSLocation loca on loca.LocationCode=a.LocationCode AND loca.WorkPoint=a.WorkPoint
|
|
WHERE ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO --AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id --AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND y.INVCode=b.INVCode " + sqlnew + @")
|
|
drop table #TEMPWareHouse";
|
|
|
|
if (!string.IsNullOrWhiteSpace(JsonData.ScanLotCode))
|
|
{
|
|
Cansql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
|
|
SELECT top 1 a.LotNO,loca.LocationName FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id --AND b.WorkPoint=bext.WorkPoint
|
|
INNER JOIN ICSLocation loca on loca.LocationCode=a.LocationCode AND loca.WorkPoint=a.WorkPoint
|
|
LEFT JOIN ICSWarehouseLotInfo loco ON a.LotNO = loco.LotNO AND loco.LotNO IN (" + JsonData.ScanLotCode + @")
|
|
WHERE ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO --AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id --AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND y.INVCode=b.INVCode " + sqlnew + @")
|
|
drop table #TEMPWareHouse";
|
|
Cansql = Cansql.Replace("1=1", "loco.LotNO is NULL");
|
|
}
|
|
|
|
if (dttt.Rows[0]["F_ItemName"].ToString() == "失效日期")
|
|
{
|
|
Cansql = string.Format(Cansql, Lot, JsonData.WorkPoint, "ISNULL(b.ExpirationDate,b.ProductDate)", "ISNULL(y.ExpirationDate,y.ProductDate)");
|
|
}
|
|
else if (dttt.Rows[0]["F_ItemName"].ToString() == "生产日期")
|
|
{
|
|
Cansql = string.Format(Cansql, Lot, JsonData.WorkPoint, "b.ProductDate", "y.ProductDate");
|
|
}
|
|
else
|
|
{
|
|
Cansql = string.Format(Cansql, Lot, JsonData.WorkPoint, "a.InDate", "x.InDate");
|
|
}
|
|
|
|
|
|
DataTable Newdttt = DBHelper.SQlReturnData(sql, cmd);
|
|
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo179"), Lot) + "推荐条码:" + Newdttt.Rows[0]["LotNO"] + ",推荐库位:" + Newdttt.Rows[0]["LocationName"] + Environment.NewLine;
|
|
isLimit = true;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{ //自定义档案 每次入库是否只控制一张单据
|
|
sqlCheckSign = @"select b.F_ItemCode as Code ,b.F_Define2 as Name,b.F_EnabledMark AS Enable,b.F_Define1 AS BusinessCode
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='InvInControl' and b.F_Define1 = '" + EnumHelper.GetDBValue(typeof(TransTypeEnum), TransType) + "' and b.F_EnabledMark= 1 order by cast(b.F_SortCode as int) asc";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
{
|
|
if (JsonData.TransCode != null && JsonData.TransCode != "" && table.Rows[0]["TransCode"].ToString() != JsonData.TransCode) throw new Exception("本次入库只能扫" + JsonData.TransCode + "单据内条码!");
|
|
}
|
|
}
|
|
#endregion
|
|
//return table;
|
|
Result res = new Result();
|
|
res.Success = true;
|
|
res.Message = msg;// "接口调用成功!";
|
|
if (!isLimit)
|
|
res.Data = table;
|
|
return res;
|
|
//出库时
|
|
//Message无值、Data有值,可直接处理
|
|
//Message有值、Data有值,弹出提醒框(可点击确定、取消,确定后继续出库,取消后不处理这批条码),显示Message信息
|
|
//Message有值、Data无值,弹出警告框(只能点击确定,且不处理这批条码),显示Message信息
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 校验条码对应的物料、自由项等信息是否与源头单据匹配
|
|
/// </summary>
|
|
private static DataView CheckTrans(DataView dataView, string rowFilter, string message)
|
|
{
|
|
dataView.RowFilter = rowFilter;
|
|
if (dataView == null || dataView.Count <= 0)
|
|
throw new Exception(message);
|
|
return dataView;
|
|
}
|
|
#endregion
|
|
|
|
private static string CheckTransnew(DataView dataView, string rowFilter, string aaa)
|
|
{
|
|
|
|
dataView.RowFilter = rowFilter;
|
|
if (dataView == null || dataView.Count <= 0)
|
|
return "";
|
|
return " AND bext." + aaa + "=yext." + aaa;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 上架
|
|
/// </summary>BusinessCode,TransType 两个类型
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LOTStockCreate(List<LOTStockUpCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
string UserCode = string.Empty;
|
|
try
|
|
{
|
|
DataTable dtable = new DataTable();
|
|
string result = string.Empty;
|
|
string IsDx = string.Empty;
|
|
string TransType = string.Empty;
|
|
string TransTypeOriginal = string.Empty;//记录不合格入库条码的原条码的类型
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.IsDx))
|
|
{
|
|
IsDx = "";
|
|
}
|
|
else
|
|
{
|
|
IsDx = item.IsDx;
|
|
}
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
string WHTransType = "2";
|
|
UserCode = item.User;
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
|
|
#region 两步调入
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.TwoStepTransferDocIn(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoTwoStepTransferDocIn(Identification, itemInfo.TransCode, itemInfo.TransSequence,
|
|
itemInfo.WarehouseCode, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity, item.User, item.WorkPoint, "6", TransTypeEnum.TwoStepTransferDocIn.GetDescription<DBValue>(), cmd, language);
|
|
}
|
|
#endregion
|
|
#region 锐腾两步调入
|
|
if (TransType == TransTypeEnum.RTTwoStepTransferDocIn.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.RTTwoStepTransferDocIn(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
//入库
|
|
ICSWareHouseLotInfoService.RTWareHouseLotInfoTwoStepTransferDocIn(Identification, itemInfo.TransCode, itemInfo.TransSequence,
|
|
itemInfo.WarehouseCode, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity, item.User, item.WorkPoint, "6", TransTypeEnum.RTTwoStepTransferDocIn.GetDescription<DBValue>(), cmd, language);
|
|
}
|
|
#endregion
|
|
#region 销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesReturnBackIn(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
//入库
|
|
BusinessCode = TransTypeEnum.SalesReturnBack.GetDescription<DBValue>();
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoUp(Identification, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity,
|
|
item.User, item.WorkPoint, WHTransType, BusinessCode, cmd, language, itemInfo.LogID, itemInfo.InvCode + itemInfo.WarehouseCode, "", "");
|
|
|
|
//更新日志表源头单据信息
|
|
string sql = @"UPDATE ICSWareHouseLotInfoLog SET TransCode='{3}',TransSequence='{4}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}' AND Identification='{2}' ";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, Identification, itemInfo.TransCode, itemInfo.TransSequence);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo143"));//"销售退货单更新失败!");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutRedYuanDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentOutRedYuanDocIn(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
//入库
|
|
BusinessCode = TransTypeEnum.SalesShipmentOutRedYuanDoc.GetDescription<DBValue>();
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoUp(Identification, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity,
|
|
item.User, item.WorkPoint, WHTransType, BusinessCode, cmd, language, itemInfo.LogID, itemInfo.InvCode + itemInfo.WarehouseCode, "", "");
|
|
|
|
//更新日志表源头单据信息
|
|
string sql = @"UPDATE ICSWareHouseLotInfoLog SET TransCode='{3}',TransSequence='{4}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}' AND Identification='{2}' ";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, Identification, itemInfo.TransCode, itemInfo.TransSequence);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo531"));//"红字销售出库单更新失败!");
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
#region 采购入库
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
log.Debug("0");
|
|
ICSPurchaseService.PurchaseReceiveDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 采购入库-入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceiveRevDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveRevDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.DeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.DeliveryNotice.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseRejectDocIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.PurchaseRejectDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.ODeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ODeliveryNotice.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingRejectDocIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OutsourcingRejectDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingIssueDoNegative(TransType, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, itemInfo.TransCode, itemInfo.TransSequence, cmd, language);
|
|
BusinessCode = TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSManufactureService.ReWorkReceiveMo(itemInfo.LotNo, itemInfo.Quantity, itemInfo.WarehouseCode, itemInfo.LocationCode, item.WorkPoint, item.User, TransTypeEnum.ReWorkReceiveMo.GetDescription<DBValue>(), cmd, language);
|
|
BusinessCode = TransTypeEnum.ReWorkReceiveMo.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReceiveDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OutsourcingReceiveDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外入库-入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReceiveRcvDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
log.Debug("生产退料1" + TransTypeEnum.MOIssueDocNegative.GetDescription());
|
|
log.Debug("生产退料2" + TransTypeEnum.MOIssueDocNegativeApply.GetDescription());
|
|
log.Debug("生产退料3" + TransTypeEnum.MOIssueDocNegativeIssue.GetDescription());
|
|
log.Debug("生产退料4" + TransType);
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssueDocNegative(TransType, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.MOIssueDocNegative.GetDescription<DBValue>();
|
|
log.Debug("生产退料5");
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
{
|
|
log.Debug("生产入库" + TransType);
|
|
//更新源头单据数量
|
|
ICSManufactureService.ManufactureReceiveDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ManufactureReceiveDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSManufactureService.ManufactureReceive(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ManufactureReceive.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region MES产成品入库单
|
|
else if (TransType == TransTypeEnum.ManufactureMESReceive.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSManufactureService.ManufactureMESReceive(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, itemInfo.TransCode, cmd, language);
|
|
BusinessCode = TransTypeEnum.ManufactureMESReceive.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentDocNegative(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.SalesShipmentDocNegative.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 销售出库-红字出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutRedDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentOutRedDocNegative(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.SalesShipmentOutRedDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherInDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OtherInDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 拆卸单
|
|
else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
ICSWareHouseService.DisassemblyDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
WHTransType = "11";
|
|
BusinessCode = TransTypeEnum.DisassemblyDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.ReturnDoc(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.LogID, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ReturnDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 不合格入库
|
|
else if (TransType == TransTypeEnum.UnqualifiedIN.GetDescription())
|
|
{
|
|
string sql = @"SELECT b.Type FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND b.WorkPoint=a.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.Type='17' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count != 0)
|
|
{
|
|
TransTypeOriginal = dt.Rows[0]["Type"].ToString();
|
|
}
|
|
|
|
if (TransTypeOriginal == string.Empty)
|
|
{
|
|
//throw new Exception(language.GetNameByCode(""));
|
|
throw new Exception("未查询到条码" + itemInfo.LotNo + "的原条码");
|
|
}
|
|
#region 审核的到货单
|
|
else if (TransTypeOriginal == "7")
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.DeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.DeliveryNotice.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.DeliveryNotice.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransTypeOriginal == "8")
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.ODeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.ODeliveryNotice.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.ODeliveryNotice.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransTypeOriginal == "2"
|
|
|| TransTypeOriginal == "14"
|
|
|| TransTypeOriginal == "15")
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingIssueDoNegative(TransTypeOriginal, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, itemInfo.TransCode, itemInfo.TransSequence, cmd, language);
|
|
//BusinessCode = TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransTypeOriginal == "1"
|
|
|| TransTypeOriginal == "12"
|
|
|| TransTypeOriginal == "13")
|
|
{
|
|
log.Debug("生产退料1" + TransTypeEnum.MOIssueDocNegative.GetDescription());
|
|
log.Debug("生产退料2" + TransTypeEnum.MOIssueDocNegativeApply.GetDescription());
|
|
log.Debug("生产退料3" + TransTypeEnum.MOIssueDocNegativeIssue.GetDescription());
|
|
log.Debug("生产退料4" + TransTypeOriginal);
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssueDocNegative(TransTypeOriginal, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.MOIssueDocNegative.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.MOIssueDocNegative.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransTypeOriginal == "3")
|
|
{
|
|
log.Debug("生产入库" + TransTypeOriginal);
|
|
//更新源头单据数量
|
|
ICSManufactureService.ManufactureReceiveDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.ManufactureReceiveDoc.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.ManufactureReceiveDoc.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransTypeOriginal == "4")
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentDocNegative(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.SalesShipmentDocNegative.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.SalesShipmentDocNegative.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransTypeOriginal == "5")
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherInDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.OtherInDoc.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.OtherInDoc.GetDescription();
|
|
}
|
|
#endregion
|
|
|
|
BusinessCode = TransTypeEnum.UnqualifiedIN.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 副产品入库
|
|
else if (TransType == TransTypeEnum.MOStockINByProduct.GetDescription())
|
|
{
|
|
log.Debug("副产品入库" + TransType);
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOStockINByProductDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.MOStockINByProduct.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外副产品入库
|
|
else if (TransType == TransTypeEnum.OOStockINByProduct.GetDescription())
|
|
{
|
|
log.Debug("副产品入库" + TransType);
|
|
//更新源头单据数量
|
|
ICSManufactureService.OOStockINByProductDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OOStockINByProduct.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
|
|
#region 无源头副产品入库
|
|
else if (TransType == TransTypeEnum.MOStockINByProductNoTrans.GetDescription())
|
|
{
|
|
log.Debug("无源头副产品入库" + TransType);
|
|
//更新源头单据数量
|
|
//ICSManufactureService.MOStockINByProductDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.MOStockINByProductNoTrans.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoUp(Identification, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity,
|
|
item.User, item.WorkPoint, WHTransType, BusinessCode, cmd, language, itemInfo.LogID, itemInfo.InvCode + itemInfo.WarehouseCode, itemInfo.TransCode, itemInfo.TransSequence);
|
|
|
|
if ("CARTON".Equals(itemInfo.ScanType))
|
|
{
|
|
//整箱提交,解绑容器与父容器
|
|
ICSWareHouseService.ICSContainerConUntieWhenIn(itemInfo.ContainerCode, item.WorkPoint, item.User, "6", cmd, language);
|
|
|
|
}
|
|
else if ("LOTNO".Equals(itemInfo.ScanType))
|
|
{
|
|
//非整箱提交,解绑条码与容器
|
|
ICSWareHouseService.ICSContainerLotUntieWhenIn(itemInfo.ContainerCode, itemInfo.LotNo, item.WorkPoint, item.User, "8", cmd, language);
|
|
}
|
|
}
|
|
}
|
|
|
|
#region 拆卸单
|
|
if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
//更新套件锁定数量
|
|
ICSWareHouseService.DisassemblyDoc(Identification, cmd, language);
|
|
}
|
|
#endregion}
|
|
}
|
|
//上传ERP
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
log.Debug("ERP接口");
|
|
if (TransTypeOriginal != string.Empty)
|
|
{
|
|
TransType = TransTypeOriginal;
|
|
}
|
|
//采购入库
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{ ICSPurchaseService.CreatePOArriveERP(TransType, Identification, cmd, language, BusinessCode, "RCV01"); }
|
|
else
|
|
{
|
|
log.Debug("2");
|
|
ICSPurchaseService.PurchaseReceiveDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
}
|
|
//采购入库-入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription())
|
|
{
|
|
|
|
ICSPurchaseService.PurchaseReceiveRevDocERP(TransType, Identification, cmd, language, BusinessCode, UserCode);
|
|
}
|
|
|
|
|
|
//审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
|
|
dtable = ICSPurchaseService.DeliveryNoticeInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
|
|
|
|
//采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
ICSPurchaseService.PurchaseRejectDocInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
ICSOutsourcingService.ODeliveryNoticeInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
ICSOutsourcingService.OutsourcingRejectDocInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
ICSOutsourcingService.OutsourcingIssueDoNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{ ICSOutsourcingService.CreateOOArriveERP(TransType, Identification, cmd, language, BusinessCode, "RCV11"); }
|
|
else
|
|
{
|
|
ICSOutsourcingService.OutsourcingReceiveDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
}
|
|
|
|
//委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription())
|
|
{
|
|
ICSOutsourcingService.OutsourcingReceiveRcvDocERP(TransType, Identification, cmd, language, BusinessCode, UserCode);
|
|
}
|
|
|
|
//生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
if (DBHelper.IsDX())
|
|
{
|
|
ICSManufactureService.DXMOIssueDocNegativeERP(TransType, Identification, cmd, language, BusinessCode, IsDx);
|
|
}
|
|
else
|
|
{
|
|
ICSManufactureService.MOIssueDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
}
|
|
|
|
//生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
|
|
ICSManufactureService.ManufactureReceiveDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//副产品入库
|
|
else if (TransType == TransTypeEnum.MOStockINByProduct.GetDescription())
|
|
ICSManufactureService.MOStockINByProductDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外副产品入库
|
|
else if (TransType == TransTypeEnum.OOStockINByProduct.GetDescription())
|
|
ICSManufactureService.OOStockINByProductDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//无源头副产品入库
|
|
else if (TransType == TransTypeEnum.MOStockINByProductNoTrans.GetDescription())
|
|
ICSManufactureService.MOStockINByProductNoTransDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
dtable = ICSManufactureService.ManufactureReceiveERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//MES产成品入库单
|
|
else if (TransType == TransTypeEnum.ManufactureMESReceive.GetDescription())
|
|
ICSManufactureService.ManufactureMESReceiveERP(TransType, Identification, JsonData[0].TransCode, cmd, language, BusinessCode);
|
|
//返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
ICSManufactureService.ReWorkReceiveMoERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
ICSSalesService.U9SalesShipmentDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
else
|
|
ICSSalesService.SalesShipmentDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
|
|
//红字销售出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutRedDoc.GetDescription() || TransType == TransTypeEnum.SalesShipmentOutRedYuanDoc.GetDescription())
|
|
{
|
|
ICSSalesService.SalesShipmentDocOutRedERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//两步调入
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
ICSWareHouseService.TwoStepTransferDocInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//两步调入
|
|
else if (TransType == TransTypeEnum.RTTwoStepTransferDocIn.GetDescription())
|
|
ICSWareHouseService.RTTwoStepTransferDocInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
ICSSalesService.SalesReturnBackInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
ICSWareHouseService.CreateOtherInDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
else
|
|
ICSWareHouseService.OtherInDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
//拆卸单
|
|
if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
ICSWareHouseService.DisassemblyDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
ICSWareHouseService.ReturnDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
if (TransType == TransTypeEnum.DeliveryNotice.GetDescription() || TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return dtable;
|
|
}
|
|
//else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription() && DBHelper.IsPNU9())
|
|
//{
|
|
// string sql = @"SELECT c.LotNo AS WLotNo FROM ICSWareHouseLotInfoLog log
|
|
// INNER JOIN ICSMO a ON log.TransCode=a.MOCode AND log.TransSequence=a.Sequence AND a.WorkPoint=log.WorkPoint
|
|
// INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.MOCode AND a.WorkPoint=log.WorkPoint
|
|
// INNER JOIN ICSInventoryLot c ON b.lotno=c.LotNo and b.WorkPoint=c.WorkPoint
|
|
// where log.Identification='{0}' AND c.LotNo NOT IN(SELECT LotNo FROM ICSWareHouseLotInfo)";
|
|
// sql = string.Format(sql, Identification);
|
|
// DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
// cmd.Transaction.Commit();
|
|
// return table;
|
|
//}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 1, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 上架(奥美专用)
|
|
/// </summary>BusinessCode,TransType 两个类型
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LOTStockCreateAM(List<LOTStockUpCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
DataTable dtable = new DataTable();
|
|
string TransTypeOriginal = string.Empty;//记录不合格入库条码的原条码的类型
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
string WHTransType = "2";
|
|
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
#region 两步调入
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.TwoStepTransferDocIn(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoTwoStepTransferDocIn(Identification, itemInfo.TransCode, itemInfo.TransSequence,
|
|
itemInfo.WarehouseCode, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity, item.User, item.WorkPoint, "6", TransTypeEnum.TwoStepTransferDocIn.GetDescription<DBValue>(), cmd, language);
|
|
}
|
|
#endregion
|
|
#region 销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesReturnBackIn(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
//入库
|
|
BusinessCode = TransTypeEnum.SalesReturnBack.GetDescription<DBValue>();
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoUp(Identification, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity,
|
|
item.User, item.WorkPoint, WHTransType, BusinessCode, cmd, language, itemInfo.LogID, itemInfo.InvCode + itemInfo.WarehouseCode, "", "");
|
|
|
|
//更新日志表源头单据信息
|
|
string sql = @"UPDATE ICSWareHouseLotInfoLog SET TransCode='{3}',TransSequence='{4}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}' AND Identification='{2}' AND TransCode='' AND TransSequence=''";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, Identification, itemInfo.TransCode, itemInfo.TransSequence);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo143"));//"销售退货单更新失败!");
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
#region 采购入库
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceiveDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.DeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.DeliveryNotice.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseRejectDocIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.PurchaseRejectDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.ODeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ODeliveryNotice.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingRejectDocIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OutsourcingRejectDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingIssueDoNegative(TransType, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, itemInfo.TransCode, itemInfo.TransSequence, cmd, language);
|
|
BusinessCode = TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSManufactureService.ReWorkReceiveMo(itemInfo.LotNo, itemInfo.Quantity, itemInfo.WarehouseCode, itemInfo.LocationCode, item.WorkPoint, item.User, TransTypeEnum.ReWorkReceiveMo.GetDescription<DBValue>(), cmd, language);
|
|
BusinessCode = TransTypeEnum.ReWorkReceiveMo.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReceiveAMDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OutsourcingReceiveDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
log.Debug("生产退料1" + TransTypeEnum.MOIssueDocNegative.GetDescription());
|
|
log.Debug("生产退料2" + TransTypeEnum.MOIssueDocNegativeApply.GetDescription());
|
|
log.Debug("生产退料3" + TransTypeEnum.MOIssueDocNegativeIssue.GetDescription());
|
|
log.Debug("生产退料4" + TransType);
|
|
//更新源头单据数量
|
|
ICSManufactureService.AMMOIssueDocNegative(TransType, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, itemInfo.TransCode, itemInfo.TransSequence, cmd, language);
|
|
BusinessCode = TransTypeEnum.MOIssueDocNegative.GetDescription<DBValue>();
|
|
log.Debug("生产退料5");
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
{
|
|
log.Debug("生产入库" + TransType);
|
|
//更新源头单据数量
|
|
ICSManufactureService.ManufactureReceiveDocAM(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ManufactureReceiveDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSManufactureService.ManufactureReceive(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ManufactureReceive.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentDocNegative(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.SalesShipmentDocNegative.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherInDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.OtherInDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 拆卸单
|
|
else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
ICSWareHouseService.DisassemblyDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
WHTransType = "11";
|
|
BusinessCode = TransTypeEnum.DisassemblyDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.ReturnDoc(itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.LogID, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.ReturnDoc.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 不合格入库
|
|
else if (TransType == TransTypeEnum.UnqualifiedIN.GetDescription())
|
|
{
|
|
string sql = @"SELECT b.Type FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLot b ON a.EATTRIBUTE1=b.LotNo AND b.WorkPoint=a.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.Type='17' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count != 0)
|
|
{
|
|
TransTypeOriginal = dt.Rows[0]["Type"].ToString();
|
|
}
|
|
|
|
if (TransTypeOriginal == string.Empty)
|
|
{
|
|
//throw new Exception(language.GetNameByCode(""));
|
|
throw new Exception("未查询到条码" + itemInfo.LotNo + "的原条码");
|
|
}
|
|
#region 审核的到货单
|
|
else if (TransTypeOriginal == "7")
|
|
{
|
|
//更新源头单据数量
|
|
ICSPurchaseService.DeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.DeliveryNotice.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.DeliveryNotice.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransTypeOriginal == "8")
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.ODeliveryNoticeIn(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.ODeliveryNotice.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.ODeliveryNotice.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransTypeOriginal == "2"
|
|
|| TransTypeOriginal == "14"
|
|
|| TransTypeOriginal == "15")
|
|
{
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingIssueDoNegative(TransTypeOriginal, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, itemInfo.TransCode, itemInfo.TransSequence, cmd, language);
|
|
//BusinessCode = TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransTypeOriginal == "1"
|
|
|| TransTypeOriginal == "12"
|
|
|| TransTypeOriginal == "13")
|
|
{
|
|
log.Debug("生产退料1" + TransTypeEnum.MOIssueDocNegative.GetDescription());
|
|
log.Debug("生产退料2" + TransTypeEnum.MOIssueDocNegativeApply.GetDescription());
|
|
log.Debug("生产退料3" + TransTypeEnum.MOIssueDocNegativeIssue.GetDescription());
|
|
log.Debug("生产退料4" + TransTypeOriginal);
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssueDocNegative(TransTypeOriginal, itemInfo.LogID, itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.MOIssueDocNegative.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.MOIssueDocNegative.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransTypeOriginal == "3")
|
|
{
|
|
log.Debug("生产入库" + TransTypeOriginal);
|
|
//更新源头单据数量
|
|
ICSManufactureService.ManufactureReceiveDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.ManufactureReceiveDoc.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.ManufactureReceiveDoc.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransTypeOriginal == "4")
|
|
{
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentDocNegative(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.SalesShipmentDocNegative.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.SalesShipmentDocNegative.GetDescription();
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransTypeOriginal == "5")
|
|
{
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherInDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
//BusinessCode = TransTypeEnum.OtherInDoc.GetDescription<DBValue>();
|
|
TransTypeOriginal = TransTypeEnum.OtherInDoc.GetDescription();
|
|
}
|
|
#endregion
|
|
|
|
BusinessCode = TransTypeEnum.UnqualifiedIN.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
#region 联副产品入库
|
|
else if (TransType == TransTypeEnum.MOStockINByProduct.GetDescription())
|
|
{
|
|
log.Debug("联副产品入库" + TransType);
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOStockINByProductAMDoc(itemInfo.LotNo, itemInfo.Quantity, item.WorkPoint, cmd, language);
|
|
BusinessCode = TransTypeEnum.MOStockINByProduct.GetDescription<DBValue>();
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoUpAM(Identification, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity,
|
|
item.User, item.WorkPoint, WHTransType, BusinessCode, cmd, language, itemInfo.LogID, itemInfo.InvCode + itemInfo.WarehouseCode, itemInfo.TransCode, itemInfo.TransSequence);
|
|
}
|
|
}
|
|
|
|
#region 拆卸单
|
|
if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
//更新套件锁定数量
|
|
ICSWareHouseService.DisassemblyDoc(Identification, cmd, language);
|
|
}
|
|
#endregion}
|
|
}
|
|
//上传ERP
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
if (TransTypeOriginal != string.Empty)
|
|
{
|
|
TransType = TransTypeOriginal;
|
|
}
|
|
//采购入库
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
ICSPurchaseService.PurchaseReceiveDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
dtable = ICSPurchaseService.DeliveryNoticeInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
ICSPurchaseService.PurchaseRejectDocInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
ICSOutsourcingService.ODeliveryNoticeInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
ICSOutsourcingService.OutsourcingRejectDocInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
ICSOutsourcingService.OutsourcingIssueDoNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
ICSOutsourcingService.OutsourcingReceiveDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
ICSManufactureService.MOIssueDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
ICSManufactureService.ManufactureReceiveDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//副产品入库
|
|
else if (TransType == TransTypeEnum.MOStockINByProduct.GetDescription())
|
|
ICSManufactureService.MOStockINByProductDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外副产品入库
|
|
else if (TransType == TransTypeEnum.OOStockINByProduct.GetDescription())
|
|
ICSManufactureService.OOStockINByProductDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
dtable = ICSManufactureService.ManufactureReceiveERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
ICSManufactureService.ReWorkReceiveMoERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
ICSSalesService.SalesShipmentDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//两步调入
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
ICSWareHouseService.TwoStepTransferDocInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
ICSSalesService.SalesReturnBackInERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
ICSWareHouseService.OtherInDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//拆卸单
|
|
if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
ICSWareHouseService.DisassemblyDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
ICSWareHouseService.ReturnDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
if (TransType == TransTypeEnum.DeliveryNotice.GetDescription() || TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return dtable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 1, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable GetPickTable(string ID, string Type, string WorkPoint, SqlCommand cmd)
|
|
{
|
|
|
|
|
|
ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
|
|
|
|
//string Code = SqlHelper.GetItemsDetailEnabledMark("MtimeControl");
|
|
|
|
string sql = @"EXEC ICSPicking '''{0}''','{1}','0','{2}'";
|
|
sql = string.Format(sql, ID, Type, WorkPoint);
|
|
|
|
DataSet dataset = DBHelper.SQlReturnDataSet(sql, cmd);//sql 查询
|
|
if (dataset.Tables[0].Rows.Count == 0)
|
|
return null;
|
|
DataTable table = dataset.Tables[0];
|
|
try
|
|
{
|
|
DataRow[] dss = table.Select("LotNO=''");
|
|
foreach (var item in dss)
|
|
{
|
|
DataRow[] dsss = table.Select("Code='" + item["Code"].ToString() + "' and Sequence='" + item["Sequence"].ToString() + "' and LotNO <> '' ");
|
|
if (dsss != null && dsss.Length > 0)
|
|
{
|
|
table.Rows.Remove(item);
|
|
}
|
|
}
|
|
var result = DBHelper.ConvertCellToString(table);
|
|
|
|
return result;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
public static DataTable LOTStockDownByCode(List<LOTStockModel> JsonData)
|
|
{
|
|
string msg = string.Empty;
|
|
string Inputstr = string.Empty;//拣料结果
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
foreach (var item in JsonData)
|
|
{
|
|
DataTable dateTable = null;//2--东辉辅料领料
|
|
DataRow[] dateRows = null;
|
|
decimal ToltalCount = 0;
|
|
string ZDsql;
|
|
DataTable dtdd = null;
|
|
var dt = new DataTable();
|
|
string WorkPoint = item.WorkPoint;
|
|
string UserCode = item.User;
|
|
List<LOTStockModel> lOTStockModels = new List<LOTStockModel>();
|
|
string ID = item.TransCode;
|
|
//单据先进行拣料
|
|
if (item.TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
dateTable = GetPickTable(ID, "2", WorkPoint, cmd);//2--东辉辅料领料
|
|
dateRows = dateTable?.Select($@"LotNo <> '' And LotNo is not null");
|
|
ToltalCount = 0.0M;
|
|
ZDsql = $@" SELECT Sum(Quantity) AS Quantity FROM ICSMOApply WHERE ApplyCode in('{ID}') and WorkPoint='{WorkPoint}' ";
|
|
dt = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
ZDsql = $@" SELECT ApplyCode as Code,ID, Sequence FROM ICSMOApply WHERE ApplyCode in('{ID}') and WorkPoint='{WorkPoint}' ";
|
|
dtdd = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
}
|
|
if (item.TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
dateTable = GetPickTable(ID, "1", WorkPoint, cmd);//2--东辉工单备料
|
|
dateRows = dateTable?.Select($@"LotNo <> '' And LotNo is not null");
|
|
ToltalCount = 0.0M;
|
|
ZDsql = $@" SELECT Sum(a.Quantity) AS Quantity FROM ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
WHERE b.MOCode in('{ID}') and b.WorkPoint='{WorkPoint}' ";
|
|
dt = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
ZDsql = $@" if not exists(SELECT a.F_itemCode
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='MO_Warehouse' AND a.F_define1=(select top 1 Eattribute3 from ICSMO where mocode = '{ID}')and a.F_enabledMark='1')
|
|
begin
|
|
RAISERROR('此工单类型不能使用一键出库功能!',16,1);
|
|
RETURN
|
|
end
|
|
SELECT b.MOCode as Code,a.ID, b.Sequence+'~'+a.Sequence as Sequence,b.Eattribute3 FROM ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
WHERE b.MOCode in('{ID}') and b.WorkPoint='{WorkPoint}' ";
|
|
dtdd = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
|
|
}
|
|
|
|
if (dateRows == null || dateRows.Length <= 0)
|
|
{
|
|
throw new Exception("库存不足,请先检查库存");//"传送数据为空!"
|
|
}
|
|
else
|
|
{
|
|
string docCode = string.Empty;
|
|
string docCodeAfter = string.Empty;
|
|
LOTStockModel lOTStockModel = null;
|
|
|
|
// 使用 LINQ 根据 Code 字段对 DataRow[] 进行分组
|
|
var groups = dateRows.Cast<DataRow>().GroupBy(row => new
|
|
{
|
|
Code = row.Field<string>("Code"),
|
|
Sequence = row.Field<string>("Sequence"),
|
|
iQuantity = row.Field<string>("iQuantity")
|
|
});
|
|
|
|
foreach (var group in groups)
|
|
{
|
|
var firstRow = group.First();
|
|
var code = firstRow["Code"];
|
|
decimal count = 0.0M;
|
|
DataRow[] idrow = dtdd?.Select($@"Code = '" + firstRow["Code"].ToString() + "' And Sequence ='" + firstRow["Sequence"].ToString() + "'");
|
|
|
|
lOTStockModel = new LOTStockModel
|
|
{
|
|
TransCode = firstRow["Code"].ToString(),
|
|
TransSequence = firstRow["Sequence"].ToString(),
|
|
Amount = "0",
|
|
User = UserCode,
|
|
MTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
WorkPoint = WorkPoint,
|
|
detail = new List<LOTStockModelList>(),
|
|
TransType = item.TransType,
|
|
TransID = idrow[0]["ID"].ToString()
|
|
|
|
};
|
|
|
|
foreach (var row in group)
|
|
{
|
|
count += Convert.ToDecimal(row["QTY"]);
|
|
|
|
LOTStockModelList lOTStockModelList = new LOTStockModelList
|
|
{
|
|
|
|
TransSequence = firstRow["Sequence"].ToString(),
|
|
CurrentQuantity = row["QTY"].ToString(),
|
|
LotNo = row["LotNo"].ToString(),
|
|
CurrentAmount = "0",
|
|
Sequence = row["Sequence"].ToString(),
|
|
WarehouseCode = row["WarehouseCode"].ToString(),
|
|
LocationCode = row["LocationCode"].ToString()
|
|
};
|
|
lOTStockModel.detail.Add(lOTStockModelList);
|
|
}
|
|
lOTStockModel.Quantity = count.ToString();
|
|
lOTStockModels.Add(lOTStockModel);
|
|
ToltalCount += count;
|
|
}
|
|
if (ToltalCount != Convert.ToDecimal(dt.Rows[0]["Quantity"]))
|
|
{
|
|
throw new Exception("库存不足,请先检查库存");//"传送数据为空!"
|
|
|
|
}
|
|
|
|
Inputstr = JsonConvert.SerializeObject(lOTStockModels);
|
|
conn.Close();
|
|
conn.Dispose();
|
|
|
|
|
|
}
|
|
}
|
|
return LOTStockDownCreate(JsonConvert.DeserializeObject<List<LOTStockModel>>(Inputstr));//pda只能调用一张单据 pda传参一张单据
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
throw ex;
|
|
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable BBLOTStockDownByCode(List<LOTStockModel> JsonData)
|
|
{
|
|
string msg = string.Empty;
|
|
string Inputstr = string.Empty;//拣料结果
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
foreach (var item in JsonData)
|
|
{
|
|
DataTable dateTable = null;
|
|
DataRow[] dateRows = null;
|
|
decimal ToltalCount = 0;
|
|
string ZDsql;
|
|
DataTable dtdd = null;
|
|
var dt = new DataTable();
|
|
string WorkPoint = item.WorkPoint;
|
|
string UserCode = item.User;
|
|
List<LOTStockModel> lOTStockModels = new List<LOTStockModel>();
|
|
string ID = item.TransCode;
|
|
//单据先进行拣料
|
|
if (item.TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
dateTable = GetPickTable(ID, "6", WorkPoint, cmd);
|
|
dateRows = dateTable?.Select($@"LotNo <> '' And LotNo is not null");
|
|
ToltalCount = 0.0M;
|
|
ZDsql = $@" SELECT Sum(Quantity) AS Quantity FROM ICSOIssue WHERE IssueCode in('{ID}') and WorkPoint='{WorkPoint}' ";
|
|
dt = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
ZDsql = $@" SELECT IssueCode as Code,ID, Sequence FROM ICSOIssue WHERE IssueCode in('{ID}') and WorkPoint='{WorkPoint}' ";
|
|
dtdd = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
}
|
|
//if (item.TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
//{
|
|
// dateTable = GetPickTable(ID, "1", WorkPoint, cmd);
|
|
// dateRows = dateTable?.Select($@"LotNo <> '' And LotNo is not null");
|
|
// ToltalCount = 0.0M;
|
|
// ZDsql = $@" SELECT Sum(a.Quantity) AS Quantity FROM ICSMOPick a
|
|
// INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
// WHERE b.MOCode in('{ID}') and b.WorkPoint='{WorkPoint}' ";
|
|
// dt = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
// ZDsql = $@" if not exists(SELECT a.F_itemCode
|
|
// FROM Sys_SRM_ItemsDetail a
|
|
// INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
// WHERE b.F_EnCode='MO_Warehouse' AND a.F_define1=(select top 1 Eattribute3 from ICSMO where mocode = '{ID}')and a.F_enabledMark='1')
|
|
// begin
|
|
// RAISERROR('此工单类型不能使用一键出库功能!',16,1);
|
|
// RETURN
|
|
// end
|
|
// SELECT b.MOCode as Code,a.ID, b.Sequence+'~'+a.Sequence as Sequence,b.Eattribute3 FROM ICSMOPick a
|
|
// INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
// WHERE b.MOCode in('{ID}') and b.WorkPoint='{WorkPoint}' ";
|
|
// dtdd = DBHelper.SQlReturnData(ZDsql, cmd);
|
|
|
|
//}
|
|
|
|
if (dateRows == null || dateRows.Length <= 0)
|
|
{
|
|
throw new Exception("库存不足,请先检查库存");//"传送数据为空!"
|
|
}
|
|
else
|
|
{
|
|
string docCode = string.Empty;
|
|
string docCodeAfter = string.Empty;
|
|
LOTStockModel lOTStockModel = null;
|
|
|
|
// 使用 LINQ 根据 Code 字段对 DataRow[] 进行分组
|
|
var groups = dateRows.Cast<DataRow>().GroupBy(row => new
|
|
{
|
|
Code = row.Field<string>("Code"),
|
|
Sequence = row.Field<string>("Sequence"),
|
|
iQuantity = row.Field<string>("iQuantity")
|
|
});
|
|
|
|
foreach (var group in groups)
|
|
{
|
|
var firstRow = group.First();
|
|
var code = firstRow["Code"];
|
|
decimal count = 0.0M;
|
|
DataRow[] idrow = dtdd?.Select($@"Code = '" + firstRow["Code"].ToString() + "' And Sequence ='" + firstRow["Sequence"].ToString() + "'");
|
|
|
|
lOTStockModel = new LOTStockModel
|
|
{
|
|
TransCode = firstRow["Code"].ToString(),
|
|
TransSequence = firstRow["Sequence"].ToString(),
|
|
Amount = "0",
|
|
User = UserCode,
|
|
MTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
WorkPoint = WorkPoint,
|
|
detail = new List<LOTStockModelList>(),
|
|
TransType = item.TransType,
|
|
TransID = idrow[0]["ID"].ToString()
|
|
|
|
};
|
|
|
|
foreach (var row in group)
|
|
{
|
|
count += Convert.ToDecimal(row["QTY"]);
|
|
|
|
LOTStockModelList lOTStockModelList = new LOTStockModelList
|
|
{
|
|
|
|
TransSequence = firstRow["Sequence"].ToString(),
|
|
CurrentQuantity = row["QTY"].ToString(),
|
|
LotNo = row["LotNo"].ToString(),
|
|
CurrentAmount = "0",
|
|
Sequence = row["Sequence"].ToString(),
|
|
WarehouseCode = row["WarehouseCode"].ToString(),
|
|
LocationCode = row["LocationCode"].ToString()
|
|
};
|
|
lOTStockModel.detail.Add(lOTStockModelList);
|
|
}
|
|
lOTStockModel.Quantity = count.ToString();
|
|
lOTStockModels.Add(lOTStockModel);
|
|
ToltalCount += count;
|
|
}
|
|
if (ToltalCount != Convert.ToDecimal(dt.Rows[0]["Quantity"]))
|
|
{
|
|
throw new Exception("库存不足,请先检查库存");//"传送数据为空!"
|
|
|
|
}
|
|
|
|
Inputstr = JsonConvert.SerializeObject(lOTStockModels);
|
|
conn.Close();
|
|
conn.Dispose();
|
|
|
|
|
|
}
|
|
}
|
|
return LOTStockDownCreate(JsonConvert.DeserializeObject<List<LOTStockModel>>(Inputstr));//pda只能调用一张单据 pda传参一张单据
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
throw ex;
|
|
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 下架
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LOTStockDownCreate(List<LOTStockModel> JsonData)
|
|
{
|
|
String PrintEnable = "";
|
|
string workPoint = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
string UserCode = string.Empty;
|
|
string VenCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceiveDoctNegative(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}//PurchaseReceiveDoctNegativePo
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceiveDoctNegativePo(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外发料
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingIssueDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingIssueDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReturnBack(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBackPo.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReturnBackOO(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 生产发料
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOIssueDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
if (null != itemInfo.VenCode)
|
|
{
|
|
VenCode = itemInfo.VenCode;
|
|
}
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssueDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
// 东辉日志表记录交接人EATTRIBUTE3
|
|
if (!String.IsNullOrWhiteSpace(item.Heir))
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdateHeir(Identification, TransTypeEnum.MOIssueDoc.GetDescription<DBValue>(), cmd, language, item.Heir);
|
|
}
|
|
#endregion
|
|
#region 生产发料——自动出库
|
|
else if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
//生产发料自动出库ERP提交在Job中进行
|
|
BusinessCode = TransTypeEnum.MOIssueAutoDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssueAutoDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID, item.CourierCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
workPoint = item.WorkPoint;
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region 销售出库-出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
UserCode = item.User;
|
|
BusinessCode = TransTypeEnum.SalesShipmentOutDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentOutDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID, item.CourierCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.SalesShipmentOutDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 两步调出
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.TwoStepTransferDocOut.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.TwoStepTransferDocOut(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "6", TransTypeEnum.TwoStepTransferDocOut.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OtherOutDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherOutDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OtherOutDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 其他出库——自动出库
|
|
else if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OtherOutAutoDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherOutDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OtherOutDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 红字其他入库
|
|
else if (TransType == TransTypeEnum.OtherInRedDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OtherInRedDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherInRedDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OtherInRedDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 领料申请单发料
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
|
|
BusinessCode = TransTypeEnum.MOApply.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOApply(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOApply.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
#region 补料申请单发料
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOReplenishment.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOReplenishment(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOReplenishment.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OOApply.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OOApply(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OOApply.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立材料出库
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOIssue.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssue(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssue.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OOIssue.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OOIssue(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OOIssue.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceive.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceive(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceive.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReceiveDocNegative(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 借用
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.BrrowDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.BrrowDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.BrrowDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
}
|
|
//上传ERP
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
//采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
//if (DBHelper.IsRTU9())
|
|
//{
|
|
// ICSPurchaseService.RTPurchaseReceiveDoctNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//}
|
|
//else
|
|
//{
|
|
ICSPurchaseService.PurchaseReceiveDoctNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//}
|
|
|
|
}
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription())
|
|
{
|
|
ICSPurchaseService.PurchaseReceiveDoctNegativePoERP(TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
}
|
|
//委外发料
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
ICSOutsourcingService.OutsourcingIssueDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{
|
|
ICSOutsourcingService.U9OutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
//else if (DBHelper.IsRTU9())
|
|
//{
|
|
// ICSOutsourcingService.RTOutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//}
|
|
else
|
|
{
|
|
ICSOutsourcingService.OutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
}
|
|
//铭锋委外退货 源头单据采购订单(同步到到货单表)
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBackPo.GetDescription())
|
|
{
|
|
//铭锋委外退货 源头单据采购订单(同步到到货单表)
|
|
ICSOutsourcingService.OutsourcingReturnBackOOERP(TransTypeEnum.OutsourcingReturnBack.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
}
|
|
//生产发料
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsDX())
|
|
{
|
|
ICSManufactureService.DXMOIssueDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
else
|
|
{
|
|
ICSManufactureService.MOIssueDocERP(TransType, Identification, cmd, language, BusinessCode, VenCode);
|
|
}
|
|
}
|
|
|
|
//生产发料——自动出库
|
|
else if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
//生产发料自动出库ERP提交在Job中进行
|
|
//ICSManufactureService.MOIssueDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
//铭锋先进先出
|
|
if (!string.IsNullOrWhiteSpace(JsonData[0].passFlag) && JsonData[0].passFlag == "0")
|
|
{
|
|
string message = SubmitCanOut(Identification, "3", TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>(), workPoint, cmd);
|
|
if (!string.IsNullOrWhiteSpace(message))
|
|
{
|
|
throw new Exception(message);
|
|
}
|
|
}
|
|
if (DBHelper.IsU9() || DBHelper.IsPNU9())
|
|
{ ICSSalesService.U9SalesShipmentDocERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
else { ICSSalesService.SalesShipmentDocERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
}
|
|
|
|
//销售出库-出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
ICSSalesService.SalesShipmentDocOutERP(TransType, Identification, cmd, language, BusinessCode, UserCode);
|
|
}
|
|
|
|
//两步调出
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
ICSWareHouseService.TwoStepTransferDocOutERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{
|
|
ICSWareHouseService.CreateOtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
else
|
|
ICSWareHouseService.OtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
|
|
}
|
|
//其他出库——自动出库
|
|
else if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
ICSWareHouseService.OtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
|
|
}
|
|
//红字其他入库
|
|
else if (TransType == TransTypeEnum.OtherInRedDoc.GetDescription())
|
|
{
|
|
|
|
ICSWareHouseService.OtherInRedDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//领料申请单发料
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
ICSManufactureService.MOApplyERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//补料申请单发料
|
|
if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
ICSManufactureService.MOReplenishmentERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外领料申请单发料
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
ICSOutsourcingService.OOApplyERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立材料出库
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{ ICSManufactureService.U9MOIssueERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
else { ICSManufactureService.MOIssueERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
}
|
|
|
|
//开立委外材料出库
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
ICSOutsourcingService.OOIssueERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立红字入库单
|
|
if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
ICSPurchaseService.PurchaseReceiveERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立委外红字入库单
|
|
if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
ICSOutsourcingService.OutsourcingReceiveDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//借用
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
ICSWareHouseService.BrrowDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 2, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable LOTStockDownRoundCreate(List<LOTStockModel> JsonData)
|
|
{
|
|
String PrintEnable = "";
|
|
string workPoint = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
string UserCode = string.Empty;
|
|
string VenCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceiveDoctNegative(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}//PurchaseReceiveDoctNegativePo
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceiveDoctNegativePo(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外发料
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingIssueDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingIssueDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReturnBack(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBackPo.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReturnBackOO(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 生产发料
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOIssueDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssueDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
// 东辉日志表记录交接人EATTRIBUTE3
|
|
if (!String.IsNullOrWhiteSpace(item.Heir))
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdateHeir(Identification, TransTypeEnum.MOIssueDoc.GetDescription<DBValue>(), cmd, language, item.Heir);
|
|
}
|
|
#endregion
|
|
#region 生产发料——自动出库
|
|
else if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
//生产发料自动出库ERP提交在Job中进行
|
|
BusinessCode = TransTypeEnum.MOIssueAutoDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDownRound(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssueAutoDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID, item.CourierCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
workPoint = item.WorkPoint;
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region 销售出库-出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
UserCode = item.User;
|
|
BusinessCode = TransTypeEnum.SalesShipmentOutDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentOutDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID, item.CourierCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.SalesShipmentOutDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 两步调出
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.TwoStepTransferDocOut.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.TwoStepTransferDocOut(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "6", TransTypeEnum.TwoStepTransferDocOut.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OtherOutDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherOutDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OtherOutDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 其他出库——自动出库
|
|
else if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OtherOutAutoDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherOutDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OtherOutDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 红字其他入库
|
|
else if (TransType == TransTypeEnum.OtherInRedDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OtherInRedDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherInRedDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OtherInRedDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 领料申请单发料
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
|
|
BusinessCode = TransTypeEnum.MOApply.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOApply(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOApply.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
#region 补料申请单发料
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOReplenishment.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOReplenishment(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOReplenishment.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OOApply.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OOApply(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OOApply.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立材料出库
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOIssue.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssue(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssue.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OOIssue.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OOIssue(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OOIssue.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceive.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceive(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceive.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReceiveDocNegative(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 借用
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.BrrowDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.BrrowDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.BrrowDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
}
|
|
//上传ERP
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
//采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
//if (DBHelper.IsRTU9())
|
|
//{
|
|
// ICSPurchaseService.RTPurchaseReceiveDoctNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//}
|
|
//else
|
|
//{
|
|
ICSPurchaseService.PurchaseReceiveDoctNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//}
|
|
|
|
}
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegativePo.GetDescription())
|
|
{
|
|
ICSPurchaseService.PurchaseReceiveDoctNegativePoERP(TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
}
|
|
//委外发料
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() || TransType == TransTypeEnum.RTOutsourcingIssueDoc.GetDescription())
|
|
ICSOutsourcingService.OutsourcingIssueDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{
|
|
ICSOutsourcingService.U9OutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
//else if (DBHelper.IsRTU9())
|
|
//{
|
|
// ICSOutsourcingService.RTOutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//}
|
|
else
|
|
{
|
|
ICSOutsourcingService.OutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
}
|
|
//铭锋委外退货 源头单据采购订单(同步到到货单表)
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBackPo.GetDescription())
|
|
{
|
|
//铭锋委外退货 源头单据采购订单(同步到到货单表)
|
|
ICSOutsourcingService.OutsourcingReturnBackOOERP(TransTypeEnum.OutsourcingReturnBack.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
}
|
|
//生产发料
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsDX())
|
|
{
|
|
ICSManufactureService.DXMOIssueDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
else
|
|
{
|
|
ICSManufactureService.MOIssueDocERP(TransType, Identification, cmd, language, BusinessCode, VenCode);
|
|
}
|
|
}
|
|
|
|
//生产发料——自动出库
|
|
else if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
//生产发料自动出库ERP提交在Job中进行
|
|
//ICSManufactureService.MOIssueDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
//铭锋先进先出
|
|
if (!string.IsNullOrWhiteSpace(JsonData[0].passFlag) && JsonData[0].passFlag == "0")
|
|
{
|
|
string message = SubmitCanOut(Identification, "3", TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>(), workPoint, cmd);
|
|
if (!string.IsNullOrWhiteSpace(message))
|
|
{
|
|
throw new Exception(message);
|
|
}
|
|
}
|
|
if (DBHelper.IsU9() || DBHelper.IsPNU9())
|
|
{ ICSSalesService.U9SalesShipmentDocERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
else { ICSSalesService.SalesShipmentDocERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
}
|
|
|
|
//销售出库-出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
ICSSalesService.SalesShipmentDocOutERP(TransType, Identification, cmd, language, BusinessCode, UserCode);
|
|
}
|
|
|
|
//两步调出
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
ICSWareHouseService.TwoStepTransferDocOutERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{
|
|
ICSWareHouseService.CreateOtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
else
|
|
ICSWareHouseService.OtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
|
|
}
|
|
//其他出库——自动出库
|
|
else if (TransType == TransTypeEnum.OtherOutAutoDoc.GetDescription())
|
|
{
|
|
ICSWareHouseService.OtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
|
|
}
|
|
//红字其他入库
|
|
else if (TransType == TransTypeEnum.OtherInRedDoc.GetDescription())
|
|
{
|
|
|
|
ICSWareHouseService.OtherInRedDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//领料申请单发料
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
ICSManufactureService.MOApplyERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//补料申请单发料
|
|
if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
ICSManufactureService.MOReplenishmentERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外领料申请单发料
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
ICSOutsourcingService.OOApplyERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立材料出库
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{ ICSManufactureService.U9MOIssueERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
else { ICSManufactureService.MOIssueERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
}
|
|
|
|
//开立委外材料出库
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
ICSOutsourcingService.OOIssueERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立红字入库单
|
|
if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
ICSPurchaseService.PurchaseReceiveERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立委外红字入库单
|
|
if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
ICSOutsourcingService.OutsourcingReceiveDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//借用
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
ICSWareHouseService.BrrowDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 2, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 下架奥美
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LOTStockDownAMCreate(List<LOTStockModel> JsonData)
|
|
{
|
|
String PrintEnable = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
string VenCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceiveDoctNegative(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外发料
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingIssueDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingIssueDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReturnBack(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReturnBack.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 生产发料
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOIssueDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.AMMOIssueDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.AMWareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssueDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSSalesService.SalesShipmentDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID, item.CourierCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 两步调出
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.TwoStepTransferDocOut.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.TwoStepTransferDocOut(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "6", TransTypeEnum.TwoStepTransferDocOut.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OtherOutDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.OtherOutDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OtherOutDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 领料申请单发料
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
|
|
BusinessCode = TransTypeEnum.MOApply.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOApply(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOApply.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
#region 补料申请单发料
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOReplenishment.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOReplenishment(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOReplenishment.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OOApply.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OOApply(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OOApply.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立材料出库
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOIssue.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSManufactureService.MOIssue(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, enableCode, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.MOIssue.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OOIssue.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OOIssue(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OOIssue.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.PurchaseReceive.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSPurchaseService.PurchaseReceive(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.PurchaseReceive.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSOutsourcingService.OutsourcingReceiveDocNegative(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language, item.TransID);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, "");
|
|
}
|
|
}
|
|
#endregion
|
|
#region 借用
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.BrrowDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
ICSWareHouseService.BrrowDoc(item.TransCode, item.TransSequence, item.Quantity, item.WorkPoint, cmd, language);
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//出库
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoDown(Identification, item.TransCode, item.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity,
|
|
item.User, item.WorkPoint, "3", TransTypeEnum.BrrowDoc.GetDescription<DBValue>(), cmd, language, itemInfo.LogID, item.TransID, MergeID);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
}
|
|
//上传ERP
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
//采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
ICSPurchaseService.PurchaseReceiveDoctNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外发料
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
ICSOutsourcingService.OutsourcingIssueDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{ ICSOutsourcingService.U9OutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
else
|
|
ICSOutsourcingService.OutsourcingReturnBackERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//生产发料
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
ICSManufactureService.MOIssueDocERP(TransType, Identification, cmd, language, BusinessCode, VenCode);
|
|
//销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{ ICSSalesService.U9SalesShipmentDocERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
else { ICSSalesService.SalesShipmentDocERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
}
|
|
|
|
//两步调出
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
ICSWareHouseService.TwoStepTransferDocOutERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{
|
|
ICSWareHouseService.CreateOtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
else
|
|
ICSWareHouseService.OtherOutDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
|
|
}
|
|
|
|
//领料申请单发料
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
ICSManufactureService.MOApplyERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
|
|
//补料申请单发料
|
|
if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
ICSManufactureService.MOReplenishmentERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//委外领料申请单发料
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
ICSOutsourcingService.OOApplyERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立材料出库
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
if (DBHelper.IsU9())
|
|
{ ICSManufactureService.U9MOIssueERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
else { ICSManufactureService.MOIssueERP(TransType, Identification, cmd, language, BusinessCode); }
|
|
}
|
|
|
|
//开立委外材料出库
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
ICSOutsourcingService.OOIssueERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立红字入库单
|
|
if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
ICSPurchaseService.PurchaseReceiveERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//开立委外红字入库单
|
|
if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
ICSOutsourcingService.OutsourcingReceiveDocNegativeERP(TransType, Identification, cmd, language, BusinessCode);
|
|
//借用
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
ICSWareHouseService.BrrowDocERP(TransType, Identification, cmd, language, BusinessCode);
|
|
}
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 2, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 条码检验(海格)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable InspectionCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string asncodes = string.Empty;
|
|
string DNCodes = string.Empty;
|
|
string DNLotNo = string.Empty;
|
|
string sql = string.Empty;
|
|
string picname = string.Empty;
|
|
string Colspan = "";
|
|
string IDD = "";
|
|
string whcode = "";
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//判断是否存在记录 存在--更新enable 不存在--insert
|
|
if (item.ASNCode != null || item.OASNCode != null)
|
|
sql = @"IF exists(select 1 from ICSInspection where lotno ='{4}' and enable = 1)
|
|
BEGIN
|
|
UPDATE ICSInspection set enable = 0 where lotno ='{4}' and enable = 1
|
|
end
|
|
|
|
insert into ICSInspection (ID,LotNo,InvCode,Quantity,QualifiedQuantity,unQualifiedQuantity,Type,enable,Muser,Musername,Mtime,workPoint,bccode,brcode)
|
|
SELECT newid(),a.lotno,a.invcode,a.quantity,{0},a.quantity-{0},{1},1,e.F_Account,e.F_RealName,GETDATE(),a.WorkPoint,'{5}','{6}'
|
|
FROM
|
|
ICSInventorylot a
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{2}' AND e.F_Location='{3}'
|
|
where a.lotno = '{4}'";
|
|
else
|
|
sql = @"IF exists(select 1 from ICSInspection where lotno ='{4}' and enable = 1)
|
|
BEGIN
|
|
UPDATE ICSInspection set enable = 0 where lotno ='{4}' and enable = 1
|
|
end
|
|
|
|
insert into ICSInspection (ID,LotNo,InvCode,Quantity,QualifiedQuantity,unQualifiedQuantity,Type,enable,Muser,Musername,Mtime,workPoint,bccode,brcode)
|
|
SELECT newid(),a.lotno,a.invcode,a.quantity,{0},a.quantity-{0},{1},1,e.F_Account,e.F_RealName,GETDATE(),a.WorkPoint,'{5}','{6}'
|
|
FROM
|
|
ICSMOSubInventoryLot a
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{2}' AND e.F_Location='{3}'
|
|
where a.lotno = '{4}'";
|
|
|
|
sql = string.Format(sql, itemInfo.Quantity, item.ASNCode == null ? 1 : 3, item.User, item.WorkPoint, itemInfo.LotNo, itemInfo.BCCode, itemInfo.BRCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo010")); //"送货单子表信息更新失败!");
|
|
}
|
|
}
|
|
}
|
|
cmd.Transaction.Commit();
|
|
return null;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#region 采购
|
|
/// <summary>
|
|
/// 采购到货
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable DeliveryNoticeCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string asncodes = string.Empty;
|
|
string DNCodes = string.Empty;
|
|
string DNLotNo = string.Empty;
|
|
string sql = string.Empty;
|
|
string picname = string.Empty;
|
|
string Colspan = "";
|
|
string IDD = "";
|
|
string whcode = "";
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.ASNCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo009"));//"送货单号不能为空!"
|
|
}
|
|
|
|
sql = @"SELECT a.DNCode FROM ICSDeliveryNotice a WHERE a.ASNCode='{0}' AND DNType = '1' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.ASNCode, item.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
DNCodes = dt.Rows[0]["DNCode"].ToString();
|
|
}
|
|
|
|
|
|
//获取单号
|
|
sql = @"IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a WHERE a.ASNCode='{0}' AND DNType = '1' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo057") + @"',16,1);
|
|
RETURN
|
|
END
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSASN WHERE ASNCode='{0}' and WorkPoint='{1}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo058") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo059") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='DN'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(DNCode),LEN(@date)+1,LEN(MAX(DNCode))-LEN(@date))+1 FROM ICSDeliveryNotice
|
|
WHERE SUBSTRING(DNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.ASNCode, item.WorkPoint, DNCodes);
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//修改送货单到货数量
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
if (string.IsNullOrEmpty(itemInfo.TransSequence))
|
|
{
|
|
picname = "";
|
|
}
|
|
else
|
|
{
|
|
picname = itemInfo.TransSequence;
|
|
}
|
|
sql = @"
|
|
|
|
UPDATE ICSASNDetail SET DNQuantity=ISNULL(DNQuantity, 0)+'{2}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
IF EXISTS(SELECT id FROM ICSASNDetail WHERE LotNo='{0}' AND WorkPoint='{1}' AND Quantity<DNQuantity)
|
|
BEGIN
|
|
RAISERROR('送货单子表信息更新失败,已到货数量不能大于计划到货数量!',16,1);
|
|
RETURN
|
|
END ";
|
|
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, itemInfo.Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo010")); //"送货单子表信息更新失败!");
|
|
}
|
|
|
|
sql = @"UPDATE ICSInventoryLot SET Quantity='{2}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
if (itemInfo.IsUrgency == "1")
|
|
sql = @"UPDATE ICSInventoryLot SET Quantity='{2}' ,eattribute6 = '1' WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, itemInfo.Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo462")); //"条码表信息更新失败!");
|
|
}
|
|
|
|
if (DNLotNo.Equals(""))
|
|
{
|
|
DNLotNo = "'" + itemInfo.LotNo + "'";
|
|
}
|
|
else
|
|
{
|
|
DNLotNo = ",'" + itemInfo.LotNo + "";
|
|
}
|
|
}
|
|
|
|
//到货指定仓库(批次汇总)
|
|
string Dsql = @"SELECT a.F_itemCode
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='DaoWHCode' AND a.F_EnabledMark='1'";
|
|
Dsql = string.Format(Dsql);
|
|
DataTable dtdao = DBHelper.SQlReturnData(Dsql, cmd);
|
|
if (dtdao.Rows.Count > 0 && dtdao != null)
|
|
{
|
|
whcode = dtdao.Rows[0]["F_itemCode"].ToString();
|
|
|
|
//创建到货单信息
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{1}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10)
|
|
SELECT DISTINCT newid(),ISNULL(ext.ProjectCode, '')+'~'+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+'~'+ISNULL(ext.Version, '')+'~'+ISNULL(ext.Brand, '')+'~'+
|
|
ISNULL(ext.cFree1, '')+'~'+ISNULL(ext.cFree2, '')+'~'+ISNULL(ext.cFree3, '')+'~'+ISNULL(ext.cFree4, '')+'~'+ISNULL(ext.cFree5, '')+'~'+ISNULL(ext.cFree6, '')+'~'+ISNULL(ext.cFree7, '')+'~'+ISNULL(ext.cFree8, '')+'~'+ISNULL(ext.cFree9, '')+'~'+ISNULL(ext.cFree10, ''),ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
|
|
FROM ICSASNDetail a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension ext ON b.ExtensionID=ext.ID AND b.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventory inv ON b.InvCode=inv.InvCode AND b.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON b.InvCode=invBat.InvCode AND '{5}'=invBat.WHCode AND b.WorkPoint=invBat.WorkPoint
|
|
INNER JOIN ICSExtension extt ON ISNULL(ext.ProjectCode, '')+'~'+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+'~'+ISNULL(ext.Version, '')+'~'+ISNULL(ext.Brand, '')+'~'+
|
|
ISNULL(ext.cFree1, '')+'~'+ISNULL(ext.cFree2, '')+'~'+ISNULL(ext.cFree3, '')+'~'+ISNULL(ext.cFree4, '')+'~'+ISNULL(ext.cFree5, '')+'~'+ISNULL(ext.cFree6, '')+'~'+ISNULL(ext.cFree7, '')+'~'+ISNULL(ext.cFree8, '')+'~'+ISNULL(ext.cFree9, '')+'~'+ISNULL(ext.cFree10, '')=extt.Colspan
|
|
|
|
WHERE a.ASNCode='{3}' AND a.WorkPoint='{2}' and a.DNQuantity>0 AND ext.id is NULL
|
|
|
|
INSERT INTO ICSDeliveryNotice(ID,DNCode,Sequence,VenCode,DepCode,
|
|
DNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
POID,PODetailID,DNID,DNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,ASNCode,EATTRIBUTE8)
|
|
SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,
|
|
'1',b.InvCode,SUM(a.DNQuantity),'0','0',
|
|
d.UnitPrice,d.Currency,'2',e.F_Account,GETDATE(),
|
|
d.POID,d.PODetailID,'{0}',newid(),extt.ID,
|
|
e.F_Account,e.F_RealName,GETDATE(),a.WorkPoint,'',a.ASNCode,'{4}'
|
|
FROM ICSASNDetail a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSExtension ext ON b.ExtensionID=ext.ID AND b.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventory inv ON b.InvCode=inv.InvCode AND b.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON b.InvCode=invBat.InvCode AND '{5}'=invBat.WHCode AND b.WorkPoint=invBat.WorkPoint
|
|
INNER JOIN ICSExtension extt ON ISNULL(ext.ProjectCode, '')+'~'+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+'~'+ISNULL(ext.Version, '')+'~'+ISNULL(ext.Brand, '')+'~'+
|
|
ISNULL(ext.cFree1, '')+'~'+ISNULL(ext.cFree2, '')+'~'+ISNULL(ext.cFree3, '')+'~'+ISNULL(ext.cFree4, '')+'~'+ISNULL(ext.cFree5, '')+'~'+ISNULL(ext.cFree6, '')+'~'+ISNULL(ext.cFree7, '')+'~'+ISNULL(ext.cFree8, '')+'~'+ISNULL(ext.cFree9, '')+'~'+ISNULL(ext.cFree10, '')=extt.Colspan
|
|
|
|
INNER JOIN ICSPurchaseOrder d ON c.TransCode=d.POCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
|
|
WHERE a.ASNCode='{3}' AND a.WorkPoint='{2}' and a.DNQuantity>0
|
|
GROUP BY d.POID,d.PODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.InvCode,a.ASNCode,e.F_Account,e.F_RealName,a.WorkPoint,extt.ID";
|
|
sql = string.Format(sql, Code, item.User, item.WorkPoint, item.ASNCode, picname, whcode);
|
|
}
|
|
else
|
|
{
|
|
//创建到货单信息
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{1}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSDeliveryNotice(ID,DNCode,Sequence,VenCode,DepCode,
|
|
DNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
POID,PODetailID,DNID,DNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,ASNCode,EATTRIBUTE8)
|
|
SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,
|
|
'1',b.InvCode,SUM(a.DNQuantity),'0','0',
|
|
d.UnitPrice,d.Currency,'2',e.F_Account,GETDATE(),
|
|
d.POID,d.PODetailID,'{0}',newid(),b.ExtensionID,
|
|
e.F_Account,e.F_RealName,GETDATE(),a.WorkPoint,'',a.ASNCode,'{4}'
|
|
FROM ICSASNDetail a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSPurchaseOrder d ON c.TransCode=d.POCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
|
|
WHERE a.ASNCode='{3}' AND a.WorkPoint='{2}' and a.DNQuantity>0
|
|
GROUP BY d.POID,d.PODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.ExtensionID,b.InvCode,a.ASNCode,e.F_Account,e.F_RealName,a.WorkPoint";
|
|
sql = string.Format(sql, Code, item.User, item.WorkPoint, item.ASNCode, picname);
|
|
}
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo011")); //"到货单信息创建失败!");
|
|
}
|
|
|
|
string sqlCheckSign = @"select * from ICSConfiguration where code = 'UploadERP001' and enable = '1'";
|
|
DataTable flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
{
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
if (!DBHelper.IsU9())
|
|
ICSPurchaseService.DeliveryNoticeERP(Code, item.WorkPoint, cmd, language);
|
|
}
|
|
}
|
|
|
|
asncodes += "'" + item.ASNCode + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(asncodes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo009"));//"请传入送货单信息!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
n.POCode,
|
|
n.Sequence AS POSequence,
|
|
a.ASNCode,
|
|
a.DNCode,
|
|
a.Sequence,
|
|
a.VenCode,
|
|
a.DepCode,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.RCVQuantity,
|
|
a.UnitPrice,
|
|
a.Currency,
|
|
a.POID,
|
|
a.PODetailID,
|
|
a.DNID,
|
|
a.DNDetailID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSDeliveryNotice a
|
|
INNER JOIN ICSPurchaseOrder n ON a.POID =n.POID AND a.PODetailID=n.PODetailID AND a.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.ASNCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, asncodes.Substring(0, asncodes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 采购到货
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable DxDeliveryNoticeCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string asncodes = string.Empty;
|
|
string DNCodes = string.Empty;
|
|
string DNLotNo = string.Empty;
|
|
string sql = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.ASNCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo009"));//"送货单号不能为空!"
|
|
}
|
|
|
|
sql = @"SELECT a.DNCode FROM ICSDeliveryNotice a WHERE a.ASNCode='{0}' AND DNType = '1' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.ASNCode, item.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
DNCodes = dt.Rows[0]["DNCode"].ToString();
|
|
}
|
|
|
|
|
|
//获取单号
|
|
sql = @"IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a WHERE a.ASNCode='{0}' AND DNType = '1' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo057") + @"',16,1);
|
|
RETURN
|
|
END
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSASN WHERE ASNCode='{0}' and WorkPoint='{1}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo058") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo059") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='DN'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(DNCode),LEN(@date)+1,LEN(MAX(DNCode))-LEN(@date))+1 FROM ICSDeliveryNotice
|
|
WHERE SUBSTRING(DNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.ASNCode, item.WorkPoint, DNCodes);
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//修改送货单到货数量
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
sql = @"UPDATE ICSASNDetail SET DNQuantity=ISNULL(DNQuantity, 0)+'{2}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, itemInfo.Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo010")); //"送货单子表信息更新失败!");
|
|
}
|
|
|
|
sql = @"UPDATE ICSInventoryLot SET Quantity='{2}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
if (itemInfo.IsUrgency == "1")
|
|
sql = @"UPDATE ICSInventoryLot SET Quantity='{2}' ,eattribute6 = '1' WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, itemInfo.Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo462")); //"条码表信息更新失败!");
|
|
}
|
|
|
|
if (DNLotNo.Equals(""))
|
|
{
|
|
DNLotNo += "'" + itemInfo.LotNo + "'";
|
|
}
|
|
else
|
|
{
|
|
DNLotNo += ",'" + itemInfo.LotNo + "'";
|
|
}
|
|
}
|
|
|
|
|
|
//创建到货单信息
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{1}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSDeliveryNotice(ID,DNCode,Sequence,VenCode,DepCode,
|
|
DNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
POID,PODetailID,DNID,DNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,ASNCode)
|
|
SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,
|
|
'1',b.InvCode,SUM(a.DNQuantity),'0','0',
|
|
d.UnitPrice,d.Currency,'2',e.F_Account,GETDATE(),
|
|
d.POID,d.PODetailID,newid(),newid(),b.ExtensionID,
|
|
e.F_Account,e.F_RealName,GETDATE(),a.WorkPoint,'',a.ASNCode
|
|
FROM ICSASNDetail a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSPurchaseOrder d ON c.TransCode=d.POCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
|
|
WHERE a.ASNCode='{3}' AND a.WorkPoint='{2}' and a.DNQuantity>0 and b.lotno in ({4})
|
|
GROUP BY d.POID,d.PODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.ExtensionID,b.InvCode,a.ASNCode,e.F_Account,e.F_RealName,a.WorkPoint";
|
|
sql = string.Format(sql, Code, item.User, item.WorkPoint, item.ASNCode, DNLotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo011")); //"到货单信息创建失败!");
|
|
}
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
if (!DBHelper.IsU9())
|
|
ICSPurchaseService.DeliveryNoticeERP(Code, item.WorkPoint, cmd, language);
|
|
}
|
|
asncodes += "'" + item.ASNCode + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(asncodes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo009"));//"请传入送货单信息!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
n.POCode,
|
|
n.Sequence AS POSequence,
|
|
a.ASNCode,
|
|
a.DNCode,
|
|
a.Sequence,
|
|
a.VenCode,
|
|
a.DepCode,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.RCVQuantity,
|
|
a.UnitPrice,
|
|
a.Currency,
|
|
a.POID,
|
|
a.PODetailID,
|
|
a.DNID,
|
|
a.DNDetailID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSDeliveryNotice a
|
|
INNER JOIN ICSPurchaseOrder n ON a.POID =n.POID AND a.PODetailID=n.PODetailID AND a.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.ASNCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, asncodes.Substring(0, asncodes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 采购拒收
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable PurchaseRejectDocCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string lots = string.Empty;
|
|
string sql = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.DNCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo012"));//"到货单号不能为空!");
|
|
}
|
|
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSDeliveryNotice WHERE DNCode='{0}' and DNType='1' and WorkPoint='{1}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo061") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo062") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='RJT'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(DNCode),LEN(@date)+1,LEN(MAX(DNCode))-LEN(@date))+1 FROM ICSDeliveryNotice
|
|
WHERE SUBSTRING(DNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.DNCode, item.WorkPoint);
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//修改送货单到货数量
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//到货指定仓库(批次汇总)
|
|
string Dsql = @"SELECT a.F_itemCode
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='DaoWHCode' AND a.F_EnabledMark='1'";
|
|
Dsql = string.Format(Dsql);
|
|
DataTable dtdao = DBHelper.SQlReturnData(Dsql, cmd);
|
|
if (dtdao.Rows.Count > 0 && dtdao != null)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a WHERE a.EATTRIBUTE1='{1}' AND DNType = '3' AND a.WorkPoint='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo063") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSDeliveryNotice(ID,DNCode,Sequence,VenCode,DepCode,
|
|
DNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
POID,PODetailID,DNID,DNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,ASNCode)
|
|
|
|
SELECT NEWID(),'{4}', '{11}', '{5}', '{6}',
|
|
'3',d.InvCode,'{7}', '{8}', 0,
|
|
'{9}', '{10}',
|
|
case when isnull(config.enable,0)=0 then '2' else '1' end,
|
|
e.F_Account, SYSDATETIME(),
|
|
a.DNID,a.DNDetailID, '0', '0', a.ExtensionID,
|
|
e.F_Account,e.F_RealName, SYSDATETIME(), a.WorkPoint, d.LOTNO,''
|
|
FROM ICSDeliveryNotice a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSASNDetail b ON a.ASNCode=b.ASNCode AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint --and a.ExtensionID = d.ExtensionID
|
|
INNER JOIN ICSExtension extd ON d.ExtensionID=extd.ID AND d.WorkPoint=extd.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND (SELECT a.F_itemCode
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='DaoWHCode' AND a.F_EnabledMark='1')=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
INNER JOIN ICSPurchaseOrder n ON m.TransCode =n.POCode AND m.TransSequence=n.Sequence AND a.PODetailID=n.PODetailID AND m.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSInspection h ON h.LotNo=d.LotNo AND h.WorkPoint=a.WorkPoint and h.enable = 1
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{3}' AND e.F_Location='{2}'
|
|
left join icsConfiguration config on 1=1 and config.Code ='SaveReview001'
|
|
WHERE a.DNCode='{0}' and d.LOTNO='{1}' AND a.WorkPoint='{2}'and
|
|
ISNULL(ext.ProjectCode, '')+'~'+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END+'~'+ISNULL(ext.Version, '')+'~'+ISNULL(ext.Brand, '')+'~'+
|
|
ISNULL(ext.cFree1, '')+'~'+ISNULL(ext.cFree2, '')+'~'+ISNULL(ext.cFree3, '')+'~'+ISNULL(ext.cFree4, '')+'~'+ISNULL(ext.cFree5, '')+'~'+ISNULL(ext.cFree6, '')+'~'+ISNULL(ext.cFree7, '')+'~'+ISNULL(ext.cFree8, '')+'~'+ISNULL(ext.cFree9, '')+'~'+ISNULL(ext.cFree10, '') = ISNULL(extd.ProjectCode, '')+'~'+CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(extd.BatchCode, '') ELSE '' END+'~'+ISNULL(extd.Version, '')+'~'+ISNULL(extd.Brand, '')+'~'+
|
|
ISNULL(extd.cFree1, '')+'~'+ISNULL(extd.cFree2, '')+'~'+ISNULL(extd.cFree3, '')+'~'+ISNULL(extd.cFree4, '')+'~'+ISNULL(extd.cFree5, '')+'~'+ISNULL(extd.cFree6, '')+'~'+ISNULL(extd.cFree7, '')+'~'+ISNULL(extd.cFree8, '')+'~'+ISNULL(extd.cFree9, '')+'~'+ISNULL(extd.cFree10, '')";
|
|
}
|
|
else
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a WHERE a.EATTRIBUTE1='{1}' AND DNType = '3' AND a.WorkPoint='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo063") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSDeliveryNotice(ID,DNCode,Sequence,VenCode,DepCode,
|
|
DNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
POID,PODetailID,DNID,DNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,ASNCode)
|
|
|
|
SELECT NEWID(),'{4}', '{11}', '{5}', '{6}',
|
|
'3',d.InvCode,'{7}', '{8}', 0,
|
|
'{9}', '{10}',
|
|
case when isnull(config.enable,0)=0 then '2' else '1' end,
|
|
e.F_Account, SYSDATETIME(),
|
|
a.DNID,a.DNDetailID, '0', '0', a.ExtensionID,
|
|
e.F_Account,e.F_RealName, SYSDATETIME(), a.WorkPoint, d.LOTNO,''
|
|
FROM ICSDeliveryNotice a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSASNDetail b ON a.ASNCode=b.ASNCode AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint and a.ExtensionID = d.ExtensionID
|
|
INNER JOIN ICSInventoryLotDetail m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND (SELECT a.F_itemCode
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='DaoWHCode' AND a.F_EnabledMark='1')=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
INNER JOIN ICSPurchaseOrder n ON m.TransCode =n.POCode AND m.TransSequence=n.Sequence AND a.PODetailID=n.PODetailID AND m.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSInspection h ON h.LotNo=d.LotNo AND h.WorkPoint=a.WorkPoint and h.enable = 1
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{3}' AND e.F_Location='{2}'
|
|
left join icsConfiguration config on 1=1 and config.Code ='SaveReview001'
|
|
WHERE a.DNCode='{0}' and d.LOTNO='{1}' AND a.WorkPoint='{2}'";
|
|
}
|
|
|
|
sql = string.Format(sql, item.DNCode, itemInfo.LotNo, item.WorkPoint, item.User, Code, item.VenCode, item.DepCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.UnitPrice, itemInfo.Currency, itemInfo.Sequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo013"));//"拒收单创建失败!");
|
|
}
|
|
lots += "'" + itemInfo.LotNo + item.WorkPoint + "',";
|
|
}
|
|
//增加了webconfig 判断不是U9,调用U8接口
|
|
string sqlCheckSign = @"select * from ICSConfiguration where code = 'UploadERP003' and enable = '1'";
|
|
DataTable flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
{
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]) && !DBHelper.IsU9())
|
|
ICSPurchaseService.PurchaseRejectDocInNewERP(item.DNCode, Code, item.WorkPoint, cmd, language);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(lots))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"请传入条码信息!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
n.DNCode,
|
|
n.Sequence,
|
|
a.DNCode AS RJTCode,
|
|
a.Sequence AS RJTSequence,
|
|
a.VenCode,
|
|
a.DepCode,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.RCVQuantity,
|
|
a.UnitPrice,
|
|
a.Currency,
|
|
a.POID,
|
|
a.PODetailID,
|
|
a.DNID,
|
|
a.DNDetailID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSDeliveryNotice a
|
|
INNER JOIN ICSDeliveryNotice n ON a.POID =n.DNID AND a.PODetailID=n.DNDetailID AND a.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.EATTRIBUTE1+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, lots.Substring(0, lots.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 无订单采购拒收
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable PurchaseRejectDocNoTransCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string lots = string.Empty;
|
|
string sql = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.DNCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo012"));//"到货单号不能为空!");
|
|
}
|
|
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSDeliveryNotice WHERE DNCode='{0}' and DNType='1' and WorkPoint='{1}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo061") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo062") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='RJT'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(DNCode),LEN(@date)+1,LEN(MAX(DNCode))-LEN(@date))+1 FROM ICSDeliveryNotice
|
|
WHERE SUBSTRING(DNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.DNCode, item.WorkPoint);
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//修改送货单到货数量
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a WHERE a.EATTRIBUTE1='{1}' AND DNType = '3' AND a.WorkPoint='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo063") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSDeliveryNotice(ID,DNCode,Sequence,VenCode,DepCode,
|
|
DNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
POID,PODetailID,DNID,DNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,ASNCode)
|
|
SELECT NEWID(),'{4}', '{11}', '{5}', '{6}',
|
|
'3',d.InvCode,'{7}', '{8}', 0,
|
|
'{9}', '{10}', '2', e.F_Account, SYSDATETIME(),
|
|
a.DNID,a.DNDetailID, '0', '0', a.ExtensionID,
|
|
e.F_Account,e.F_RealName, SYSDATETIME(), a.WorkPoint, d.LOTNO,''
|
|
FROM ICSDeliveryNotice a
|
|
--INNER JOIN ICSASNDetail b ON a.ASNCode=b.ASNCode AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail m on a.DNCode=m.TransCode and a.Sequence=m.TransSequence and a.WorkPoint=m.WorkPoint
|
|
INNER JOIN ICSInventoryLot d ON m.LotNo=d.LotNo AND a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
--INNER JOIN ICSPurchaseOrder n ON a.PODetailID=n.PODetailID AND m.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSInspection h ON h.LotNo=d.LotNo AND h.WorkPoint=a.WorkPoint and h.enable = 1
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{3}' AND e.F_Location='{2}'
|
|
WHERE a.DNCode='{0}' and d.LOTNO='{1}' AND a.WorkPoint='{2}'";
|
|
sql = string.Format(sql, item.DNCode, itemInfo.LotNo, item.WorkPoint, item.User, Code, item.VenCode, item.DepCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.UnitPrice, itemInfo.Currency, itemInfo.Sequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo013"));//"拒收单创建失败!");
|
|
}
|
|
lots += "'" + itemInfo.LotNo + item.WorkPoint + "',";
|
|
}
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]) && !DBHelper.IsRTU9())
|
|
ICSPurchaseService.PurchaseRejectDocInNewERP(item.DNCode, Code, item.WorkPoint, cmd, language);
|
|
}
|
|
if (string.IsNullOrWhiteSpace(lots))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"请传入条码信息!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
n.DNCode,
|
|
n.Sequence,
|
|
a.DNCode AS RJTCode,
|
|
a.Sequence AS RJTSequence,
|
|
a.VenCode,
|
|
a.DepCode,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.RCVQuantity,
|
|
a.UnitPrice,
|
|
a.Currency,
|
|
a.POID,
|
|
a.PODetailID,
|
|
a.DNID,
|
|
a.DNDetailID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSDeliveryNotice a
|
|
INNER JOIN ICSDeliveryNotice n ON a.POID =n.DNID AND a.PODetailID=n.DNDetailID AND a.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.EATTRIBUTE1+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, lots.Substring(0, lots.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 采购订单
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable PurOrderCreate(List<ICSPurchaseOrder> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
//获取单号
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='POIA'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(POCode),LEN(@date)+1,LEN(MAX(POCode))-LEN(@date))+1 FROM ICSPurchaseOrder
|
|
WHERE SUBSTRING(POCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{6}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{6}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSPurchaseOrder(ID,POCode ,Sequence,VenCode,DepCode
|
|
,PersonCode,POType,InvCode,Quantity,Amount
|
|
,InQuantity,UnitPrice,Currency ,Status ,CreatePerson
|
|
,CreateDateTime ,ReleaseState ,ReleaseDate,PlanArriveDate,ArriveUser,ArriveDate
|
|
,DeliveryUser ,DeliveryDate,PRID ,PRDetailID ,POID
|
|
,PODetailID ,ExtensionID ,MUSER,MUSERName,MTIME
|
|
,WorkPoint ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'','1','{5}','{8}',0,
|
|
0,0,'','1','',
|
|
'{7}','0','','','','',
|
|
'','','0','0','',
|
|
'','{9}','{6}',(select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{4}'),'{7}',
|
|
'{4}','','','','','','','','','','')";
|
|
sql = string.Format(sql, Code, item.Sequence, item.VenCode, item.DepCode, item.WorkPoint, item.InvCode, item.User,
|
|
item.MTime, item.Quantity, IDD);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo0206"));//"采购订单信息创建失败!!");
|
|
}
|
|
codes += "'" + Code + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.POCode,a.Sequence,
|
|
a.VenCode,a.DepCode,a.PersonCode,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.InQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSPurchaseOrder a
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSPurchaseOrder' AND d.ColumnCode='Status' AND a.Status=d.Code AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.POCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 采购订单 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSPurOrderUpdate(List<ICSPurchaseOrder> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
Checksql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
Checksql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
Checksql = string.Format(Checksql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//主表修改
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT distinct @Status=Status FROM ICSPurchaseOrder WHERE PoCode='{0}' and WorkPoint='{6}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo0205"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo0202"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, item.PoCode, item.Sequence, item.InvCode, item.Quantity, item.User,
|
|
item.MTime, item.WorkPoint);
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(item.Sequence))
|
|
{
|
|
//创建子表
|
|
sql += @"IF EXISTS(Select * from ICSPurchaseOrder where PoCode ='{0}'and Sequence ='{1}')
|
|
Begin
|
|
UPDATE ICSPurchaseOrder set InvCode='{5}',Quantity='{8}',MUSER= '{6}',VenCode = '{2}',DepCode = '{3}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{4}'),MTIME='{7}'
|
|
where PoCode ='{0}'and Sequence ='{1}'
|
|
|
|
UPDATE b set b.ProjectCode='{10}',b.BatchCode='{11}',b.Version='{12}',b.Brand='{13}',
|
|
b.cFree1='{14}',b.cFree2='{15}',b.cFree3='{16}',b.cFree4='{17}',b.cFree5='{18}',b.cFree6='{19}',b.cFree7='{20}',
|
|
b.cFree8='{21}',b.cFree9='{22}',b.cFree10='{23}'
|
|
from ICSPurchaseOrder a
|
|
INNER JOIN ICSExtension b ON a.ExtensionID=b.id and a.workpoint=b.workpoint
|
|
where a.PoCode ='{0}'and a.Sequence ='{1}'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO ICSPurchaseOrder
|
|
(ID,POCode ,Sequence,VenCode,DepCode
|
|
,PersonCode,POType,InvCode,Quantity,Amount
|
|
,InQuantity,UnitPrice,Currency ,Status ,CreatePerson
|
|
,CreateDateTime ,ReleaseState ,ReleaseDate,PlanArriveDate,ArriveUser,ArriveDate
|
|
,DeliveryUser ,DeliveryDate,PRID ,PRDetailID ,POID
|
|
,PODetailID ,ExtensionID ,MUSER,MUSERName,MTIME
|
|
,WorkPoint ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'','1','{5}','{8}',0,
|
|
0,0,'','1','',
|
|
'','0','','','','',
|
|
'','','0','0','',
|
|
'','',(select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{4}'),'{6}','{7}',
|
|
'{4}','','','','','','','','','','')
|
|
END";
|
|
sql = string.Format(sql, item.PoCode, item.Sequence, item.VenCode, item.DepCode, item.WorkPoint, item.InvCode, item.User,
|
|
item.MTime, item.Quantity, IDD, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10);
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo0204"));//"采购订单信息修改失败!");
|
|
}
|
|
ids += "'" + item.Sequence + "',";
|
|
Code = item.PoCode;
|
|
}
|
|
sql = @"DELETE from ICSPurchaseOrder where PoCode ='{0}' and Sequence not in ({1})";
|
|
sql = string.Format(sql, Code, ids.Substring(0, ids.Length - 1));
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.POCode,a.Sequence,
|
|
a.VenCode,a.DepCode,a.PersonCode,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.InQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSPurchaseOrder a
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSPurchaseOrder' AND d.ColumnCode='Status' AND a.Status=d.Code AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.POCode+a.WorkPoint IN ('{0}')";
|
|
sql = string.Format(sql, Code, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 采购订单审核
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable PurOrderApprove(List<ICSUser> JsonData)
|
|
{
|
|
string flag = string.Empty;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string ids = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
bool hasApproveFlag = JsonData.Any(u => u.ApproveFlag != null);
|
|
if (hasApproveFlag == true)
|
|
{
|
|
flag = item.ApproveFlag;
|
|
}
|
|
if (string.IsNullOrEmpty(item.ID))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"单据ID不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo019"));//"操作人不能为空!");
|
|
}
|
|
if (item.MTime <= new DateTime(2000, 1, 1))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo020"));//"操作时间不能为空!");
|
|
}
|
|
if (flag.Equals("1") || flag == "")
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSPurchaseOrder WHERE PoCode='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo0202") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSPurchaseOrder set Status='2',MUSER='{1}',MTIME='{2}' where PoCode='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo0203"));//"采购订单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
else
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSPurchaseOrder WHERE PoCode='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo473") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS (select id from ICSPurchaseOrder where PoCode='{0}' and InQuantity>0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo474") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSPurchaseOrder set Status='1',MUSER='{1}',MTIME='{2}' where PoCode='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo475"));//"采购订单弃审失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.POCode,a.Sequence,
|
|
a.VenCode,a.DepCode,a.PersonCode,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.InQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSPurchaseOrder a
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSPurchaseOrder' AND d.ColumnCode='Status' AND a.Status=d.Code AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.ID IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 销售订单审核
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable SalesOrderApprove(List<ICSUser> JsonData)
|
|
{
|
|
string flag = string.Empty;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string ids = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
bool hasApproveFlag = JsonData.Any(u => u.ApproveFlag != null);
|
|
if (hasApproveFlag == true)
|
|
{
|
|
flag = item.ApproveFlag;
|
|
}
|
|
if (string.IsNullOrEmpty(item.ID))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"单据ID不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo019"));//"操作人不能为空!");
|
|
}
|
|
if (item.MTime <= new DateTime(2000, 1, 1))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo020"));//"操作时间不能为空!");
|
|
}
|
|
|
|
if (flag.Equals("1") || flag == "")
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSSDN WHERE SDNCode='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo066") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSSDN set Status='2',MUSER='{1}',MTIME='{2}' where SDNCode='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo026"));//"生产退料申请单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
else
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSSDN WHERE SDNCode='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo473") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS (select id from ICSSDN where SDNCode='{0}' and SDNQuantity>0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo474") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSSDN set Status='1',MUSER='{1}',MTIME='{2}' where SDNCode='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo475"));//"生产退料申请单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.SDNCode,a.Sequence,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSSDN a
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSSDN' AND d.ColumnCode='Status' AND a.Status=d.Code AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.SDNCode IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 生产订单审核
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSMOApprove(List<ICSUser> JsonData)
|
|
{
|
|
string flag = string.Empty;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string ids = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
bool hasApproveFlag = JsonData.Any(u => u.ApproveFlag != null);
|
|
if (hasApproveFlag == true)
|
|
{
|
|
flag = item.ApproveFlag;
|
|
}
|
|
if (string.IsNullOrEmpty(item.ID))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"单据ID不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo019"));//"操作人不能为空!");
|
|
}
|
|
if (item.MTime <= new DateTime(2000, 1, 1))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo020"));//"操作时间不能为空!");
|
|
}
|
|
|
|
if (flag.Equals("1") || flag == "")
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=MOStatus FROM ICSMO WHERE mocode='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo066") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSMO set MOStatus='2',MUSER='{1}',MTIME='{2}' where mocode='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo026"));//"生产退料申请单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
else
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=MOStatus FROM ICSMO WHERE mocode='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo473") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS (select id from ICSMO where MOCode='{0}' and RCVQuantity>0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo474") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSMO set MOStatus='1',MUSER='{1}',MTIME='{2}' where mocode='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo475"));//"生产退料申请单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ID, a.MOCode, a.Sequence, a.InvCode, a.Quantity,
|
|
a.Amount, a.RCVQuantity, a.DepCode, a.WHCode, a.StartDate, a.DueDate,
|
|
a.MOStatus, a.MOMemo, a.CreatePerson, a.CreateDateTime, a.ERPStatus, a.MOID, a.MODetailID,
|
|
a.ExtensionID, a.MUSER, a.MUSERName, a.MTIME, a.WorkPoint
|
|
FROM ICSMO a
|
|
|
|
WHERE a.mocode IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
/// <summary>
|
|
/// 生产订单
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSMOCreate(List<ICSMO> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='MO'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(MOCODE),LEN(@date)+1,LEN(MAX(MOCODE))-LEN(@date))+1 FROM ICSMO
|
|
WHERE SUBSTRING(MOCODE, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//获取单号
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSMO
|
|
(a.ID, a.MOCode, a.Sequence, a.InvCode, a.Quantity,
|
|
a.Amount, a.RCVQuantity, a.DepCode, a.WHCode, a.StartDate, a.DueDate,
|
|
a.MOStatus, a.MOMemo, a.CreatePerson, a.CreateDateTime, a.ERPStatus, a.MOID, a.MODetailID,
|
|
a.ExtensionID, a.MUSER, a.MUSERName, a.MTIME, a.WorkPoint, a.EATTRIBUTE1, a.EATTRIBUTE2,
|
|
a.EATTRIBUTE3, a.EATTRIBUTE4, a.EATTRIBUTE5,
|
|
a.EATTRIBUTE6, a.EATTRIBUTE7, a.EATTRIBUTE8, a.EATTRIBUTE9, a.EATTRIBUTE10)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'0','0','','','{8}',
|
|
'{9}',1,'','{4}','{5}',
|
|
'1','','','{7}',
|
|
'{4}',(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{6}'),'{5}','{6}','',
|
|
'','','','','','','','','')";
|
|
sql = string.Format(sql, Code, item.Sequence, item.InvCode, item.Quantity, item.User,
|
|
item.MTIME, item.WorkPoint, IDD, item.StartDate, item.EndDate, item.WHCODE);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
}
|
|
codes = "'" + Code + "'";
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ID, a.MOCode, a.Sequence, a.InvCode, a.Quantity,
|
|
a.Amount, a.RCVQuantity, a.DepCode, a.WHCode, a.StartDate, a.DueDate,
|
|
a.MOStatus, a.MOMemo, a.CreatePerson, a.CreateDateTime, a.ERPStatus, a.MOID, a.MODetailID,
|
|
a.ExtensionID, a.MUSER, a.MUSERName, a.MTIME, a.WorkPoint
|
|
FROM ICSMO a
|
|
|
|
WHERE a.MOCODE+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#region 销售订单
|
|
/// <summary>
|
|
/// 销售订单创建
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static DataTable ICSSalesOrderCreate(List<ICSSalesOrder> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
//获取单号
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='POIA'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(SDNCode),LEN(@date)+1,LEN(MAX(SDNCode))-LEN(@date))+1 FROM ICSSDN
|
|
WHERE SUBSTRING(SDNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{7}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{7}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSSDN(ID,SDNCode,Sequence,SOCode,SOSequence,CusCode,CusName,Type,ArriveDate,WHCode,
|
|
InvCode,Quantity,CreatePerson,CreateDateTime,Status,SDNID,SDNDetailID,ExtensionID,MUSER,MUSERName,MTIME,WorkPoint)
|
|
VALUES(NEWID(),'{0}',{1},'','','{2}','{3}',3,'{8}','{10}',
|
|
'{4}',{5},'{7}','{8}',1,'','','{9}','{7}','{7}','{8}','{6}')
|
|
";
|
|
sql = string.Format(sql, Code, item.Sequence, item.CusCode, item.CusName, item.InvCode, item.Quantity, item.WorkPoint, item.User,
|
|
item.MTime, IDD, item.WHCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"采购订单信息创建失败!");
|
|
}
|
|
codes += "'" + Code + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.DNCode,a.Sequence,
|
|
a.VenCode,a.DepCode,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSDeliveryNotice a
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSDeliveryNotice' AND d.ColumnCode='Status' AND a.Status=d.Code AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.DNCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 销售订单 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSSalesOrderUpdate(List<ICSSalesOrder> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
Checksql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
Checksql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
Checksql = string.Format(Checksql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//主表修改
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT distinct @Status=Status FROM ICSSDN WHERE SDNCode='{0}' and WorkPoint='{6}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo065"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo066"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, item.SDNCode, item.Sequence, item.InvCode, item.Quantity, item.User,
|
|
item.MTime, item.WorkPoint);
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(item.Sequence))
|
|
{
|
|
//创建子表
|
|
sql += @"IF EXISTS(Select * from ICSSDN where SDNCode ='{0}'and Sequence ='{1}')
|
|
Begin
|
|
UPDATE ICSSDN set InvCode='{4}',Quantity='{5}',WHCode='{10}',MUSER= '{7}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{6}'),MTIME='{8}'
|
|
where SDNCode ='{0}' and Sequence ='{1}'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO ICSSDN(ID,SDNCode,Sequence,SOCode,SOSequence,CusCode,CusName,Type,ArriveDate,WHCode,
|
|
InvCode,Quantity,CreatePerson,CreateDateTime,Status,SDNID,SDNDetailID,ExtensionID,MUSER,MUSERName,MTIME,WorkPoint)
|
|
VALUES(NEWID(),'{0}',{1},'','','{2}','{3}',3,'{8}','{10}',
|
|
'{4}',{5},'{7}','{8}',1,'','','{9}','{7}','{7}','{8}','{6}')
|
|
END";
|
|
|
|
sql = string.Format(sql, item.SDNCode, item.Sequence, item.CusCode, item.CusName, item.InvCode, item.Quantity, item.WorkPoint, item.User,
|
|
item.MTime, IDD, item.WHCode);
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo025"));//"采购订单信息修改失败!");
|
|
}
|
|
ids += "'" + item.Sequence + "',";
|
|
Code = item.SDNCode;
|
|
}
|
|
sql = @"DELETE from ICSDeliveryNotice where DNCode ='{0}' and Sequence not in ({1})";
|
|
sql = string.Format(sql, Code, ids.Substring(0, ids.Length - 1));
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.DNCode,a.Sequence,
|
|
a.VenCode,a.DepCode,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSDeliveryNotice a
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSDeliveryNotice' AND d.ColumnCode='Status' AND a.Status=d.Code AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.DNCode+a.WorkPoint IN ('{0}')";
|
|
sql = string.Format(sql, Code, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 生产退料 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSMOUpdate(List<ICSMO> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
Checksql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
Checksql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
Checksql = string.Format(Checksql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//主表修改
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT distinct @Status=moStatus FROM ICSMO WHERE MOCODE='{0}' and WorkPoint='{6}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo065"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo066"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, item.MOCODE, item.Sequence, item.InvCode, item.Quantity, item.User,
|
|
item.MTIME, item.WorkPoint);
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(item.Sequence))
|
|
{
|
|
//创建子表
|
|
sql += @"IF EXISTS(Select * from icsmo where mocode ='{0}'and Sequence ='{1}')
|
|
Begin
|
|
UPDATE icsmo set InvCode='{2}',Quantity='{3}',MUSER= '{4}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{6}'),MTIME='{5}'
|
|
where mocode ='{0}'and Sequence ='{1}'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO ICSMO
|
|
(ID, MOCode, Sequence, InvCode, Quantity,
|
|
Amount, RCVQuantity, DepCode, WHCode, StartDate, DueDate,
|
|
MOStatus, MOMemo, CreatePerson, CreateDateTime, ERPStatus, MOID, MODetailID,
|
|
ExtensionID, MUSER, MUSERName, MTIME, WorkPoint, EATTRIBUTE1, EATTRIBUTE2,
|
|
EATTRIBUTE3, EATTRIBUTE4, EATTRIBUTE5,
|
|
EATTRIBUTE6, EATTRIBUTE7, EATTRIBUTE8, EATTRIBUTE9, EATTRIBUTE10)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'0','0','','','{5}',
|
|
'{5}',1,'','{4}','{5}',
|
|
'1','','','',
|
|
'{4}',(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{6}'),'{5}','{6}','{7}',
|
|
'','','','','','','','','')
|
|
END";
|
|
sql = string.Format(sql, item.MOCODE, item.Sequence, item.InvCode, item.Quantity, item.User,
|
|
item.MTIME, item.WorkPoint, IDD);
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo025"));//"生产退料单子表信息修改失败!");
|
|
}
|
|
ids += "'" + item.Sequence + "',";
|
|
Code = item.MOCODE;
|
|
}
|
|
sql = @"DELETE from icsmo where mocode ='{0}' and Sequence not in ({1})";
|
|
sql = string.Format(sql, Code, ids.Substring(0, ids.Length - 1));
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ID, a.MOCode, a.Sequence, a.InvCode, a.Quantity,
|
|
a.Amount, a.RCVQuantity, a.DepCode, a.WHCode, a.StartDate, a.DueDate,
|
|
a.MOStatus, a.MOMemo, a.CreatePerson, a.CreateDateTime, a.ERPStatus, a.MOID, a.MODetailID,
|
|
a.ExtensionID, a.MUSER, a.MUSERName, a.MTIME, a.WorkPoint, a.EATTRIBUTE1, a.EATTRIBUTE2,
|
|
a.EATTRIBUTE3, a.EATTRIBUTE4, a.EATTRIBUTE5,
|
|
a.EATTRIBUTE6, a.EATTRIBUTE7, a.EATTRIBUTE8, a.EATTRIBUTE9, a.EATTRIBUTE10
|
|
FROM ICSMO a
|
|
|
|
WHERE mocode ='{0}' and Sequence in ({1})";
|
|
sql = string.Format(sql, Code, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#region 委外
|
|
/// <summary>
|
|
/// 委外退料 新建
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingIssueDoNegativeApplyCreate(List<ICSOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='OOIA'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(OApplyNegCode),LEN(@date)+1,LEN(MAX(OApplyNegCode))-LEN(@date))+1 FROM ICSOApplyNeg
|
|
WHERE SUBSTRING(OApplyNegCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSOApplyNeg(ID,OApplyNegCode,WHCode,Status,Type,Memo,CreatePerson,CreateDateTime,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','1','{5}','','{2}','{3}','{2}',(select F_RealName from Sys_SRM_User where F_Account='{2}' and F_Location='{4}'),'{3}','{4}','')";
|
|
sql = string.Format(sql, Code, item.WHCode, item.User, item.MTime, item.WorkPoint, item.Type);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo014"));//"委外退料单信息创建失败!");
|
|
}
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
string key = itemInfo.Sequence + "~" + itemInfo.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
// 创建子表
|
|
sql = @"INSERT INTO ICSOApplyNegDetail(ID,OApplyNegCode,Sequence,SourceDetailID,InvCode,
|
|
Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo015"));//"委外退料单子表信息创建失败!");
|
|
}
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckOutsourcingIssueDoc(item.Type, Code, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
codes += "'" + Code + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.OApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.OApplyNegCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外退料 新建
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMOutsourcingIssueDoNegativeApplyCreate(List<ICSOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='OOIA'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(OApplyNegCode),LEN(@date)+1,LEN(MAX(OApplyNegCode))-LEN(@date))+1 FROM ICSOApplyNeg
|
|
WHERE SUBSTRING(OApplyNegCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSOApplyNeg(ID,OApplyNegCode,WHCode,Status,Type,Memo,CreatePerson,CreateDateTime,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','1','{5}','','{2}','{3}','{2}',(select F_RealName from Sys_SRM_User where F_Account='{2}' and F_Location='{4}'),'{3}','{4}','')";
|
|
sql = string.Format(sql, Code, item.WHCode, item.User, item.MTime, item.WorkPoint, item.Type);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo014"));//"委外退料单信息创建失败!");
|
|
}
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
string chekksql = @"select c.EATTRIBUTE1 ICSInventory c
|
|
WHERE c.InvCode='{0}'AND c.WorkPoint='{1}' and c.AmountEnable='1'";
|
|
chekksql = string.Format(chekksql, itemInfo.InvCode, itemInfo.WorkPoint);
|
|
DataTable dta = DBHelper.SQlReturnData(chekksql, cmd);
|
|
if (dta.Rows.Count > 0)
|
|
{
|
|
itemInfo.Quantity = (itemInfo.Quantity * decimal.Parse(dta.Rows[0]["EATTRIBUTE1"].ToString()));
|
|
}
|
|
|
|
string key = itemInfo.Sequence + "~" + itemInfo.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
// 创建子表
|
|
sql = @"INSERT INTO ICSOApplyNegDetail(ID,OApplyNegCode,Sequence,SourceDetailID,InvCode,
|
|
Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo015"));//"委外退料单子表信息创建失败!");
|
|
}
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckOutsourcingIssueDoc(item.Type, Code, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
codes += "'" + Code + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.OApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.OApplyNegCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
private static string CheckOutsourcingIssueDoc(string Type, string Code, string WorkPoint, Dictionary<string, string> language)
|
|
{
|
|
string sql = string.Empty;
|
|
if (Type == "1")
|
|
{
|
|
sql = @"DECLARE @PickID VARCHAR(10)
|
|
SELECT @PickID=b.PickID
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOOPick b ON a.SourceDetailID=b.PickID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.Type='{2}' AND a.WorkPoint='{1}' and a.Quantity<>a.IssueNegQuantity
|
|
AND a.SourceDetailID IN (SELECT a.SourceDetailID
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.OApplyNegCode='{0}' AND c.Type='{2}' AND a.WorkPoint='{1}' )
|
|
GROUP BY b.PickID
|
|
HAVING MAX(b.Quantity)<SUM(a.Quantity)
|
|
|
|
IF (@PickID IS NOT NULL)
|
|
BEGIN
|
|
DECLARE @InvCode VARCHAR(100)
|
|
SELECT @InvCode='" + language.GetNameByCode("WMSAPIInfo064") + @"' FROM ICSOOPick WHERE PickID=@PickID AND WorkPoint='{1}'
|
|
RAISERROR(@InvCode,16,1);
|
|
RETURN
|
|
END ";
|
|
}
|
|
else if (Type == "2")
|
|
{
|
|
sql = @"DECLARE @ApplyDetailID VARCHAR(10)
|
|
SELECT @ApplyDetailID=b.ApplyDetailID
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApply b ON a.SourceDetailID=b.ApplyDetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.Type='{2}' AND a.WorkPoint='{1}' and a.Quantity<>a.IssueNegQuantity
|
|
AND a.SourceDetailID IN (SELECT a.SourceDetailID
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.OApplyNegCode='{0}' AND c.Type='{2}' AND a.WorkPoint='{1}')
|
|
GROUP BY b.ApplyDetailID
|
|
HAVING MAX(b.Quantity)<SUM(a.Quantity)
|
|
|
|
IF (@ApplyDetailID IS NOT NULL)
|
|
BEGIN
|
|
DECLARE @InvCode VARCHAR(100)
|
|
SELECT @InvCode='" + language.GetNameByCode("WMSAPIInfo064") + @"' FROM ICSOApply WHERE ApplyDetailID=@ApplyDetailID AND WorkPoint='{1}'
|
|
RAISERROR(@InvCode,16,1);
|
|
RETURN
|
|
END ";
|
|
}
|
|
else if (Type == "3")
|
|
{
|
|
sql = @"DECLARE @IssueDetailID VARCHAR(10)
|
|
SELECT @IssueDetailID=b.IssueDetailID
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOIssue b ON a.SourceDetailID=b.IssueDetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.Type='{2}' AND a.WorkPoint='{1}' and a.Quantity<>a.IssueNegQuantity
|
|
AND a.SourceDetailID IN (SELECT a.SourceDetailID
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.OApplyNegCode='{0}' AND c.Type='{2}' AND a.WorkPoint='{1}')
|
|
GROUP BY b.IssueDetailID
|
|
HAVING MAX(b.Quantity)<SUM(a.Quantity)
|
|
|
|
IF (@IssueDetailID IS NOT NULL)
|
|
BEGIN
|
|
DECLARE @InvCode VARCHAR(100)
|
|
SELECT @InvCode='" + language.GetNameByCode("WMSAPIInfo064") + @"' FROM ICSOIssue WHERE IssueDetailID=@IssueDetailID AND WorkPoint='{1}'
|
|
RAISERROR(@InvCode,16,1);
|
|
RETURN
|
|
END ";
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
|
|
}
|
|
sql = string.Format(sql, Code, WorkPoint, Type);
|
|
return sql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外退料 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingIssueDoNegativeApplyUpdate(List<ICSOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string idss = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//主表修改
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo060") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSOApplyNeg WHERE ID='{3}' and WorkPoint='{4}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo065"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo066"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSOApplyNeg set WHCode='{0}',MUSER='{1}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{1}' and F_Location='{4}'),MTIME='{2}' where ID='{3}' and WorkPoint='{4}' ";
|
|
sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.id, item.WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo016"));//"委外退料单信息修改失败!");
|
|
}
|
|
//var detail = item.detail.Where(a => a.DetailID.Length <= 0).Count();
|
|
//if (detail > 0)
|
|
//{
|
|
// sql = @"SELECT OApplyNegCode FROM ICSOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
// sql = string.Format(sql, item.id, item.WorkPoint);
|
|
// Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//}
|
|
sql = @"SELECT OApplyNegCode FROM ICSOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.id, item.WorkPoint);
|
|
Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(itemInfo.DetailID))
|
|
{
|
|
//创建子表
|
|
sql = @"INSERT INTO ICSOApplyNegDetail(ID,OApplyNegCode,Sequence,SourceDetailID,InvCode,
|
|
Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
}
|
|
else
|
|
{
|
|
//子表修改
|
|
sql = @"update ICSOApplyNegDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}',SourceDetailID='{3}',MUSER='{6}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{5}') where ID='{4}' and WorkPoint='{5}'";
|
|
sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.SourceDetailID, itemInfo.DetailID, item.WorkPoint, item.User);
|
|
}
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo017"));//"委外退料单子表信息修改失败!");
|
|
}
|
|
idss += "'" + itemInfo.DetailID + "',";
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckOutsourcingIssueDoc(item.Type, Code, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
ids += "'" + item.id + "',";
|
|
}
|
|
sql = @"DELETE from ICSOApplyNegDetail where OApplyNegCode ='{0}' and id not in ({1})";
|
|
sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1));
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.OApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE c.ID IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 委外退料 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMOutsourcingIssueDoNegativeApplyUpdate(List<ICSOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string idss = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//主表修改
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo060") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSOApplyNeg WHERE ID='{3}' and WorkPoint='{4}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo065"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo066"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSOApplyNeg set WHCode='{0}',MUSER='{1}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{1}' and F_Location='{4}'),MTIME='{2}' where ID='{3}' and WorkPoint='{4}' ";
|
|
sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.id, item.WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo016"));//"委外退料单信息修改失败!");
|
|
}
|
|
//var detail = item.detail.Where(a => a.DetailID.Length <= 0).Count();
|
|
//if (detail > 0)
|
|
//{
|
|
// sql = @"SELECT OApplyNegCode FROM ICSOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
// sql = string.Format(sql, item.id, item.WorkPoint);
|
|
// Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//}
|
|
sql = @"SELECT OApplyNegCode FROM ICSOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.id, item.WorkPoint);
|
|
Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
string chekksql = @"select c.EATTRIBUTE1 ICSInventory c
|
|
WHERE c.InvCode='{0}'AND c.WorkPoint='{1}' and c.AmountEnable='1'";
|
|
chekksql = string.Format(chekksql, itemInfo.InvCode, itemInfo.WorkPoint);
|
|
DataTable dta = DBHelper.SQlReturnData(chekksql, cmd);
|
|
if (dta.Rows.Count > 0)
|
|
{
|
|
itemInfo.Quantity = (itemInfo.Quantity * decimal.Parse(dta.Rows[0]["EATTRIBUTE1"].ToString()));
|
|
}
|
|
if (string.IsNullOrWhiteSpace(itemInfo.DetailID))
|
|
{
|
|
//创建子表
|
|
sql = @"INSERT INTO ICSOApplyNegDetail(ID,OApplyNegCode,Sequence,SourceDetailID,InvCode,
|
|
Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
}
|
|
else
|
|
{
|
|
//子表修改
|
|
sql = @"update ICSOApplyNegDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}',SourceDetailID='{3}',MUSER='{6}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{5}') where ID='{4}' and WorkPoint='{5}'";
|
|
sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.SourceDetailID, itemInfo.DetailID, item.WorkPoint, item.User);
|
|
}
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo017"));//"委外退料单子表信息修改失败!");
|
|
}
|
|
idss += "'" + itemInfo.DetailID + "',";
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckOutsourcingIssueDoc(item.Type, Code, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
ids += "'" + item.id + "',";
|
|
}
|
|
sql = @"DELETE from ICSOApplyNegDetail where OApplyNegCode ='{0}' and id not in ({1})";
|
|
sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1));
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.OApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE c.ID IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外退料审核
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingIssueDoNegativeApplyApprove(List<ICSUser> JsonData)
|
|
{
|
|
string flag = string.Empty;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string ids = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
bool hasApproveFlag = JsonData.Any(u => u.ApproveFlag != null);
|
|
if (hasApproveFlag == true)
|
|
{
|
|
flag = item.ApproveFlag;
|
|
}
|
|
if (string.IsNullOrEmpty(item.ID))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"单据ID不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo019"));//"操作人不能为空!");
|
|
}
|
|
if (item.MTime <= new DateTime(2000, 1, 1))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo020"));//"操作时间不能为空!");
|
|
}
|
|
|
|
if (flag.Equals("1") || flag == "")
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSOApplyNeg WHERE ID='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo066") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSOApplyNeg set Status='2',MUSER='{1}',MTIME='{2}' where ID='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo021"));//"委外退料申请单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
else
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSOApplyNeg WHERE ID='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo473") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS (select a.id from ICSOApplyNeg a
|
|
left join ICSOApplyNegDetail b on a.OApplyNegCode=b.OApplyNegCode and a.WorkPoint=b.WorkPoint
|
|
where a.ID='{0}' and b.IssueNegQuantity>0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo474") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSOApplyNeg set Status='1',MUSER='{1}',MTIME='{2}' where ID='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo475"));//"委外退料申请单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.OApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSOApplyNegDetail a
|
|
INNER JOIN ICSOApplyNeg c ON a.OApplyNegCode=c.OApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE c.ID IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外到货
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingDeliveryNoticeCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string asncodes = string.Empty;
|
|
string sql = string.Empty;
|
|
string DNCodes = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.OASNCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo009"));//"送货单号不能为空!");
|
|
}
|
|
|
|
sql = @"SELECT a.ODNCode FROM ICSODeliveryNotice a WHERE a.OASNCode='{0}' AND ODNType = '1' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.ASNCode, item.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
DNCodes = dt.Rows[0]["DNCode"].ToString();
|
|
}
|
|
|
|
|
|
//获取单号
|
|
sql = @"IF EXISTS(SELECT a.ID FROM ICSODeliveryNotice a WHERE a.OASNCode='{0}' AND ODNType = '1' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo057") + @"',16,1);
|
|
RETURN
|
|
END
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSOASN WHERE OASNCode='{0}' and WorkPoint='{1}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo058") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo059") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='ODN'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(ODNCode),LEN(@date)+1,LEN(MAX(ODNCode))-LEN(@date))+1 FROM ICSODeliveryNotice
|
|
WHERE SUBSTRING(ODNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.OASNCode, item.WorkPoint, DNCodes);
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//修改送货单到货数量
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
sql = @"UPDATE ICSOASNDetail SET ODNQuantity=ISNULL(ODNQuantity, 0)+'{2}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint, itemInfo.Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo010")); //"委外送货单子表信息更新失败!");
|
|
}
|
|
}
|
|
//创建到货单信息
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo060") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSODeliveryNotice(ID,ODNCode,Sequence,VenCode,DepCode,
|
|
ODNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
OOID,OODetailID,ODNID,ODNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,OASNCode)
|
|
SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,
|
|
'1',b.InvCode,SUM(a.ODNQuantity),'0','0',
|
|
d.UnitPrice,d.Currency,'2',e.F_Account,GETDATE(),
|
|
d.OOID,d.OODetailID,'{0}',newid(),b.ExtensionID,
|
|
e.F_Account,e.F_RealName,GETDATE(),a.WorkPoint,'',a.OASNCode
|
|
FROM ICSOASNDetail a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSOutsourcingOrder d ON c.TransCode=d.OOCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
|
|
WHERE a.OASNCode='{3}' AND a.WorkPoint='{2}'
|
|
GROUP BY d.OOID,d.OODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.ExtensionID,b.InvCode,a.OASNCode,e.F_Account,e.F_RealName,a.WorkPoint";
|
|
sql = string.Format(sql, Code, item.User, item.WorkPoint, item.OASNCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo011")); //"到货单信息创建失败!");
|
|
}
|
|
string sqlCheckSign = @"select * from ICSConfiguration where code = 'UploadERP002' and enable = '1'";
|
|
DataTable flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
{
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
if (!DBHelper.IsU9())
|
|
ICSOutsourcingService.OutsourcingDeliveryNoticeERP(Code, item.WorkPoint, cmd, language);
|
|
}
|
|
}
|
|
|
|
|
|
asncodes += "'" + item.OASNCode + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(asncodes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo009"));//"请传入送货单信息!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
n.OOCode,
|
|
n.Sequence AS OOSequence,
|
|
a.OASNCode,
|
|
a.ODNCode,
|
|
a.Sequence,
|
|
a.VenCode,
|
|
a.DepCode,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.RCVQuantity,
|
|
a.UnitPrice,
|
|
a.Currency,
|
|
a.OOID,
|
|
a.OODetailID,
|
|
a.ODNID,
|
|
a.ODNDetailID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSODeliveryNotice a
|
|
INNER JOIN ICSOutsourcingOrder n ON a.OOID =n.OOID AND a.OODetailID=n.OODetailID AND a.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.OASNCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, asncodes.Substring(0, asncodes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外拒收
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingRejectDocCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string lots = string.Empty;
|
|
string sql = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.ODNCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo012"));//"到货单号不能为空!");
|
|
}
|
|
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSODeliveryNotice WHERE ODNCode='{0}' and ODNType='1' and WorkPoint='{1}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo061") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo062") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='ORJT'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(ODNCode),LEN(@date)+1,LEN(MAX(ODNCode))-LEN(@date))+1 FROM ICSODeliveryNotice
|
|
WHERE SUBSTRING(ODNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.ODNCode, item.WorkPoint);
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//修改送货单到货数量
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
|
|
IF EXISTS(SELECT a.ID FROM ICSODeliveryNotice a WHERE a.EATTRIBUTE1='{1}' AND ODNType = '3' AND a.WorkPoint='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo063") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSODeliveryNotice(ID,ODNCode,Sequence,VenCode,DepCode,
|
|
ODNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
OOID,OODetailID,ODNID,ODNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,OASNCode)
|
|
SELECT NEWID(),'{4}', '{11}', '{5}', '{6}',
|
|
'3',d.InvCode,'{7}', '{8}', 0,
|
|
'{9}', '{10}', '2', e.F_Account, SYSDATETIME(),
|
|
a.ODNID,a.ODNDetailID, '0', '0', a.ExtensionID,
|
|
e.F_Account,e.F_RealName, SYSDATETIME(), a.WorkPoint, b.LOTNO,''
|
|
FROM ICSODeliveryNotice a
|
|
INNER JOIN ICSOASNDetail b ON a.OASNCode=b.OASNCode AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint and a.ExtensionID=d.ExtensionID
|
|
INNER JOIN ICSInventoryLotDetail m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
|
|
INNER JOIN ICSOutsourcingOrder n ON m.TransCode =n.OOCode AND m.TransSequence=n.Sequence AND a.OODetailID=n.OODetailID AND m.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSInspection h ON h.LotNo=b.LotNo AND h.WorkPoint=b.WorkPoint and h.enable = 1
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{3}' AND e.F_Location='{2}'
|
|
WHERE a.ODNCode='{0}' and b.LOTNO='{1}' AND a.WorkPoint='{2}'";
|
|
sql = string.Format(sql, item.ODNCode, itemInfo.LotNo, item.WorkPoint, item.User, Code, item.VenCode, item.DepCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.UnitPrice, itemInfo.Currency, itemInfo.Sequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo013"));//"拒收单创建失败!");
|
|
}
|
|
lots += "'" + itemInfo.LotNo + item.WorkPoint + "',";
|
|
}
|
|
string sqlCheckSign = @"select * from ICSConfiguration where code = 'UploadERP004' and enable = '1'";
|
|
DataTable flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
{
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]) && !DBHelper.IsRTU9())
|
|
ICSOutsourcingService.OutsourcingRejectDocInNewERP(item.ODNCode, Code, item.WorkPoint, cmd, language);
|
|
}
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(lots))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"请传入条码信息!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
n.ODNCode,
|
|
n.Sequence,
|
|
a.ODNCode AS RJTCode,
|
|
a.Sequence AS RJTSequence,
|
|
a.VenCode,
|
|
a.DepCode,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.RCVQuantity,
|
|
a.UnitPrice,
|
|
a.Currency,
|
|
a.OOID,
|
|
a.OODetailID,
|
|
a.ODNID,
|
|
a.ODNDetailID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSODeliveryNotice a
|
|
INNER JOIN ICSODeliveryNotice n ON a.OOID =n.ODNID AND a.OODetailID=n.ODNDetailID AND a.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.EATTRIBUTE1+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, lots.Substring(0, lots.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 无订单委外拒收
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingRejectDocNoTransCreate(List<ICSDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string lots = string.Empty;
|
|
string sql = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.ODNCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo012"));//"到货单号不能为空!");
|
|
}
|
|
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSODeliveryNotice WHERE ODNCode='{0}' and ODNType='1' and WorkPoint='{1}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo061") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo062") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='ORJT'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(ODNCode),LEN(@date)+1,LEN(MAX(ODNCode))-LEN(@date))+1 FROM ICSODeliveryNotice
|
|
WHERE SUBSTRING(ODNCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.ODNCode, item.WorkPoint);
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//修改送货单到货数量
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.ID FROM ICSODeliveryNotice a WHERE a.EATTRIBUTE1='{1}' AND ODNType = '3' AND a.WorkPoint='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo063") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSODeliveryNotice(ID,ODNCode,Sequence,VenCode,DepCode,
|
|
ODNType,InvCode,Quantity,Amount,RCVQuantity,
|
|
UnitPrice,Currency,Status,CreatePerson,CreateDateTime,
|
|
OOID,OODetailID,ODNID,ODNDetailID,ExtensionID,
|
|
MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,OASNCode)
|
|
SELECT NEWID(),'{4}', '{11}', '{5}', '{6}',
|
|
'3',d.InvCode,'{7}', '{8}', 0,
|
|
'{9}', '{10}', '2', e.F_Account, SYSDATETIME(),
|
|
a.ODNID,a.ODNDetailID, '0', '0', a.ExtensionID,
|
|
e.F_Account,e.F_RealName, SYSDATETIME(), a.WorkPoint, d.LOTNO,''
|
|
FROM ICSODeliveryNotice a
|
|
INNER JOIN ICSInventoryLotDetail m on a.ODNCode=m.TransCode and a.Sequence=m.TransSequence and a.WorkPoint=m.WorkPoint
|
|
INNER JOIN ICSInventoryLot d ON m.LotNo=d.LotNo AND a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSInspection h ON h.LotNo=d.LotNo AND h.WorkPoint=a.WorkPoint and h.enable = 1
|
|
INNER JOIN Sys_SRM_User e ON e.F_Account='{3}' AND e.F_Location='{2}'
|
|
WHERE a.ODNCode='{0}' and d.LOTNO='{1}' AND a.WorkPoint='{2}'";
|
|
sql = string.Format(sql, item.ODNCode, itemInfo.LotNo, item.WorkPoint, item.User, Code, item.VenCode, item.DepCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.UnitPrice, itemInfo.Currency, itemInfo.Sequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo013"));//"拒收单创建失败!");
|
|
}
|
|
lots += "'" + itemInfo.LotNo + item.WorkPoint + "',";
|
|
}
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]) && !DBHelper.IsRTU9())
|
|
{
|
|
ICSOutsourcingService.OutsourcingRejectDocInNewERP(item.ODNCode, Code, item.WorkPoint, cmd, language);
|
|
}
|
|
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(lots))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"请传入条码信息!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
n.ODNCode,
|
|
n.Sequence,
|
|
a.ODNCode AS RJTCode,
|
|
a.Sequence AS RJTSequence,
|
|
a.VenCode,
|
|
a.DepCode,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.RCVQuantity,
|
|
a.UnitPrice,
|
|
a.Currency,
|
|
a.OOID,
|
|
a.OODetailID,
|
|
a.ODNID,
|
|
a.ODNDetailID,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSODeliveryNotice a
|
|
INNER JOIN ICSODeliveryNotice n ON a.OOID =n.ODNID AND a.OODetailID=n.ODNDetailID AND a.WorkPoint=n.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.EATTRIBUTE1+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, lots.Substring(0, lots.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 生产
|
|
|
|
/// <summary>
|
|
/// 生产退料 新建
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MOIssueDocNegativeApplyCreate(List<ICSMOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
string memo = string.Empty;
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
|
|
memo = item.Memo;
|
|
|
|
//获取单号
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='MOIA'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(ApplyNegCode),LEN(@date)+1,LEN(MAX(ApplyNegCode))-LEN(@date))+1 FROM ICSMOApplyNeg
|
|
WHERE SUBSTRING(ApplyNegCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSMOApplyNeg(ID,ApplyNegCode,WHCode,Status,Type,Memo,CreatePerson,CreateDateTime,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','1','{5}','{6}','{2}','{3}','{2}',(select F_RealName from Sys_SRM_User where F_Account='{2}' and F_Location='{4}'),'{3}','{4}','')";
|
|
sql = string.Format(sql, Code, item.WHCode, item.User, item.MTime, item.WorkPoint, item.Type, memo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产退料单信息创建失败!");
|
|
}
|
|
HashSet<string> addedItems = new HashSet<string>();
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
// 创建子表
|
|
sql = @"INSERT INTO ICSMOApplyNegDetail(ID,ApplyNegCode,Sequence,SourceDetailID,InvCode,
|
|
Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo023"));//"生产退料单子表信息创建失败!");
|
|
}
|
|
|
|
string key = itemInfo.Sequence + "~" + itemInfo.InvCode;
|
|
|
|
if (addedItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
addedItems.Add(key);
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckMOIssueDoc(item.Type, Code, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
codes += "'" + Code + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSMOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.ApplyNegCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生产退料 新建
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMMOIssueDocNegativeApplyCreate(List<ICSMOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='MOIA'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(ApplyNegCode),LEN(@date)+1,LEN(MAX(ApplyNegCode))-LEN(@date))+1 FROM ICSMOApplyNeg
|
|
WHERE SUBSTRING(ApplyNegCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSMOApplyNeg(ID,ApplyNegCode,WHCode,Status,Type,Memo,CreatePerson,CreateDateTime,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','1','{5}','','{2}','{3}','{2}',(select F_RealName from Sys_SRM_User where F_Account='{2}' and F_Location='{4}'),'{3}','{4}','')";
|
|
sql = string.Format(sql, Code, item.WHCode, item.User, item.MTime, item.WorkPoint, item.Type);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产退料单信息创建失败!");
|
|
}
|
|
HashSet<string> addedItems = new HashSet<string>();
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
string chekksql = @"select c.EATTRIBUTE1 ICSInventory c
|
|
WHERE c.InvCode='{0}'AND c.WorkPoint='{1}' and c.AmountEnable='1'";
|
|
chekksql = string.Format(chekksql, itemInfo.InvCode, itemInfo.WorkPoint);
|
|
DataTable dta = DBHelper.SQlReturnData(chekksql, cmd);
|
|
if (dta.Rows.Count > 0)
|
|
{
|
|
itemInfo.Quantity = (decimal.Parse(itemInfo.Quantity) * decimal.Parse(dta.Rows[0]["EATTRIBUTE1"].ToString())).ToString();
|
|
}
|
|
// 创建子表
|
|
sql = @"INSERT INTO ICSMOApplyNegDetail(ID,ApplyNegCode,Sequence,SourceDetailID,InvCode,
|
|
Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo023"));//"生产退料单子表信息创建失败!");
|
|
}
|
|
|
|
string key = itemInfo.Sequence + "~" + itemInfo.InvCode;
|
|
|
|
if (addedItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
addedItems.Add(key);
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckMOIssueDoc(item.Type, item.ID, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
codes += "'" + Code + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSMOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.ApplyNegCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
private static string CheckMOIssueDoc(string Type, string ID, string WorkPoint, Dictionary<string, string> language)
|
|
{
|
|
string sql = string.Empty;
|
|
if (Type == "1")
|
|
{
|
|
sql = @"DECLARE @PickID VARCHAR(50)
|
|
SELECT @PickID=b.PickID
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOPick b ON a.SourceDetailID=b.PickID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.Type='{2}' AND a.WorkPoint='{1}' and a.Quantity<>a.IssueNegQuantity
|
|
AND a.SourceDetailID IN (SELECT a.SourceDetailID
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.ApplyNegCode='{0}' AND c.Type='{2}' AND a.WorkPoint='{1}')
|
|
GROUP BY b.PickID
|
|
HAVING MAX(b.Quantity)<SUM(a.Quantity)
|
|
|
|
IF (@PickID IS NOT NULL)
|
|
BEGIN
|
|
DECLARE @InvCode VARCHAR(100)
|
|
SELECT @InvCode='" + language.GetNameByCode("WMSAPIInfo064") + @"' FROM ICSMOPick WHERE PickID=@PickID AND WorkPoint='{1}'
|
|
RAISERROR(@InvCode,16,1);
|
|
RETURN
|
|
END ";
|
|
}
|
|
else if (Type == "2")
|
|
{
|
|
sql = @"DECLARE @ApplyDetailID VARCHAR(50)
|
|
SELECT @ApplyDetailID=b.ApplyDetailID
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApply b ON a.SourceDetailID=b.ApplyDetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.Type='{2}' AND a.WorkPoint='{1}' and a.Quantity<>a.IssueNegQuantity
|
|
AND a.SourceDetailID IN (SELECT a.SourceDetailID
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.ApplyNegCode='{0}' AND c.Type='{2}' AND a.WorkPoint='{1}')
|
|
GROUP BY b.ApplyDetailID
|
|
HAVING MAX(b.Quantity)<SUM(a.Quantity)
|
|
|
|
IF (@ApplyDetailID IS NOT NULL)
|
|
BEGIN
|
|
DECLARE @InvCode VARCHAR(100)
|
|
SELECT @InvCode='" + language.GetNameByCode("WMSAPIInfo064") + @"' FROM ICSMOApply WHERE ApplyDetailID=@ApplyDetailID AND WorkPoint='{1}'
|
|
RAISERROR(@InvCode,16,1);
|
|
RETURN
|
|
END ";
|
|
}
|
|
else if (Type == "3")
|
|
{
|
|
sql = @"DECLARE @IssueDetailID VARCHAR(50)
|
|
SELECT @IssueDetailID=b.IssueDetailID
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOIssue b ON a.SourceDetailID=b.IssueDetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.Type='{2}' AND a.WorkPoint='{1}' and a.Quantity<>a.IssueNegQuantity
|
|
AND a.SourceDetailID IN (SELECT a.SourceDetailID
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.ApplyNegCode='{0}' AND c.Type='{2}' AND a.WorkPoint='{1}'and a.Quantity<>a.IssueNegQuantity)
|
|
GROUP BY b.IssueDetailID
|
|
HAVING MAX(b.Quantity)<SUM(a.Quantity)
|
|
|
|
IF (@IssueDetailID IS NOT NULL)
|
|
BEGIN
|
|
DECLARE @InvCode VARCHAR(100)
|
|
SELECT @InvCode='" + language.GetNameByCode("WMSAPIInfo064") + @"' FROM ICSMOIssue WHERE IssueDetailID=@IssueDetailID AND WorkPoint='{1}'
|
|
RAISERROR(@InvCode,16,1);
|
|
RETURN
|
|
END ";
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"类型不符!");
|
|
}
|
|
sql = string.Format(sql, ID, WorkPoint, Type);
|
|
return sql;
|
|
}
|
|
/// <summary>
|
|
/// 生产退料 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MOIssueDocNegativeApplyUpdate(List<ICSMOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string idss = string.Empty;
|
|
string memo = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//if (item.Type == "1")
|
|
//{
|
|
memo = item.Memo;
|
|
//}
|
|
//主表修改
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{1}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSMOApplyNeg WHERE ID='{3}' and WorkPoint='{4}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo065"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo066"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSMOApplyNeg set WHCode='{0}',Memo='{5}',MUSER='{1}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{1}' and F_Location='{4}'),MTIME='{2}' where ID='{3}' and WorkPoint='{4}' ";
|
|
sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.ID, item.WorkPoint, memo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo024"));//"生产退料单信息修改失败!");
|
|
}
|
|
//var detail = item.detail.Where(a => a.DetailID.Length <= 0).Count();
|
|
//if (detail > 0)
|
|
//{
|
|
// sql = @"SELECT ApplyNegCode FROM ICSMOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
// sql = string.Format(sql, item.ID, item.WorkPoint);
|
|
// Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//}
|
|
sql = @"SELECT ApplyNegCode FROM ICSMOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.ID, item.WorkPoint);
|
|
Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(itemInfo.DetailID))
|
|
{
|
|
//创建子表
|
|
sql = @"INSERT INTO ICSMOApplyNegDetail(ID,ApplyNegCode,Sequence,SourceDetailID,InvCode,Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
}
|
|
else
|
|
{
|
|
//子表修改
|
|
sql = @"update ICSMOApplyNegDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}',SourceDetailID='{3}',MUSER='{6}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{5}') where ID='{4}' and WorkPoint='{5}'";
|
|
sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.SourceDetailID, itemInfo.DetailID, item.WorkPoint, item.User);
|
|
}
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo025"));//"生产退料单子表信息修改失败!");
|
|
}
|
|
idss += "'" + itemInfo.DetailID + "',";
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckMOIssueDoc(item.Type, Code, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
|
|
sql = @"DELETE from ICSMOApplyNegDetail where ApplyNegCode ='{0}' and id not in ({1})";
|
|
sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1));
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSMOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE c.ID IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 生产退料 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMMOIssueDocNegativeApplyUpdate(List<ICSMOApplyNeg> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string idss = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//主表修改
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{1}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{1}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSMOApplyNeg WHERE ID='{3}' and WorkPoint='{4}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo065"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo066"), "{3}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSMOApplyNeg set WHCode='{0}',MUSER='{1}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{1}' and F_Location='{4}'),MTIME='{2}' where ID='{3}' and WorkPoint='{4}' ";
|
|
sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.ID, item.WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo024"));//"生产退料单信息修改失败!");
|
|
}
|
|
//var detail = item.detail.Where(a => a.DetailID.Length <= 0).Count();
|
|
//if (detail > 0)
|
|
//{
|
|
// sql = @"SELECT ApplyNegCode FROM ICSMOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
// sql = string.Format(sql, item.ID, item.WorkPoint);
|
|
// Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//}
|
|
sql = @"SELECT ApplyNegCode FROM ICSMOApplyNeg where ID='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.ID, item.WorkPoint);
|
|
Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
string chekksql = @"select c.EATTRIBUTE1 ICSInventory c
|
|
WHERE c.InvCode='{0}'AND c.WorkPoint='{1}' and c.AmountEnable='1'";
|
|
chekksql = string.Format(chekksql, itemInfo.InvCode, itemInfo.WorkPoint);
|
|
DataTable dta = DBHelper.SQlReturnData(chekksql, cmd);
|
|
if (dta.Rows.Count > 0)
|
|
{
|
|
itemInfo.Quantity = (decimal.Parse(itemInfo.Quantity) * decimal.Parse(dta.Rows[0]["EATTRIBUTE1"].ToString())).ToString();
|
|
}
|
|
if (string.IsNullOrWhiteSpace(itemInfo.DetailID))
|
|
{
|
|
//创建子表
|
|
sql = @"INSERT INTO ICSMOApplyNegDetail(ID,ApplyNegCode,Sequence,SourceDetailID,InvCode,Quantity,Amount,IssueNegQuantity,ExtensionID,MUSER,
|
|
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
VALUES (NEWID(),'{0}','{1}','{2}','{3}',
|
|
'{4}','{5}',0,'{6}','{7}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{7}' and F_Location='{8}'),SYSDATETIME(),'{8}','')";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.ExtensionID, item.User, item.WorkPoint);
|
|
}
|
|
else
|
|
{
|
|
//子表修改
|
|
sql = @"update ICSMOApplyNegDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}',SourceDetailID='{3}',MUSER='{6}',MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{5}') where ID='{4}' and WorkPoint='{5}'";
|
|
sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.SourceDetailID, itemInfo.DetailID, item.WorkPoint, item.User);
|
|
}
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo025"));//"生产退料单子表信息修改失败!");
|
|
}
|
|
idss += "'" + itemInfo.DetailID + "',";
|
|
}
|
|
//校验退料数量是否超出领料数量
|
|
sql = CheckMOIssueDoc(item.Type, item.ID, item.WorkPoint, language);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
|
|
sql = @"DELETE from ICSMOApplyNegDetail where ApplyNegCode ='{0}' and id not in ({1})";
|
|
sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1));
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSMOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE c.ID IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生产退料审核
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MOIssueDocNegativeApplyApprove(List<ICSUser> JsonData)
|
|
{
|
|
string flag = string.Empty;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string ids = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
bool hasApproveFlag = JsonData.Any(u => u.ApproveFlag != null);
|
|
if (hasApproveFlag == true)
|
|
{
|
|
flag = item.ApproveFlag;
|
|
}
|
|
if (string.IsNullOrEmpty(item.ID))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"单据ID不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo019"));//"操作人不能为空!");
|
|
}
|
|
if (item.MTime <= new DateTime(2000, 1, 1))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo020"));//"操作时间不能为空!");
|
|
}
|
|
if (flag.Equals("1") || flag == "")
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSMOApplyNeg WHERE ID='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo066") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSMOApplyNeg set Status='2',eattribute1='{1}',eattribute2='{2}' where ID='{0}'
|
|
--update ICSMOApplyNeg set Status='1',MUSER='{1}',MTIME='{2}' where ID='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo026"));//"生产退料申请单审核失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
else
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSMOApplyNeg WHERE ID='{0}'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo065") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='2')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo473") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS (select a.id from ICSMOApplyNeg a
|
|
left join ICSMOApplyNegDetail b on a.ApplyNegCode=b.ApplyNegCode and a.WorkPoint=b.WorkPoint
|
|
where a.ID='{0}' and b.IssueNegQuantity>0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo474") + @"',16,1);
|
|
RETURN
|
|
END
|
|
update ICSMOApplyNeg set Status='1',eattribute1='{1}',eattribute2='{2}' where ID='{0}'
|
|
--update ICSMOApplyNeg set Status='1',MUSER='{1}',MTIME='{2}' where ID='{0}'";
|
|
sql = string.Format(sql, item.ID, item.User, item.MTime);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo475"));//"生产退料申请单弃审失败!");
|
|
}
|
|
ids += "'" + item.ID + "',";
|
|
}
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(ids))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo006"));//"ID不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ApplyNegCode,
|
|
c.WHCode,
|
|
c.Memo,
|
|
d.Name AS Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
a.IssueNegQuantity,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSMOApplyNegDetail a
|
|
INNER JOIN ICSMOApplyNeg c ON a.ApplyNegCode=c.ApplyNegCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSType d ON d.TableCode='ICSMOApplyNeg' AND d.ColumnCode='Status' AND c.Status=d.Code AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE c.ID IN ({0})";
|
|
sql = string.Format(sql, ids.Substring(0, ids.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 一步调拨(调拨申请单)
|
|
/// <summary>
|
|
/// 一步调拨(调拨申请单)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OneStepTransferApplicationIn(List<TransferApplication> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
string UserCode = "";
|
|
foreach (var item in JsonData)
|
|
{
|
|
UserCode = item.User;
|
|
if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo027"));//"调拨申请单号不能为空!");
|
|
}
|
|
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
//验证信息
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSTransferApplication WHERE TransferNO='{0}' and WorkPoint='{1}' AND Type = '1'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo067") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo068") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, item.TransCode, item.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
foreach (var itemInfo in item.Detail)
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
BusinessCode = TransTypeEnum.StepTransferApplicationIn.GetDescription<DBValue>();
|
|
//更新源头单据信息
|
|
ICSWareHouseService.OneStepTransferApplicationIn(item.TransCode, item.TransSequence, item.WorkPoint, itemInfo.CurrentQuantity, cmd, language);
|
|
|
|
//更新条码信息
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoTransfer(Identification, item.TransCode, item.TransSequence, itemInfo.WarehouseCode, itemInfo.LocationCode,
|
|
itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, "", "14", TransTypeEnum.StepTransferApplicationIn.GetDescription<DBValue>(), cmd, language, MergeID);
|
|
}
|
|
}
|
|
ICSWareHouseService.OneStepTransferDocInERP(TransTypeEnum.OneStepTransferDocIn.GetDescription(), Identification, "", cmd, language, BusinessCode, UserCode);
|
|
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
#region 一步调拨
|
|
/// <summary>
|
|
/// 一步调拨
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OneStepTransferDocIn(List<TransferDoc> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string isPN = "0";
|
|
string UserCode = "";
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
UserCode = item.User;
|
|
if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo027"));//"调拨单号不能为空!");
|
|
}
|
|
|
|
if (item.IsPN == "1")
|
|
{
|
|
isPN = "1";
|
|
}
|
|
else
|
|
{
|
|
isPN = "0";
|
|
}
|
|
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
//验证信息
|
|
if (isPN == "1")
|
|
{
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSTransfer WHERE TransferNO='{0}' and WorkPoint='{1}' AND Type = '3'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo067") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo068") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
}
|
|
else
|
|
{
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSTransfer WHERE TransferNO='{0}' and WorkPoint='{1}' AND Type = '1'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo067") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo068") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
}
|
|
|
|
sql = string.Format(sql, item.TransCode, item.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
foreach (var itemInfo in item.Detail)
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
BusinessCode = TransTypeEnum.OneStepTransferDocIn.GetDescription<DBValue>();
|
|
//更新源头单据信息
|
|
ICSWareHouseService.OneStepTransferDocIn(item.TransCode, item.TransSequence, item.WorkPoint, itemInfo.CurrentQuantity, item.IsPN, cmd, language);
|
|
|
|
//更新条码信息
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoTransfer(Identification, item.TransCode, item.TransSequence, itemInfo.WarehouseCode, itemInfo.LocationCode,
|
|
itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, "", "6", TransTypeEnum.OneStepTransferDocIn.GetDescription<DBValue>(), cmd, language, MergeID);
|
|
}
|
|
}
|
|
ICSWareHouseService.OneStepTransferDocInERP(TransTypeEnum.OneStepTransferDocIn.GetDescription(), Identification, isPN, cmd, language, BusinessCode, UserCode);
|
|
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 一步调拨(派纳专用)
|
|
/// <summary>
|
|
/// 一步调拨
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable NewOneStepTransferDocIn(List<TransferDoc> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string isPN = "0";
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo027"));//"调拨单号不能为空!");
|
|
}
|
|
|
|
if (item.IsPN == "1")
|
|
{
|
|
isPN = "1";
|
|
}
|
|
else if (item.IsPN == "2")
|
|
{
|
|
isPN = "2";
|
|
}
|
|
else
|
|
{
|
|
isPN = "0";
|
|
}
|
|
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
//验证信息
|
|
if (isPN == "1")
|
|
{
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSTransfer WHERE TransferNO='{0}' and WorkPoint='{1}' AND Type = '3'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo067") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo068") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
}
|
|
else
|
|
{
|
|
sql = @"DECLARE @Status VARCHAR(10)
|
|
SELECT @Status=Status FROM ICSTransfer WHERE TransferNO='{0}' and WorkPoint='{1}' AND Type = '1'
|
|
|
|
IF (@Status IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo067") + @"',16,1);
|
|
RETURN
|
|
END
|
|
ELSE IF (@Status!='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo068") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
}
|
|
|
|
sql = string.Format(sql, item.TransCode, item.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
foreach (var itemInfo in item.Detail)
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
BusinessCode = TransTypeEnum.OneStepTransferDocIn.GetDescription<DBValue>();
|
|
//更新源头单据信息
|
|
ICSWareHouseService.OneStepTransferDocIn(item.TransCode, item.TransSequence, item.WorkPoint, itemInfo.CurrentQuantity, item.IsPN, cmd, language);
|
|
|
|
//更新条码信息
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoTransfer(Identification, item.TransCode, item.TransSequence, itemInfo.WarehouseCode, itemInfo.LocationCode,
|
|
itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, "", "6", TransTypeEnum.OneStepTransferDocIn.GetDescription<DBValue>(), cmd, language, MergeID);
|
|
}
|
|
}
|
|
ICSWareHouseService.NewOneStepTransferDocInERP(TransTypeEnum.OneStepTransferDocIn.GetDescription(), Identification, isPN, cmd, language, BusinessCode);
|
|
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 调拨
|
|
/// <summary>
|
|
/// 调拨
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransferDocCreate(List<TransferDoc> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
string MergeID = "";
|
|
|
|
foreach (var itemInfo in item.Detail)
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
BusinessCode = TransTypeEnum.StepTransferDocIn.GetDescription<DBValue>();
|
|
|
|
//更新条码信息
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoTransfer(Identification, item.TransCode, item.TransSequence, itemInfo.WarehouseCode, itemInfo.LocationCode,
|
|
itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, "", "6", TransTypeEnum.StepTransferDocIn.GetDescription<DBValue>(), cmd, language, MergeID);
|
|
}
|
|
}
|
|
ICSWareHouseService.StepTransferDocInERP(TransTypeEnum.StepTransferDocIn.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 无源头调拨
|
|
/// <summary>
|
|
/// 无源头调拨
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OneStepNoTransferDocIn(List<TransferDoc> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
DataTable printTable = new DataTable();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string sql = string.Empty;
|
|
try
|
|
{
|
|
string workpoint = "";
|
|
string Identification = Guid.NewGuid().ToString();
|
|
string BusinessCode = "";
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
string MergeID = "";
|
|
foreach (var itemInfo in item.Detail)
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo = '{3}' AND a.WorkPoint = '{1}' AND a.Quantity >={4})
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo368"), "{3}") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID = b.WHID AND a.WorkPoint = b.WorkPoint
|
|
WHERE a.WarehouseCode = '{0}' AND a.WorkPoint = '{1}' AND b.LocationCode = '{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
|
|
|
|
sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.CurrentQuantity);
|
|
log.Error(sql);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
BusinessCode = TransTypeEnum.StepNoTransferDocIn.GetDescription<DBValue>();
|
|
workpoint = item.WorkPoint;
|
|
//更新条码信息
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoNoTransfer(Identification, itemInfo.WarehouseCode, itemInfo.LocationCode,
|
|
itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, "6", TransTypeEnum.StepNoTransferDocIn.GetDescription<DBValue>(), cmd, language, MergeID, item.Memo);
|
|
}
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(JsonData[0].passFlag) && JsonData[0].passFlag == "0")
|
|
{
|
|
string message = SubmitCanOut(Identification, "6", TransTypeEnum.StepNoTransferDocIn.GetDescription<DBValue>(), workpoint, cmd);
|
|
if (!string.IsNullOrWhiteSpace(message))
|
|
{
|
|
throw new Exception(message);
|
|
}
|
|
}
|
|
|
|
ICSWareHouseService.OneStepNoTransferDocInERP(TransTypeEnum.StepNoTransferDocIn.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(sql);
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 铭锋先进先出卡控提交判断
|
|
/// <summary>
|
|
/// 铭锋先进先出卡控提交判断
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static string SubmitCanOut(string Identification, string TransType, string BusinessCode, string WorkPoint, SqlCommand cmd)
|
|
{
|
|
string message = string.Empty;
|
|
string sql = string.Empty;
|
|
try
|
|
{
|
|
//查出所有发料记录 按照批次排序 物料分组--批次最大的记录
|
|
sql = @"select* from (select c.batchcode,a.invcode,a.FromWAREHOUSECODE, ROW_NUMBER() OVER (PARTITION BY a.Identification, a.invcode,a.FromWAREHOUSECODE ORDER BY c.BatchCode desc) as seq
|
|
from ICSWareHouseLotInfoLog a
|
|
inner join ICSInventoryLot b on a.lotno= b.LotNo and a.WorkPoint = b.WorkPoint
|
|
inner join ICSExtension c on b.ExtensionID = c.ID and c.WorkPoint = b.WorkPoint
|
|
where a.transtype ='{1}' and a.businesscode = '{2}' and a.Identification='{0}') a where a.seq=1";
|
|
sql = string.Format(sql, Identification, TransType, BusinessCode);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
foreach (DataRow dr in dt.Rows)
|
|
{//以发料记录内最大的记录 反查库存内是否存在更早的批次
|
|
sql = @"select top 1 c.BatchCode,SUM(a.Quantity) as Quantity,a.invcode,a.warehousecode FROM ICSWareHouseLotInfo a
|
|
inner join ICSInventoryLot b on a.lotno= b.LotNo and a.WorkPoint = b.WorkPoint
|
|
inner join ICSExtension c on b.ExtensionID = c.ID and c.WorkPoint = b.WorkPoint
|
|
GROUP BY c.BatchCode,a.invcode,a.WorkPoint,a.warehousecode
|
|
having a.InvCode = '{0}' and c.batchcode<'{1}' and a.WorkPoint ='{2}'and SUM(a.Quantity)>0 and a.warehousecode='{3}'
|
|
order by c.BatchCode asc";
|
|
sql = string.Format(sql, dr["invcode"], dr["batchcode"], WorkPoint, dr["FromWAREHOUSECODE"]);
|
|
DataTable dts = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dts.Rows.Count > 0)
|
|
{
|
|
message += "料号:" + dts.Rows[0]["invcode"] + "在仓库" + dts.Rows[0]["warehousecode"] + "内存在未发批次:" + dts.Rows[0]["BatchCode"] + "数量:" + dts.Rows[0]["Quantity"] + ";";
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(sql);
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
return message;
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
#region 调拨申请单
|
|
/// <summary>
|
|
/// 调拨
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransferApplicationCreate(List<TransferApplication> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
string MergeID = "";
|
|
|
|
foreach (var itemInfo in item.Detail)
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
BusinessCode = TransTypeEnum.StepTransferApplicationIn.GetDescription<DBValue>();
|
|
|
|
//更新条码信息
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoTransfer(Identification, item.TransCode, item.TransSequence, itemInfo.WarehouseCode, itemInfo.LocationCode,
|
|
itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, "", "14", TransTypeEnum.StepTransferApplicationIn.GetDescription<DBValue>(), cmd, language, MergeID);
|
|
}
|
|
}
|
|
ICSWareHouseService.StepTransferDocInERP(TransTypeEnum.StepTransferApplicationIn.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 调拨申请单
|
|
/// <summary>
|
|
/// 调拨申请单
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransferApplicationInCreate(List<TransferApplication> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
DataTable printTable = new DataTable();
|
|
string sql = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
string MergeID = "";
|
|
|
|
foreach (var itemInfo in item.Detail)
|
|
{
|
|
if (DBHelper.IsPNU9())
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT ID
|
|
FROM ICSWareHouseLotInfo
|
|
WHERE WarehouseCode='{0}' AND LotNo='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo355") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
}
|
|
else
|
|
{
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT ID
|
|
FROM ICSWareHouseLotInfo
|
|
WHERE WarehouseCode='{0}' AND WorkPoint='{1}' AND LotNo='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo355") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
}
|
|
|
|
sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode, itemInfo.LotNo);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
BusinessCode = TransTypeEnum.StepTransferApplicationIn.GetDescription<DBValue>();
|
|
|
|
//更新源头单据信息
|
|
ICSWareHouseService.OneStepTransferApplicationIn(item.TransCode, item.TransSequence, item.WorkPoint, itemInfo.CurrentQuantity, cmd, language);
|
|
|
|
//更新条码信息
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoTransfer(Identification, item.TransCode, item.TransSequence, itemInfo.WarehouseCode, itemInfo.LocationCode,
|
|
itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, item.InWorkPoint, "14", TransTypeEnum.StepTransferApplicationIn.GetDescription<DBValue>(), cmd, language, MergeID);
|
|
}
|
|
}
|
|
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
|
|
{
|
|
ICSWareHouseService.StepTransferApplicationERP(TransTypeEnum.StepTransferApplicationIn.GetDescription(), Identification, cmd, language, BusinessCode);
|
|
|
|
}
|
|
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 工单关联
|
|
/// <summary>
|
|
/// 条码关联工单
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSMOReceive(List<LOTStockUpCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
string MergeID = "";
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
ICSWareHouseService.ICSMOReceive(itemInfo.LotNo, itemInfo.Quantity, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint, Identification, item.User, itemInfo.SRMLotGroup, itemInfo.ProjectCode,
|
|
itemInfo.BatchCode, itemInfo.Version, itemInfo.Brand, itemInfo.cFree1, itemInfo.cFree2, itemInfo.cFree3, itemInfo.cFree4, itemInfo.cFree5,
|
|
itemInfo.cFree6, itemInfo.cFree7, itemInfo.cFree8, itemInfo.cFree9, itemInfo.cFree10, TransTypeEnum.ICSMOReceive.GetDescription<DBValue>(), cmd, language);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 条码与工单解绑
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSMOReceiveUntie(ICSMOReceiveUntieModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
string MergeID = "";
|
|
|
|
ICSWareHouseService.ICSMOReceiveUntie(JsonData.LotNo, JsonData.WorkPoint, TransTypeEnum.ICSMOReceive.GetDescription<DBValue>(), cmd, language);
|
|
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 工单关联条码检验
|
|
/// <summary>
|
|
/// 工单关联条码检验
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static bool ICSMOReceiveLotCheck(BarCodeModel JsonData)
|
|
{
|
|
Boolean LotCheck = false;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
|
|
|
|
sql = @"select * from ICSInventoryLotDetail where LotNo='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
|
|
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
if (table.Rows.Count > 0)
|
|
{
|
|
LotCheck = true;
|
|
}
|
|
return LotCheck;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 容器
|
|
/// <summary>
|
|
/// 查询容器
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSContainerGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = "";
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
// if (JsonData.ifCreateContainer)
|
|
// {
|
|
// sql = @"IF EXISTS(select ContainerCODE from ICSContainer where ContainerCODE='{0}' )
|
|
// BEGIN
|
|
// RAISERROR('容器:{0},已存在!',16,1)
|
|
// RETURN
|
|
// END
|
|
// else
|
|
// BEGIN
|
|
// INSERT INTO dbo.ICSContainer
|
|
// ( ID ,ContainerID ,ContainerCODE ,ContainerName,Memo,MTIME,MUSER ,MUSERName ,WorkPoint
|
|
// ,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
|
|
// Values(NEWID(),'','{0}','{0}','',GETDATE(),'{2}','{2}','{1}','0','0','0','0')
|
|
// END
|
|
//";
|
|
// }
|
|
|
|
sql += @"IF NOT EXISTS(select ContainerCODE from ICSContainer where ContainerCODE='{0}' )
|
|
BEGIN
|
|
-- RAISERROR('容器:{0},不存在!',16,1)
|
|
INSERT INTO dbo.ICSContainer
|
|
( ID ,ContainerID ,ContainerCODE ,ContainerName,Memo,MTIME,MUSER ,MUSERName ,WorkPoint
|
|
,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
|
|
Values(NEWID(),'','{0}','{0}','',GETDATE(),'{2}',(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{2}'),'{1}','1','1','1','1')
|
|
-- RETURN
|
|
END
|
|
SELECT con.ID,con.ContainerID,con.ContainerCode,con.ContainerName,con.Memo,con.ContainerType,con.InventoryMixed,con.ProjectMixed,con.BatchMixed,con.Multiplex,con.MUSER,con.MUSERName,con.MTIME,con.WorkPoint,con.EATTRIBUTE1 AS cFree1,con.EATTRIBUTE2 AS cFree2,con.EATTRIBUTE3 AS cFree3,con.EATTRIBUTE4 AS cFree4,con.EATTRIBUTE5 AS cFree5,con.EATTRIBUTE6 AS cFree6,con.EATTRIBUTE7 AS cFree7,con.EATTRIBUTE8 AS cFree8,con.EATTRIBUTE9 AS cFree9,con.EATTRIBUTE10 AS cFree10,temp.BindQuantity
|
|
FROM ICSContainer con
|
|
LEFT JOIN (
|
|
SELECT COUNT(1) AS BindQuantity,con.ContainerCode
|
|
FROM ICSContainer con
|
|
INNER JOIN ICSContainerLot conlot ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
WHERE con.ContainerCode='{0}' AND con.WorkPoint='{1}'
|
|
GROUP BY con.ContainerCode
|
|
) temp ON temp.ContainerCode=con.ContainerCode
|
|
WHERE con.ContainerCode='{0}' AND con.WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint, JsonData.User);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 容器关联查询容器
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSContainerConGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
|
|
sql = @"SELECT con.ID,con.ContainerID,con.ContainerCode,con.ContainerName,con.Memo,con.ContainerType,con.InventoryMixed,con.ProjectMixed,con.BatchMixed,con.Multiplex,con.MUSER,con.MUSERName,con.MTIME,con.WorkPoint,con.
|
|
EATTRIBUTE1 AS cFree1,con.EATTRIBUTE2 AS cFree2,con.EATTRIBUTE3 AS cFree3,con.EATTRIBUTE4 AS cFree4,con.EATTRIBUTE5 AS cFree5,con.EATTRIBUTE6 AS cFree6,con.EATTRIBUTE7 AS cFree7
|
|
,con.EATTRIBUTE8 AS cFree8,con.EATTRIBUTE9 AS cFree9,con.EATTRIBUTE10 AS cFree10
|
|
FROM ICSContainer a
|
|
INNER JOIN ICSContainer con ON con.ContainerID=a.ID
|
|
WHERE a.ContainerCode='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 条码关联容器——查询容器关联的条码
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSContainerLotGetCon(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
|
|
sql = @"SELECT con.ContainerCode,con.ContainerName,con.ContainerType,inv.InvCode,inv.InvName,lot.LotNo,inv.InvStd,lot.Quantity,inv.InvUnit,
|
|
ext.ProjectCode,ext.BatchCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10
|
|
FROM ICSContainer con
|
|
INNER JOIN ICSContainerLot conlot ON conlot.ContainerID=con.ID
|
|
INNER JOIN ICSInventoryLot lot ON lot.LotNo=conLot.LotNo
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=lot.InvCode
|
|
INNER JOIN ICSExtension ext ON ext.ID=lot.ExtensionID
|
|
WHERE con.ContainerCode='{0}' AND con.WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 条码关联容器--条码查询
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSContainerLotCheck(BarCodeModel JsonData)
|
|
{
|
|
Boolean LotCheck = false;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
|
|
|
|
sql = @"select lot.LotNo,lot.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,lot.Quantity,lot.ExtensionID,lot.Type
|
|
,lot.EATTRIBUTE1 AS cFree1,lot.EATTRIBUTE2 AS cFree2,lot.EATTRIBUTE3 AS cFree3,lot.EATTRIBUTE4 AS cFree4
|
|
,lot.EATTRIBUTE5 AS cFree5,lot.EATTRIBUTE6 AS cFree6,lot.EATTRIBUTE7 AS cFree7
|
|
,lot.EATTRIBUTE8 AS cFree8,lot.EATTRIBUTE9 AS cFree9,lot.EATTRIBUTE10 AS cFree10
|
|
from ICSInventoryLot lot
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=lot.InvCode AND inv.WorkPoint=lot.WorkPoint
|
|
where lot.LotNo='{0}' and lot.WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
|
|
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 容器绑定条码
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static string ICSContainerLot(List<ICSContainerLotModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
Boolean flag;
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (item.ifCreateContainer)
|
|
{
|
|
//string ContainerID = Guid.NewGuid().ToString();
|
|
// string ContainerCode = GetSerialCode(item.WorkPoint, "ICSContainer", "ContainerCode", "Container", 5, cmd);
|
|
// sql = @"IF EXISTS(SELECT 1 FROM ICSContainer WHERE ContainerCODE='{0}' AND WorkPoint='{1}')
|
|
// BEGIN
|
|
// RAISERROR('容器编号 " + ContainerCode + @" 已存在!请重新提交',16,1);
|
|
// RETURN;
|
|
// END
|
|
|
|
// INSERT INTO dbo.ICSContainer
|
|
// ( ID ,ContainerID ,ContainerCODE ,ContainerName,Memo,MTIME,MUSER ,MUSERName ,WorkPoint
|
|
// ,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
|
|
//Values('{3}','','{0}','{0}','',GETDATE(),'{2}','{2}','{1}','0','0','0','0')";
|
|
// sql = string.Format(sql, ContainerCode, item.WorkPoint, item.User, ContainerID);
|
|
// if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
// {
|
|
// throw new Exception("生成箱号失败!");
|
|
// }
|
|
string ContainerID = Guid.NewGuid().ToString();
|
|
sql = @"IF EXISTS(SELECT 1 FROM ICSContainer WHERE ContainerCODE='{0}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('容器编号 {0} 已存在!请重新提交',16,1);
|
|
RETURN;
|
|
END
|
|
|
|
INSERT INTO dbo.ICSContainer
|
|
( ID ,ContainerID ,ContainerCODE ,ContainerName,Memo,MTIME,MUSER ,MUSERName ,WorkPoint
|
|
,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
|
|
Values('{3}','','{0}','{4}','',GETDATE(),'{2}','{2}','{1}','1','1','1','1')";
|
|
sql = string.Format(sql, item.ContainerCode, item.WorkPoint, item.User, ContainerID, item.ContainerName);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("生成箱号失败!");
|
|
}
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
flag = ICSWareHouseService.ICSContainerLot(itemInfo.LotNo, item.ContainerCode, item.WorkPoint, Identification, item.User, itemInfo.ProjectCode,
|
|
itemInfo.BatchCode, itemInfo.Version, itemInfo.Brand, itemInfo.cFree1, itemInfo.cFree2, itemInfo.cFree3, itemInfo.cFree4, itemInfo.cFree5,
|
|
itemInfo.cFree6, itemInfo.cFree7, itemInfo.cFree8, itemInfo.cFree9, itemInfo.cFree10, TransTypeEnum.ICSMOReceive.GetDescription<DBValue>(), cmd, language);
|
|
if (!flag)
|
|
{
|
|
log.Error("容器绑定条码失败");
|
|
throw new Exception("容器 " + item.ContainerCode + " 绑定条码 " + itemInfo.LotNo + " 失败");
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
flag = ICSWareHouseService.ICSContainerLot(itemInfo.LotNo, item.ContainerCode, item.WorkPoint, Identification, item.User, itemInfo.ProjectCode,
|
|
itemInfo.BatchCode, itemInfo.Version, itemInfo.Brand, itemInfo.cFree1, itemInfo.cFree2, itemInfo.cFree3, itemInfo.cFree4, itemInfo.cFree5,
|
|
itemInfo.cFree6, itemInfo.cFree7, itemInfo.cFree8, itemInfo.cFree9, itemInfo.cFree10, TransTypeEnum.ICSMOReceive.GetDescription<DBValue>(), cmd, language);
|
|
if (!flag)
|
|
{
|
|
log.Error("容器绑定条码失败");
|
|
throw new Exception("容器 " + item.ContainerCode + " 绑定条码 " + itemInfo.LotNo + " 失败");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
cmd.Transaction.Commit();
|
|
|
|
return LanguageHelper.GetNameSingle("WMSAPI001");// "接口调用成功!";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen, SqlCommand cmd)
|
|
{
|
|
string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
|
|
sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
|
|
return DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
}
|
|
|
|
public static string ICSGetSerialCode(BarCodeModel JsonData)
|
|
{
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string ContainerCode = GetSerialCode(JsonData.WorkPoint, "ICSContainer", "ContainerCode", "PKG" + DateTime.Today.ToString("yyyyMMdd"), 5, cmd);
|
|
cmd.Transaction.Commit();
|
|
return ContainerCode;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 容器与条码解绑
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static bool ICSContainerLotUntie(ICSMOReceiveUntieModel JsonData)
|
|
{
|
|
Boolean flag = false;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
string MergeID = "";
|
|
|
|
foreach (var item in JsonData.detail)
|
|
{
|
|
flag = ICSWareHouseService.ICSContainerLotUntie(JsonData.ContainerCode, item.LotNo, JsonData.WorkPoint, JsonData.User, JsonData.Type, cmd, language);
|
|
}
|
|
|
|
cmd.Transaction.Commit();
|
|
return flag;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 容器绑定父容器
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static string ICSContainerCon(List<ICSContainerConModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
Boolean flag;
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
string MergeID = "";
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
flag = ICSWareHouseService.ICSContainerCon(item.ContainerCode, itemInfo.ContainerCode, item.WorkPoint, item.User, item.MTime, item.Type, cmd, language);
|
|
|
|
if (!flag)
|
|
{
|
|
log.Error("容器绑定条码失败");
|
|
throw new Exception("容器 " + itemInfo.ContainerCode + " 绑定父容器 " + item.ContainerCode + " 失败");
|
|
}
|
|
}
|
|
|
|
}
|
|
cmd.Transaction.Commit();
|
|
|
|
return LanguageHelper.GetNameSingle("WMSAPI001");// "接口调用成功!";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 容器解绑父容器
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static bool ICSContainerConUntie(ICSMOReceiveUntieModel JsonData)
|
|
{
|
|
Boolean flag = false;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
string MergeID = "";
|
|
|
|
flag = ICSWareHouseService.ICSContainerConUntie(JsonData.ContainerCode, JsonData.WorkPoint, JsonData.User, JsonData.Type, cmd, language);
|
|
cmd.Transaction.Commit();
|
|
return flag;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 车次
|
|
public static DataTable ICSCartBarCodeGet(BarCodeModel JsonData)
|
|
{
|
|
Boolean LotCheck = false;
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
|
|
|
|
sql = @"IF EXISTS (SELECT *
|
|
FROM ICSCartLotNoCheckList list
|
|
WHERE list.CartNo='{0}' AND list.LotNo='{1}'
|
|
)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo476") + @"',16,1)
|
|
RETURN
|
|
END
|
|
ELSE IF NOT EXISTS(
|
|
SELECT 1 FROM ICSInventoryLot lot WHERE lot.LotNo='{1}'
|
|
)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo477") + @"',16,1)
|
|
END
|
|
ELSE IF NOT EXISTS(
|
|
SELECT 1 FROM ICSWareHouseLotInfo info WHERE info.LotNo='{1}' AND info.Quantity>0
|
|
)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo479") + @"',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT lot.LotNo,lot.InvCode,info.Quantity,lot.ExtensionID,lot.Type,ext.cFree1 AS cFree1,ext.cFree2 AS cFree2,ext.cFree3 AS cFree3,ext.cFree4 AS cFree4,ext.cFree5 AS cFree5,ext.cFree6 AS cFree6,ext.cFree7 AS cFree7,ext.cFree8 AS cFree8,ext.cFree9 AS cFree9,ext.cFree10 AS cFree10
|
|
FROM ICSInventoryLot lot
|
|
LEFT JOIN ICSExtension ext ON ext.ID=lot.ExtensionID
|
|
LEFT JOIN ICSWareHouseLotInfo info ON info.LotNo=lot.LotNo
|
|
WHERE lot.LotNo='{1}'
|
|
END";
|
|
sql = string.Format(sql, JsonData.TransCode, JsonData.Code);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string ICSCartScheduleCreate(List<CartScheduleModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
Boolean flag;
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
string MergeID = "";
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
flag = ICSWareHouseService.ICSCartScheduleCreate(itemInfo.LotNo, itemInfo.Quantity, item.CartNo, item.User, item.WorkPoint, cmd, language);
|
|
if (!flag)
|
|
{
|
|
log.Error("生成车次条码清单失败");
|
|
throw new Exception("车次 " + item.CartNo + " 与条码 " + itemInfo.LotNo + " 生成清单失败");
|
|
}
|
|
}
|
|
|
|
}
|
|
cmd.Transaction.Commit();
|
|
|
|
return LanguageHelper.GetNameSingle("WMSAPI001");// "接口调用成功!";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 移库
|
|
/// <summary>
|
|
/// 移库
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LibraryUpdate(List<ICSLibraryModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.LotNo))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!"
|
|
}
|
|
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo072"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, item.WarehouseCode, item.WorkPoint, item.LocationCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
//更新条码信息
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLibrary(Identification, item.TransCode, item.TransSequence, item.WarehouseCode, item.LocationCode, item.LotNo,
|
|
item.User, item.WorkPoint, "7", "29", item.ScanType, cmd, language);
|
|
}
|
|
DataTable table = GetData(Identification, 3, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 合并
|
|
/// <summary>
|
|
/// 合并
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LOTMergeCreate(List<LOTCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
DataTable printTable = new DataTable();
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.LotNo))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!"
|
|
}
|
|
else if (item.detail.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo028"));//"明细信息不能为空!");
|
|
}
|
|
//合并前日志
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLogMerge(Identification, item.LotNo, item.User, item.WorkPoint, "5",
|
|
TransTypeEnum.LOTMergeBefore.GetDescription<DBValue>(), "", cmd, language);
|
|
|
|
foreach (var info in item.detail)
|
|
{
|
|
//合并前日志
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLogMerge(Identification, info.CurrentLotNo, item.User, item.WorkPoint, "5",
|
|
TransTypeEnum.LOTMergeBefore.GetDescription<DBValue>(), "", cmd, language);
|
|
|
|
//更新条码信息
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoMerge(Identification, item.LotNo, info.CurrentLotNo, info.CurrentQuantity, item.User, item.WorkPoint, "5",
|
|
TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), cmd, language);
|
|
}
|
|
|
|
//合并后日志
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoLogMerge(Identification, item.LotNo, item.User, item.WorkPoint, "5",
|
|
TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), "", cmd, language);
|
|
}
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 1, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 拆分
|
|
/// <summary>
|
|
/// 拆分
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LOTSplitCreate(List<LOTCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
string newlotno = "";
|
|
DataTable printTable = new DataTable();
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.LotNo))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!"
|
|
}
|
|
else if (item.detail.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo028"));//"明细信息不能为空!");
|
|
}
|
|
//拆分前日志
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLog(Identification, item.LotNo, item.User, item.WorkPoint, "4",
|
|
TransTypeEnum.LOTSplitBefore.GetDescription<DBValue>(), "", cmd, language);
|
|
|
|
foreach (var info in item.detail)
|
|
{
|
|
newlotno = info.CurrentLotNo;
|
|
//更新条码信息
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoSplit(Identification, item.LotNo, info.CurrentLotNo, info.CurrentQuantity, item.User, item.WorkPoint, "4",
|
|
TransTypeEnum.LOTSplitAfter.GetDescription<DBValue>(), cmd, language);
|
|
}
|
|
|
|
//拆分后日志
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoLog(Identification, item.LotNo, item.User, item.WorkPoint, "4",
|
|
TransTypeEnum.LOTSplitAfter.GetDescription<DBValue>(), newlotno, cmd, language);
|
|
}
|
|
|
|
//DataTable table = GetData(Identification, 1, cmd);
|
|
//cmd.Transaction.Commit();
|
|
//return table;
|
|
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 1, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 拆分(奥美)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMLOTSplitCreate(List<LOTCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
string newlotno = "";
|
|
DataTable printTable = new DataTable();
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.LotNo))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!"
|
|
}
|
|
else if (item.detail.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo028"));//"明细信息不能为空!");
|
|
}
|
|
//拆分前日志
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLog(Identification, item.LotNo, item.User, item.WorkPoint, "4",
|
|
TransTypeEnum.LOTSplitBefore.GetDescription<DBValue>(), "", cmd, language);
|
|
|
|
foreach (var info in item.detail)
|
|
{
|
|
newlotno = info.CurrentLotNo;
|
|
//更新条码信息
|
|
ICSWareHouseLotInfoService.AMWareHouseLotInfoSplit(Identification, item.LotNo, info.CurrentLotNo, info.CurrentQuantity, item.User, item.WorkPoint, "4",
|
|
TransTypeEnum.LOTSplitAfter.GetDescription<DBValue>(), cmd, language);
|
|
}
|
|
|
|
//拆分后日志
|
|
printTable = ICSWareHouseLotInfoService.WareHouseLotInfoLog(Identification, item.LotNo, item.User, item.WorkPoint, "4",
|
|
TransTypeEnum.LOTSplitAfter.GetDescription<DBValue>(), newlotno, cmd, language);
|
|
}
|
|
|
|
//DataTable table = GetData(Identification, 1, cmd);
|
|
//cmd.Transaction.Commit();
|
|
//return table;
|
|
|
|
if (!printTable.Equals("{}"))
|
|
{
|
|
cmd.Transaction.Commit();
|
|
return printTable;
|
|
}
|
|
else
|
|
{
|
|
DataTable table = GetData(Identification, 1, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
/// <summary>
|
|
/// 获取出入库记录信息
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="type">1:入库,2:出库,3:调拨</param>
|
|
/// <param name="cmd"></param>
|
|
/// <returns></returns>
|
|
private static DataTable GetData(string Identification, int type, SqlCommand cmd)
|
|
{
|
|
|
|
string sql = "";
|
|
string columns = "";
|
|
string tables = "";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT log.ID,
|
|
log.TransCode,
|
|
log.TransSequence,
|
|
log.LotNo,
|
|
'' AS WLotNo,
|
|
log.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
log.Quantity,
|
|
inv.InvUnit,
|
|
log.Quantity*(lot.Amount/lot.Quantity) AS Amount,
|
|
inv.AmountUnit,
|
|
{1}
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
type.Name AS TransType,
|
|
log.MUSER AS [User],
|
|
log.MTIME AS [MTime]
|
|
FROM ICSWareHouseLotInfoLog log
|
|
LEFT JOIN ICSType type ON type.TableCode='ICSWareHouseLotInfoLog' AND type.ColumnCode='BusinessCode' AND log.BusinessCode=type.Code AND log.WorkPoint=type.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON log.LotNo=lot.LotNo AND log.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON log.InvCode=inv.InvCode AND log.WorkPoint=inv.WorkPoint
|
|
{2}
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON log.InvCode=invBat.InvCode AND log.FromWarehouseCode=invBat.WHCode AND log.WorkPoint=invBat.WorkPoint
|
|
WHERE log.Identification='{0}'";
|
|
#endregion
|
|
|
|
columns = @"log.ToWarehouseCode AS WHCode,
|
|
log.ToLocationCode AS LocationCode,
|
|
wh.WarehouseName AS WHName,
|
|
loc.LocationName AS LocationName,";
|
|
tables = @"INNER JOIN ICSWarehouse wh ON log.ToWarehouseCode=wh.WarehouseCode AND log.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON log.ToLocationCode=loc.LocationCode AND log.WorkPoint=loc.WorkPoint";
|
|
|
|
if (type == 2)//出库
|
|
{
|
|
columns = @"log.FromWarehouseCode AS WHCode,
|
|
log.FromLocationCode AS LocationCode,
|
|
wh.WarehouseName AS WHName,
|
|
loc.LocationName AS LocationName,";
|
|
tables = @"INNER JOIN ICSWarehouse wh ON log.FromWarehouseCode=wh.WarehouseCode AND log.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON log.FromLocationCode=loc.LocationCode AND log.WorkPoint=loc.WorkPoint";
|
|
}
|
|
else if (type == 3)//调拨
|
|
{
|
|
columns = @"log.FromWarehouseCode AS FromWHCode,
|
|
log.FromLocationCode,
|
|
wh.WarehouseName AS FromWHName,
|
|
loc.LocationName AS FromLocationName,
|
|
log.ToWarehouseCode AS ToWHCode,
|
|
log.ToLocationCode,
|
|
whto.WarehouseName AS ToWHName,
|
|
locto.LocationName AS ToLocationName,";
|
|
tables = @"INNER JOIN ICSWarehouse wh ON log.FromWarehouseCode=wh.WarehouseCode AND log.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON log.FromLocationCode=loc.LocationCode AND log.WorkPoint=loc.WorkPoint
|
|
INNER JOIN ICSWarehouse whto ON log.ToWarehouseCode=whto.WarehouseCode AND log.WorkPoint=whto.WorkPoint
|
|
INNER JOIN ICSLocation locto ON log.ToLocationCode=locto.LocationCode AND log.WorkPoint=locto.WorkPoint";
|
|
}
|
|
|
|
|
|
sql = string.Format(sql, Identification, columns, tables);
|
|
|
|
return DBHelper.SQlReturnData(sql, cmd);
|
|
}
|
|
/// <summary>
|
|
/// 先进先出批次管控
|
|
/// </summary>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="WorkPoitCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <returns></returns>
|
|
public static string CanOut(string LotNo, string WorkPoitCode, string ScanLotCode, string sqlnew, string TransType, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
string sql = "";
|
|
string tsql = @"SELECT Top 1 a.F_ItemName
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='MtimeControl' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC";
|
|
tsql = string.Format(tsql);
|
|
DataTable dttt = DBHelper.SQlReturnData(tsql, cmd);
|
|
|
|
//根据Sys_SRM_Items.F_Description备注列维护的提前天数,比如维护的是1,最早条码是2022.5.16,现在扫描2022.5.17的条码也能出库,扫描2022.5.18的条码不能直接出,需要校验以下逻辑
|
|
|
|
if (DBHelper.IsPNU9() && (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription() || TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription()))
|
|
{
|
|
sql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
SET @CountNO=(
|
|
SELECT COUNT(a.LotNO) FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id --AND b.WorkPoint=bext.WorkPoint
|
|
WHERE ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO --AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id --AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND y.INVCode=b.INVCode " + sqlnew + @")
|
|
)
|
|
IF @CountNO>0
|
|
BEGIN
|
|
SELECT TOP 1 CASE a.F_ItemCode WHEN 'FIFO01' THEN '1' WHEN 'FIFO02' THEN '2' ELSE '3' END AS Type
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='FIFO' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @CountNO
|
|
END
|
|
drop table #TEMPWareHouse
|
|
";
|
|
}
|
|
else
|
|
{
|
|
sql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
SET @CountNO=(
|
|
SELECT COUNT(a.LotNO) FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id AND b.WorkPoint=bext.WorkPoint
|
|
WHERE a.WorkPoint='{1}' AND ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND x.WorkPoint='{1}' AND y.INVCode=b.INVCode and a.Freeze!=1 " + sqlnew + @")
|
|
)
|
|
IF @CountNO>0
|
|
BEGIN
|
|
SELECT TOP 1 CASE a.F_ItemCode WHEN 'FIFO01' THEN '1' WHEN 'FIFO02' THEN '2' ELSE '3' END AS Type
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='FIFO' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @CountNO
|
|
END
|
|
drop table #TEMPWareHouse
|
|
";
|
|
}
|
|
|
|
|
|
|
|
|
|
//0 - 已经是最早的批次
|
|
//1 - 不管控
|
|
//2 - 提醒
|
|
//3 - 限制
|
|
|
|
if (!string.IsNullOrWhiteSpace(ScanLotCode))
|
|
{
|
|
if (DBHelper.IsPNU9() && (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription() || TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription()))
|
|
{
|
|
sql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
SET @CountNO=(
|
|
SELECT COUNT(a.LotNO) FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id --AND b.WorkPoint=bext.WorkPoint
|
|
LEFT JOIN ICSWarehouseLotInfo loco ON a.LotNO = loco.LotNO AND loco.LotNO IN (" + ScanLotCode + @")
|
|
WHERE ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO --AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id --AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND y.INVCode=b.INVCode " + sqlnew + @")
|
|
)
|
|
IF @CountNO>0
|
|
BEGIN
|
|
SELECT TOP 1 CASE a.F_ItemCode WHEN 'FIFO01' THEN '1' WHEN 'FIFO02' THEN '2' ELSE '3' END AS Type
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='FIFO' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @CountNO
|
|
END
|
|
drop table #TEMPWareHouse
|
|
";
|
|
}
|
|
else
|
|
{
|
|
sql = @"DECLARE @CountNO INT,@Days INT
|
|
SELECT @Days=F_Description FROM Sys_SRM_Items WHERE F_EnCode='FIFO'
|
|
|
|
--排除在拣料之外的仓库
|
|
SELECT WarehouseCode INTO #TEMPWareHouse FROM ICSWareHouse
|
|
where WarehouseCode NOT IN
|
|
(select B.F_Define1 from Sys_SRM_Items A
|
|
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
|
|
WHERE A.F_EnCode='FIFO_Wareouse')
|
|
and WorkPoint='{1}'
|
|
|
|
|
|
SET @CountNO=(
|
|
SELECT COUNT(a.LotNO) FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot b ON a.LotNO=b.LotNO AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSExtension bext on b.ExtensionID=bext.id AND b.WorkPoint=bext.WorkPoint
|
|
LEFT JOIN ICSWarehouseLotInfo loco ON a.LotNO = loco.LotNO AND a.WorkPoint=loco.WorkPoint AND loco.LotNO IN (" + ScanLotCode + @")
|
|
WHERE a.WorkPoint='{1}' AND ISNULL(a.Quantity,0)>0 AND 1=1
|
|
AND CONVERT(varchar(100), {2}, 23)<
|
|
(SELECT DATEADD(DAY, -@Days, CONVERT(varchar(100), {3}, 23)) FROM ICSWareHouseLotInfo x
|
|
INNER JOIN ICSInventoryLot y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSExtension yext on y.ExtensionID=yext.id AND b.WorkPoint=yext.WorkPoint
|
|
WHERE x.warehousecode in (select WarehouseCode from #TEMPWareHouse) and x.LotNO='{0}' AND x.WorkPoint='{1}' AND y.INVCode=b.INVCode and a.Freeze!=1 " + sqlnew + @")
|
|
)
|
|
IF @CountNO>0
|
|
BEGIN
|
|
SELECT TOP 1 CASE a.F_ItemCode WHEN 'FIFO01' THEN '1' WHEN 'FIFO02' THEN '2' ELSE '3' END AS Type
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='FIFO' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @CountNO
|
|
END
|
|
drop table #TEMPWareHouse
|
|
";
|
|
}
|
|
|
|
sql = sql.Replace("1=1", "loco.LotNO is NULL");
|
|
}
|
|
|
|
|
|
|
|
if (dttt.Rows[0]["F_ItemName"].ToString() == "失效日期")
|
|
{
|
|
sql = string.Format(sql, LotNo, WorkPoitCode, "ISNULL(b.ExpirationDate,b.ProductDate)", "ISNULL(y.ExpirationDate,y.ProductDate)");
|
|
}
|
|
else if (dttt.Rows[0]["F_ItemName"].ToString() == "生产日期")
|
|
{
|
|
sql = string.Format(sql, LotNo, WorkPoitCode, "b.ProductDate", "y.ProductDate");
|
|
}
|
|
else
|
|
{
|
|
sql = string.Format(sql, LotNo, WorkPoitCode, "a.InDate", "x.InDate");
|
|
}
|
|
|
|
|
|
var res = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
if (string.IsNullOrWhiteSpace(res))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo183"));//"查询管控信息失败!");
|
|
}
|
|
else
|
|
return res;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取自由项名称
|
|
/// </summary>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="WorkPoitCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <returns></returns>
|
|
public static string GetExtentionName(string Code, string WorkPoitCode, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
//根据Sys_SRM_Items.F_Description备注列维护的提前天数,比如维护的是1,最早条码是2022.5.16,现在扫描2022.5.17的条码也能出库,扫描2022.5.18的条码不能直接出,需要校验以下逻辑
|
|
string sql = @"select ColName from ICSExtensionEnable where ColCode='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Code, WorkPoitCode);
|
|
var res = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
return res;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保质期管控
|
|
/// </summary>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="WorkPoitCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <returns></returns>
|
|
public static string Effective(string LotNo, string WorkPoitCode, string TransType, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
string sql = "";
|
|
if (DBHelper.IsPNU9() && (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription() || TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription()))
|
|
{
|
|
sql = @"DECLARE @CountNO INT,@Days INT,@CurrentDays INT
|
|
SELECT @CountNO=EffectiveEnable,@Days=EffectiveDays,@CurrentDays=DATEDIFF(DAY, GETDATE(), b.ExpirationDate) FROM ICSInventory a
|
|
INNER JOIN ICSInventoryLot b ON a.InvCode=b.InvCode --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON b.LotNO=c.LotNO --AND b.WorkPoint=c.WorkPoint
|
|
WHERE b.LotNO='{0}'
|
|
IF @CountNO='1' AND @CurrentDays<0
|
|
BEGIN
|
|
SELECT TOP 1 CASE a.F_ItemCode WHEN 'Effective01' THEN '1' WHEN 'Effective02' THEN '2' ELSE '3' END AS Type
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='Effective' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @CountNO
|
|
END";
|
|
}
|
|
else
|
|
{
|
|
sql = @"DECLARE @CountNO INT,@Days INT,@CurrentDays INT
|
|
SELECT @CountNO=EffectiveEnable,@Days=EffectiveDays,@CurrentDays=DATEDIFF(DAY, GETDATE(), b.ExpirationDate) FROM ICSInventory a
|
|
INNER JOIN ICSInventoryLot b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON b.LotNO=c.LotNO AND b.WorkPoint=c.WorkPoint
|
|
WHERE b.LotNO='{0}' AND b.WorkPoint='{1}'
|
|
IF @CountNO='1' AND @CurrentDays<0
|
|
BEGIN
|
|
SELECT TOP 1 CASE a.F_ItemCode WHEN 'Effective01' THEN '1' WHEN 'Effective02' THEN '2' ELSE '3' END AS Type
|
|
FROM Sys_SRM_ItemsDetail a
|
|
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_Id
|
|
WHERE b.F_EnCode='Effective' AND a.F_EnabledMark='1'
|
|
ORDER BY a.F_SortCode DESC
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @CountNO
|
|
END";
|
|
}
|
|
|
|
//0 - 已经是最早的批次
|
|
//1 - 不管控
|
|
//2 - 提醒
|
|
//3 - 限制
|
|
sql = string.Format(sql, LotNo, WorkPoitCode);
|
|
var res = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
if (string.IsNullOrWhiteSpace(res))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo183"));//"查询管控信息失败!");
|
|
}
|
|
else
|
|
return res;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
|
|
#region 包装
|
|
/// <summary>
|
|
/// 查询包装信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static object ContainerGet(ICSContainer JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
//目标包装
|
|
if (JsonData.ToContainerCode != null)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT ID FROM ICSContainer WHERE ContainerCODE ='{0}' and WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo072") + @"',16,1);
|
|
RETURN
|
|
END
|
|
SELECT ContainerCode,ContainerName FROM ICSContainer WHERE ContainerCODE ='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.ToContainerCode, JsonData.WorkPoint);
|
|
}
|
|
///原包装
|
|
else if (JsonData.FromContainerCode != null)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT ID FROM ICSContainer WHERE ContainerCODE ='{0}' and WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo072") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSContainer a
|
|
INNER JOIN ICSContainerLot b ON a.ID=b.ContainerID
|
|
WHERE a.ContainerCODE ='{0}' and a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo073") + @"',16,1);
|
|
RETURN
|
|
END
|
|
SELECT ContainerCode,ContainerName FROM ICSContainer WHERE ContainerCODE ='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.FromContainerCode, JsonData.WorkPoint);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo029"));//"请传入包装条码!");
|
|
}
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改包装信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ContainerUpdate(List<ICSContainer> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string codes = string.Empty;
|
|
foreach (ICSContainer container in JsonData)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT ID FROM ICSContainer WHERE ContainerCODE ='{0}' and WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo072") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSContainer a
|
|
INNER JOIN ICSContainerLot b ON a.ID=b.ContainerID
|
|
WHERE a.ContainerCODE ='{0}' and a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo073") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT ID FROM ICSContainer WHERE ContainerCODE ='{2}' and WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo072"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE b SET ContainerID=c.ID
|
|
FROM ICSContainer a
|
|
INNER JOIN ICSContainerLot b ON a.ID=b.ContainerID
|
|
INNER JOIN ICSContainer c ON c.ContainerCODE ='{2}' and a.WorkPoint=c.WorkPoint
|
|
WHERE a.ContainerCODE ='{0}' and a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, container.FromContainerCode, container.WorkPoint, container.ToContainerCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo030"));//"包装更新失败!");
|
|
}
|
|
codes += "'" + container.ToContainerCode + container.WorkPoint + "',";
|
|
}
|
|
sql = @"SELECT a.ContainerCode, a.ContainerName,b.LotNo FROM ICSContainer a
|
|
INNER JOIN ICSContainerLot b ON a.ID=b.ContainerID
|
|
WHERE a.ContainerCODE+a.WorkPoint IN({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 盘点
|
|
/// <summary>
|
|
/// 创建盘点单
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable CheckCreate(List<ICSCheck> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string Code = string.Empty;
|
|
string sql = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"操作人不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
//获取单号
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{0}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo060") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @MaxNO INT,@date varchar(20)='CHK'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(CheckCode),LEN(@date)+1,LEN(MAX(CheckCode))-LEN(@date))+1 FROM ICSCheck
|
|
WHERE SUBSTRING(CheckCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
sql = string.Format(sql, item.User, item.WorkPoint);
|
|
Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//创建盘点单
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
int len = itemInfo.SelectLevel.Length;
|
|
if (itemInfo.WHCode == null || itemInfo.WHCode == "")
|
|
{
|
|
if (len > 0)//传层级
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE SUBSTRING(LocationCode,1,{4}) = '{1}')
|
|
BEGIN
|
|
RAISERROR('{1}" + language.GetNameByCode("WMSAPIInfo460") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSCheck (ID,CheckCode,SelectLevel,Status,Quantity,Amount,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{0}','{1}','2',SUM(a.Quantity),0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
WHERE SUBSTRING(a.LocationCode,1,{4}) = '{1}'
|
|
GROUP BY b.F_Account,b.F_RealName,b.F_Location
|
|
|
|
";
|
|
//盘点单创建增加参数 StartDate EndDate
|
|
if (item.StartDate == "" || item.StartDate == null)
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
inner join ICSCheck c on SUBSTRING(a.LocationCode,1,{4})= c.selectlevel and c.checkcode = '{0}' and c.selectlevel = '{1}'
|
|
";
|
|
}
|
|
else
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
INNER JOIN (select lotno from ICSWareHouseLotInfoLog where (SUBSTRING(FromLocationCode,1,{4}) ='{1}' or SUBSTRING(ToLocationCode,1,{4}) ='{1}') and (mtime BETWEEN '{5}' and '{6}')GROUP BY lotno )
|
|
lot on a.lotno = lot.lotno
|
|
inner join ICSCheck c on SUBSTRING(a.LocationCode,1,{4})= c.selectlevel and c.checkcode = '{0}' and c.selectlevel = '{1}'
|
|
";
|
|
}
|
|
sql = string.Format(sql, Code, itemInfo.SelectLevel, item.User, item.WorkPoint, len, item.StartDate, item.EndDate);
|
|
}
|
|
else //传物料
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE INVCODE = '{1}')
|
|
BEGIN
|
|
RAISERROR('{1}" + language.GetNameByCode("WMSAPIInfo460") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSCheck (ID,CheckCode,SelectLevel,Status,Quantity,Amount,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{0}','','2',SUM(a.Quantity),0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
WHERE INVCODE = '{1}'
|
|
GROUP BY b.F_Account,b.F_RealName,b.F_Location
|
|
|
|
";
|
|
//盘点单创建增加参数 StartDate EndDate
|
|
if (item.StartDate == "" || item.StartDate == null)
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
inner join ICSCheck c on c.checkcode = '{0}'
|
|
WHERE a.INVCODE = '{1}'
|
|
";
|
|
}
|
|
else
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
INNER JOIN (select lotno from ICSWareHouseLotInfoLog where INVCODE = '{1}' and (mtime BETWEEN '{5}' and '{6}')GROUP BY lotno )
|
|
lot on a.lotno = lot.lotno
|
|
inner join ICSCheck c on c.checkcode = '{0}'
|
|
";
|
|
}
|
|
sql = string.Format(sql, Code, itemInfo.InvCode, item.User, item.WorkPoint, len, item.StartDate, item.EndDate);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (len > 0)//传层级
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WareHouseCode = '{7}')
|
|
BEGIN
|
|
RAISERROR('{7}" + language.GetNameByCode("WMSAPIInfo460") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSCheck (ID,CheckCode,SelectLevel,Status,Quantity,Amount,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{0}','{7}','2',SUM(a.Quantity),0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'1'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
WHERE a.WareHouseCode = '{7}'
|
|
GROUP BY b.F_Account,b.F_RealName,b.F_Location
|
|
|
|
";
|
|
//盘点单创建增加参数 StartDate EndDate
|
|
if (item.StartDate == "" || item.StartDate == null)
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
inner join ICSCheck c on a.WareHouseCode= c.selectlevel and c.checkcode = '{0}' and c.selectlevel = '{7}'
|
|
";
|
|
}
|
|
else
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
INNER JOIN (select lotno from ICSWareHouseLotInfoLog where (FromWareHouseCode ='{7}' or ToWareHouseCode ='{7}') and (mtime BETWEEN '{5}' and '{6}')GROUP BY lotno )
|
|
lot on a.lotno = lot.lotno
|
|
inner join ICSCheck c on a.WareHouseCode= c.selectlevel and c.checkcode = '{0}' and c.selectlevel = '{7}'
|
|
";
|
|
}
|
|
sql = string.Format(sql, Code, itemInfo.SelectLevel, item.User, item.WorkPoint, len, item.StartDate, item.EndDate, itemInfo.WHCode);
|
|
}
|
|
else //传物料
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE INVCODE = '{1}')
|
|
BEGIN
|
|
RAISERROR('{1}" + language.GetNameByCode("WMSAPIInfo460") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSCheck (ID,CheckCode,SelectLevel,Status,Quantity,Amount,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{0}','','2',SUM(a.Quantity),0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'1'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
WHERE INVCODE = '{1}'
|
|
GROUP BY b.F_Account,b.F_RealName,b.F_Location
|
|
|
|
";
|
|
//盘点单创建增加参数 StartDate EndDate
|
|
if (item.StartDate == "" || item.StartDate == null)
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
inner join ICSCheck c on c.checkcode = '{0}'
|
|
WHERE a.INVCODE = '{1}'
|
|
";
|
|
}
|
|
else
|
|
{
|
|
sql += @" --东辉新加
|
|
INSERT INTO[dbo].[ICSCheckDetail] ([ID], [CheckID], [LotNo],
|
|
[Quantity], [Amount], [PrimaryQuantity], [PrimaryAmount],
|
|
[ReplayQuantity], [ReplayAmount],
|
|
[CheckQuantity], [CheckAmount], [MUSER], [MUSERName], [MTIME], [WorkPoint],EATTRIBUTE1)
|
|
SELECT NEWID(),c.id,a.lotno,a.Quantity,0,0,0,0,0,0,0,b.F_Account,b.F_RealName,GETDATE(),b.F_Location,'0'
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account = '{2}' AND b.F_Location = '{3}'
|
|
INNER JOIN (select lotno from ICSWareHouseLotInfoLog where INVCODE = '{1}' and (mtime BETWEEN '{5}' and '{6}')GROUP BY lotno )
|
|
lot on a.lotno = lot.lotno
|
|
inner join ICSCheck c on c.checkcode = '{0}'
|
|
";
|
|
}
|
|
sql = string.Format(sql, Code, itemInfo.InvCode, item.User, item.WorkPoint, len, item.StartDate, item.EndDate);
|
|
}
|
|
}
|
|
|
|
|
|
if (DBHelper.IsRTU9())
|
|
{
|
|
sql = sql.Replace("0,0,0,0,0,0,0", "0,null,0,null,0,null,0");
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo031"));//"盘点单创建失败!");
|
|
}
|
|
}
|
|
}
|
|
if (string.IsNullOrWhiteSpace(Code))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo032"));//"盘点单单号不能为空!");
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.ID,a.CheckCode,a.SelectLevel,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSCheck a
|
|
WHERE a.CheckCode='{0}'";
|
|
sql = string.Format(sql, Code);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 盘点扫描
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LOTCheckCreate(List<ICSCheck> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string lots = string.Empty;
|
|
string sql = string.Empty;
|
|
int result = 0;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"操作人不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
if (string.IsNullOrEmpty(item.CheckCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo032"));//"盘点单号不能为空!");
|
|
}
|
|
|
|
//校验
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{0}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo060") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF NOT EXISTS(SELECT ID FROM ICSCheck WHERE CheckCode='{2}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo075") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, item.User, item.WorkPoint, item.CheckCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
//创建盘点单
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT LotNo FROM ICSWareHouseLotInfo WHERE LotNo='{1}' AND WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo076") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT LotNo FROM ICSCheckDetail a
|
|
LEFT JOIN ICSCheck b ON a.CheckID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
WHERE b.CheckCode='{0}' AND a.LotNo='{1}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
IF ('{5}'='初盘')
|
|
BEGIN
|
|
UPDATE a SET PrimaryQuantity='{4}',MUSER=b.F_Account,MUSERName=b.F_RealName,MTIME=GETDATE(),EATTRIBUTE1='1'
|
|
FROM ICSCheckDetail a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON a.CheckID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.CheckCode='{0}' AND a.LotNo='{1}' and a.WorkPoint='{3}'
|
|
END
|
|
ELSE IF ('{5}'='抽盘')
|
|
BEGIN
|
|
UPDATE a SET CheckQuantity='{4}',MUSER=b.F_Account,MUSERName=b.F_RealName,MTIME=GETDATE(),EATTRIBUTE2='1'
|
|
FROM ICSCheckDetail a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON a.CheckID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.CheckCode='{0}' AND a.LotNo='{1}' and a.WorkPoint='{3}'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE a SET ReplayQuantity='{4}',MUSER=b.F_Account,MUSERName=b.F_RealName,MTIME=GETDATE(),EATTRIBUTE3='1'
|
|
FROM ICSCheckDetail a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON a.CheckID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.CheckCode='{0}' AND a.LotNo='{1}' and a.WorkPoint='{3}'
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF ('{5}'='初盘')
|
|
BEGIN
|
|
INSERT INTO ICSCheckDetail (ID,CheckID,LotNo,Quantity,Amount,PrimaryQuantity,PrimaryAmount,ReplayQuantity,ReplayAmount,CheckQuantity,CheckAmount,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT NEWID(),c.ID,a.LotNo,a.Quantity,'0','{4}','0','0','0','0','0',b.F_Account,b.F_RealName,GETDATE(),a.WorkPoint
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON SUBSTRING(a.LocationCode,1,len(c.SelectLevel))=c.SelectLevel
|
|
WHERE a.LotNo='{1}' and a.WorkPoint='{3}' and c.CheckCode='{0}'
|
|
END
|
|
ELSE IF ('{5}'='抽盘')
|
|
BEGIN
|
|
INSERT INTO ICSCheckDetail (ID,CheckID,LotNo,Quantity,Amount,PrimaryQuantity,PrimaryAmount,ReplayQuantity,ReplayAmount,CheckQuantity,CheckAmount,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT NEWID(),c.ID,a.LotNo,a.Quantity,'0','0','0','0','0','{4}','0',b.F_Account,b.F_RealName,GETDATE(),a.WorkPoint
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON SUBSTRING(a.LocationCode,1,len(c.SelectLevel))=c.SelectLevel
|
|
WHERE a.LotNo='{1}' and a.WorkPoint='{3}' and c.CheckCode='{0}'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO ICSCheckDetail (ID,CheckID,LotNo,Quantity,Amount,PrimaryQuantity,PrimaryAmount,ReplayQuantity,ReplayAmount,CheckQuantity,CheckAmount,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT NEWID(),c.ID,a.LotNo,a.Quantity,'0','0','0','{4}','0','0','0',b.F_Account,b.F_RealName,GETDATE(),a.WorkPoint
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON SUBSTRING(a.LocationCode,1,len(c.SelectLevel))=c.SelectLevel
|
|
WHERE a.LotNo='{1}' and a.WorkPoint='{3}' and c.CheckCode='{0}'
|
|
END
|
|
END";
|
|
sql = string.Format(sql, item.CheckCode, itemInfo.LotNo, item.User, item.WorkPoint, itemInfo.ActualQuantity, item.CheckKind);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo033"));//"盘点扫描创建失败!");
|
|
}
|
|
|
|
#region 更新ICSCheckDetail表
|
|
|
|
//string strSql = @"UPDATE ICSCheckDetail Set";
|
|
//if (item.CheckKind == "初盘")
|
|
// strSql += @" PrimaryQuantity+=" + Convert.ToDecimal(itemInfo.ActualQuantity);
|
|
//else if (item.CheckKind == "复盘")
|
|
// strSql += @" ReplayQuantity+=" + Convert.ToDecimal(itemInfo.ActualQuantity);
|
|
//else
|
|
// strSql += @" CheckQuantity+=" + Convert.ToDecimal(itemInfo.ActualQuantity);
|
|
//strSql += @" where ToCheckNO='" + item.CheckCode + "' AND WorkPoint='" + item.WorkPoint + "'";
|
|
//cmd.CommandText = strSql;
|
|
//result = cmd.ExecuteNonQuery();
|
|
//if (result <= 0)
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo296"));//"盘点子表数量增加失败!");
|
|
//}
|
|
|
|
#endregion
|
|
|
|
#region 更新库存
|
|
if (item.UpdateWHLI)
|
|
{
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoUpdate(Identification, item.CheckCode, "", itemInfo.LotNo, itemInfo.ActualQuantity, item.User, item.WorkPoint, TransTypeEnum.Check.GetDescription<DBValue>(), item.CheckKind, cmd, language);
|
|
}
|
|
#endregion
|
|
lots += "'" + itemInfo.LotNo + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(lots))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"请传入条码信息!");
|
|
}
|
|
//sql = @"UPDATE a SET ActualQuantity=b.ActualQuantity
|
|
// FROM ICSCheck a
|
|
// INNER JOIN (SELECT x.CheckCode,x.WorkPoint,y.WarehouseCode,y.InvCode,SUM(ActualQuantity) AS ActualQuantity FROM ICSCheckDetail x INNER JOIN ICSWareHouseLotInfo y ON x.LotNo=y.LotNo AND x.WorkPoint=y.WorkPoint WHERE x.LotNo+x.WorkPoint IN ({2}) GROUP BY x.CheckCode,x.WorkPoint,y.WarehouseCode,y.InvCode) b ON a.CheckCode=b.CheckCode AND a.WorkPoint=b.WorkPoint AND a.WHCode=b.WarehouseCode AND a.InvCode=b.InvCode
|
|
// WHERE a.CheckCode='{0}' and a.WorkPoint='{1}'";
|
|
//sql = string.Format(sql, item.CheckCode, item.WorkPoint, lots.Substring(0, lots.Length - 1));
|
|
|
|
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo034"));//"盘点扫描更新盘点单失败!");
|
|
//}
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT x.ID,x.CheckID,y.WarehouseCode AS WHCode,x.LotNo,
|
|
y.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
x.Quantity,x.PrimaryQuantity,x.PrimaryAmount,x.ReplayQuantity,x.ReplayAmount,x.CheckQuantity,x.CheckAmount,
|
|
inv.InvUnit,
|
|
x.MUSER AS [User],
|
|
x.MTIME AS [MTime]
|
|
FROM ICSCheckDetail x
|
|
INNER JOIN ICSWareHouseLotInfo y ON x.LotNo=y.LotNo AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSInventory inv ON y.InvCode=inv.InvCode AND y.WorkPoint=inv.WorkPoint
|
|
WHERE x.LotNo+x.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, lots.Substring(0, lots.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable LOTCheckCreateNew(List<ICSCheck> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string lots = string.Empty;
|
|
string sql = string.Empty;
|
|
int result = 0;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.User))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo018"));//"操作人不能为空!");
|
|
}
|
|
if (string.IsNullOrEmpty(item.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
if (string.IsNullOrEmpty(item.CheckCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo032"));//"盘点单号不能为空!");
|
|
}
|
|
|
|
//校验
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{0}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo060") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF NOT EXISTS(SELECT ID FROM ICSCheck WHERE CheckCode='{2}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo075") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, item.User, item.WorkPoint, item.CheckCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
|
|
|
|
//创建盘点单
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
|
|
//库位选填 如果不为空就执行移库操作
|
|
if (itemInfo.LocationCode != "" && itemInfo.WHCode != "")
|
|
{
|
|
if (string.IsNullOrEmpty(itemInfo.LotNo))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!"
|
|
}
|
|
|
|
//验证仓库库位信息
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo072"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID
|
|
FROM ICSWareHouse a
|
|
INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, itemInfo.WHCode, item.WorkPoint, itemInfo.LocationCode);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
//更新条码信息
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoLibrary(Identification, "", "", itemInfo.WHCode, itemInfo.LocationCode, itemInfo.LotNo,
|
|
item.User, item.WorkPoint, "7", "29", "", cmd, language);
|
|
|
|
}
|
|
|
|
sql = @"IF NOT EXISTS(SELECT LotNo FROM ICSWareHouseLotInfo WHERE LotNo='{1}' AND WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo076") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT LotNo FROM ICSCheckIntermediateTable a
|
|
LEFT JOIN ICSCheck b ON a.CheckID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
WHERE b.CheckCode='{0}' AND a.LotNo='{1}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
IF('{5}' = '初盘')
|
|
BEGIN
|
|
UPDATE a SET PrimaryQuantity='{4}',CheckType='{5}',IsWHUpdate='{6}',IsCheckDetail=0,MUSER=b.F_Account,MUSERName=b.F_RealName,MTIME=GETDATE(),EATTRIBUTE1='0'
|
|
FROM ICSCheckIntermediateTable a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON a.CheckID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.CheckCode='{0}' AND a.LotNo='{1}' and a.WorkPoint='{3}'
|
|
END
|
|
ELSE IF('{5}' = '抽盘')
|
|
BEGIN
|
|
UPDATE a SET ReplayQuantity='{4}',CheckType='{5}',IsWHUpdate='{6}',IsCheckDetail=0,MUSER=b.F_Account,MUSERName=b.F_RealName,MTIME=GETDATE(),EATTRIBUTE1='0'
|
|
FROM ICSCheckIntermediateTable a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON a.CheckID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.CheckCode='{0}' AND a.LotNo='{1}' and a.WorkPoint='{3}'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE a SET CheckQuantity='{4}',CheckType='{5}',IsWHUpdate='{6}',IsCheckDetail=0,MUSER=b.F_Account,MUSERName=b.F_RealName,MTIME=GETDATE(),EATTRIBUTE1='0'
|
|
FROM ICSCheckIntermediateTable a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON a.CheckID=c.ID AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.CheckCode='{0}' AND a.LotNo='{1}' and a.WorkPoint='{3}'
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF('{5}' = '初盘')
|
|
BEGIN
|
|
INSERT INTO ICSCheckIntermediateTable (ID,CheckID,CheckNo,LotNo,Quantity,Amount,PrimaryQuantity,PrimaryAmount,ReplayQuantity,ReplayAmount,CheckQuantity,CheckAmount,CheckType,IsCheckDetail,IsWHUpdate,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT NEWID(),c.ID,'{0}',a.LotNo,a.Quantity,'0','{4}','0','0','0','0','0','{5}','0','{6}',b.F_Account,b.F_RealName,GETDATE(),a.WorkPoint
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON
|
|
(c.EATTRIBUTE1='1' AND a.WareHouseCode=c.SelectLevel) OR
|
|
(c.EATTRIBUTE1<>'1' AND SUBSTRING(a.LocationCode,1,len(c.SelectLevel))=c.SelectLevel)
|
|
WHERE a.LotNo='{1}' and a.WorkPoint='{3}' and c.CheckCode='{0}'
|
|
END
|
|
ELSE IF('{5}' = '抽盘')
|
|
BEGIN
|
|
INSERT INTO ICSCheckIntermediateTable (ID,CheckID,CheckNo,LotNo,Quantity,Amount,PrimaryQuantity,PrimaryAmount,ReplayQuantity,ReplayAmount,CheckQuantity,CheckAmount,CheckType,IsCheckDetail,IsWHUpdate,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT NEWID(),c.ID,'{0}',a.LotNo,a.Quantity,'0','0','0','0','0','{4}','0','{5}','0','{6}',b.F_Account,b.F_RealName,GETDATE(),a.WorkPoint
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON
|
|
(c.EATTRIBUTE1='1' AND a.WareHouseCode=c.SelectLevel) OR
|
|
(c.EATTRIBUTE1<>'1' AND SUBSTRING(a.LocationCode,1,len(c.SelectLevel))=c.SelectLevel)
|
|
WHERE a.LotNo='{1}' and a.WorkPoint='{3}' and c.CheckCode='{0}'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO ICSCheckIntermediateTable (ID,CheckID,CheckNo,LotNo,Quantity,Amount,PrimaryQuantity,PrimaryAmount,ReplayQuantity,ReplayAmount,CheckQuantity,CheckAmount,CheckType,IsCheckDetail,IsWHUpdate,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT NEWID(),c.ID,'{0}',a.LotNo,a.Quantity,'0','0','0','{4}','0','0','0','{5}','0','{6}',b.F_Account,b.F_RealName,GETDATE(),a.WorkPoint
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{3}'
|
|
LEFT JOIN ICSCheck c ON
|
|
(c.EATTRIBUTE1='1' AND a.WareHouseCode=c.SelectLevel) OR
|
|
(c.EATTRIBUTE1<>'1' AND SUBSTRING(a.LocationCode,1,len(c.SelectLevel))=c.SelectLevel)
|
|
WHERE a.LotNo='{1}' and a.WorkPoint='{3}' and c.CheckCode='{0}'
|
|
END
|
|
|
|
END";
|
|
|
|
sql = string.Format(sql, item.CheckCode, itemInfo.LotNo, item.User, item.WorkPoint, itemInfo.ActualQuantity, item.CheckKind, item.UpdateWHLI);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo033"));//"盘点扫描创建失败!");
|
|
}
|
|
|
|
|
|
lots += "'" + itemInfo.LotNo + item.WorkPoint + "',";
|
|
|
|
|
|
}
|
|
if (string.IsNullOrWhiteSpace(lots))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"请传入条码信息!");
|
|
}
|
|
//sql = @"UPDATE a SET ActualQuantity=b.ActualQuantity
|
|
// FROM ICSCheck a
|
|
// INNER JOIN (SELECT x.CheckCode,x.WorkPoint,y.WarehouseCode,y.InvCode,SUM(ActualQuantity) AS ActualQuantity FROM ICSCheckDetail x INNER JOIN ICSWareHouseLotInfo y ON x.LotNo=y.LotNo AND x.WorkPoint=y.WorkPoint WHERE x.LotNo+x.WorkPoint IN ({2}) GROUP BY x.CheckCode,x.WorkPoint,y.WarehouseCode,y.InvCode) b ON a.CheckCode=b.CheckCode AND a.WorkPoint=b.WorkPoint AND a.WHCode=b.WarehouseCode AND a.InvCode=b.InvCode
|
|
// WHERE a.CheckCode='{0}' and a.WorkPoint='{1}'";
|
|
//sql = string.Format(sql, item.CheckCode, item.WorkPoint, lots.Substring(0, lots.Length - 1));
|
|
|
|
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo034"));//"盘点扫描更新盘点单失败!");
|
|
//}
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT x.ID,x.CheckID,y.WarehouseCode AS WHCode,x.LotNo,
|
|
y.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
x.Quantity,x.PrimaryQuantity,x.PrimaryAmount,x.ReplayQuantity,x.ReplayAmount,x.CheckQuantity,x.CheckAmount,
|
|
inv.InvUnit,
|
|
x.MUSER AS [User],
|
|
x.MTIME AS [MTime]
|
|
FROM ICSCheckIntermediateTable x
|
|
INNER JOIN ICSWareHouseLotInfo y ON x.LotNo=y.LotNo AND x.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSInventory inv ON y.InvCode=inv.InvCode AND y.WorkPoint=inv.WorkPoint
|
|
WHERE x.LotNo+x.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, lots.Substring(0, lots.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 多语言
|
|
/// <summary>
|
|
/// 多语言查询
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable PromptInformationGet(WMSBarCoreModel JsonData)
|
|
{
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string DefiniteLanguage = ICSDefiniteLanguageService.GetLanguage();
|
|
string sql = @"select " + DefiniteLanguage + " AS Name,Code from Sys_Language where 1=1";
|
|
if (!string.IsNullOrWhiteSpace(JsonData.Code))
|
|
{
|
|
sql += " and Code LIKE '%{0}%'";
|
|
}
|
|
sql = string.Format(sql, JsonData.Code);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 东辉对比U9客户料号
|
|
/// <summary>
|
|
/// 东辉对比U9客户料号
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable DHCheckGet(WMSBarCoreModel JsonData)
|
|
{
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = @"select ItemCODE,CustomerItemcode from ICSCustomerItem where 1=1";
|
|
if (!string.IsNullOrWhiteSpace(JsonData.Code))
|
|
{
|
|
sql += " and ItemCode = '{1}' and (CustomerItemcode ='{0}' or (CustomerItemCode+'-'+SysVersion)='{0}')";
|
|
}
|
|
sql = string.Format(sql, JsonData.Code, JsonData.Name);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
|
|
sql = @"INSERT INTO DHCheckLog(ID,ItemCode,CustomerItemCode,IsChecked,MUSER,MTIME)
|
|
values(newid(),'{0}','{1}','{2}','{3}',getDate())";
|
|
sql = string.Format(sql, JsonData.Name, JsonData.Code, data.Rows.Count > 0 ? 1 : 0, JsonData.User);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 创建盘点单获取层级详细
|
|
/// <summary>
|
|
/// 创建盘点单获取层级详细
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable SelectLevelGet(WMSBarCoreModel JsonData)
|
|
{
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = @"select distinct
|
|
dbo.substr_withindex(code,'-',{0}) as WorkPointCode
|
|
from ICSLocation";
|
|
sql = string.Format(sql, JsonData.Code);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 获取成品入库未扫入条码
|
|
/// <summary>
|
|
/// 获取成品入库未扫入条码
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable WLotNoGet(List<LOTStockUpCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string tables = string.Empty;
|
|
string TransType = string.Empty;
|
|
string wlotno = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
if (wlotno == "")
|
|
{
|
|
wlotno += "'" + itemInfo.LotNo + "'";
|
|
}
|
|
else
|
|
{
|
|
wlotno += ",'" + itemInfo.LotNo + "'";
|
|
}
|
|
}
|
|
}
|
|
|
|
sql = @"SELECT
|
|
b.TransCode,
|
|
b.WorkPoint,
|
|
a.LotNo
|
|
into #InitialLot
|
|
FROM
|
|
ICSInventoryLot a
|
|
INNER JOIN
|
|
ICSInventoryLotDetail b ON a.lotno = b.lotno AND a.WorkPoint = b.WorkPoint
|
|
WHERE
|
|
a.lotno IN ({0})
|
|
|
|
|
|
-- 提取关联的所有 lotno,包括 TransCode 和 WorkPoint
|
|
|
|
SELECT
|
|
a.LotNo,a.Quantity,a.InvCode,c.invstd into #RelatedLots
|
|
FROM
|
|
ICSInventoryLot a
|
|
INNER JOIN ICSInventory c on a.InvCode=c.invcode and a.WorkPoint=c.WorkPoint
|
|
INNER JOIN
|
|
ICSInventoryLotDetail b ON a.lotno = b.lotno AND a.WorkPoint = b.WorkPoint
|
|
INNER JOIN
|
|
#InitialLot il ON b.TransCode = il.TransCode AND b.WorkPoint = il.WorkPoint
|
|
|
|
where a.Type = 3
|
|
|
|
|
|
-- 将关联的 lotno 中排除掉初始 IN 列表的条码
|
|
|
|
SELECT
|
|
rl.LotNo,rl.Quantity,rl.InvCode,rl.invstd into #FilteredLots
|
|
FROM
|
|
#RelatedLots rl
|
|
LEFT JOIN
|
|
#InitialLot il ON rl.LotNo = il.LotNo
|
|
WHERE
|
|
il.LotNo IS NULL -- 只保留不在初始 IN 列表中的 lotno
|
|
|
|
|
|
-- 查询不存在于 ICSWareHouseLotInfo 表的 lotno
|
|
SELECT
|
|
sum(fl.Quantity) AS Quantity,fl.InvCode,fl.InvStd
|
|
FROM
|
|
#FilteredLots fl
|
|
LEFT JOIN
|
|
ICSWareHouseLotInfo d ON fl.LotNo = d.LotNo
|
|
WHERE
|
|
d.LotNo IS NULL
|
|
GROUP BY fl.InvCode,fl.invstd
|
|
|
|
drop table #FilteredLots
|
|
drop table #RelatedLots
|
|
drop table #InitialLot
|
|
";
|
|
//if (TransType== TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
//{
|
|
// tables = @"SELECT DISTINCT c.MOCode FROM ICSInventoryLot a
|
|
// INNER JOIN ICSInventoryLotDetail b ON a.lotno=b.lotno AND a.WorkPoint=b.WorkPoint
|
|
// INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint";
|
|
//}
|
|
//else if (TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription())
|
|
//{
|
|
// tables = @"SELECT DISTINCT c.RCVCode FROM ICSInventoryLot a
|
|
// INNER JOIN ICSInventoryLotDetail b ON a.lotno=b.lotno AND a.WorkPoint=b.WorkPoint
|
|
// INNER JOIN ICSPurchaseReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint";
|
|
//}
|
|
//else if (TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription())
|
|
//{
|
|
// tables = @"SELECT DISTINCT c.RCVCode FROM ICSInventoryLot a
|
|
// INNER JOIN ICSInventoryLotDetail b ON a.lotno=b.lotno AND a.WorkPoint=b.WorkPoint
|
|
// INNER JOIN ICSOutsourcingReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint";
|
|
//}
|
|
sql = string.Format(sql, wlotno);
|
|
|
|
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region 仓库/库位
|
|
/// <summary>
|
|
/// 仓库/库位
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable LocationGet(ICSLocation JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
sql = @"IF NOT EXISTS(SELECT LocationCode FROM ICSLocation a where LocationCode like '%{0}%' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo070") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT LocationCode FROM ICSLocation a INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode like '%{0}%' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo077") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT LocationCode FROM ICSLocation a INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode like '%{0}%' AND a.WorkPoint='{1}' and b.Enable='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo078") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
SELECT
|
|
LocationCode,
|
|
LocationName ,
|
|
WarehouseCode,
|
|
WarehouseName
|
|
FROM ICSLocation a
|
|
INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode = '{0}' AND a.WorkPoint='{1}' and b.Enable='1'";
|
|
|
|
|
|
sql = string.Format(sql, JsonData.LocationCode, JsonData.WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
//东辉采购入库 查库位的时候 判断仓库是否为已加的仓库
|
|
if (DBHelper.IsU9() && JsonData.WarehouseName != null)
|
|
{
|
|
sql = @"select 1 from ICSLocation a
|
|
INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
|
|
inner join (select a.f_define1 from Sys_SRM_ItemsDetail a inner join Sys_SRM_Items b on a.f_itemid = b.F_id where b.f_encode= 'NO_Warehouse') c on 1=1
|
|
and c.f_define1 like '%'+b.warehousecode+'%'
|
|
where LocationCode = '{0}' AND a.WorkPoint='{1}' and b.Enable='1'
|
|
";
|
|
sql = string.Format(sql, JsonData.LocationCode, JsonData.WorkPoint);
|
|
DataTable FLAG = DBHelper.SQlReturnData(sql, cmd);
|
|
|
|
if (FLAG.Rows.Count > 0)
|
|
{
|
|
throw new Exception("采购上架不允许入此库位,请重新扫描!");
|
|
}
|
|
}
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 仓库/库位
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MoWHCodeGet(ICSLocation JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
sql = @"select a.F_ItemCode AS WarehouseCode from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_EnCode='MOINWhCode' and a.F_EnabledMark='1'";
|
|
|
|
|
|
sql = string.Format(sql, JsonData.LocationCode, JsonData.WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 仓库/库位
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMLocationGet(ICSLocation JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string UserName = "";
|
|
try
|
|
{
|
|
//检验是否分批
|
|
string uersql = @"SELECT F_RealName from Sys_SRM_User Where F_Account='{0}' AND F_Location='{1}'
|
|
";
|
|
uersql = string.Format(uersql, JsonData.User, JsonData.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(uersql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
UserName = dt.Rows[0]["F_RealName"].ToString();
|
|
}
|
|
string UName = UserName.Substring(0, 2);
|
|
switch (UName)
|
|
{
|
|
case "L1":
|
|
UName = "021";
|
|
break;
|
|
case "L2":
|
|
UName = "022";
|
|
break;
|
|
case "L3":
|
|
UName = "023";
|
|
break;
|
|
case "L4":
|
|
UName = "024";
|
|
break;
|
|
case "L5":
|
|
UName = "025";
|
|
break;
|
|
case "L6":
|
|
UName = "026";
|
|
break;
|
|
case "L7":
|
|
UName = "025";
|
|
break;
|
|
case "C1":
|
|
UName = "004";
|
|
break;
|
|
}
|
|
string sql = @"IF NOT EXISTS(SELECT LocationCode FROM ICSLocation a where LocationCode like '%{0}%' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo070") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT LocationCode FROM ICSLocation a INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode like '%{0}%' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo077") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT LocationCode FROM ICSLocation a INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode like '%{0}%' AND a.WorkPoint='{1}' and b.Enable='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo078") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT LocationCode FROM ICSLocation a INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode like '%{0}%' AND a.WorkPoint='{1}' and b.warehousecode='{2}')
|
|
BEGIN
|
|
RAISERROR('登录人员产线与目标仓库不一致,请确认!',16,1)
|
|
RETURN
|
|
END
|
|
|
|
SELECT
|
|
LocationCode,
|
|
LocationName ,
|
|
WarehouseCode,
|
|
WarehouseName
|
|
FROM ICSLocation a
|
|
INNER JOIN ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode like '%{0}%' AND a.WorkPoint='{1}' and b.Enable='1'";
|
|
sql = string.Format(sql, JsonData.LocationCode, JsonData.WorkPoint, UName);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 工单生成条码(mes调用)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable CreateItemLotByMo(List<CreateItemLot> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string Colspan = "";
|
|
string str1 = "";
|
|
string sql = string.Empty;
|
|
List<string> ExtensionIDList = new List<string>();
|
|
foreach (var item in JsonData)
|
|
{
|
|
// Colspan = "~"+ item .BatchCode+ "~~~~~~~~~~~~";
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version + "~" + item.Brand + "~" + item.cFree1 + "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4 + "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7 + "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, item.WorkPoint);
|
|
object ExtensionID = DBHelper.ExecuteScalar(sqls, cmd);
|
|
string sqlByMo = string.Format(@" select ID from ICSMO where MOCode='{0}' and Sequence='{1}' and WorkPoint='{2}'", item.Code, item.Sequence, item.WorkPoint);
|
|
object MoID = DBHelper.ExecuteScalar(sqlByMo, cmd);
|
|
if (MoID.ToString() == "" || MoID == null)
|
|
{
|
|
throw new Exception("接口调用失败:未查询到相关工单!");
|
|
}
|
|
|
|
bool flag = true;
|
|
foreach (var items in ExtensionIDList)
|
|
{
|
|
if (items == Colspan + item.WorkPoint)
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
if (ExtensionID == null && flag == true)
|
|
{
|
|
str1 = Guid.NewGuid().ToString();
|
|
sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
|
|
str1, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.MUSER, item.MUSERName, item.WorkPoint);
|
|
}
|
|
else if (ExtensionID != null)
|
|
{
|
|
str1 = ExtensionID.ToString();
|
|
}
|
|
ExtensionIDList.Add(Colspan + item.WorkPoint);
|
|
sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
|
|
Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}','{6}' )",
|
|
item.LotNo, item.Code, item.Sequence, item.MUSER, item.MUSERName, item.WorkPoint, MoID);
|
|
sql += string.Format(@" insert into ICSInventoryLot
|
|
(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
|
|
Values(newid(),'{0}','{1}','{2}','{3}','{4}','{5}','3','{6}','{7}',getdate(),'{8}','{9}','{10}','{11}','{12}' ,'{13}','{14}' ,'{15}','{16}','{17}','{18}')",
|
|
item.LotNo, item.InvCode, item.ProductDate, item.ExpirationDate, item.Quantity, str1, item.MUSER, item.MUSERName, item.WorkPoint, item.Amount
|
|
, item.EATTRIBUTE2, item.EATTRIBUTE3, item.EATTRIBUTE4, item.EATTRIBUTE5, item.EATTRIBUTE6, item.EATTRIBUTE7, item.EATTRIBUTE8, item.EATTRIBUTE9, item.EATTRIBUTE10);
|
|
sql += "\r\n";
|
|
|
|
|
|
}
|
|
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#region 先进先出密码校验
|
|
public static DataTable CheckPassWord(Sys_SRM_User userModel)
|
|
{
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
DataTable dt = null;
|
|
string sql = @"select b.F_Id from Sys_SRM_Items a
|
|
inner join Sys_SRM_ItemsDetail b on a.F_id=b.F_ItemId
|
|
where F_encode='FIFOPW' and F_Define1='{0}' and b.F_EnabledMark=1";//已经启用的账号
|
|
sql = string.Format(sql, userModel.PassWord);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt != null && dt.Rows.Count > 0)//查询的数据不为空
|
|
{
|
|
return dt;
|
|
}
|
|
else
|
|
{
|
|
return dt;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 登陆
|
|
public static object CheckLogin(Sys_SRM_User userModel)
|
|
{
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = @"select F_Account from Sys_SRM_User where F_Account='{0}' and F_Location='{1}' and F_EnabledMark='1'";//已经启用的账号
|
|
sql = string.Format(sql, userModel.UserCode, userModel.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt != null && dt.Rows.Count > 0)//查询的数据不为空
|
|
{
|
|
sql = @" select a.[F_Id] as UserId
|
|
,[F_Account] as userCode
|
|
,[F_RealName] as UserName
|
|
,[F_NickName]
|
|
,b.F_UserPassword
|
|
,b.F_UserSecretkey
|
|
,[F_HeadIcon]
|
|
,[F_Gender]
|
|
,[F_Birthday]
|
|
,[F_MobilePhone]
|
|
,[F_Email]
|
|
,[F_WeChat]
|
|
,[F_ManagerId]
|
|
,[F_SecurityLevel]
|
|
,[F_Signature]
|
|
,[F_OrganizeId]
|
|
,[F_DepartmentId]
|
|
,[F_RoleId]
|
|
,[F_DutyId]
|
|
,[F_IsAdministrator]
|
|
,[F_SortCode]
|
|
,[F_DeleteMark]
|
|
,[F_EnabledMark]
|
|
,[F_Description]
|
|
,[F_CreatorTime]
|
|
,[F_CreatorUserId]
|
|
,[F_LastModifyTime]
|
|
,[F_LastModifyUserId]
|
|
,[F_DeleteTime]
|
|
,[F_DeleteUserId]
|
|
,[F_Location] as WorkPoint
|
|
,[F_VenCode]
|
|
from Sys_SRM_User a
|
|
left join Sys_SRM_UserLogOn b on b.F_UserId=a.F_Id
|
|
where F_Account='{0}' and F_Location='{1}' and F_EnabledMark='1'";
|
|
sql = string.Format(sql, userModel.UserCode, userModel.WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
IList<UserLogOnEntity> users = DBHelper.ModelConvertHelper<UserLogOnEntity>.ConvertToModel(dt);
|
|
// string dbPassword = Md5.md5(DESEncrypt.Encrypt(userModel.F_UserPassword.ToLower(), item.F_UserSecretkey.ToLower()).ToLower(), 32).ToLower();
|
|
foreach (var item in users)
|
|
{
|
|
//string UserPassword = Md5.md5(DESEncrypt.Encrypt(userModel.F_UserPassword.ToLower()),16).ToLower();
|
|
|
|
string dbPassword = Md5.md5(DESEncrypt.Encrypt(userModel.UserPassword.ToLower(), item.F_UserSecretkey.ToLower()).ToLower(), 32).ToLower();
|
|
if (dbPassword == item.F_UserPassword)
|
|
{
|
|
string json = JsonConvert.SerializeObject(dt);
|
|
List<Sys_SRM_User> userLogOnEntity = JsonConvert.DeserializeObject<List<Sys_SRM_User>>(json);
|
|
return userLogOnEntity;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPI004"));//"密码不正确,请重新输入");
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPI005"));//"用户名不存在,请重新输入!");
|
|
}
|
|
return null;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 获取调拨单
|
|
/// <summary>
|
|
/// 获取未发,未发完调拨单
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable TransCodemationGet(TransferDoc JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string Workpoint = "";
|
|
Workpoint = JsonData.WorkPoint;
|
|
|
|
string sql = @"SELECT DISTINCT TransferNO as TransCode FROM ICSTransferApplication
|
|
WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by TransferNO desc";
|
|
sql = string.Format(sql, Workpoint);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
/// u9现存量
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable U9WHQtyGet(ICSLocation JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
DataTable data = null;
|
|
|
|
var inputData = new
|
|
{
|
|
InvCode = JsonData.InvCode,
|
|
WorkPoint = JsonData.WorkPoint,
|
|
BatchCode = JsonData.BatchCode
|
|
};
|
|
string Inputstr = JsonConvert.SerializeObject(inputData);
|
|
string resultStr = HTTPHelper.HttpPost("U9现存量查询", ERPUrl.GetU9WHQty, Inputstr);
|
|
Result result = new Result();
|
|
result = JsonConvert.DeserializeObject<Result>(resultStr);
|
|
if (result.Success && (string)result.Data != "{\"Table1\":[]}")
|
|
{
|
|
var jsonObject = JsonConvert.DeserializeObject<JObject>(result.Data.ToString());
|
|
var table1Array = jsonObject["Table1"];
|
|
data = table1Array.ToObject<DataTable>();
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("u9现存量查询失败!");
|
|
}
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#region 源头单据信息(佑伦专用)
|
|
/// <summary>
|
|
/// 源头单据信息(佑伦专用)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable YLTransInformationGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region SLQ
|
|
string sqlCheck = @"IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {2})
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo035") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
string sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
{4}
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WHCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
|
|
string Picksql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
|
|
c.Code,
|
|
c.InvCode,
|
|
c.InvName,
|
|
c.InvStd,
|
|
c.InvUnit,
|
|
FLOOR(c.iQuantity) AS iQuantity,
|
|
d.WarehouseCode,
|
|
d.LocationCode,
|
|
d.LotNO,
|
|
FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
|
|
CONVERT(varchar(100),d.MTIME, 23) MTIME,
|
|
FLOOR(f.QTYTotal) QTYTotal INTO #temp
|
|
FROM
|
|
({0}) c
|
|
LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND ((LEN(ISNULL(c.WHCode,''))<=0) OR (LEN(ISNULL(c.WHCode,''))>0) AND c.WhCode=d.WarehouseCode) AND d.WorkPoint='{1}' AND d.Quantity>0
|
|
left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
|
|
LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
|
|
|
|
|
|
DECLARE @ItemCode VARCHAR(50),
|
|
@QTY DECIMAL(18,3),
|
|
@ItemCodeCurrent VARCHAR(50),
|
|
@QTYCurrent DECIMAL(18,3),
|
|
@iQuantityCurrent DECIMAL(18,3),
|
|
@CanDelete BIT,
|
|
@Row INT,
|
|
@rowCurrent INT
|
|
SET @Row = @@rowcount
|
|
SET @rowCurrent=1
|
|
SET @CanDelete=0
|
|
SET @ItemCode=''
|
|
|
|
WHILE @rowCurrent<=@Row
|
|
BEGIN
|
|
SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
|
|
|
|
PRINT(@rowCurrent)
|
|
IF @ItemCode<>@ItemCodeCurrent
|
|
BEGIN
|
|
SET @ItemCode=@ItemCodeCurrent
|
|
SET @QTY=0
|
|
SET @CanDelete=0
|
|
END
|
|
|
|
IF @CanDelete=1
|
|
BEGIN
|
|
DELETE FROM #temp WHERE rowNo=@rowCurrent
|
|
SET @rowCurrent += 1
|
|
CONTINUE
|
|
END
|
|
|
|
SET @QTY += @QTYCurrent
|
|
IF @QTY>=@iQuantityCurrent
|
|
BEGIN
|
|
SET @CanDelete=1
|
|
END
|
|
|
|
SET @rowCurrent += 1
|
|
END
|
|
SELECT * FROM #temp
|
|
DROP TABLE #temp
|
|
";
|
|
#endregion
|
|
|
|
bool isDeliveryNotice = false; //送货、到货、含委外
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
bool isMerge = false; //合并发料
|
|
string columnsMerge = string.Empty; //合并发料查询源头单据表的特殊列名
|
|
string tableNameMerge = string.Empty; //合并发料查询源头单据表名
|
|
string sqls = string.Empty;
|
|
string sqlCheckSign = "";
|
|
DataTable flag = null;
|
|
|
|
#region 检料表信息
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over001";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单备料sql
|
|
sqls = @" SELECT
|
|
c.MOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
b.InvUnit,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOPick a
|
|
inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
enableCode = "Over002";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
enableCode = "Over003";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over004";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外备料SQL
|
|
sqls = @" select
|
|
c.OOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOOPick a
|
|
left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
enableCode = "Over005";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
//enableCode = "Over006";
|
|
excessQtySql = "";
|
|
#region 委外材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 销售发货SQL
|
|
sqls = @" select
|
|
a.SDNCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSSDN a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 其它出库SQL
|
|
sqls = @" select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOtherOut a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 借用SQL
|
|
sqls = @"select
|
|
a.BrrowCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSBrrow a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 物料调拨
|
|
sqls = @" select
|
|
a.TransferNO as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.FromWarehouseCode as WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSTransfer a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 两步调出
|
|
sqls = @"select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WHCode ,
|
|
a.ExtensionID
|
|
from ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 出库
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.DNCode AS TransCode,
|
|
a.DNDetailID AS DetailID,
|
|
a.DNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.DNCode='{0}' AND a.WorkPoint='{1}' AND a.DNType='2' ";
|
|
}
|
|
#endregion
|
|
#region 委外发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode004' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.OOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.PickID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.OOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.OOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' ";
|
|
}
|
|
#endregion
|
|
#region 委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.ODNCode AS TransCode,
|
|
a.ODNDetailID AS DetailID,
|
|
a.ODNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSODeliveryNotice a ";
|
|
|
|
where = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.ODNType='2' ";
|
|
}
|
|
#endregion
|
|
#region 生产发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode001' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
ISNULL(a.EATTRIBUTE2,'') AS JIGOU,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.PickID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
ISNULL(a.EATTRIBUTE2,'') AS JIGOU,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1'";
|
|
}
|
|
#endregion
|
|
#region 销售出库(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode007' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.SDNQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSDN a
|
|
INNER JOIN ICSMOPickMerge mer ON a.SDNDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.SDNQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' ";
|
|
}
|
|
#endregion
|
|
#region 盘点
|
|
else if (TransType == TransTypeEnum.Check.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
a.Quantity,
|
|
a.SelectLevel AS LocationCode,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.CheckCode AS TransCode,
|
|
a.ID,
|
|
'' AS Type,";
|
|
|
|
tableName = @"ICSCheck a ";
|
|
|
|
where = @" a.CheckCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 一步调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode009' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableNameMerge = @"ICSTransfer a
|
|
INNER JOIN ICSMOPickMerge mer ON a.TransferDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' ";
|
|
}
|
|
#endregion
|
|
#region 调拨申请单(领料)
|
|
else if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableNameMerge = @"ICSTransferApplication a
|
|
INNER JOIN ICSMOPickMerge mer ON a.TransferDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableName = @"ICSTransferApplication a ";
|
|
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' ";
|
|
}
|
|
#endregion
|
|
#region 调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.StepTransferDocIn.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 两步调出(合并发料)
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode010' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.OutDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 其他出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSMOPickMerge mer ON a.OutDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode002' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOApply a ";
|
|
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 补料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode012' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOReplenishment a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ReplenishmentCode AS TransCode,
|
|
a.ReplenishmentDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOReplenishment a ";
|
|
|
|
where = @" a.ReplenishmentCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode005' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOApply a ";
|
|
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 开立材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode003' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.IssueDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode006' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.IssueDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSPurchaseReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' ";
|
|
}
|
|
#endregion
|
|
#region 开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOutsourcingReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' ";
|
|
}
|
|
#endregion
|
|
#region 借用(合并发料)
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode011' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.BrrowQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSBrrow a
|
|
INNER JOIN ICSMOPickMerge mer ON a.BrrowDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.BrrowQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSBrrow a ";
|
|
|
|
where = @" a.BrrowCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 送货单
|
|
else if (TransType == TransTypeEnum.ASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.ASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
asn.DNQuantity AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint ";
|
|
|
|
where = @" asn.ASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 委外送货单
|
|
else if (TransType == TransTypeEnum.OASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.OASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
asn.ODNQuantity AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSOASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint ";
|
|
|
|
where = @" asn.OASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
#region 入库
|
|
#region 采购入库
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
{//扫描到货单 带出检验合格条码数量 且不再库存的条码 --东辉扫描到货单入库 cjw
|
|
isDeliveryNotice = true;
|
|
columns = @"DN.DNCode AS TransCode,
|
|
ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
a.LotNo,
|
|
'' AS Type,
|
|
DN.Sequence AS TransSequence,
|
|
DN.DNQuantity AS IssueQuantity,
|
|
DN.Quantity,
|
|
DN.MUSER AS [User],
|
|
DN.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
inner join ICSInventoryLotDetail det on a.lotno = det.lotno AND a.WorkPoint=det.WorkPoint
|
|
inner join ICSDeliveryNotice on DN.DNCode= det.TransCode and DN.Sequence = det.TransSequence aND DN.WorkPoint=det.WorkPoint AND DN.DNTYPE =1
|
|
inner join ICSInspection ins on INS.lotno = a.lotno and a.workpoint = ins.workpoint
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo on a.lotno = lotinfo.lotno AND a.WorkPoint=lotinfo.WorkPoint
|
|
";
|
|
|
|
where = @" DN.DNCode='{0}' AND a.WorkPoint='{1}' and lotinfo.id is null ";
|
|
}
|
|
#endregion
|
|
#region 采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 两步调入
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @"a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.InQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherIn a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.InCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.SDNQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' ";
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 拆卸单
|
|
else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
columns = @"a.DABDOCCode AS TransCode,
|
|
a.DABDOCDetailID AS DetailID,
|
|
a.DABDOCType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.DABDOCQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSDisassemblyDoc a";
|
|
|
|
where = @" a.DABDOCCode='{0}' AND a.WorkPoint='{1}' AND a.DABDOCType='2' ";
|
|
}
|
|
#endregion
|
|
#region 归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#endregion
|
|
if (string.IsNullOrWhiteSpace(columns) || string.IsNullOrWhiteSpace(tableName) || string.IsNullOrWhiteSpace(where))
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));
|
|
#region 判断是否启用匹配库位
|
|
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
//if (true)
|
|
{
|
|
sql = @"select * into #maintemp from (" + sql + @")a
|
|
select * into #resulttemp from #maintemp
|
|
truncate table #resulttemp
|
|
select a.lotno,a.locationcode,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime,a.warehousecode,isnull(ext.ProjectCode,'')as ProjectCode, isnull(ext.Version,'')as Version,
|
|
isnull(ext.Brand,'')as Brand,
|
|
isnull(ext.cFree1,'')as cFree1,
|
|
isnull(ext.cFree2,'') cFree2,
|
|
isnull(ext.cFree3,'') cFree3,
|
|
isnull(ext.cFree4,'') cFree4,
|
|
isnull(ext.cFree5,'') cFree5,
|
|
isnull(ext.cFree6,'') cFree6,
|
|
isnull(ext.cFree7,'') cFree7,
|
|
isnull(ext.cFree8,'') cFree8,
|
|
isnull(ext.cFree9,'') cFree9,
|
|
isnull(ext.cFree10,'') cFree10,ISNULL(ext.BatchCode, '') BatchCode into #barcodetemp
|
|
from ICSWareHouseLotInfo a INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN
|
|
(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp
|
|
group by invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE) b on a.invcode = b.invcode
|
|
where (a.warehousecode = b.whcode or ISNULL(b.whcode,'')='') and a.Quantity-a.lockQuantity>0 and
|
|
|
|
isnull(ext.ProjectCode,'') = b.ProjectCode and isnull(ext.Version,'')=b.Version and
|
|
isnull(ext.Brand,'') =b.Brand and
|
|
isnull(ext.cFree1,'')=b.cFree1 and
|
|
isnull(ext.cFree2,'')=b.cFree2 and
|
|
isnull(ext.cFree3,'')=b.cFree3 and
|
|
isnull(ext.cFree4,'')=b.cFree4 and
|
|
isnull(ext.cFree5,'')=b.cFree5 and
|
|
isnull(ext.cFree6,'')=b.cFree6 and
|
|
isnull(ext.cFree7,'')=b.cFree7 and
|
|
isnull(ext.cFree8,'')=b.cFree8 and
|
|
isnull(ext.cFree9,'')=b.cFree9 and
|
|
isnull(ext.cFree10,'')=b.cFree10 and
|
|
((isnull(b.BatchCode,'')<>'' and b.BatchCode =ext.BatchCode) or isnull(b.BatchCode,'') ='')
|
|
|
|
BEGIN
|
|
DECLARE @transSequence VARCHAR(50);--当前循环的行号
|
|
DECLARE @qty decimal(18, 4);--条码表数量
|
|
DECLARE @needqty decimal(18, 4);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--本行所需数量
|
|
DECLARE @locationcode VARCHAR(50);--本行所在库位
|
|
DECLARE @WHCode VARCHAR(50);--本行所在仓库
|
|
DECLARE @invcode VARCHAR(50);--本行条码
|
|
DECLARE @issueQuantity decimal(18, 4);
|
|
DECLARE tempCursor CURSOR FOR (select transSequence from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity,@issueQuantity=issueQuantity from #maintemp where transSequence = @transSequence
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(a.quantity,0), @locationcode = isnull(a.locationcode,''),@lotno = isnull(a.lotno,''),@WHCode = isnull(a.warehousecode,''),@invcode = b.invcode from #barcodetemp a
|
|
right JOIN(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp where transSequence=@transSequence)b on a.invcode = b.invcode
|
|
and ((isnull(b.ProjectCode,'')<>'' and b.ProjectCode = a.ProjectCode) or isnull(b.ProjectCode,'') ='') and
|
|
((isnull(b.Version,'')<>'' and b.Version = a.Version) or isnull(b.Version,'') ='') and
|
|
((isnull(b.Brand,'')<>'' and b.Brand = a.Brand )or isnull(b.Brand,'') ='') and
|
|
((isnull(b.cFree1,'')<>'' and b.cFree1 =a.cFree1) or isnull(b.cFree1,'') ='') and
|
|
((isnull(b.cFree2,'')<>'' and b.cFree2 =a.cFree2 )or isnull(b.cFree2,'') ='') and
|
|
((isnull(b.cFree3,'')<>'' and b.cFree3 =a.cFree3 )or isnull(b.cFree3,'') ='') and
|
|
((isnull(b.cFree4,'')<>'' and b.cFree4 =a.cFree4 )or isnull(b.cFree4,'') ='') and
|
|
((isnull(b.cFree5,'')<>'' and b.cFree5 =a.cFree5) or isnull(b.cFree5,'') ='') and
|
|
((isnull(b.cFree6,'')<>'' and b.cFree6 =a.cFree6 )or isnull(b.cFree6,'') ='') and
|
|
((isnull(b.cFree7,'')<>'' and b.cFree7 =a.cFree7) or isnull(b.cFree7,'') ='') and
|
|
((isnull(b.cFree8,'')<>'' and b.cFree8 =a.cFree8) or isnull(b.cFree8,'') ='') and
|
|
((isnull(b.cFree9,'')<>'' and b.cFree9 =a.cFree9) or isnull(b.cFree9,'') ='') and
|
|
((isnull(b.cFree10,'')<>'' and b.cFree10 =a.cFree10) or isnull(b.cFree10,'') ='') and
|
|
((isnull(b.BatchCode,'')<>'' and b.BatchCode =a.BatchCode) or isnull(b.BatchCode,'') ='')ORDER BY mtime,locationcode
|
|
IF(@needqty-@issueQuantity-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],[MTime],InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),@qty,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE if(@needqty-@issueQuantity-@qty<0 and ISNULL(@lotno, '')<>''and @needqty-@issueQuantity>0)
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],[MTime],InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),case WHEN ISNULL(@qty, 0)=0 THEN 0 else @needqty-@issueQuantity end ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
update #barcodetemp set quantity = @qty-@needqty+-@issueQuantity where lotno = @lotno
|
|
SET @needqty=@needqty-@issueQuantity-@qty
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],[MTime],InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),0 ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
|
|
SET @needqty=0
|
|
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
|
|
select id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,sum(LocationQty)as LocationQty,isMatched,AmountUnit,--lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #resulttemp GROUP BY id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,isMatched,AmountUnit,--lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ORDER BY locationcode ASC ,InvCode ASC
|
|
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
}
|
|
#endregion
|
|
if (isDeliveryNotice)//送货、到货、含委外
|
|
{
|
|
#region SLQ
|
|
sql = sqlCheck + @"SELECT a.ID,
|
|
{0}
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
'' AS WHCode,
|
|
inv.AmountUnit,
|
|
'' AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN ISNULL(inv.BatchEnable, '0')='1' THEN ext.BatchCode ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
}
|
|
else if (isMerge)//合并发料
|
|
{
|
|
#region SLQ
|
|
string sqlMerge = "SELECT ID FROM ICSMOPickMerge WHERE MergeID='" + JsonData.TransCode + "' AND WorkPoint='" + JsonData.WorkPoint + "'";
|
|
|
|
DataTable sign = DBHelper.SQlReturnData(sqlMerge, cmd);
|
|
if (sign != null && sign.Rows.Count > 0)
|
|
{
|
|
string whereMerge = string.Format("mer.MergeID='{0}' AND mer.WorkPoint='{1}'", JsonData.TransCode, JsonData.WorkPoint);
|
|
sql = string.Format(sql, columnsMerge, tableNameMerge, whereMerge, JsonData.TransCode, excessQtySql);
|
|
}
|
|
else
|
|
{
|
|
sql = @" BEGIN
|
|
IF EXISTS(SELECT a.ID FROM {1} INNER JOIN ICSMOPickMerge c ON a.ID=c.SourceID AND a.WorkPoint=c.WorkPoint WHERE {2})
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo194") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sqlCheck + sql + @"
|
|
END";
|
|
}
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
sql = sqlCheck + sql;
|
|
}
|
|
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint);
|
|
sql = string.Format(sql, columns, tableName, where, JsonData.TransCode, excessQtySql);
|
|
|
|
sqls = string.Format(sqls, JsonData.TransCode, JsonData.WorkPoint);
|
|
Picksql = string.Format(Picksql, sqls, JsonData.WorkPoint);
|
|
|
|
//DataTable table2 = DBHelper.SQlReturnData(Picksql, cmd);
|
|
//return table2;
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 源头单据信息(奥美专用)
|
|
/// <summary>
|
|
/// 源头单据信息(奥美专用)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMTransInformationGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region SLQ
|
|
string sqlCheck = @"IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {2})
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo035") + @"',16,1);
|
|
RETURN
|
|
END
|
|
";
|
|
string sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
{4}
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WHCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
|
|
string Picksql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
|
|
c.Code,
|
|
c.InvCode,
|
|
c.InvName,
|
|
c.InvStd,
|
|
c.InvUnit,
|
|
FLOOR(c.iQuantity) AS iQuantity,
|
|
d.WarehouseCode,
|
|
d.LocationCode,
|
|
d.LotNO,
|
|
FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
|
|
CONVERT(varchar(100),d.MTIME, 23) MTIME,
|
|
FLOOR(f.QTYTotal) QTYTotal INTO #temp
|
|
FROM
|
|
({0}) c
|
|
LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND ((LEN(ISNULL(c.WHCode,''))<=0) OR (LEN(ISNULL(c.WHCode,''))>0) AND c.WhCode=d.WarehouseCode) AND d.WorkPoint='{1}' AND d.Quantity>0
|
|
left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
|
|
LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
|
|
|
|
|
|
DECLARE @ItemCode VARCHAR(50),
|
|
@QTY DECIMAL(18,3),
|
|
@ItemCodeCurrent VARCHAR(50),
|
|
@QTYCurrent DECIMAL(18,3),
|
|
@iQuantityCurrent DECIMAL(18,3),
|
|
@CanDelete BIT,
|
|
@Row INT,
|
|
@rowCurrent INT
|
|
SET @Row = @@rowcount
|
|
SET @rowCurrent=1
|
|
SET @CanDelete=0
|
|
SET @ItemCode=''
|
|
|
|
WHILE @rowCurrent<=@Row
|
|
BEGIN
|
|
SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
|
|
|
|
PRINT(@rowCurrent)
|
|
IF @ItemCode<>@ItemCodeCurrent
|
|
BEGIN
|
|
SET @ItemCode=@ItemCodeCurrent
|
|
SET @QTY=0
|
|
SET @CanDelete=0
|
|
END
|
|
|
|
IF @CanDelete=1
|
|
BEGIN
|
|
DELETE FROM #temp WHERE rowNo=@rowCurrent
|
|
SET @rowCurrent += 1
|
|
CONTINUE
|
|
END
|
|
|
|
SET @QTY += @QTYCurrent
|
|
IF @QTY>=@iQuantityCurrent
|
|
BEGIN
|
|
SET @CanDelete=1
|
|
END
|
|
|
|
SET @rowCurrent += 1
|
|
END
|
|
SELECT * FROM #temp
|
|
DROP TABLE #temp
|
|
";
|
|
#endregion
|
|
|
|
bool isDeliveryNotice = false; //送货、到货、含委外
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
bool isMerge = false; //合并发料
|
|
string columnsMerge = string.Empty; //合并发料查询源头单据表的特殊列名
|
|
string tableNameMerge = string.Empty; //合并发料查询源头单据表名
|
|
string sqls = string.Empty;
|
|
string sqlCheckSign = "";
|
|
DataTable flag = null;
|
|
|
|
#region 检料表信息
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over001";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单备料sql
|
|
sqls = @" SELECT
|
|
c.MOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
b.InvUnit,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOPick a
|
|
inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
enableCode = "Over002";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 工单领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
//enableCode = "Over003";
|
|
excessQtySql = "";
|
|
#region 工单材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSMOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
enableCode = "Over004";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外备料SQL
|
|
sqls = @" select
|
|
c.OOCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOOPick a
|
|
left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
enableCode = "Over005";
|
|
excessQtySql = ",(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'" + enableCode + "',2,2,inv.ID)) AS excessQty";
|
|
#region 委外领料SQL
|
|
sqls = @" select
|
|
a.ApplyCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOApply a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
//enableCode = "Over006";
|
|
excessQtySql = "";
|
|
#region 委外材料出库SQL
|
|
sqls = @" select
|
|
a.IssueCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOIssue a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 销售发货SQL
|
|
sqls = @" select
|
|
a.SDNCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSSDN a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 其它出库SQL
|
|
sqls = @" select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSOtherOut a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 借用SQL
|
|
sqls = @"select
|
|
a.BrrowCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSBrrow a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 物料调拨
|
|
sqls = @" select
|
|
a.TransferNO as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.FromWarehouseCode as WhCode,
|
|
a.ExtensionID
|
|
FROM
|
|
ICSTransfer a
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
enableCode = "";
|
|
excessQtySql = "";
|
|
#region 两步调出
|
|
sqls = @"select
|
|
a.OutCode as Code,
|
|
a.InvCode,
|
|
|
|
b.InvName,
|
|
b.InvStd,
|
|
b.InvUnit,
|
|
SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
|
|
a.WHCode ,
|
|
a.ExtensionID
|
|
from ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
|
|
GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
|
|
#endregion
|
|
}
|
|
#endregion
|
|
#region 出库
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.DNCode AS TransCode,
|
|
a.DNDetailID AS DetailID,
|
|
a.DNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.DNCode='{0}' AND a.WorkPoint='{1}' AND a.DNType='2' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
//#region 工单关联
|
|
//else if (TransType == TransTypeEnum.ICSMOReceive.GetDescription())
|
|
//{
|
|
// isDeliveryNotice = true;
|
|
// columns = @"a.MOCode AS TransCode,
|
|
// a.Sequence AS TransSequence,";
|
|
|
|
// tableName = @"ICSMO a ";
|
|
|
|
// where = @" a.MOCode='{0}' AND a.WorkPoint='{1}' and a.ERPStatus<>'3'";
|
|
//}
|
|
//#endregion
|
|
#region 委外发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode004' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.OOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.PickID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"b.OOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL((select Sum(log.Quantity) from ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder m ON a.OODetailID=m.OODetailID AND a.WorkPoint=m.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log on m.oocode=log.transcode and m.Sequence=log.TransSequence
|
|
where m.oocode=b.oocode and m.Sequence=b.Sequence and log.TransType='15'),0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" b.OOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"a.ODNCode AS TransCode,
|
|
a.ODNDetailID AS DetailID,
|
|
a.ODNType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,
|
|
a.Quantity,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSODeliveryNotice a ";
|
|
|
|
where = @" a.ODNCode='{0}' AND a.WorkPoint='{1}' AND a.ODNType='2' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 生产发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode001' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.PickID=mer.SourceID AND a.WorkPoint=mer.WorkPoint
|
|
INNER JOIN ICSDepartment c on b.DepCode=c.DepCode and b.WorkPoint=c.WorkPoint";
|
|
|
|
columns = @"b.MOCode AS TransCode,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL((select Sum(log.Quantity) from ICSMOPick a
|
|
INNER JOIN ICSMO m ON a.MODetailID=m.MODetailID AND a.WorkPoint=m.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log on m.mocode=log.transcode and m.Sequence=log.TransSequence
|
|
where m.mocode=b.mocode and m.Sequence=b.Sequence and log.TransType='15'),0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSDepartment dd on b.DepCode=dd.DepCode and b.WorkPoint=dd.WorkPoint";
|
|
|
|
where = @" b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1' AND b.Sequence+'~'+a.Sequence='{3}' AND dd.DepName =(SELECT SUBSTRING(F_RealName, 1, 2) FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')";
|
|
}
|
|
#endregion
|
|
#region 销售出库(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode007' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.SDNQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSSDN a
|
|
INNER JOIN ICSMOPickMerge mer ON a.SDNDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.SOCode,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
ISNULL((select Sum(b.Quantity) from ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog b on sdn.sdncode=b.transcode and sdn.Sequence=b.TransSequence
|
|
where sdn.sdncode=a.sdncode and sdn.Sequence=a.Sequence and b.TransType='15'),0) AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 盘点
|
|
else if (TransType == TransTypeEnum.Check.GetDescription())
|
|
{
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
a.Quantity,
|
|
a.SelectLevel AS LocationCode,
|
|
a.Amount,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.CheckCode AS TransCode,
|
|
a.ID,
|
|
'' AS Type,";
|
|
|
|
tableName = @"ICSCheck a ";
|
|
|
|
where = @" a.CheckCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 一步调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode009' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableNameMerge = @"ICSTransfer a
|
|
INNER JOIN ICSMOPickMerge mer ON a.TransferDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 调拨申请单(领料)
|
|
else if (TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription())
|
|
{
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableNameMerge = @"ICSTransferApplication a
|
|
INNER JOIN ICSMOPickMerge mer ON a.TransferDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
#region SLQ
|
|
sql = @"SELECT a.ID,
|
|
{0}
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.FromWarehouseCode AS WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
|
|
columns = @"a.TransferNO AS TransCode,
|
|
a.TransferDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.TransferQuantity AS IssueQuantity,
|
|
a.ToWarehouseCode,";
|
|
|
|
tableName = @"ICSTransferApplication a ";
|
|
|
|
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.StepTransferDocIn.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 两步调出(合并发料)
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode010' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSMOPickMerge mer ON a.OutDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 其他出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode008' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOtherOut a
|
|
INNER JOIN ICSMOPickMerge mer ON a.OutDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.OutCode AS TransCode,
|
|
a.OutDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.OutQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherOut a ";
|
|
|
|
where = @" a.OutCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode002' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOApply a ";
|
|
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 补料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode012' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOReplenishment a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ReplenishmentCode AS TransCode,
|
|
a.ReplenishmentDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOReplenishment a ";
|
|
|
|
where = @" a.ReplenishmentCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode005' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOApply a
|
|
INNER JOIN ICSMOPickMerge mer ON a.ID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.ApplyCode AS TransCode,
|
|
a.ApplyDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOApply a ";
|
|
|
|
where = @" a.ApplyCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 开立材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode003' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSMOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.IssueDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSMOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode006' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSOIssue a
|
|
INNER JOIN ICSMOPickMerge mer ON a.IssueDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.IssueCode AS TransCode,
|
|
a.IssueDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOIssue a ";
|
|
|
|
where = @" a.IssueCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSPurchaseReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
columns = @"a.RCVCode AS TransCode,
|
|
a.RCVDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.RCVQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOutsourcingReceive a ";
|
|
|
|
where = @" a.RCVCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 借用(合并发料)
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
sqlCheckSign = @"select * from ICSConfiguration where code = 'OutWithLocationCode011' and enable = '1'";
|
|
flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
isMerge = true;
|
|
columnsMerge = @"mer.MergeID+'~'+a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.BrrowQuantity AS IssueQuantity,";
|
|
|
|
tableNameMerge = @"ICSBrrow a
|
|
INNER JOIN ICSMOPickMerge mer ON a.BrrowDetailID=mer.SourceID AND a.WorkPoint=mer.WorkPoint";
|
|
|
|
columns = @"a.BrrowCode AS TransCode,
|
|
a.BrrowDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.BrrowQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSBrrow a ";
|
|
|
|
where = @" a.BrrowCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 送货单
|
|
else if (TransType == TransTypeEnum.ASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.ASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
asn.DNQuantity AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint ";
|
|
|
|
where = @" asn.ASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#region 委外送货单
|
|
else if (TransType == TransTypeEnum.OASN.GetDescription())
|
|
{
|
|
isDeliveryNotice = true;
|
|
columns = @"asn.OASNCode AS TransCode,
|
|
asn.ID AS DetailID,
|
|
asn.LotNo,
|
|
'' AS Type,
|
|
asn.Sequence AS TransSequence,
|
|
asn.ODNQuantity AS IssueQuantity,
|
|
asn.Quantity,
|
|
asn.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
asn.MUSER AS [User],
|
|
asn.MTIME AS [MTime],";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSOASNDetail asn ON a.LotNo=asn.LotNo AND a.WorkPoint=asn.WorkPoint ";
|
|
|
|
where = @" asn.OASNCode='{0}' AND a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
#region 入库
|
|
#region 采购入库
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 两步调入
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @"a.InCode AS TransCode,
|
|
a.InDetailID AS DetailID,
|
|
'' AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.InQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSOtherIn a
|
|
INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint ";
|
|
|
|
where = @" a.InCode='{0}' AND a.WorkPoint='{1}' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
columns = @"a.SDNCode AS TransCode,
|
|
a.SDNDetailID AS DetailID,
|
|
a.Type,
|
|
a.Sequence AS TransSequence,
|
|
a.SDNQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.SDNCode='{0}' AND a.WorkPoint='{1}' AND a.Type='2' AND a.Status<>'3'";
|
|
}
|
|
#endregion
|
|
#region 其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#region 拆卸单
|
|
else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
columns = @"a.DABDOCCode AS TransCode,
|
|
a.DABDOCDetailID AS DetailID,
|
|
a.DABDOCType AS Type,
|
|
a.Sequence AS TransSequence,
|
|
a.DABDOCQuantity AS IssueQuantity,";
|
|
|
|
tableName = @"ICSDisassemblyDoc a";
|
|
|
|
where = @" a.DABDOCCode='{0}' AND a.WorkPoint='{1}' AND a.DABDOCType='2' AND a.Status<>'3' ";
|
|
}
|
|
#endregion
|
|
#region 归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
}
|
|
#endregion
|
|
#endregion
|
|
if (string.IsNullOrWhiteSpace(columns) || string.IsNullOrWhiteSpace(tableName) || string.IsNullOrWhiteSpace(where))
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));
|
|
#region 判断是否启用匹配库位
|
|
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
//if (true)
|
|
{
|
|
sql = @"select * into #maintemp from (" + sql + @")a
|
|
select * into #resulttemp from #maintemp
|
|
truncate table #resulttemp
|
|
select a.lotno,a.locationcode,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime,a.warehousecode,isnull(ext.ProjectCode,'')as ProjectCode, isnull(ext.Version,'')as Version,
|
|
isnull(ext.Brand,'')as Brand,
|
|
isnull(ext.cFree1,'')as cFree1,
|
|
isnull(ext.cFree2,'') cFree2,
|
|
isnull(ext.cFree3,'') cFree3,
|
|
isnull(ext.cFree4,'') cFree4,
|
|
isnull(ext.cFree5,'') cFree5,
|
|
isnull(ext.cFree6,'') cFree6,
|
|
isnull(ext.cFree7,'') cFree7,
|
|
isnull(ext.cFree8,'') cFree8,
|
|
isnull(ext.cFree9,'') cFree9,
|
|
isnull(ext.cFree10,'') cFree10,ISNULL(ext.BatchCode, '') BatchCode into #barcodetemp
|
|
from ICSWareHouseLotInfo a INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN
|
|
(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp
|
|
group by invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE) b on a.invcode = b.invcode
|
|
where (a.warehousecode = b.whcode or ISNULL(b.whcode,'')='') and a.Quantity-a.lockQuantity>0 and
|
|
|
|
isnull(ext.ProjectCode,'') = b.ProjectCode and isnull(ext.Version,'')=b.Version and
|
|
isnull(ext.Brand,'') =b.Brand and
|
|
isnull(ext.cFree1,'')=b.cFree1 and
|
|
isnull(ext.cFree2,'')=b.cFree2 and
|
|
isnull(ext.cFree3,'')=b.cFree3 and
|
|
isnull(ext.cFree4,'')=b.cFree4 and
|
|
isnull(ext.cFree5,'')=b.cFree5 and
|
|
isnull(ext.cFree6,'')=b.cFree6 and
|
|
isnull(ext.cFree7,'')=b.cFree7 and
|
|
isnull(ext.cFree8,'')=b.cFree8 and
|
|
isnull(ext.cFree9,'')=b.cFree9 and
|
|
isnull(ext.cFree10,'')=b.cFree10 and
|
|
((isnull(b.BatchCode,'')<>'' and b.BatchCode =ext.BatchCode) or isnull(b.BatchCode,'') ='')
|
|
|
|
BEGIN
|
|
DECLARE @transSequence VARCHAR(50);--当前循环的行号
|
|
DECLARE @qty decimal(18, 4);--条码表数量
|
|
DECLARE @needqty decimal(18, 4);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--本行所需数量
|
|
DECLARE @locationcode VARCHAR(50);--本行所在库位
|
|
DECLARE @WHCode VARCHAR(50);--本行所在仓库
|
|
DECLARE @invcode VARCHAR(50);--本行条码
|
|
DECLARE @issueQuantity decimal(18, 4);
|
|
DECLARE tempCursor CURSOR FOR (select transSequence from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity,@issueQuantity=issueQuantity from #maintemp where transSequence = @transSequence
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(a.quantity,0), @locationcode = isnull(a.locationcode,''),@lotno = isnull(a.lotno,''),@WHCode = isnull(a.warehousecode,''),@invcode = b.invcode from #barcodetemp a
|
|
right JOIN(select invcode,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WHCODE from #maintemp where transSequence=@transSequence)b on a.invcode = b.invcode
|
|
and ((isnull(b.ProjectCode,'')<>'' and b.ProjectCode = a.ProjectCode) or isnull(b.ProjectCode,'') ='') and
|
|
((isnull(b.Version,'')<>'' and b.Version = a.Version) or isnull(b.Version,'') ='') and
|
|
((isnull(b.Brand,'')<>'' and b.Brand = a.Brand )or isnull(b.Brand,'') ='') and
|
|
((isnull(b.cFree1,'')<>'' and b.cFree1 =a.cFree1) or isnull(b.cFree1,'') ='') and
|
|
((isnull(b.cFree2,'')<>'' and b.cFree2 =a.cFree2 )or isnull(b.cFree2,'') ='') and
|
|
((isnull(b.cFree3,'')<>'' and b.cFree3 =a.cFree3 )or isnull(b.cFree3,'') ='') and
|
|
((isnull(b.cFree4,'')<>'' and b.cFree4 =a.cFree4 )or isnull(b.cFree4,'') ='') and
|
|
((isnull(b.cFree5,'')<>'' and b.cFree5 =a.cFree5) or isnull(b.cFree5,'') ='') and
|
|
((isnull(b.cFree6,'')<>'' and b.cFree6 =a.cFree6 )or isnull(b.cFree6,'') ='') and
|
|
((isnull(b.cFree7,'')<>'' and b.cFree7 =a.cFree7) or isnull(b.cFree7,'') ='') and
|
|
((isnull(b.cFree8,'')<>'' and b.cFree8 =a.cFree8) or isnull(b.cFree8,'') ='') and
|
|
((isnull(b.cFree9,'')<>'' and b.cFree9 =a.cFree9) or isnull(b.cFree9,'') ='') and
|
|
((isnull(b.cFree10,'')<>'' and b.cFree10 =a.cFree10) or isnull(b.cFree10,'') ='') and
|
|
((isnull(b.BatchCode,'')<>'' and b.BatchCode =a.BatchCode) or isnull(b.BatchCode,'') ='')ORDER BY mtime,locationcode
|
|
IF(@needqty-@issueQuantity-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotNo,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],[MTime],InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),@qty,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE if(@needqty-@issueQuantity-@qty<0 and ISNULL(@lotno, '')<>''and @needqty-@issueQuantity>0)
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],[MTime],InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),case WHEN ISNULL(@qty, 0)=0 THEN 0 else @needqty-@issueQuantity end ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
update #barcodetemp set quantity = @qty-@needqty+-@issueQuantity where lotno = @lotno
|
|
SET @needqty=@needqty-@issueQuantity-@qty
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
insert INTO #resulttemp (id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
Amount,[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,LocationQty,isMatched,AmountUnit,lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
ISNULL(Amount, 0),[User],[MTime],InvCode,InvName,ISNULL(InvStd, ''),InvUnit,isnull(@WHCode,''),isnull(ToWarehouseCode,''),isnull(@LocationCode,''),0 ,1,ISNULL(AmountUnit, ''),ISNULL(@lotno, ''),
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #maintemp where #maintemp.transSequence = @transSequence
|
|
|
|
SET @needqty=0
|
|
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
|
|
select id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,sum(LocationQty)as LocationQty,isMatched,AmountUnit,--lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from #resulttemp GROUP BY id,TransCode,DetailID,Type,TransSequence,IssueQuantity,Quantity,
|
|
[User],[MTime],InvCode,InvName,InvStd,InvUnit,WHCode,ToWarehouseCode,LocationCode,isMatched,AmountUnit,--lotno,
|
|
WHName,ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 ORDER BY locationcode ASC ,InvCode ASC
|
|
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
}
|
|
#endregion
|
|
if (isDeliveryNotice)//送货、到货、含委外
|
|
{
|
|
#region SLQ
|
|
sql = sqlCheck + @"SELECT a.ID,
|
|
{0}
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
'' AS WHCode,
|
|
inv.AmountUnit,
|
|
'' AS WHName,
|
|
a.ExtensionID,
|
|
ext.ProjectCode,
|
|
CASE WHEN ISNULL(inv.BatchEnable, '0')='1' THEN ext.BatchCode ELSE '' END AS BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10
|
|
FROM {1}
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE {2} ";
|
|
#endregion
|
|
}
|
|
else if (isMerge)//合并发料
|
|
{
|
|
#region SLQ
|
|
string sqlMerge = "SELECT ID FROM ICSMOPickMerge WHERE MergeID='" + JsonData.TransCode + "' AND WorkPoint='" + JsonData.WorkPoint + "'";
|
|
|
|
DataTable sign = DBHelper.SQlReturnData(sqlMerge, cmd);
|
|
if (sign != null && sign.Rows.Count > 0)
|
|
{
|
|
string whereMerge = string.Format("mer.MergeID='{0}' AND mer.WorkPoint='{1}'", JsonData.TransCode, JsonData.WorkPoint);
|
|
sql = string.Format(sql, columnsMerge, tableNameMerge, whereMerge, JsonData.TransCode, excessQtySql);
|
|
}
|
|
else
|
|
{
|
|
sql = @" BEGIN
|
|
IF EXISTS(SELECT a.ID FROM {1} INNER JOIN ICSMOPickMerge c ON a.ID=c.SourceID AND a.WorkPoint=c.WorkPoint WHERE {2})
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo194") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sqlCheck + sql + @"
|
|
END";
|
|
}
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
sql = sqlCheck + sql;
|
|
}
|
|
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint, JsonData.User, JsonData.TransSequence);
|
|
sql = string.Format(sql, columns, tableName, where, JsonData.TransCode, excessQtySql);
|
|
|
|
sqls = string.Format(sqls, JsonData.TransCode, JsonData.WorkPoint);
|
|
Picksql = string.Format(Picksql, sqls, JsonData.WorkPoint);
|
|
|
|
//DataTable table2 = DBHelper.SQlReturnData(Picksql, cmd);
|
|
//return table2;
|
|
log.Debug("源头单据信息sql:" + sql);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 所有未完成单据号
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable AMTransCodeGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
#region SLQ
|
|
//string sqlCheck = @"IF NOT EXISTS(SELECT a.ID FROM {1} WHERE {2})
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo035") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// ";
|
|
string sql = @"SELECT
|
|
{0}
|
|
FROM {1}
|
|
WHERE {2}
|
|
order by TransCode asc";
|
|
#endregion
|
|
|
|
bool isDeliveryNotice = false; //送货、到货、含委外
|
|
bool MOApplyWithBin = false; //生产领料-库位
|
|
bool OtherOutDocWithBin = false; //杂发-库位
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //查询源头单据的过滤条件
|
|
bool isMerge = false; //合并发料
|
|
string columnsMerge = string.Empty; //合并发料查询源头单据表的特殊列名
|
|
string tableNameMerge = string.Empty; //合并发料查询源头单据表名
|
|
#region 出库
|
|
#region 采购退货
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.DNCode AS TransCode";
|
|
|
|
tableName = @"ICSDeliveryNotice a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.DNType='2' AND a.Status='2' AND (a.Quantity-a.RCVQuantity)>0";
|
|
}
|
|
#endregion
|
|
#region 其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.OutCode AS TransCode";
|
|
|
|
tableName = @"ICSOtherOut a ";
|
|
|
|
where = @" a.Status='1' AND a.WorkPoint='{1}' and a.Quantity>a.OutQuantity";
|
|
}
|
|
#endregion
|
|
#region 一步调拨(合并发料)
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.TransferNO AS TransCode";
|
|
|
|
tableName = @"ICSTransfer a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status='1' AND a.Quantity>a.TransferQuantity AND Type='1'";
|
|
}
|
|
#endregion
|
|
#region 生产发料(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT b.MOCode AS TransCode";
|
|
|
|
tableName = @" ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSDepartment c on b.DepCode=c.DepCode and b.WorkPoint=c.WorkPoint";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1' and a.Quantity-a.IssueQuantity>0
|
|
AND c.DepName =(SELECT SUBSTRING(F_RealName, 1, 2) FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}') ";
|
|
}
|
|
#endregion
|
|
#region 开立材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.IssueCode AS TransCode";
|
|
|
|
tableName = @" ICSMOIssue a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' and a.Quantity-a.IssueQuantity>0";
|
|
}
|
|
#endregion
|
|
#region 生产发料-领料申请单
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.ApplyCode AS TransCode";
|
|
|
|
tableName = @" ICSMOApply a
|
|
INNER JOIN ICSMO b ON b.MOCode=a.SourceCode and a.SourceSequence = b.Sequence AND a.WorkPoint=b.WorkPoint";
|
|
|
|
where = @" a.Status='2' AND a.WorkPoint='{1}' and a.Quantity-a.IssueQuantity>0";
|
|
}
|
|
#endregion
|
|
#region 开立委外材料出库(合并发料)
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.IssueCode AS TransCode";
|
|
|
|
tableName = @" ICSOIssue a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' and a.Quantity-a.IssueQuantity>0";
|
|
}
|
|
#endregion
|
|
#region 委外领料申请单发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.ApplyCode AS TransCode";
|
|
|
|
tableName = @" ICSOApply a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Status<>'3' and a.Quantity-a.IssueQuantity>0";
|
|
}
|
|
#endregion
|
|
#region 委外发料(合并发料)
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT b.OOCode AS TransCode";
|
|
|
|
tableName = @" ICSOOPick a
|
|
INNER JOIN ICSOutsourcingOrder b ON a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.SupplyType='3' AND b.Status<>'3' and a.Quantity-a.IssueQuantity>0";
|
|
}
|
|
#endregion
|
|
#region 销售出库(合并发料)
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
columns = @" DISTINCT a.SDNCode AS TransCode";
|
|
|
|
tableName = @"ICSSDN a ";
|
|
|
|
where = @" a.WorkPoint='{1}' AND a.Type='1' AND a.Status<>'3' and a.Quantity-a.SDNQuantity>0";
|
|
}
|
|
#endregion
|
|
#region 盘点
|
|
else if (TransType == TransTypeEnum.Check.GetDescription())
|
|
{
|
|
|
|
columns = @" DISTINCT a.CheckCode AS TransCode";
|
|
|
|
tableName = @"ICSCheck a ";
|
|
|
|
where = @" a.WorkPoint='{1}' ";
|
|
}
|
|
#endregion
|
|
#endregion
|
|
#region 入库
|
|
#region 生产退料-材料出库单
|
|
if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
//比博一键退料需求(非基础版)
|
|
columns = @" DISTINCT a.ApplyNegCode AS TransCode";
|
|
|
|
tableName = @"ICSMOApplyNeg a inner join ICSMOApplyNegDetail b on a.ApplyNegCode=b.ApplyNegCode";
|
|
|
|
where = @" a.WorkPoint='{1}' AND (b.Quantity-b.IssueNegQuantity)>0";
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
where = string.Format(where, JsonData.TransCode, JsonData.WorkPoint, JsonData.User);
|
|
sql = string.Format(sql, columns, tableName, where, JsonData.TransCode);
|
|
log.Debug("源头单据sql : " + sql);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static Result AMBarCodeInformationGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
DataTable table = new DataTable();
|
|
DataTable ZLtable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string ScanType = DBHelper.ScanTypeCheck(JsonData.Code, JsonData.WorkPoint, cmd);
|
|
if (string.IsNullOrEmpty(JsonData.Code))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo002"));//"单据类型不能为空!"
|
|
}
|
|
else if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), JsonData.TransType))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
string sql = "";
|
|
string LotTypesql = "";
|
|
string Losql = "";
|
|
string sqlNew = "";
|
|
string LotType = "";
|
|
string UserName = "";
|
|
string UName = "";
|
|
bool iszl = false;
|
|
string zlqty = "0";
|
|
#region SLQ
|
|
if (TransType == TransTypeEnum.LocationSeatch.GetDescription())
|
|
{
|
|
//Losql = @"SELECT a.ID,
|
|
// con.ContainerCode,
|
|
// con.ContainerName,
|
|
// a.LotNo,
|
|
// a.InvCode,
|
|
// inv.InvName,
|
|
// inv.InvStd,
|
|
// inv.InvUnit,
|
|
// inv.LotEnable,
|
|
// {0}
|
|
// inv.AmountUnit,
|
|
// ext.ID AS ExtensionID,
|
|
// ext.ProjectCode,
|
|
// ext.Version,
|
|
// ext.Brand,
|
|
// ext.cFree1,
|
|
// ext.cFree2,
|
|
// ext.cFree3,
|
|
// ext.cFree4,
|
|
// ext.cFree5,
|
|
// ext.cFree6,
|
|
// ext.cFree7,
|
|
// ext.cFree8,
|
|
// ext.cFree9,
|
|
// ext.cFree10,
|
|
// a.MUSER AS [User],
|
|
// a.MTIME AS [MTime]
|
|
// FROM {1}
|
|
// LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
// LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
// INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
// WHERE a.Quantity>0 and a.WorkPoint='{3}'";
|
|
Losql = @" DECLARE @wheresql VARCHAR(MAX)
|
|
DECLARE @groupsql VARCHAR(MAX)
|
|
DECLARE @aa VARCHAR(MAX)
|
|
DECLARE @bb VARCHAR(MAX)
|
|
DECLARE @cc VARCHAR(MAX)
|
|
DECLARE @dd VARCHAR(MAX)
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
select @aa=id from ICSWareHouseLotInfo where LotNo='{2}'
|
|
IF @aa IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and a.lotno=''{2}'' and s.invcode IN(SELECT invcode FROM ICSWareHouseLotInfo where LotNo=''{2}'') and a.invcode=s.invcode '
|
|
set @groupsql=' group by inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MTIME'
|
|
END
|
|
|
|
select @bb=id from ICSLocation where LocationCode='{2}'
|
|
IF @bb IS not NULL
|
|
BEGIN
|
|
set @wheresql='and a.locationcode=s.locationcode and a.LocationCode=''{2}'' '
|
|
set @groupsql = 'group by inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.warehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MTIME'
|
|
END
|
|
|
|
select @cc=id from ICSInventory where invcode='{2}'
|
|
IF @cc IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.invcode=''{2}'' and a.invcode=s.invcode '
|
|
set @groupsql='group by inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MTIME'
|
|
END
|
|
|
|
select @dd=id from ICSInventory where InvStd LIKE '%{2}%'
|
|
IF @dd IS not NULL
|
|
BEGIN
|
|
set @wheresql='and inv.InvStd LIKE ''%{2}%'' '
|
|
set @groupsql='group by inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,a.WarehouseCode,a.LocationCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,a.Quantity,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MTIME'
|
|
END
|
|
|
|
IF @aa IS NULL and @bb IS NULL and @cc IS NULL and @dd IS NULL
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo478") + @"',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
set @b =
|
|
'SELECT a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,
|
|
a.WarehouseCode,a.LocationCode,a.Quantity as Qty,SUM(s.sumQty) sumQty,
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSWareHouseLotInfo a
|
|
LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode,LocationCode,workpoint from ICSWareHouseLotInfo where quantity>0 group by WarehouseCode,INVCode,LocationCode,workpoint)s ON a.workpoint=s.workpoint and a.InvCode=s.InvCode
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.Quantity>0 and a.WorkPoint=''{3}'' ' + @wheresql + @groupsql
|
|
END
|
|
|
|
exec(@b)
|
|
|
|
|
|
|
|
";
|
|
}
|
|
else
|
|
{
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,
|
|
{0}
|
|
inv.AmountUnit,
|
|
inv.AmountEnable,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' ";
|
|
}
|
|
else
|
|
{
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
{0}
|
|
inv.AmountUnit,
|
|
inv.AmountEnable,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE bom.TContainerCode='{2}' AND a.WorkPoint='{3}' ";
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
bool isOut = false; //出库标记
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string columnsLOCODE = string.Empty;
|
|
string columnsLONAME = string.Empty;
|
|
string columnsWHCODE = string.Empty;
|
|
string columnsWHNAME = string.Empty;
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //排序
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription() //采购退货
|
|
|| TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription() //委外发料
|
|
|| TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription() //委外退货
|
|
|| TransType == TransTypeEnum.MOIssueDoc.GetDescription() //生产发料
|
|
|| TransType == TransTypeEnum.SalesShipmentDoc.GetDescription() //销售出库
|
|
|| TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription() //一步调拨
|
|
|| TransType == TransTypeEnum.StepTransferApplicationIn.GetDescription() //调拨申请单
|
|
|| TransType == TransTypeEnum.StepTransferDocIn.GetDescription() //调拨
|
|
|| TransType == TransTypeEnum.StepNoTransferDocIn.GetDescription() //无源头调拨
|
|
|| TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription() //两步调出
|
|
|| TransType == TransTypeEnum.OtherOutDoc.GetDescription() //其他出库
|
|
|| TransType == TransTypeEnum.Check.GetDescription() //盘点
|
|
|| TransType == TransTypeEnum.MOApply.GetDescription() //领料申请单
|
|
|| TransType == TransTypeEnum.MOReplenishment.GetDescription() //领料申请单
|
|
|| TransType == TransTypeEnum.OOApply.GetDescription() //委外领料申请单
|
|
|| TransType == TransTypeEnum.MOIssue.GetDescription() //开立材料出库单
|
|
|| TransType == TransTypeEnum.OOIssue.GetDescription() //开立委外材料出库单
|
|
|| TransType == TransTypeEnum.PurchaseReceive.GetDescription() //开立红字入库单
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription()//开立委外红字入库单
|
|
|| TransType == TransTypeEnum.BrrowDoc.GetDescription() //借用
|
|
|| TransType == TransTypeEnum.TransferLibrary.GetDescription() //移库
|
|
//|| TransType == TransTypeEnum.DisassemblyDoc.GetDescription() //拆卸单(散件生成条码入库)
|
|
)
|
|
{
|
|
isOut = true;
|
|
}
|
|
//库位查询
|
|
if (TransType == TransTypeEnum.LocationSeatch.GetDescription())
|
|
{
|
|
// Losql = @"" + Losql + "group by a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,inv.LotEnable,s.WarehouseCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,s.sumQty,inv.AmountUnit,ext.ID,ext.ProjectCode,ext.Version,ext.Brand, " +
|
|
// "ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER ,a.MTIME";
|
|
|
|
// columns = @"s.WarehouseCode, inv.INVCODE,inv.INVNAME,inv.INVSTD,sum(a.Quantity) as Qty,s.sumQty,";
|
|
|
|
// tableName = @"ICSWareHouseLotInfo a
|
|
//LEFT JOIN ICSLocation b ON a.LocationCode = b.LocationCode and a.WorkPoint=b.WorkPoint
|
|
//INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
//INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
//LEFT JOIN (select SUM(Quantity) AS sumQty,WarehouseCode,INVCode from ICSWareHouseLotInfo group by WarehouseCode,INVCode)s
|
|
//ON a.INVCode=s.INVCode ";
|
|
|
|
}
|
|
else
|
|
{
|
|
//两步调入条码
|
|
if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSOtherIn Otin
|
|
INNER JOIN ICSTransfer tra ON Otin.TransferDetailID=tra.TransferDetailID AND Otin.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSOtherOut out ON out.TransferDetailID=tra.TransferDetailID AND out.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON out.OutCode=log.TransCode AND out.Sequence=log.TransSequence AND out.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND Otin.InCode = '" + JsonData.TransCode + @"')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo036") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql + "AND Otin.InCode = '" + JsonData.TransCode + @"'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSOtherIn Otin
|
|
INNER JOIN ICSTransfer tra ON Otin.TransferDetailID=tra.TransferDetailID AND Otin.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSOtherOut out ON out.TransferDetailID=tra.TransferDetailID AND out.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON out.OutCode=log.TransCode AND out.Sequence=log.TransSequence AND out.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql + "AND Otin.InCode = '" + JsonData.TransCode + @"'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSOtherIn Otin
|
|
INNER JOIN ICSTransfer tra ON Otin.TransferDetailID=tra.TransferDetailID AND Otin.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSOtherOut out ON out.TransferDetailID=tra.TransferDetailID AND out.WorkPoint=tra.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON out.OutCode=log.TransCode AND out.Sequence=log.TransSequence AND out.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
|
|
}
|
|
//销售退货-原条码(可支持一个条码多次发货,汇总数量,目前加了限制:785-793行)
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND sdn.Type='1')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo037") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT log.LotNo FROM ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND sdn.Type='1' AND log.BusinessCode='19'
|
|
GROUP BY log.LotNo HAVING COUNT(log.LotNo)>=2)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo191"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql + @"AND sdn.Type='1'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql + @"AND sdn.Type='1'
|
|
GROUP BY inv.LotEnable,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME";
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSSDN sdn
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON sdn.SDNCode=log.TransCode AND sdn.Sequence=log.TransSequence AND sdn.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
}
|
|
//生产(委外)退料-原条码+新条码
|
|
//先校验日志里面是否有原条码(同一种类型的条码只能发一次料才能原条码退,不然更新源头单据数量有问题,根据LogID判断是否原条码退回),如果没有查询新条码
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
string type = "13";
|
|
string msglanguage = "WMSAPIInfo185";
|
|
if (TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription())
|
|
{
|
|
type = "14";
|
|
msglanguage = "WMSAPIInfo186";
|
|
}
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
type = "15";
|
|
msglanguage = "WMSAPIInfo187";
|
|
}
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription())
|
|
{
|
|
type = "5";
|
|
msglanguage = "WMSAPIInfo188";
|
|
}
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription())
|
|
{
|
|
type = "6";
|
|
msglanguage = "WMSAPIInfo189";
|
|
}
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
type = "7";
|
|
msglanguage = "WMSAPIInfo190";
|
|
}
|
|
#region 新条码
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sqlNew = @"IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND (b.InvIQC='1'AND ins.LotNo IS NULL))
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND b.InvIQC='1' AND ISNULL(ins.QualifiedQuantity, 0)+ISNULL(ins.WaiveQuantity, 0)<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo533") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
|
|
if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
(select negg.WHCode from ICSMOApplyNegDetail neg
|
|
INNER JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
inner join ICSInventoryLotDetail lotdetail on neg.ApplyNegCode=lotdetail.TransCode
|
|
and neg.Sequence=lotdetail.TransSequence
|
|
where lotdetail.LotNo=a.LotNo and lotdetail.WorkPoint=a.WorkPoint) AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
'' AS LogID,
|
|
ext.BatchCode AS BatchCode,";
|
|
}
|
|
|
|
if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
(select negg.WHCode from ICSOApplyNegDetail neg
|
|
INNER JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
inner join ICSInventoryLotDetail lotdetail on neg.OApplyNegCode=lotdetail.TransCode
|
|
and neg.Sequence=lotdetail.TransSequence
|
|
where lotdetail.LotNo=a.LotNo and lotdetail.WorkPoint=a.WorkPoint) AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
'' AS LogID,
|
|
ext.BatchCode AS BatchCode,";
|
|
}
|
|
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sqlNew = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql;
|
|
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint";
|
|
}
|
|
|
|
sqlNew = string.Format(sqlNew, columns, tableName, JsonData.Code, JsonData.WorkPoint, zlqty);
|
|
#endregion
|
|
#region 原条码
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
sql = sql + @" AND log.BusinessCode IN('" + type + @"') GROUP BY inv.LotEnable,log.ID,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN(invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')= '1') OR ISNULL(invBat.BatchEnable, '0')= '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME
|
|
";
|
|
sql = @"IF EXISTS(" + sql + @")
|
|
BEGIN
|
|
" + sql + @"
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
" + sqlNew + @"
|
|
END";
|
|
//sql = @"IF EXISTS(SELECT log.LotNo FROM ICSWareHouseLotInfoLog log
|
|
// INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
// WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND log.TransCode='{5}' AND log.TransSequence='{6}' AND log.BusinessCode='" + type + @"'
|
|
// GROUP BY log.LotNo HAVING COUNT(log.LotNo)>=2)
|
|
//BEGIN
|
|
// RAISERROR('" + string.Format(language.GetNameByCode(msglanguage), "{2}") + @"',16,1);
|
|
// RETURN
|
|
//END
|
|
//" + sql;
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
log.ID AS LogID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
sql = sql + @" AND log.BusinessCode IN('" + type + @"') GROUP BY inv.LotEnable,log.ID,a.ID,con.ContainerCode,con.ContainerName,a.LotNo,a.InvCode,inv.InvName,inv.InvStd,inv.InvUnit,a.WarehouseCode,
|
|
wh.WarehouseName,a.LocationCode,loc.LocationName,CASE WHEN(invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')= '1') OR ISNULL(invBat.BatchEnable, '0')= '1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,inv.AmountUnit,
|
|
ext.ID,ext.ProjectCode,ext.Version,ext.Brand,ext.cFree1,ext.cFree2,ext.cFree3,ext.cFree4,ext.cFree5,ext.cFree6,ext.cFree7,ext.cFree8,ext.cFree9,ext.cFree10,a.MUSER,a.MTIME
|
|
";
|
|
sql = @"IF EXISTS(" + sql + @")
|
|
BEGIN
|
|
" + sql + @"
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
" + sqlNew + @"
|
|
END";
|
|
sql = @"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql;
|
|
|
|
columns = @"SUM(log.Quantity) AS Quantity,
|
|
SUM(log.Quantity*(lot.Amount/lot.Quantity)) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
log.ID AS LogID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog log
|
|
INNER JOIN ICSWareHouseLotInfo a ON a.LotNo=log.LotNo AND a.WorkPoint=log.WorkPoint
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
//分批
|
|
else if (TransType == TransTypeEnum.LOTSplit.GetDescription() || TransType == TransTypeEnum.LOTMerge.GetDescription())
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND a.Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
|
|
columns = @"a.Quantity,
|
|
a.Quantity*(lot.Amount/lot.Quantity) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(split.SplitLotNo, a.LotNo+'-1') AS SplitLotNo,";
|
|
|
|
tableName = @"ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN (SELECT EATTRIBUTE1 AS LotNo,WorkPoint,EATTRIBUTE1+'-'+CAST((MAX(CAST(reverse(substring(reverse(LotNo),1,charindex('-',reverse(LotNo)) - 1)) AS INT))+1) AS VARCHAR) AS SplitLotNo FROM ICSInventoryLot GROUP BY EATTRIBUTE1,WorkPoint) split ON a.LotNo=split.LotNo AND a.WorkPoint=split.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
//出库条码
|
|
else if (isOut)
|
|
{
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription() || TransType == TransTypeEnum.MOApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssue.GetDescription() || TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.OOApply.GetDescription() || TransType == TransTypeEnum.OOIssue.GetDescription()
|
|
|| TransType == TransTypeEnum.SalesShipmentDoc.GetDescription() || TransType == TransTypeEnum.OtherOutDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.BrrowDoc.GetDescription() || TransType == TransTypeEnum.StepTransferDocIn.GetDescription()
|
|
|| TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription() || TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
string uersql = @"SELECT F_RealName from Sys_SRM_User where F_Account='{0}' AND F_Location='{1}'
|
|
";
|
|
uersql = string.Format(uersql, JsonData.User, JsonData.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(uersql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
UserName = dt.Rows[0]["F_RealName"].ToString();
|
|
}
|
|
UName = UserName.Substring(0, 2);
|
|
switch (UName)
|
|
{
|
|
case "L1":
|
|
UName = "021";
|
|
break;
|
|
case "L2":
|
|
UName = "022";
|
|
break;
|
|
case "L3":
|
|
UName = "023";
|
|
break;
|
|
case "L4":
|
|
UName = "024";
|
|
break;
|
|
case "L5":
|
|
UName = "025";
|
|
break;
|
|
case "L6":
|
|
UName = "026";
|
|
break;
|
|
case "L7":
|
|
UName = "025";
|
|
break;
|
|
case "C1":
|
|
UName = "004";
|
|
break;
|
|
}
|
|
|
|
ZLtable = ICSControlModeService.GetZL();
|
|
if (ZLtable == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo471"));
|
|
}
|
|
|
|
for (int i = 0; i < ZLtable.Rows.Count; i++)
|
|
{
|
|
|
|
string zlName = ZLtable.Rows[i]["Name"].ToString();
|
|
string zlTransCode = ZLtable.Rows[i]["BusinessCode"].ToString();
|
|
string Enable = ZLtable.Rows[i]["Enable"].ToString();
|
|
if (JsonData.TransType.Equals(zlName))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
string zlsql = @"IF NOT EXISTS(select a.Quantity,c.Name from ICSWareHouseLotInfoLog a
|
|
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode
|
|
left join ICSType c on a.BusinessCode=c.Code and c.tablecode='ICSWareHouseLotInfoLog' and c.ColumnCode='BusinessCode'
|
|
where b.LotNo='{0}' and b.WorkPoint='{1}' and a.TransType='15' and c.name='{2}' and (a.TransCode='{3}' or a.MergeID='{3}'))
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo469") + @"',16,1);
|
|
RETURN
|
|
END
|
|
select SUM(a.Quantity) AS Quantity from ICSWareHouseLotInfoLog a
|
|
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode
|
|
--left join ICSType c on a.BusinessCode=c.Code and c.tablecode='ICSWareHouseLotInfoLog' and c.ColumnCode='BusinessCode'
|
|
where b.LotNo='{0}' and b.WorkPoint='{1}' and a.TransType='15' and c.name='{2}' and (a.TransCode='{3}' or a.MergeID='{3}')";
|
|
zlsql = string.Format(zlsql, JsonData.Code, JsonData.WorkPoint, JsonData.TransType, JsonData.TransCode);
|
|
DataTable zlltable = DBHelper.SQlReturnData(zlsql, cmd);
|
|
if (zlltable != null || zlltable.Rows.Count > 0)
|
|
{
|
|
|
|
zlqty = zlltable.Rows[0]["Quantity"].ToString();
|
|
iszl = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND a.Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND a.Quantity>0 AND a.WareHouseCode='{5}')
|
|
BEGIN
|
|
RAISERROR('登录人员产线与目标仓库不一致,请确认!',16,1)
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
|
|
|
|
if (iszl)
|
|
{
|
|
columns = @"{0} as Quantity,
|
|
{0}*(lot.Amount/lot.Quantity) AS Amount,
|
|
a.id AS LogID,
|
|
a.FromWarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
inv.LotEnable,
|
|
a.FromLocationCode,
|
|
lot.ProductDate,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
columns = string.Format(columns, zlqty);
|
|
|
|
tableName = @"ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.FromWarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.FromLocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
columns = @"(a.Quantity-a.lockQuantity) AS Quantity,
|
|
(a.Quantity-a.lockQuantity)*(lot.Amount/lot.Quantity) AS Amount,
|
|
'' AS LogID,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
inv.LotEnable,
|
|
a.LocationCode,
|
|
lot.ProductDate,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint";
|
|
}
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql;
|
|
|
|
columns = @"(a.Quantity-a.lockQuantity) AS Quantity,
|
|
(a.Quantity-a.lockQuantity)*(lot.Amount/lot.Quantity) AS Amount,
|
|
a.WarehouseCode AS WHCode,
|
|
wh.WarehouseName AS WHName,
|
|
a.LocationCode,
|
|
lot.ProductDate,
|
|
loc.LocationName,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,";
|
|
|
|
tableName = @"ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
|
|
INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSWarehouse wh ON a.WarehouseCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
INNER JOIN ICSLocation loc ON a.LocationCode=loc.LocationCode AND a.WorkPoint=loc.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
";
|
|
}
|
|
|
|
|
|
}
|
|
//入库条码
|
|
else
|
|
{
|
|
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.DeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription() || TransType == TransTypeEnum.ODeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription() || TransType == TransTypeEnum.ManufactureReceive.GetDescription()
|
|
|| TransType == TransTypeEnum.UnqualifiedIN.GetDescription() || TransType == TransTypeEnum.MOStockINByProduct.GetDescription()
|
|
|| TransType == TransTypeEnum.OOStockINByProduct.GetDescription())
|
|
{
|
|
//联产品入库(有来源单据)不可扫入无来源条码
|
|
if (TransType == TransTypeEnum.MOStockINByProduct.GetDescription())
|
|
{
|
|
sql = @"
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}' AND a.Type = 19 )
|
|
BEGIN
|
|
RAISERROR('当前扫描的是无来源条码', 16, 1);
|
|
RETURN;
|
|
END
|
|
" + sql;
|
|
}
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}')
|
|
BEGIN
|
|
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND (b.InvIQC='1' AND ins.LotNo IS NULL))
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND b.InvIQC='1' AND ISNULL(ins.QualifiedQuantity, 0)+ISNULL(ins.WaiveQuantity, 0)<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo533") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}')
|
|
BEGIN
|
|
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
|
|
|
|
|
|
|
|
ControlMode mode = ICSControlModeService.GetSuLocation();
|
|
|
|
//获取条码类型
|
|
LotTypesql = @"IF NOT EXISTS(SELECT Type FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo461") + @"',16,1);
|
|
RETURN
|
|
END
|
|
SELECT Type FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
LotTypesql = string.Format(LotTypesql, JsonData.Code, JsonData.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(LotTypesql, cmd);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
LotType = dt.Rows[0]["Type"].ToString();
|
|
}
|
|
|
|
if (mode != null)
|
|
{
|
|
if (mode.itemCode.Equals("LocationRemind01"))//固定库位:物料和库位绑定,显示库位名称列表
|
|
{
|
|
columnsLONAME = @"
|
|
(SELECT locat.LocationName from ICSWareHouseLotInfo loinfo
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=loinfo.LocationCode and loinfo.WorkPoint=locat.WorkPoint
|
|
where loinfo.lotno=a.lotno and loinfo.invcode=a.invcode and a.WorkPoint=loinfo.WorkPoint) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
(SELECT locat.LocationCode from ICSWareHouseLotInfo loinfo
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=loinfo.LocationCode and loinfo.WorkPoint=locat.WorkPoint
|
|
where loinfo.lotno=a.lotno and loinfo.invcode=a.invcode and a.WorkPoint=loinfo.WorkPoint) AS LocationCode,";
|
|
|
|
}
|
|
else if (mode.itemCode.Equals("LocationRemind02"))//在库库位:物料有库存的对应库位,显示库位名称列表
|
|
{
|
|
columnsLONAME = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationName
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo on wh.LocationCode=lotinfo.LocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and lotinfo.Quantity>0
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationCode
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo on wh.LocationCode=lotinfo.LocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and lotinfo.Quantity>0
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationCode,";
|
|
}
|
|
else if (mode.itemCode.Equals("LocationRemind03"))//最近一次出入库的库位,显示库位名称
|
|
{
|
|
columnsLONAME = @"
|
|
(SELECT Top 1 locat.LocationName from ICSWareHouseLotInfoLog log
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=log.ToLocationCode and log.WorkPoint=locat.WorkPoint where log.TransType='2' and a.InvCode=log.InvCode AND a.WorkPoint=log.WorkPoint
|
|
ORDER BY log.Mtime desc) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
(SELECT Top 1 locat.LocationCode from ICSWareHouseLotInfoLog log
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=log.ToLocationCode and log.WorkPoint=locat.WorkPoint where log.TransType='2' and a.InvCode=log.InvCode AND a.WorkPoint=log.WorkPoint
|
|
ORDER BY log.Mtime desc) AS LocationCode,";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
columnsLONAME = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationName
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfoLog lotinfo on wh.LocationCode=lotinfo.ToLocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and (lotinfo.TransType='2' OR lotinfo.TransType='3')
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationName,";
|
|
columnsLOCODE = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationCode
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfoLog lotinfo on wh.LocationCode=lotinfo.ToLocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and (lotinfo.TransType='2' OR lotinfo.TransType='3')
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationCode,";
|
|
|
|
}
|
|
|
|
#region 根据条码类型找到单据仓库信息
|
|
if (LotType.Equals("1"))
|
|
{//生产退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("2"))
|
|
{//委外退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("3"))
|
|
{//工单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSMO a WHERE a.MOCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSMO a WHERE a.MOCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("4"))
|
|
{//销售退货
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSSDN a WHERE a.SDNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSSDN a WHERE a.SDNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("5"))
|
|
{//其他入库
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSOtherIn a WHERE a.InCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSOtherIn a WHERE a.InCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("6"))
|
|
{//归还单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSReturn a WHERE a.ReturnCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSReturn a WHERE a.ReturnCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("7"))
|
|
{//采购到货单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("8"))
|
|
{//委外到货单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("9"))
|
|
{//成品入库单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSManufactureReceive a WHERE a.RCVCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSManufactureReceive a WHERE a.RCVCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("10"))
|
|
{//拒收单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("11"))
|
|
{//委外拒收单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("12"))
|
|
{//领料申请退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("13"))
|
|
{//材料出库退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("14"))
|
|
{//委外领料申请退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("15"))
|
|
{//委外材料出库退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("16"))
|
|
{//返工工单
|
|
columnsWHCODE = @"ISNULL((SELECT pick.WHCode FROM ICSMOPick pick LEFT JOIN ICSMO moo ON pick.MODetailID=moo.MODetailID AND pick.WorkPoint=moo.WorkPoint
|
|
WHERE moo.MOCode=lotdd.TransCode AND pick.Sequence=lotdd.TransSequence AND pick.WorkPoint=lotdd.WorkPoint),'') AS WHCode ";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT pick.WHCode FROM ICSMOPick pick LEFT JOIN ICSMO moo ON pick.MODetailID=moo.MODetailID AND pick.WorkPoint=moo.WorkPoint
|
|
WHERE moo.MOCode=lotdd.TransCode AND pick.Sequence=lotdd.TransSequence AND pick.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName ";
|
|
}
|
|
else
|
|
{
|
|
columnsWHCODE = @"'' AS WHCode";
|
|
columnsWHNAME = @"'' AS WHName";
|
|
}
|
|
#endregion
|
|
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.DeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription() || TransType == TransTypeEnum.ODeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription() || TransType == TransTypeEnum.ManufactureReceive.GetDescription()
|
|
|| TransType == TransTypeEnum.UnqualifiedIN.GetDescription() || TransType == TransTypeEnum.MOStockINByProduct.GetDescription()
|
|
|| TransType == TransTypeEnum.OOStockINByProduct.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
{0},{2},
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
{0},{2},
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint";
|
|
}
|
|
|
|
|
|
|
|
columns = string.Format(columns, columnsWHCODE, columnsLONAME, columnsWHNAME, columnsLOCODE);
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
|
|
)
|
|
" + sql;
|
|
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription() || TransType == TransTypeEnum.DeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription() || TransType == TransTypeEnum.ODeliveryNotice.GetDescription()
|
|
|| TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription() || TransType == TransTypeEnum.ManufactureReceive.GetDescription()
|
|
|| TransType == TransTypeEnum.UnqualifiedIN.GetDescription() || TransType == TransTypeEnum.MOStockINByProduct.GetDescription()
|
|
|| TransType == TransTypeEnum.OOStockINByProduct.GetDescription())
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint";
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if (TransType != TransTypeEnum.LocationSeatch.GetDescription())
|
|
{
|
|
if (string.IsNullOrWhiteSpace(columns) || string.IsNullOrWhiteSpace(tableName))
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo003"));
|
|
}
|
|
|
|
|
|
if (TransType == TransTypeEnum.LocationSeatch.GetDescription())
|
|
{
|
|
Losql = string.Format(Losql, columns, tableName, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
table = DBHelper.SQlReturnData(Losql, cmd);
|
|
}
|
|
else
|
|
{
|
|
sql = string.Format(sql, columns, tableName, JsonData.Code, JsonData.WorkPoint, zlqty, UName, JsonData.TransCode, JsonData.TransSequence);
|
|
table = DBHelper.SQlReturnData(sql, cmd);
|
|
}
|
|
|
|
if (table == null || table.Rows.Count <= 0)
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo008"));//"未查询到条码数据!"
|
|
|
|
#region 出库检验是否符合源头单据
|
|
|
|
string msg = string.Empty;
|
|
bool isLimit = false;
|
|
string sqlCheckSign = @"select F_EnabledMark from Sys_SRM_Items where F_EnCode = 'OutWithLocationCode' and F_EnabledMark = '1'";
|
|
DataTable flag = DBHelper.SQlReturnData(sqlCheckSign, cmd);
|
|
if (isOut) // && TransType != TransTypeEnum.LOTSplit.GetDescription()
|
|
{//&& TransType != TransTypeEnum.TransferLibrary.GetDescription()
|
|
string Lot = "";
|
|
string workP = "";
|
|
if (TransType == TransTypeEnum.TransferLibrary.GetDescription())
|
|
{
|
|
foreach (DataRow drLot in table.Rows)
|
|
{
|
|
Lot = drLot["LotNo"].ToString();
|
|
sql = @"SELECT WarehouseCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, Lot, JsonData.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), Lot));
|
|
}
|
|
string whcode = dt.Rows[0]["WarehouseCode"].ToString();
|
|
if (!JsonData.WHCode.Equals(whcode))
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo395"), JsonData.WHCode, whcode));
|
|
}
|
|
}
|
|
|
|
}
|
|
else if (TransType != TransTypeEnum.LocationSeatch.GetDescription() && TransType != TransTypeEnum.StepNoTransferDocIn.GetDescription())
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
WMSSourceDocumentModel model = new WMSSourceDocumentModel();
|
|
model.TransCode = JsonData.TransCode;
|
|
model.TransSequence = JsonData.TransSequence;
|
|
model.TransType = JsonData.TransType;
|
|
model.WorkPoint = JsonData.WorkPoint;
|
|
model.User = JsonData.User;
|
|
DataTable TransData = AMTransInformationGet(model);
|
|
DataView dataView = TransData.DefaultView;
|
|
foreach (DataRow drLot in table.Rows)
|
|
{
|
|
Lot = drLot["LotNo"].ToString();
|
|
//盘点不需要对比以下属性
|
|
if (TransType == TransTypeEnum.Check.GetDescription())
|
|
continue;
|
|
|
|
string rowFilter = "InvCode='" + drLot["InvCode"] + "'";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo041"), Lot, drLot["InvCode"]));
|
|
if (TransType != TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
rowFilter += " AND (LEN(ISNULL(WHCode,''))<=0 OR (LEN(ISNULL(WHCode,''))>0 AND WHCode='" + drLot["WHCode"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo042"), Lot, drLot["WHCode"]));
|
|
}
|
|
|
|
|
|
rowFilter += " AND (LEN(ISNULL(ProjectCode,''))<=0 OR (LEN(ISNULL(ProjectCode,''))>0 AND ProjectCode='" + drLot["ProjectCode"] + "'))";
|
|
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["ProjectCode"], GetExtentionName("ProjectCode", JsonData.WorkPoint, cmd, language)));
|
|
|
|
rowFilter += "AND (LEN(ISNULL(BatchCode,''))<=0 OR (LEN(ISNULL(BatchCode,''))>0 AND BatchCode='" + drLot["BatchCode"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["BatchCode"], GetExtentionName("BatchCode", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(Version,''))<=0 OR (LEN(ISNULL(Version,''))>0 AND Version='" + drLot["Version"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["Version"], GetExtentionName("Version", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(Brand,''))<=0 OR (LEN(ISNULL(Brand,''))>0 AND Brand='" + drLot["Brand"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["Brand"], GetExtentionName("Brand", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree1,''))<=0 OR (LEN(ISNULL(cFree1,''))>0 AND cFree1='" + drLot["cFree1"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree1"], GetExtentionName("cFree1", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree2,''))<=0 OR (LEN(ISNULL(cFree2,''))>0 AND cFree2='" + drLot["cFree2"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree2"], GetExtentionName("cFree2", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree3,''))<=0 OR (LEN(ISNULL(cFree3,''))>0 AND cFree3='" + drLot["cFree3"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree3"], GetExtentionName("cFree3", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree4,''))<=0 OR (LEN(ISNULL(cFree4,''))>0 AND cFree4='" + drLot["cFree4"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree4"], GetExtentionName("cFree4", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree5,''))<=0 OR (LEN(ISNULL(cFree5,''))>0 AND cFree5='" + drLot["cFree5"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree5"], GetExtentionName("cFree5", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree6,''))<=0 OR (LEN(ISNULL(cFree6,''))>0 AND cFree6='" + drLot["cFree6"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree6"], GetExtentionName("cFree6", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree7,''))<=0 OR (LEN(ISNULL(cFree7,''))>0 AND cFree7='" + drLot["cFree7"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree7"], GetExtentionName("cFree7", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree8,''))<=0 OR (LEN(ISNULL(cFree8,''))>0 AND cFree8='" + drLot["cFree8"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree8"], GetExtentionName("cFree8", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree9,''))<=0 OR (LEN(ISNULL(cFree9,''))>0 AND cFree9='" + drLot["cFree9"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree9"], GetExtentionName("cFree9", JsonData.WorkPoint, cmd, language)));
|
|
rowFilter += "AND (LEN(ISNULL(cFree10,''))<=0 OR (LEN(ISNULL(cFree10,''))>0 AND cFree10='" + drLot["cFree10"] + "'))";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo500"), Lot, drLot["cFree10"], GetExtentionName("cFree10", JsonData.WorkPoint, cmd, language)));
|
|
if (flag != null && flag.Rows.Count > 0)
|
|
{
|
|
rowFilter += " AND LocationCode='" + drLot["LocationCode"] + "'";
|
|
CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo042"), Lot, drLot["LocationCode"]));
|
|
}
|
|
|
|
//保质期管理
|
|
var resultEffective = Effective(Lot, JsonData.WorkPoint, JsonData.TransType, cmd, language);
|
|
//0 - 已经是最早的批次
|
|
//1 - 不管控
|
|
//2 - 提醒
|
|
//3 - 限制
|
|
if (resultEffective == "2")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo181"), Lot) + Environment.NewLine;
|
|
}
|
|
else if (resultEffective == "3")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo182"), Lot) + Environment.NewLine;
|
|
isLimit = true;
|
|
}
|
|
|
|
string rowFilternew = rowFilter + " AND LEN(ISNULL(ProjectCode,''))>0";
|
|
string sqlnew = CheckTransnew(dataView, rowFilternew, "ProjectCode");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(BatchCode,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "BatchCode");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(Version,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "Version");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(Brand,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "Brand");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree1,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree1");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree2,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree2");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree3,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree3");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree4,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree4");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree5,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree5");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree6,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree6");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree7,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree7");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree8,''))>0 ";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree8");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree9,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree9");
|
|
rowFilternew = rowFilter + " AND LEN(ISNULL(cFree10,''))>0";
|
|
sqlnew += CheckTransnew(dataView, rowFilternew, "cFree10");
|
|
|
|
|
|
|
|
//先进先出判断
|
|
var result = CanOut(Lot, JsonData.WorkPoint, JsonData.ScanLotCode, sqlnew, JsonData.TransType, cmd, language);
|
|
//0 - 已经是最早的批次
|
|
//1 - 不管控
|
|
//2 - 提醒
|
|
//3 - 限制
|
|
if (result == "2")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo178"), Lot) + Environment.NewLine;
|
|
}
|
|
else if (result == "3")
|
|
{
|
|
msg += string.Format(language.GetNameByCode("WMSAPIInfo179"), Lot) + Environment.NewLine;
|
|
isLimit = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
//return table;
|
|
Result res = new Result();
|
|
res.Success = true;
|
|
res.Message = msg;// "接口调用成功!";
|
|
if (!isLimit)
|
|
res.Data = table;
|
|
return res;
|
|
//出库时
|
|
//Message无值、Data有值,可直接处理
|
|
//Message有值、Data有值,弹出提醒框(可点击确定、取消,确定后继续出库,取消后不处理这批条码),显示Message信息
|
|
//Message有值、Data无值,弹出警告框(只能点击确定,且不处理这批条码),显示Message信息
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 拣配
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable PickMerge(List<LOTStockModel> JsonData)
|
|
{
|
|
String PrintEnable = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string pikTbLogsql = "";
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
#region 销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>();
|
|
// //更新源头单据数量
|
|
// pikTbLogsql = @"update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
|
|
// from dbo.ICSWareHouseLotInfo b
|
|
// inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog
|
|
// where TransCode ='{0}' AND TransSequence='{1}' and TransType='15' and WorkPoint='{2}' group by LotNo) c
|
|
// on c.LotNo =b.LotNo
|
|
//";
|
|
// pikTbLogsql = string.Format(pikTbLogsql, item.TransCode, item.TransSequence, item.WorkPoint);
|
|
// if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
|
|
// {
|
|
// throw new Exception("更新库存锁定数量失败!");
|
|
// }
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
pikTbLogsql += @"
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{7}' AND a.WorkPoint='{6}' AND Quantity-LockQuantity-'{3}'<0)
|
|
BEGIN
|
|
RAISERROR('条码:" + "{7}" + @"库存数量不足!',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode='{1}' AND TransSequence='{2}' AND LotNo='{7}' AND WorkPoint='{6}' AND TransType='15')
|
|
BEGIN
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{0}','{1}','{2}',a.LotNo ,a.InvCode ,
|
|
a.WarehouseCode,a.LocationCode,'','','{3}',
|
|
'','1','15','{4}','0','',
|
|
'','','','{5}' ,(select Top 1 f.F_RealName FROM ICSInventoryLot a INNER JOIN Sys_SRM_User f ON f.F_Account='{5}' AND a.WorkPoint=f.F_Location) ,
|
|
SYSDATETIME() ,'{6}' ,''
|
|
FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo='{7}' AND a.WorkPoint='{6}'
|
|
|
|
update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{3}' where LotNo='{7}' AND WorkPoint='{6}'
|
|
END
|
|
UPDATE ICSMOApply SET MUSER='{5}' WHERE ApplyCode='{1}' and Sequence='{2}' ; ";
|
|
pikTbLogsql = string.Format(pikTbLogsql, Identification, item.TransCode, item.TransSequence, itemInfo.CurrentQuantity
|
|
, BusinessCode, item.User, item.WorkPoint, itemInfo.LotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
|
|
{
|
|
throw new Exception("拣料失败!");
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
}
|
|
DataTable table = null;
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 回撤拣配
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable BackPickMerge(List<LOTStockModel> JsonData)
|
|
{
|
|
String PrintEnable = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string pikTbLogsql = "";
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
#region 销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
pikTbLogsql += string.Format(@" update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
|
|
from dbo.ICSWareHouseLotInfo b
|
|
inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where TransCode ='{0}' AND TransSequence='{1}' and TransType='15' and WorkPoint='{2}' group by LotNo) c
|
|
on c.LotNo =b.LotNo ", item.TransCode, item.TransSequence, item.WorkPoint);
|
|
|
|
pikTbLogsql += string.Format(@" delete dbo.ICSWareHouseLotInfoLog where TransCode ='{0}' AND TransSequence='{1}' and TransType='15' and WorkPoint='{2}'", item.TransCode, item.TransSequence, item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
|
|
{
|
|
throw new Exception("回撤拣料失败!");
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
}
|
|
DataTable table = null;
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 回撤拣配
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable BackPickMergeALL(List<LOTStockModel> JsonData)
|
|
{
|
|
String PrintEnable = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string pikTbLogsql = "";
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
#region 销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDoc.GetDescription()
|
|
|| TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.SalesShipmentDoc.GetDescription<DBValue>();
|
|
//更新源头单据数量
|
|
pikTbLogsql += string.Format(@" update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
|
|
from dbo.ICSWareHouseLotInfo b
|
|
inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where TransCode ='{0}' and TransType='15' and WorkPoint='{1}' group by LotNo) c
|
|
on c.LotNo =b.LotNo ", item.TransCode, item.WorkPoint);
|
|
|
|
pikTbLogsql += string.Format(@" delete dbo.ICSWareHouseLotInfoLog where TransCode ='{0}' and TransType='15' and WorkPoint='{1}'", item.TransCode, item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
|
|
{
|
|
throw new Exception("整单回撤拣料失败!");
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
}
|
|
DataTable table = null;
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#region 模具(安多诚专用)
|
|
/// <summary>
|
|
/// 获取模具信息(安多诚专用)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MouldGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string whereSql = "1=1";
|
|
try
|
|
{
|
|
string sql = @"select MouldCode,MouldName,UpperLimit,LowerLimit,DailyUses,UpperLimit-DailyUses as LeftTimes from ICSMouldAccount
|
|
where MouldCode = '{0}' and {1}
|
|
";
|
|
if (JsonData.TransType == "上机")
|
|
whereSql = "((MajorStates ='启用'and SubStates='下机')or MajorStates ='未启用' or(MajorStates ='禁用'and SubStates='保养'))";
|
|
else
|
|
whereSql = "((MajorStates ='启用'and SubStates='上机'))";
|
|
sql = string.Format(sql, JsonData.Code, whereSql);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 模具领用(安多诚专用)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable MouldInOrOut(LOTStockModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string setSql = "";
|
|
try
|
|
{
|
|
string sql = @"insert into ICSMouldLog (ID,MouldCode,MouldNumber,status,DailyUses,EOPCode,
|
|
Picture,StartDate,MTIME,MUser,MUSERName,UsageCount)
|
|
select NEWID(),'{0}',MouldNumber,'{1}',DailyUses,'{2}',
|
|
'{3}',GETDATE(),GETDATE(),'{4}',
|
|
(select Top 1 f.F_RealName FROM Sys_SRM_User f where f.F_Account='{4}' ),TotalUses from ICSMouldAccount
|
|
where MouldCode = '{0}'
|
|
|
|
update ICSMouldAccount set {5}
|
|
where MouldCode = '{0}'
|
|
{7}
|
|
";
|
|
string updateStates = @"";
|
|
if (JsonData.TransType == "上机")
|
|
setSql = "MajorStates='启用',SubStates ='上机'";
|
|
else if (JsonData.TransType == "下机")
|
|
setSql = "MajorStates ='启用', SubStates='下机',DailyUses=DailyUses+" + JsonData.TransSequence + ",TotalUses= TotalUses+" + JsonData.TransSequence;
|
|
else if (JsonData.TransType == "维修")
|
|
setSql = "MajorStates ='禁用', SubStates='维修'";
|
|
else if (JsonData.TransType == "保养")
|
|
{
|
|
setSql = "MajorStates ='启用', SubStates='下机',DailyUses=0";
|
|
updateStates = @"if exists(select * from ICSMouldAccount where UpperLimit = DailyUses and MouldCode='{0}')
|
|
update ICSMouldAccount set MajorStates ='禁用' , Substates ='保养' where UpperLimit = DailyUses and MouldCode='{0}'";
|
|
}
|
|
|
|
sql = string.Format(sql, JsonData.TransCode, JsonData.TransType, JsonData.detail[0].LotNo,
|
|
JsonData.detail[0].TransSequence, JsonData.User, setSql, JsonData.TransSequence, updateStates);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("提交失败!");
|
|
}
|
|
|
|
|
|
DataTable table = null;
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 周转箱
|
|
public static DataTable WorkingCapitalBoxGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
#region SLQ
|
|
string sql = @"--IF EXISTS(SELECT ID FROM ICSWorkingCapitalBoxAccount WHERE BoxCode='{0}' AND States='禁用')
|
|
-- BEGIN
|
|
-- RAISERROR('" + language.GetNameByCode("WMSAPIInfo900") + @"',16,1);
|
|
-- RETURN
|
|
-- END
|
|
SELECT b.BoxCode,b.BoxName,b.States,b.DailyUses,a.FirstCleanCycle,a.SecondCleanCycle,a.ThirdCleanCycle,
|
|
CASE
|
|
WHEN b.DailyUses<a.FirstCleanCycle THEN a.FirstCleanCycle-b.DailyUses
|
|
WHEN b.DailyUses>a.FirstCleanCycle AND b.DailyUses<a.SecondCleanCycle THEN a.SecondCleanCycle-b.DailyUses
|
|
WHEN b.DailyUses>a.SecondCleanCycle THEN a.ThirdCleanCycle-b.DailyUses
|
|
ELSE 0
|
|
END AS nextClearTimes
|
|
FROM ICSWorkingCapitalBoxAccount b
|
|
INNER JOIN ICSWorkingCapitalBox a ON a.BoxNumber=b.BoxNumber
|
|
WHERE b.BoxCode='{0}'";
|
|
sql = string.Format(sql, JsonData.Code);
|
|
#endregion
|
|
|
|
log.Debug("查询周转箱sql : " + sql);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable WorkingCapitalBoxUse(LOTStockModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string boxCodes = string.Empty;
|
|
string UserCode = JsonData.User;
|
|
for (int i = 0; i < JsonData.detail.Count; i++)
|
|
{
|
|
if (i == JsonData.detail.Count - 1)
|
|
{
|
|
boxCodes += "'" + JsonData.detail[i].LotNo + "'";
|
|
}
|
|
else
|
|
{
|
|
boxCodes += "'" + JsonData.detail[i].LotNo + "',";
|
|
}
|
|
}
|
|
string sql = @"
|
|
UPDATE ICSWorkingCapitalBoxAccount SET DailyUses=DailyUses+1,TotalUses=TotalUses+1
|
|
WHERE BoxCode IN({0})
|
|
|
|
UPDATE acc SET acc.States =
|
|
CASE
|
|
WHEN acc.DailyUses > box.FirstCleanCycle AND acc.DailyUses < box.ThirdCleanCycle THEN '未清洗'
|
|
WHEN acc.DailyUses >= box.ThirdCleanCycle THEN '禁用'
|
|
ELSE acc.States
|
|
END
|
|
FROM ICSWorkingCapitalBoxAccount acc
|
|
INNER JOIN ICSWorkingCapitalBox box ON acc.BoxNumber = box.BoxNumber
|
|
WHERE acc.BoxCode IN({0})
|
|
|
|
|
|
INSERT INTO ICSWorkingCapitalBoxLog(ID,BoxCode,BoxNumber,Status,MTIME,MUser,MUSERName)
|
|
SELECT NEWID(),a.BoxCode,a.BoxNumber,'使用',GETDATE(),'{1}',(select Top 1 f.F_RealName FROM Sys_SRM_User f where f.F_Account='{1}')
|
|
FROM ICSWorkingCapitalBoxAccount a
|
|
WHERE a.BoxCode IN({0})";
|
|
sql = string.Format(sql, boxCodes, UserCode);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("提交失败!");
|
|
}
|
|
|
|
|
|
DataTable table = null;
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static DataTable WorkingCapitalBoxClean(LOTStockModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string setSql = "";
|
|
try
|
|
{
|
|
string sql = @"INSERT INTO ICSWorkingCapitalBoxLog(ID,BoxCode,BoxNumber,Status,Picture,MTIME,MUser,MUSERName)
|
|
SELECT NEWID(),a.BoxCode,a.BoxNumber,'清洗','{2}',GETDATE(),'{1}',(select Top 1 f.F_RealName FROM Sys_SRM_User f where f.F_Account='{1}')
|
|
FROM ICSWorkingCapitalBoxAccount a
|
|
WHERE a.BoxCode = '{0}'
|
|
|
|
UPDATE ICSWorkingCapitalBoxAccount SET DailyUses=0,TotalClearn=TotalClearn+1
|
|
WHERE BoxCode = '{0}'
|
|
|
|
UPDATE acc SET acc.States = '正常'
|
|
FROM ICSWorkingCapitalBoxAccount acc
|
|
INNER JOIN ICSWorkingCapitalBox box ON acc.BoxNumber = box.BoxNumber
|
|
WHERE acc.BoxCode = '{0}'
|
|
";
|
|
sql = string.Format(sql, JsonData.detail[0].LotNo, JsonData.User, JsonData.detail[0].TransSequence,
|
|
JsonData.detail[0].TransSequence, JsonData.User, setSql, JsonData.TransSequence);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("提交失败!");
|
|
}
|
|
|
|
DataTable table = null;
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region
|
|
|
|
/// <summary>
|
|
/// 成品入库单 新建
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable FinishedProductWarehouseEntryCreate(List<FinishedProductWarehouseEntry> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
//获取单号
|
|
sql = @"DECLARE @MaxNO INT,@date varchar(20)='FRWE'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
SELECT @MaxNO=SUBSTRING(MAX(RCVCode),LEN(@date)+1,LEN(MAX(RCVCode))-LEN(@date))+1 FROM ICSWMSManufactureReceive
|
|
WHERE SUBSTRING(RCVCode, 1, LEN(@date))=@date
|
|
IF @MaxNO IS NULL
|
|
BEGIN
|
|
SELECT @date+'00001' AS Code
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
END ";
|
|
string Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO [dbo].[ICSWMSManufactureReceive]
|
|
([ID], [RCVCode], [Type], [Status], [WHCode], [CreatePerson], [MUSER], [MUSERName], [CreateDateTime], [MTIME], [WorkPoint], [EATTRIBUTE1], [EATTRIBUTE2], [EATTRIBUTE3], [EATTRIBUTE4], [EATTRIBUTE5], [EATTRIBUTE6], [EATTRIBUTE7], [EATTRIBUTE8], [EATTRIBUTE9], [EATTRIBUTE10], [ExtensionID])
|
|
VALUES
|
|
(NEWID(), '{0}', '{1}', '{2}','{3}', '{4}', '{4}',(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{6}'), '{5}', '{5}', '{6}', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)";
|
|
sql = string.Format(sql, Code, item.Type, item.Status, item.WHCode, item.MUSER, item.MTIME, item.WorkPoint);
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产退料单信息创建失败!");
|
|
}
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
//创建子表
|
|
sql = @"INSERT INTO [dbo].[ICSWMSManufactureReceiveDetail]
|
|
([ID], [RCVCode], [Sequence], [LotNo], [SourceCode], [SourceSequence], [InvCode], [Quantity], [ExtensionID], [MUSER], [MUSERName], [MTIME], [WorkPoint], [EATTRIBUTE1], [EATTRIBUTE2], [EATTRIBUTE3], [EATTRIBUTE4], [EATTRIBUTE5], [EATTRIBUTE6], [EATTRIBUTE7], [EATTRIBUTE8], [EATTRIBUTE9], [EATTRIBUTE10])
|
|
VALUES
|
|
(NEWID(), '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', (select F_RealName from Sys_SRM_User where F_Account='{8}' and F_Location='{10}'), '{9}', '{10}', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)";
|
|
sql = string.Format(sql, Code, itemInfo.Sequence, itemInfo.LotNo, itemInfo.SourceCode, itemInfo.SourceSequence, itemInfo.InvCode, itemInfo.Quantity, itemInfo.ExtensionID, item.MUSER, item.MTIME, item.WorkPoint);
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo023"));//"生产退料单子表信息创建失败!");
|
|
}
|
|
}
|
|
////校验退料数量是否超出领料数量
|
|
//sql = CheckMOIssueDoc(item.Type, item.ID, item.WorkPoint, language);
|
|
//DBHelper.ExecuteNonQuery(sql, cmd);
|
|
codes += "'" + Code + item.WorkPoint + "',";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(codes))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.RCVCode,
|
|
c.WHCode,
|
|
c.Status,
|
|
a.Sequence,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
inv.AmountUnit,
|
|
ext.ProjectCode,
|
|
ext.BatchCode,
|
|
ext.Version,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
FROM ICSWMSManufactureReceiveDetail a
|
|
INNER JOIN ICSWMSManufactureReceive c ON a.RCVCode=c.RCVCode AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.RCVCode+a.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 委外订单新增
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingOrderNoticeCreate(List<ICSOutsourcingOrder> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string OOCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//获取单号
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{13}' AND F_Location='{17}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO [dbo].[ICSOutsourcingOrder]
|
|
([ID],[OOCode],[Sequence],[VenCode],[DepCode],[PersonCode],[Type],[InvCode],[Quantity],[Amount],[InQuantity],[UnitPrice],[Currency],[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[ReleaseState]
|
|
,[ReleaseDate]
|
|
|
|
,[PlanArriveDate]
|
|
,[ArriveUser]
|
|
,[ArriveDate]
|
|
,[DeliveryUser]
|
|
,[DeliveryDate]
|
|
|
|
,[OOID]
|
|
,[OODetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
|
|
,[WorkPoint]
|
|
,[EATTRIBUTE1])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}','{2}', '{3}','{4}','{5}','{6}',{7},{8},{9},{10},'{11}','{12}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{13}' and F_Location='{17}')
|
|
,'{14}','{15}',null,
|
|
|
|
'{16}','{19}','{20}',null,null,
|
|
'','','','','','{20}',
|
|
'{17}','{18}')";
|
|
sql = string.Format(sql, item.OOCode, item.Sequence, item.VenCode, item.DepCode, item.PersonCode,
|
|
item.Type, item.InvCode, item.Quantity, item.Amount, item.InQuantity, item.UnitPrice, item.Currency, item.Status,
|
|
item.User, Dates, item.ReleaseState,
|
|
item.PlanArriveDate.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
item.WorkPoint, IDD, item.ArriveUser, Dates);
|
|
|
|
OOCode = item.OOCode;
|
|
WorkPoint = item.WorkPoint;
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select a.ID,a.OOCode,a.Sequence,a.VenCode,a.DepCode,a.PersonCode,a.Type,a.InvCode
|
|
,a.Amount,a.Quantity,
|
|
a.UnitPrice,a.Currency,a.Status,a.ReleaseState,a.PlanArriveDate,a.CreatePerson,a.CreateDateTime
|
|
from ICSOutsourcingOrder a
|
|
|
|
WHERE a.OOCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, OOCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 委外订单 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingOrderNoticeUpdate(List<ICSOutsourcingOrder> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string OOCode = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string WorkPoint = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
bool deletefalg = false;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
//删除逻辑
|
|
if (!deletefalg)
|
|
{
|
|
if (!string.IsNullOrEmpty(item.deleteIDs))
|
|
{
|
|
|
|
var did = item.deleteIDs.Substring(0, item.deleteIDs.Length - 1);
|
|
//判断是否被委外领料(ICSOApply)、委外出库(ICSOIssue)、委外到货(ICSODeliveryNotice)、委外入库等引用(ICSOutsourcingReceive)
|
|
|
|
sql = @"select abs(isnull(b.Quantity,0))+abs(isnull(c.Quantity,0))+abs(isnull(d.Quantity,0))+abs(isnull(e.Quantity,0))
|
|
from ICSOutsourcingOrder a
|
|
left join ICSOApply b on a.OOCode = b.SourceCode and a.Sequence = b.SourceSequence and a.WorkPoint = b.WorkPoint
|
|
left join ICSOIssue c on a.OOCode = c.SourceCode and a.Sequence = c.SourceSequence and a.WorkPoint = c.WorkPoint
|
|
left join ICSODeliveryNotice d on a.ID = d.OOID and a.WorkPoint = d.WorkPoint
|
|
left join ICSOutsourcingReceive e on a.OOCode = e.SourceCode and a.Sequence = e.SourceSequence and a.WorkPoint = e.WorkPoint
|
|
where a.ID IN ({0}) and a.WorkPoint ='{1}'";
|
|
sql = string.Format(sql, did.TrimEnd(','), item.WorkPoint);
|
|
DataTable cited = DBHelper.SQlReturnData(sql, cmd);
|
|
if (cited.Rows.Count == 0)
|
|
{
|
|
throw new Exception("已被引用,修改失败!");
|
|
}
|
|
Checksql = @"delete from ICSOutsourcingOrder
|
|
where ID IN ({0}) and WorkPoint ='{1}'";
|
|
Checksql = string.Format(Checksql, did.TrimEnd(','), item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
else
|
|
{
|
|
deletefalg = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Checksql = @"select ID,OOCode from ICSOutsourcingOrder a
|
|
where ID ='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, item.ID, item.WorkPoint);
|
|
DataTable datas = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (datas.Rows.Count > 0)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{13}' AND F_Location='{17}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
UPDATE [dbo].[ICSOutsourcingOrder]
|
|
SET [OOCode] = '{0}',[Sequence] = '{1}',[VenCode] = '{2}',[DepCode] = '{3}',[PersonCode] = '{4}' ,[Type] = '{5}' ,[InvCode] = '{6}' ,[Quantity] = '{7}'
|
|
,[Amount] = '{8}' ,[InQuantity] = '{9}',[UnitPrice] = '{10}',[Currency] = '{11}',[Status] = '{12}'
|
|
,[ReleaseState] = '{15}' ,[ReleaseDate] = null,[PlanArriveDate] = '{16}'
|
|
,[ArriveUser] = null,[ArriveDate] = null,[DeliveryUser] = null,[DeliveryDate] = null
|
|
,[OOID] = '',[OODetailID] ='',[ExtensionID] ='',[MUSER] ='{13}' ,[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{13}' and F_Location='{17}')
|
|
,[MTIME] = '{14}' ,[WorkPoint] = '{17}',[EATTRIBUTE1] = '{18}'
|
|
WHERE ID = '{19}'";
|
|
sql = string.Format(sql, item.OOCode, item.Sequence, item.VenCode, item.DepCode, item.PersonCode,
|
|
item.Type, item.InvCode, item.Quantity, item.Amount, item.InQuantity, item.UnitPrice, item.Currency, item.Status,
|
|
item.User, Dates, item.ReleaseState, item.PlanArriveDate.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
item.WorkPoint, IDD, item.ID);
|
|
|
|
OOCode = item.OOCode;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
else
|
|
{
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{13}' AND F_Location='{17}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO [dbo].[ICSOutsourcingOrder]
|
|
([ID],[OOCode],[Sequence],[VenCode],[DepCode],[PersonCode],[Type],[InvCode],[Quantity],[Amount],[InQuantity],[UnitPrice],[Currency],[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[ReleaseState]
|
|
,[ReleaseDate]
|
|
|
|
,[PlanArriveDate]
|
|
,[ArriveUser]
|
|
,[ArriveDate]
|
|
,[DeliveryUser]
|
|
,[DeliveryDate]
|
|
|
|
,[OOID]
|
|
,[OODetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
|
|
,[WorkPoint]
|
|
,[EATTRIBUTE1])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}','{2}', '{3}','{4}','{5}','{6}',{7},{8},{9},{10},'{11}','{12}',
|
|
(select F_RealName from Sys_SRM_User where F_Account='{13}' and F_Location='{17}')
|
|
,'{14}','{15}',null,
|
|
|
|
'{16}','{19}','{20}',null,null,
|
|
'','','','','','{20}',
|
|
'{17}','{18}')";
|
|
sql = string.Format(sql, item.OOCode, item.Sequence, item.VenCode, item.DepCode, item.PersonCode,
|
|
item.Type, item.InvCode, item.Quantity, item.Amount, item.InQuantity, item.UnitPrice, item.Currency, item.Status,
|
|
item.User, Dates, item.ReleaseState,
|
|
item.PlanArriveDate.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
item.WorkPoint, IDD, item.ArriveUser, Dates);
|
|
|
|
OOCode = item.OOCode;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo025"));//"生产退料单子表信息修改失败!");
|
|
}
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select a.ID,a.OOCode,a.Sequence,a.VenCode,a.DepCode,a.PersonCode,a.Type,a.InvCode
|
|
,a.Amount,a.Quantity,
|
|
a.UnitPrice,a.Currency,a.Status,a.ReleaseState,a.PlanArriveDate,a.CreatePerson,a.CreateDateTime
|
|
from ICSOutsourcingOrder a
|
|
|
|
WHERE a.OOCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, OOCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外订单备料 新增
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
public static DataTable OOPickNoticeCreate(List<ICSOOPick> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string OODetailID = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string WorkPoint = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//判断当前录入的总数量是否超过了订单数量
|
|
sql = @"select a.OOCode,a.Sequence,sum(ISNULL(b.Quantity,0) - a.Quantity) as DifferenceQty
|
|
,sum(ISNULL(b.Quantity,0)) as bQty,a.Quantity from ICSOutsourcingOrder a
|
|
left join ICSOOPick b on a.ID = b.OODetailID and a.WorkPoint = b.WorkPoint
|
|
where a.ID = '{0}' and a.WorkPoint='{1}'
|
|
group by a.OOCode,a.Sequence,a.Quantity";
|
|
sql = string.Format(sql, item.OODetailID, item.WorkPoint);
|
|
DataTable qtydata = DBHelper.SQlReturnData(sql, cmd);
|
|
if (qtydata.Rows.Count == 0)
|
|
{
|
|
throw new Exception("未找到委外订单");
|
|
}
|
|
else
|
|
{
|
|
var qtysum = JsonData.Where(q => q.OODetailID == item.OODetailID).Sum(q => Convert.ToDouble(q.Quantity));
|
|
var DifferenceQty = Convert.ToInt32(qtydata.Rows[0]["DifferenceQty"]);
|
|
var Quantity = Convert.ToInt32(qtydata.Rows[0]["Quantity"]);
|
|
var bQty = Convert.ToInt32(qtydata.Rows[0]["bQty"]);
|
|
var OOCode = qtydata.Rows[0]["OOCode"];
|
|
var OOSequence = qtydata.Rows[0]["Sequence"];
|
|
//已入库数量和订单数量的差 小于0 则没有超过订单数量 则超过报错
|
|
if (DifferenceQty > 0)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已备料数量:" + bQty.ToString() + "。当前备料总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
else
|
|
{
|
|
//录入数量大于已入库数量和订单数量的差 则超过报错
|
|
if (0 - DifferenceQty < qtysum)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已备料数量:" + bQty.ToString() + "。当前备料总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
}
|
|
}
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//获取单号
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{11}' AND F_Location='{13}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO [dbo].[ICSOOPick]
|
|
([ID]
|
|
,[OODetailID]
|
|
,[PickID]
|
|
,[ParentPickID]
|
|
|
|
,[ParentQuantity]
|
|
,[ParentAmount]
|
|
,[Sequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[SupplyType]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint])
|
|
VALUES
|
|
(NEWID(),'{0}','',null,{1},{2},'{3}','{4}',{5},{6},{7},'{8}','{9}','{10}','{11}'
|
|
,(select F_RealName from Sys_SRM_User where F_Account='{11}' and F_Location='{13}')
|
|
,'{12}','{13}')";
|
|
sql = string.Format(sql, item.OODetailID, item.ParentQuantity, item.ParentAmount, item.Sequence, item.InvCode, item.Quantity, item.Amount,
|
|
item.IssueQuantity, item.WHCode, item.SupplyType, IDD, item.User, Dates, item.WorkPoint);
|
|
|
|
OODetailID = item.OODetailID;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select [OODetailID],[PickID],[ParentPickID],[ParentQuantity]
|
|
,[ParentAmount]
|
|
,[Sequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[SupplyType]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint]
|
|
from ICSOOPick a
|
|
|
|
WHERE a.OODetailID = '{0}' and Sequence = '{1}' and a.WorkPoint = '{2}'";
|
|
sql = string.Format(sql, OODetailID, Sequence, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 委外订单备料 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OOPickrNoticeUpdate(List<ICSOOPick> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Code = string.Empty;
|
|
string ids = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string OODetailID = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
string dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
foreach (var item in JsonData)
|
|
{
|
|
//判断当前录入的总数量是否超过了订单数量
|
|
sql = @"select a.OOCode,a.Sequence,sum(ISNULL(b.Quantity,0) - a.Quantity) as DifferenceQty
|
|
,sum(ISNULL(b.Quantity,0)) as bQty,a.Quantity from ICSOutsourcingOrder a
|
|
left join ICSOOPick b on a.ID = b.OODetailID and a.WorkPoint = b.WorkPoint
|
|
where a.ID = '{0}' and a.WorkPoint='{1}'
|
|
group by a.OOCode,a.Sequence,a.Quantity";
|
|
sql = string.Format(sql, item.OODetailID, item.WorkPoint);
|
|
DataTable qtydata = DBHelper.SQlReturnData(sql, cmd);
|
|
if (qtydata.Rows.Count == 0)
|
|
{
|
|
throw new Exception("未找到委外订单");
|
|
}
|
|
else
|
|
{
|
|
var qtysum = JsonData.Where(q => q.OODetailID == item.OODetailID).Sum(q => Convert.ToDouble(q.Quantity));
|
|
var DifferenceQty = Convert.ToInt32(qtydata.Rows[0]["DifferenceQty"]);
|
|
var Quantity = Convert.ToInt32(qtydata.Rows[0]["Quantity"]);
|
|
var bQty = Convert.ToInt32(qtydata.Rows[0]["bQty"]);
|
|
var OOCode = qtydata.Rows[0]["OOCode"];
|
|
var OOSequence = qtydata.Rows[0]["Sequence"];
|
|
//已入库数量和订单数量的差 小于0 则没有超过订单数量 则超过报错
|
|
if (DifferenceQty > 0)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已备料数量:" + bQty.ToString() + "。当前备料总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
else
|
|
{
|
|
//录入数量大于已入库数量和订单数量的差 则超过报错
|
|
if (0 - DifferenceQty < qtysum)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已备料数量:" + bQty.ToString() + "。当前备料总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
}
|
|
}
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
Checksql = @"select ID,OODetailID from ICSOOPick a
|
|
where ID ='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, item.ID, item.WorkPoint);
|
|
DataTable datas = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (datas.Rows.Count > 0)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{13}' AND F_Location='{15}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
UPDATE [dbo].[ICSOOPick]
|
|
SET [OODetailID] = '{0}'
|
|
,[PickID] = '{1}'
|
|
,[ParentPickID] = '{2}'
|
|
,[ParentQuantity] = {3}
|
|
,[ParentAmount] = {4}
|
|
,[Sequence] = '{5}'
|
|
,[InvCode] = '{6}'
|
|
,[Quantity] = {7}
|
|
,[Amount] = {8}
|
|
,[IssueQuantity] = {9}
|
|
,[WHCode] = '{10}'
|
|
,[SupplyType] = '{11}'
|
|
,[ExtensionID] = '{12}'
|
|
,[MUSER] = '{13}'
|
|
,[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{13}' and F_Location='{15}')
|
|
,[MTIME] = '{14}'
|
|
,[WorkPoint] = '{15}'
|
|
WHERE ID = '{16}'";
|
|
sql = string.Format(sql, item.OODetailID, item.PickID, item.ParentPickID, item.ParentQuantity, item.ParentAmount,
|
|
item.Sequence, item.InvCode, item.Quantity, item.Amount, item.IssueQuantity, item.WHCode, item.SupplyType, IDD,
|
|
item.User, dates, item.WorkPoint, item.ID);
|
|
|
|
OODetailID = item.OODetailID;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
else
|
|
{
|
|
//创建主表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{11}' AND F_Location='{13}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO [dbo].[ICSOOPick]
|
|
([ID]
|
|
,[OODetailID]
|
|
,[PickID]
|
|
,[ParentPickID]
|
|
|
|
,[ParentQuantity]
|
|
,[ParentAmount]
|
|
,[Sequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[SupplyType]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint])
|
|
VALUES
|
|
(NEWID(),'{0}','',null,{1},{2},'{3}','{4}',{5},{6},{7},'{8}','{9}','{10}','{11}'
|
|
,(select F_RealName from Sys_SRM_User where F_Account='{11}' and F_Location='{13}')
|
|
,'{12}','{13}')";
|
|
sql = string.Format(sql, item.OODetailID, item.ParentQuantity, item.ParentAmount, item.Sequence, item.InvCode, item.Quantity, item.Amount,
|
|
item.IssueQuantity, item.WHCode, item.SupplyType, IDD, item.User, Dates, item.WorkPoint);
|
|
|
|
OODetailID = item.OODetailID;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select [OODetailID],[PickID],[ParentPickID],[ParentQuantity]
|
|
,[ParentAmount]
|
|
,[Sequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[SupplyType]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint]
|
|
from ICSOOPick a
|
|
|
|
WHERE a.OODetailID = '{0}' and Sequence = '{1}' and a.WorkPoint = '{2}'";
|
|
sql = string.Format(sql, OODetailID, Sequence, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外领料单 新增
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
public static DataTable OApplyNoticeCreate(List<ICSOApply> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string ApplyCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//获取单号
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
//创建主表
|
|
sql = @"
|
|
|
|
INSERT INTO [dbo].[ICSOApply]
|
|
([ID],[ApplyCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[ApplyID]
|
|
,[ApplyDetailID]
|
|
,[ExtensionID]
|
|
,[WorkPoint]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}',null,null,'{2}',{3},null,null,'{4}','1','2'
|
|
,'{5}','{6}',NEWID(),NEWID(),'{7}','{8}','','','{9}')";
|
|
sql = string.Format(sql, item.ApplyCode, item.Sequence, item.InvCode, item.Quantity,
|
|
item.WHCode, item.User, Dates, IDD, item.WorkPoint, Dates);
|
|
|
|
ApplyCode = item.ApplyCode;
|
|
WorkPoint = item.WorkPoint;
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select [ApplyCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[ApplyID]
|
|
,[ApplyDetailID]
|
|
,[ExtensionID]
|
|
from ICSOApply a
|
|
WHERE a.ApplyCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, ApplyCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 委外领料单 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OApplyNoticeUpdate(List<ICSOApply> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string ApplyCode = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string WorkPoint = string.Empty;
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
string dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
bool deletefalg = false;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
//删除逻辑
|
|
if (!deletefalg)
|
|
{
|
|
if (!string.IsNullOrEmpty(item.deleteIDs))
|
|
{
|
|
var did = item.deleteIDs.Substring(0, item.deleteIDs.Length - 1);
|
|
Checksql = @"delete from ICSOApply
|
|
where ID IN ({0}) and WorkPoint ='{1}'";
|
|
Checksql = string.Format(Checksql, did.TrimEnd(','), item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
else
|
|
{
|
|
deletefalg = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Checksql = @"select ID,ApplyCode from ICSOApply a
|
|
where ID ='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, item.ID, item.WorkPoint);
|
|
DataTable datas = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (datas.Rows.Count > 0)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{6}' AND F_Location='{8}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
UPDATE [dbo].[ICSOApply]
|
|
SET [ApplyCode] = '{0}'
|
|
,[Sequence] = '{1}'
|
|
,[InvCode] = '{2}'
|
|
,[Quantity] = {3}
|
|
,[WHCode] = '{4}'
|
|
,[Type] = '1'
|
|
,[Status] = '1'
|
|
,[ExtensionID] = '{5}'
|
|
,[MUSER] = '{6}'
|
|
,[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{8}')
|
|
,[MTIME] = '{7}'
|
|
,[WorkPoint] = '{8}'
|
|
WHERE ID = '{9}'";
|
|
sql = string.Format(sql, item.ApplyCode, item.Sequence, item.InvCode, item.Quantity, item.WHCode,
|
|
IDD, item.User, dates, item.WorkPoint, item.ID);
|
|
|
|
ApplyCode = item.ApplyCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
INSERT INTO [dbo].[ICSOApply]
|
|
([ID],[ApplyCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[ApplyID]
|
|
,[ApplyDetailID]
|
|
,[ExtensionID]
|
|
,[WorkPoint]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}',null,null,'{2}',{3},null,null,'{4}','1','1'
|
|
,'{5}','{6}',NEWID(),NEWID(),'{7}','{8}','','','{9}')";
|
|
sql = string.Format(sql, item.ApplyCode, item.Sequence, item.InvCode, item.Quantity,
|
|
item.WHCode, item.User, Dates, IDD, item.WorkPoint, Dates);
|
|
|
|
|
|
ApplyCode = item.ApplyCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
}
|
|
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select [ApplyCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[ApplyID]
|
|
,[ApplyDetailID]
|
|
,[ExtensionID]
|
|
from ICSOApply a
|
|
WHERE a.ApplyCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, ApplyCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外出库表 新增
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
public static DataTable OIssueNoticeCreate(List<ICSOIssue> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string IssueCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//获取单号
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
|
|
//创建主表
|
|
sql = @"
|
|
|
|
INSERT INTO [dbo].[ICSOIssue]
|
|
([ID]
|
|
,[IssueCode]
|
|
,[Sequence]
|
|
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[IssueID]
|
|
,[IssueDetailID]
|
|
,[PickID]
|
|
,[ApplyDetailID]
|
|
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}',null,null,'{2}',{3},null,null,'{4}','1','1'
|
|
,'{5}','{6}',NEWID(),NEWID(),null,null,'{7}','','','{8}','{9}')";
|
|
sql = string.Format(sql, item.IssueCode, item.Sequence, item.InvCode, item.Quantity,
|
|
item.WHCode, item.User, Dates, IDD, Dates, item.WorkPoint);
|
|
|
|
IssueCode = item.IssueCode;
|
|
WorkPoint = item.WorkPoint;
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
[IssueCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[IssueID]
|
|
,[IssueDetailID]
|
|
,[PickID]
|
|
,[ApplyDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
from ICSOIssue a
|
|
WHERE a.IssueCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, IssueCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 委外出库表 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OIssueNoticeUpdate(List<ICSOIssue> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string IssueCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
string dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
bool deletefalg = false;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
//删除逻辑
|
|
if (!deletefalg)
|
|
{
|
|
if (!string.IsNullOrEmpty(item.deleteIDs))
|
|
{
|
|
var did = item.deleteIDs.Substring(0, item.deleteIDs.Length - 1);
|
|
Checksql = @"delete from ICSOApply
|
|
where ID IN ({0}) and WorkPoint ='{1}'";
|
|
Checksql = string.Format(Checksql, did.TrimEnd(','), item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
else
|
|
{
|
|
deletefalg = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Checksql = @"select ID,IssueCode from ICSOIssue a
|
|
where ID ='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, item.ID, item.WorkPoint);
|
|
DataTable datas = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (datas.Rows.Count > 0)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{5}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
UPDATE [dbo].[ICSOIssue]
|
|
SET [Sequence] = '{0}'
|
|
,[InvCode] = '{1}'
|
|
,[Quantity] = {2}
|
|
,[WHCode] = '{3}'
|
|
,[ExtensionID] = '{4}'
|
|
,[MUSER] = '{5}'
|
|
,[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{5}' and F_Location='{6}')
|
|
,[MTIME] = '{7}'
|
|
,[WorkPoint] = '{6}'
|
|
WHERE ID = '{8}'";
|
|
sql = string.Format(sql, item.Sequence, item.InvCode, item.Quantity, item.WHCode,
|
|
IDD, item.User, item.WorkPoint, dates, item.ID);
|
|
|
|
IssueCode = item.IssueCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
INSERT INTO [dbo].[ICSOIssue]
|
|
([ID]
|
|
,[IssueCode]
|
|
,[Sequence]
|
|
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[IssueID]
|
|
,[IssueDetailID]
|
|
,[PickID]
|
|
,[ApplyDetailID]
|
|
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}',null,null,'{2}',{3},null,null,'{4}','1','1'
|
|
,'{5}','{6}',NEWID(),NEWID(),null,null,'{7}','','','{8}','{9}')";
|
|
sql = string.Format(sql, item.IssueCode, item.Sequence, item.InvCode, item.Quantity,
|
|
item.WHCode, item.User, Dates, IDD, Dates, item.WorkPoint);
|
|
|
|
|
|
IssueCode = item.IssueCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
}
|
|
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
[IssueCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[IssueQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[IssueID]
|
|
,[IssueDetailID]
|
|
,[PickID]
|
|
,[ApplyDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
from ICSOIssue a
|
|
WHERE a.IssueCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, IssueCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委外到货单 新增
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
public static DataTable ODeliveryNoticeCreate(List<ICSODeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string ODNCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
//判断当前录入的总数量是否超过了订单数量
|
|
sql = @"select a.OOCode,a.Sequence,sum(ISNULL(b.Quantity,0) - a.Quantity) as DifferenceQty
|
|
,sum(ISNULL(b.Quantity,0)) as bQty,a.Quantity from ICSOutsourcingOrder a
|
|
left join ICSODeliveryNotice b on a.ID = b.OOID and a.WorkPoint = b.WorkPoint
|
|
where a.ID = '{0}' and a.WorkPoint='{1}'
|
|
group by a.OOCode,a.Sequence,a.Quantity";
|
|
sql = string.Format(sql, item.OOID, item.WorkPoint);
|
|
DataTable qtydata = DBHelper.SQlReturnData(sql, cmd);
|
|
if (qtydata.Rows.Count == 0)
|
|
{
|
|
throw new Exception("未找到委外订单");
|
|
}
|
|
else
|
|
{
|
|
var qtysum = JsonData.Where(q => q.OODetailID == item.OODetailID).Sum(q => Convert.ToInt32(q.Quantity));
|
|
var DifferenceQty = Convert.ToInt32(qtydata.Rows[0]["DifferenceQty"]);
|
|
var Quantity = Convert.ToInt32(qtydata.Rows[0]["Quantity"]);
|
|
var bQty = Convert.ToInt32(qtydata.Rows[0]["bQty"]);
|
|
var OOCode = qtydata.Rows[0]["OOCode"];
|
|
var OOSequence = qtydata.Rows[0]["Sequence"];
|
|
//已入库数量和订单数量的差 小于0 则没有超过订单数量 则超过报错
|
|
if (DifferenceQty > 0)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已到货数量:" + bQty.ToString() + "。当前到货总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
else
|
|
{
|
|
//录入数量大于已入库数量和订单数量的差 则超过报错
|
|
if (0 - DifferenceQty < qtysum)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已到货数量:" + bQty.ToString() + "。当前到货总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
}
|
|
}
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//获取单号
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
//直接关联ID新增
|
|
//sql = @"select a.ID,a.OOCode,a.Sequence,a.VenCode,a.DepCode,a.PersonCode,a.InvCode,a.Amount,a.Quantity,
|
|
// a.UnitPrice,a.Currency,a.Status,a.ReleaseState,a.PlanArriveDate,a.CreatePerson,a.CreateDateTime
|
|
// from ICSOutsourcingOrder a
|
|
// where a.ID ='{0}' and WorkPoint='{1}'";
|
|
//sql = string.Format(sql, item.OOID, item.WorkPoint);
|
|
//DataTable oo = DBHelper.SQlReturnData(sql, cmd);
|
|
//创建主表
|
|
sql = @"
|
|
|
|
INSERT INTO [dbo].[ICSODeliveryNotice]
|
|
([ID]
|
|
,[ODNCode]
|
|
,[Sequence]
|
|
,[VenCode]
|
|
,[DepCode]
|
|
,[WHCode]
|
|
,[ODNType]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[UnitPrice]
|
|
,[Currency]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[OOID]
|
|
,[OODetailID]
|
|
,[ODNID]
|
|
,[ODNDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint]
|
|
,[EATTRIBUTE1])
|
|
SELECT NEWID(),'{0}','{1}',oo.VenCode,oo.DepCode,'{2}','1',oo.InvCode,{3}
|
|
,null,null,oo.UnitPrice,oo.Currency,'1'
|
|
,'{4}','{5}',oo.ID,'','',''
|
|
,'{6}','','','{7}','{8}','{9}' FROM ICSOutsourcingOrder oo WHERE oo.ID = '{10}'";
|
|
sql = string.Format(sql, item.ODNCode, item.Sequence, item.WHCode, item.Quantity,
|
|
item.User, Dates, IDD, Dates, item.WorkPoint, item.EATTRIBUTE1, item.OOID);
|
|
|
|
ODNCode = item.ODNCode;
|
|
WorkPoint = item.WorkPoint;
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
[ID]
|
|
,[ODNCode]
|
|
,[Sequence]
|
|
,[VenCode]
|
|
,[DepCode]
|
|
,[WHCode]
|
|
,[ODNType]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[UnitPrice]
|
|
,[Currency]
|
|
,[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[OOID]
|
|
,[OODetailID]
|
|
,[ODNID]
|
|
,[ODNDetailID]
|
|
|
|
,[ExtensionID]
|
|
from ICSODeliveryNotice a
|
|
WHERE a.ODNCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, ODNCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 委外到货单 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ODeliveryNoticeUpdate(List<ICSODeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string ODNCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
bool deletefalg = false;
|
|
string dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
foreach (var item in JsonData)
|
|
{
|
|
//判断当前录入的总数量是否超过了订单数量
|
|
sql = @"select a.OOCode,a.Sequence,sum(ISNULL(b.Quantity,0) - a.Quantity) as DifferenceQty
|
|
,sum(ISNULL(b.Quantity,0)) as bQty,a.Quantity from ICSOutsourcingOrder a
|
|
left join ICSODeliveryNotice b on a.ID = b.OOID and a.WorkPoint = b.WorkPoint
|
|
where a.ID = '{0}' and a.WorkPoint='{1}'
|
|
group by a.OOCode,a.Sequence,a.Quantity";
|
|
sql = string.Format(sql, item.OOID, item.WorkPoint);
|
|
DataTable qtydata = DBHelper.SQlReturnData(sql, cmd);
|
|
if (qtydata.Rows.Count == 0)
|
|
{
|
|
throw new Exception("未找到委外订单");
|
|
}
|
|
else
|
|
{
|
|
var qtysum = JsonData.Where(q => q.OODetailID == item.OODetailID).Sum(q => Convert.ToInt32(q.Quantity));
|
|
var DifferenceQty = Convert.ToInt32(qtydata.Rows[0]["DifferenceQty"]);
|
|
var Quantity = Convert.ToInt32(qtydata.Rows[0]["Quantity"]);
|
|
var bQty = Convert.ToInt32(qtydata.Rows[0]["bQty"]);
|
|
var OOCode = qtydata.Rows[0]["OOCode"];
|
|
var OOSequence = qtydata.Rows[0]["Sequence"];
|
|
//已入库数量和订单数量的差 小于0 则没有超过订单数量 则超过报错
|
|
if (DifferenceQty > 0)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已到货数量:" + bQty.ToString() + "。当前到货总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
else
|
|
{
|
|
//录入数量大于已入库数量和订单数量的差 则超过报错
|
|
if (0 - DifferenceQty < qtysum)
|
|
{
|
|
throw new Exception("委外订单" + OOCode + "第" + OOSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已到货数量:" + bQty.ToString() + "。当前到货总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
}
|
|
}
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
//删除逻辑
|
|
if (!deletefalg)
|
|
{
|
|
if (!string.IsNullOrEmpty(item.deleteIDs))
|
|
{
|
|
|
|
var did = item.deleteIDs.Substring(0, item.deleteIDs.Length - 1);
|
|
Checksql = @"delete from ICSOutsourcingReceive
|
|
where ID IN ({0}) and WorkPoint ='{1}'";
|
|
Checksql = string.Format(Checksql, did.TrimEnd(','), item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
else
|
|
{
|
|
deletefalg = true;
|
|
}
|
|
}
|
|
}
|
|
Checksql = @"select ID,ODNCode from ICSODeliveryNotice a
|
|
where ID ='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, item.ID, item.WorkPoint);
|
|
DataTable datas = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (datas.Rows.Count > 0)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{6}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
update ICSODeliveryNotice
|
|
set [Sequence] = '{0}'
|
|
,[VenCode] = b.VenCode
|
|
,[DepCode] = b.DepCode
|
|
,[WHCode] = '{1}'
|
|
,[InvCode] = b.InvCode
|
|
,[Quantity] = {2}
|
|
,[UnitPrice] = b.UnitPrice
|
|
,[Currency] = b.Currency
|
|
,[OOID] = b.ID
|
|
,[ExtensionID] = '{3}'
|
|
,[MUSER] = '{4}'
|
|
,[MUSERName] = (SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{6}')
|
|
,[MTIME] = '{5}'
|
|
,[WorkPoint] = '{6}'
|
|
,[EATTRIBUTE1] = '{7}'
|
|
from ICSODeliveryNotice a
|
|
join ICSOutsourcingOrder b on a.OOID = '{9}' and a.WorkPoint = b.WorkPoint
|
|
where a.ID = '{8}'";
|
|
sql = string.Format(sql, item.Sequence, item.WHCode, item.Quantity,
|
|
IDD, item.User, dates, item.WorkPoint, item.EATTRIBUTE1, item.ID, item.OOID);
|
|
|
|
ODNCode = item.ODNCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
INSERT INTO [dbo].[ICSODeliveryNotice]
|
|
([ID]
|
|
,[ODNCode]
|
|
,[Sequence]
|
|
,[VenCode]
|
|
,[DepCode]
|
|
,[WHCode]
|
|
,[ODNType]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[UnitPrice]
|
|
,[Currency]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
|
|
,[OOID]
|
|
,[OODetailID]
|
|
,[ODNID]
|
|
,[ODNDetailID]
|
|
,[ExtensionID]
|
|
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint]
|
|
,[EATTRIBUTE1])
|
|
SELECT NEWID(),'{0}','{1}',oo.VenCode,oo.DepCode,'{2}','1',oo.InvCode,{3}
|
|
,null,null,oo.UnitPrice,oo.Currency,'1'
|
|
,'{4}','{5}',oo.ID,'','',''
|
|
,'{6}','','','{7}','{8}','{9}' FROM ICSOutsourcingOrder oo WHERE oo.ID = '{10}'";
|
|
sql = string.Format(sql, item.ODNCode, item.Sequence, item.WHCode, item.Quantity,
|
|
item.User, Dates, IDD, Dates, item.WorkPoint, item.EATTRIBUTE1, item.OOID);
|
|
|
|
ODNCode = item.ODNCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
}
|
|
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
[ID]
|
|
,[ODNCode]
|
|
,[Sequence]
|
|
,[VenCode]
|
|
,[DepCode]
|
|
,[WHCode]
|
|
,[ODNType]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[UnitPrice]
|
|
,[Currency]
|
|
,[Status]
|
|
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
,[OOID]
|
|
,[OODetailID]
|
|
,[ODNID]
|
|
,[ODNDetailID]
|
|
|
|
,[ExtensionID]
|
|
from ICSODeliveryNotice a
|
|
WHERE a.ODNCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, ODNCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 红字采购入库(委外) 新增
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
public static DataTable OutsourcingReceiveCreate(List<ICSOutsourcingReceive> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string RCVCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
//判断当前录入的总数量是否超过了订单数量
|
|
sql = @"select a.OOCode,a.Sequence,sum(ISNULL(b.Quantity,0) - a.Quantity) as DifferenceQty
|
|
,sum(ISNULL(b.Quantity,0)) as bQty,a.Quantity from ICSOutsourcingOrder a
|
|
left join ICSOutsourcingReceive b on a.OOCode = b.SourceCode and a.Sequence = b.SourceSequence and a.WorkPoint = b.WorkPoint
|
|
where a.OOCode ='{0}' and a.Sequence = '{1}' and a.WorkPoint='{2}'
|
|
group by a.OOCode,a.Sequence,a.Quantity";
|
|
sql = string.Format(sql, item.SourceCode, item.SourceSequence, item.WorkPoint);
|
|
DataTable qtydata = DBHelper.SQlReturnData(sql, cmd);
|
|
if (qtydata.Rows.Count == 0)
|
|
{
|
|
throw new Exception("未找到委外订单" + item.SourceCode + "第" + item.SourceSequence + "行");
|
|
}
|
|
else
|
|
{
|
|
var qtysum = JsonData.Where(q => q.SourceCode == item.SourceCode && q.SourceSequence == item.SourceSequence).Sum(q => Convert.ToInt32(q.Quantity));
|
|
var DifferenceQty = Convert.ToInt32(qtydata.Rows[0]["DifferenceQty"]);
|
|
var Quantity = Convert.ToInt32(qtydata.Rows[0]["Quantity"]);
|
|
var bQty = Convert.ToInt32(qtydata.Rows[0]["bQty"]);
|
|
//已入库数量和订单数量的差 小于0 则没有超过订单数量 则超过报错
|
|
if (DifferenceQty > 0)
|
|
{
|
|
throw new Exception("委外订单" + item.SourceCode + "第" + item.SourceSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已入库数量:" + bQty.ToString() + "。当前入库总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
else
|
|
{
|
|
//录入数量大于已入库数量和订单数量的差 则超过报错
|
|
if (0 - DifferenceQty < qtysum)
|
|
{
|
|
throw new Exception("委外订单" + item.SourceCode + "第" + item.SourceSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已入库数量:" + bQty.ToString() + "。当前入库总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
}
|
|
}
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//获取单号
|
|
|
|
string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
if (uniqueItems.Contains(key))
|
|
{
|
|
throw new Exception("子件不可重复添加!");
|
|
}
|
|
|
|
uniqueItems.Add(key);
|
|
//直接关联ID新增
|
|
//sql = @"select a.ID,a.OOCode,a.Sequence,a.VenCode,a.DepCode,a.PersonCode,a.InvCode,a.Amount,a.Quantity,
|
|
// a.UnitPrice,a.Currency,a.Status,a.ReleaseState,a.PlanArriveDate,a.CreatePerson,a.CreateDateTime
|
|
// from ICSOutsourcingOrder a
|
|
// where a.ID ='{0}' and WorkPoint='{1}'";
|
|
//sql = string.Format(sql, item.OOID, item.WorkPoint);
|
|
//DataTable oo = DBHelper.SQlReturnData(sql, cmd);
|
|
//创建主表
|
|
sql = @"
|
|
INSERT INTO [dbo].[ICSOutsourcingReceive]
|
|
([ID]
|
|
,[RCVCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
|
|
,[RCVID]
|
|
,[RCVDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}','{2}', '{3}','{4}',{5},null,null,'{6}','2','1','{7}','{8}',
|
|
NEWID(),NEWID(),'{9}','','','{10}','{11}')";
|
|
sql = string.Format(sql, item.RCVCode, item.Sequence, item.SourceCode, item.SourceSequence, item.InvCode, item.Quantity, item.WHCode, item.User, Dates,
|
|
IDD, Dates, item.WorkPoint);
|
|
|
|
RCVCode = item.RCVCode;
|
|
WorkPoint = item.WorkPoint;
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
[ID]
|
|
,[RCVCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
|
|
,[RCVID]
|
|
,[RCVDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint]
|
|
from ICSOutsourcingReceive a
|
|
WHERE a.RCVCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, RCVCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 红字采购入库(委外) 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable OutsourcingReceiveUpdate(List<ICSOutsourcingReceive> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string RCVCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
string dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
bool deletefalg = false;
|
|
foreach (var item in JsonData)
|
|
{
|
|
//判断当前录入的总数量是否超过了订单数量
|
|
sql = @"select a.OOCode,a.Sequence,sum(ISNULL(b.Quantity,0) - a.Quantity) as DifferenceQty
|
|
,sum(ISNULL(b.Quantity,0)) as bQty,a.Quantity from ICSOutsourcingOrder a
|
|
left join ICSOutsourcingReceive b on a.OOCode = b.SourceCode and a.Sequence = b.SourceSequence and a.WorkPoint = b.WorkPoint
|
|
where a.OOCode ='{0}' and a.Sequence = '{1}' and a.WorkPoint='{2}'
|
|
group by a.OOCode,a.Sequence,a.Quantity";
|
|
sql = string.Format(sql, item.SourceCode, item.SourceSequence, item.WorkPoint);
|
|
DataTable qtydata = DBHelper.SQlReturnData(sql, cmd);
|
|
if (qtydata.Rows.Count == 0)
|
|
{
|
|
throw new Exception("未找到委外订单" + item.SourceCode + "第" + item.SourceSequence + "行");
|
|
}
|
|
else
|
|
{
|
|
var qtysum = JsonData.Where(q => q.SourceCode == item.SourceCode && q.SourceSequence == item.SourceSequence).Sum(q => Convert.ToInt32(q.Quantity));
|
|
var DifferenceQty = Convert.ToInt32(qtydata.Rows[0]["DifferenceQty"]);
|
|
var Quantity = Convert.ToInt32(qtydata.Rows[0]["Quantity"]);
|
|
var bQty = Convert.ToInt32(qtydata.Rows[0]["bQty"]);
|
|
//已入库数量和订单数量的差 小于0 则没有超过订单数量 则超过报错
|
|
if (DifferenceQty > 0)
|
|
{
|
|
throw new Exception("委外订单" + item.SourceCode + "第" + item.SourceSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已入库数量:" + bQty.ToString() + "。当前入库总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
else
|
|
{
|
|
//录入数量大于已入库数量和订单数量的差 则超过报错
|
|
if (0 - DifferenceQty < qtysum)
|
|
{
|
|
throw new Exception("委外订单" + item.SourceCode + "第" + item.SourceSequence + "行的订单数量:" + Quantity.ToString() +
|
|
"。已入库数量:" + bQty.ToString() + "。当前入库总数量:" + qtysum.ToString() + "。已超过订单数量!");
|
|
}
|
|
}
|
|
}
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
//删除逻辑
|
|
if (!deletefalg)
|
|
{
|
|
if (!string.IsNullOrEmpty(item.deleteIDs))
|
|
{
|
|
var did = item.deleteIDs.Substring(0, item.deleteIDs.Length - 1);
|
|
Checksql = @"delete from ICSOutsourcingReceive
|
|
where ID IN ({0}) and WorkPoint ='{1}'";
|
|
Checksql = string.Format(Checksql, did.TrimEnd(','), item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(Checksql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
else
|
|
{
|
|
deletefalg = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Checksql = @"select ID,RCVCode from ICSOutsourcingReceive a
|
|
where ID ='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, item.ID, item.WorkPoint);
|
|
DataTable datas = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (datas.Rows.Count > 0)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{8}' AND F_Location='{10}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
UPDATE [dbo].[ICSOutsourcingReceive]
|
|
SET [RCVCode] = '{0}'
|
|
,[Sequence] = '{1}'
|
|
,[SourceCode] = '{2}'
|
|
,[SourceSequence] = '{3}'
|
|
,[InvCode] = '{4}'
|
|
,[Quantity] = {5}
|
|
,[WHCode] = '{6}'
|
|
,[ExtensionID] = '{7}'
|
|
,[MUSER] = '{8}'
|
|
,[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{8}' and F_Location='{10}')
|
|
,[MTIME] = '{9}'
|
|
,[WorkPoint] = '{10}'
|
|
where ID = '{11}'";
|
|
sql = string.Format(sql, item.RCVCode, item.Sequence, item.SourceCode, item.SourceSequence, item.InvCode, item.Quantity,
|
|
item.WHCode, IDD, item.User, dates, item.WorkPoint, item.ID);
|
|
|
|
RCVCode = item.RCVCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
else
|
|
{
|
|
sql = @"
|
|
INSERT INTO [dbo].[ICSOutsourcingReceive]
|
|
([ID]
|
|
,[RCVCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
|
|
,[RCVID]
|
|
,[RCVDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint])
|
|
VALUES
|
|
(NEWID(),'{0}','{1}','{2}', '{3}','{4}',{5},null,null,'{6}','2','1','{7}','{8}',
|
|
NEWID(),NEWID(),'{9}','','','{10}','{11}')";
|
|
sql = string.Format(sql, item.RCVCode, item.Sequence, item.SourceCode, item.SourceSequence, item.InvCode, item.Quantity, item.WHCode, item.User, Dates,
|
|
IDD, Dates, item.WorkPoint);
|
|
|
|
RCVCode = item.RCVCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
//修改委外订单的入库数量
|
|
}
|
|
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
[ID]
|
|
,[RCVCode]
|
|
,[Sequence]
|
|
,[SourceCode]
|
|
,[SourceSequence]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[WHCode]
|
|
,[Type]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
|
|
,[RCVID]
|
|
,[RCVDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint]
|
|
from ICSOutsourcingReceive a
|
|
WHERE a.RCVCode = '{0}' and a.WorkPoint = '{1}'";
|
|
sql = string.Format(sql, RCVCode, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 采购到货(退货 包含无源头) 新增
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
public static DataTable ICSEDeliveryNoticeCreate(List<ICSEDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string DNCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string DNCodes = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
|
|
|
|
HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
var ASNCode = "";
|
|
string Code = "";
|
|
//if (!string.IsNullOrEmpty(item.LotNo))
|
|
//{
|
|
// //判断送货单号是否存在
|
|
// sql = @"select a.ID,a.ASNCode,a.Sequence,a.LotNo,a.Quantity as ASNQty,a.DNQuantity from ICSASNDetail a where a.LotNo = '{0}' and a.WorkPoint='{1}'";
|
|
// sql = string.Format(sql, item.LotNo, item.WorkPoint);
|
|
// DataTable ASNdata = DBHelper.SQlReturnData(sql, cmd);
|
|
// if (ASNdata.Rows.Count == 0)
|
|
// {
|
|
// throw new Exception("未找到送货单" + item.LotNo);
|
|
// }
|
|
|
|
// var qtysum = JsonData.Where(q => q.LotNo == item.LotNo).Sum(q => Convert.ToInt32(q.Quantity));
|
|
// var ASNQty = Convert.ToInt32(ASNdata.Rows[0]["ASNQty"]);//送货单数量
|
|
// var DNQuantity = Convert.ToInt32(ASNdata.Rows[0]["DNQuantity"]);//已到货数量
|
|
// //到货数量是否超过送货单子表数量
|
|
// if (ASNQty < qtysum + DNQuantity)
|
|
// {
|
|
// throw new Exception("送货单数量为" + ASNQty + ",已到货数量" + DNQuantity + ",当前采购到货数量" + qtysum + ",已超过送货单数量,请核对。");
|
|
// }
|
|
// ASNCode = ASNdata.Rows[0]["ASNCode"].ToString();
|
|
// sql = @"SELECT a.DNCode FROM ICSDeliveryNotice a WHERE a.ASNCode='{0}' AND DNType = '1' AND a.WorkPoint='{1}'";
|
|
// sql = string.Format(sql, item.ASNCode, item.WorkPoint);
|
|
// DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
// if (dt.Rows.Count > 0)
|
|
// {
|
|
// DNCodes = dt.Rows[0]["DNCode"].ToString();
|
|
// }
|
|
// //获取单号
|
|
// sql = @"IF EXISTS(SELECT a.ID FROM ICSDeliveryNotice a WHERE a.ASNCode='{0}' AND DNType = '1' AND a.WorkPoint='{1}')
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo057") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// DECLARE @Status VARCHAR(10)
|
|
// SELECT @Status=Status FROM ICSASN WHERE ASNCode='{0}' and WorkPoint='{1}'
|
|
|
|
// IF (@Status IS NULL)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo058") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// ELSE IF (@Status!='2')
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo059") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
|
|
// DECLARE @MaxNO INT,@date varchar(20)='DN'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
// SELECT @MaxNO=SUBSTRING(MAX(DNCode),LEN(@date)+1,LEN(MAX(DNCode))-LEN(@date))+1 FROM ICSDeliveryNotice
|
|
// WHERE SUBSTRING(DNCode, 1, LEN(@date))=@date
|
|
// IF @MaxNO IS NULL
|
|
// BEGIN
|
|
// SELECT @date+'00001' AS Code
|
|
// END
|
|
// ELSE
|
|
// BEGIN
|
|
// SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
// END ";
|
|
// sql = string.Format(sql, item.ASNCode, item.WorkPoint, DNCodes);
|
|
// Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//}
|
|
//else
|
|
//{
|
|
|
|
// sql = @"DECLARE @MaxNO INT,@date varchar(20)= 'DN' + SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
|
|
// SELECT @MaxNO = SUBSTRING(MAX(DNCode), LEN(@date) + 1, LEN(MAX(DNCode)) - LEN(@date)) + 1 FROM ICSDeliveryNotice
|
|
// WHERE SUBSTRING(DNCode, 1, LEN(@date))= @date
|
|
// IF @MaxNO IS NULL
|
|
// BEGIN
|
|
// SELECT @date + '00001' AS Code
|
|
// END
|
|
// ELSE
|
|
// BEGIN
|
|
// SELECT @date + REPLICATE('0', 5 - LEN(@MaxNO)) + CAST(@MaxNO AS nvarchar(10)) AS Code
|
|
// END ";
|
|
// sql = string.Format(sql, item.ASNCode, item.WorkPoint, DNCodes);
|
|
// Code = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
//}
|
|
|
|
//判断当前录入的总数量是否超过了订单数量
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
|
|
|
|
//string key = item.Sequence + "~" + item.InvCode;
|
|
|
|
//if (uniqueItems.Contains(key))
|
|
//{
|
|
// throw new Exception("子件不可重复添加!");
|
|
//}
|
|
|
|
//uniqueItems.Add(key);
|
|
//直接关联ID新增
|
|
//sql = @"select a.ID,a.OOCode,a.Sequence,a.VenCode,a.DepCode,a.PersonCode,a.InvCode,a.Amount,a.Quantity,
|
|
// a.UnitPrice,a.Currency,a.Status,a.ReleaseState,a.PlanArriveDate,a.CreatePerson,a.CreateDateTime
|
|
// from ICSOutsourcingOrder a
|
|
// where a.ID ='{0}' and WorkPoint='{1}'";
|
|
//sql = string.Format(sql, item.OOID, item.WorkPoint);
|
|
//DataTable oo = DBHelper.SQlReturnData(sql, cmd);
|
|
//创建主表
|
|
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{10}' AND F_Location='{17}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{10}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO [dbo].[ICSDeliveryNotice]
|
|
([ID]
|
|
,[DNCode]
|
|
,[Sequence]
|
|
,[VenCode]
|
|
,[DepCode]
|
|
,[WHCode]
|
|
,[DNType]
|
|
,[InvCode]
|
|
,[Quantity]
|
|
,[Amount]
|
|
,[RCVQuantity]
|
|
,[UnitPrice]
|
|
,[Currency]
|
|
,[Status]
|
|
,[CreatePerson]
|
|
,[CreateDateTime]
|
|
|
|
,[POID]
|
|
,[PODetailID]
|
|
,[DNID]
|
|
,[DNDetailID]
|
|
,[ExtensionID]
|
|
,[MUSER]
|
|
,[MUSERName]
|
|
,[MTIME]
|
|
,[WorkPoint]
|
|
,[EATTRIBUTE1]
|
|
,[ASNCode])
|
|
VALUES
|
|
(NEWID()
|
|
,'{18}'
|
|
,'{0}'
|
|
,'{1}'
|
|
,'{2}'
|
|
,'{3}'
|
|
,'{4}'
|
|
,'{5}'
|
|
,{6}
|
|
,{7}
|
|
,0
|
|
,{8}
|
|
,'{9}' --Currency
|
|
,'1'
|
|
,'{10}'
|
|
,'{11}'
|
|
|
|
,'{12}'
|
|
,'{13}'
|
|
,'{14}'
|
|
,'{15}' --DNDetailID
|
|
,'{16}'
|
|
,'{10}'
|
|
,(select F_RealName from Sys_SRM_User where F_Account='{10}' and F_Location='{17}')
|
|
,'{11}'
|
|
,'{17}'
|
|
,''
|
|
,'')";
|
|
sql = string.Format(sql, item.Sequence, item.VenCode, item.DepCode, item.WHCode, item.DNType, item.InvCode, item.Quantity, item.Amount, item.UnitPrice, item.Currency, item.User, Dates,
|
|
item.POID, item.PODetailID, item.DNID, item.DNDetailID, IDD, item.WorkPoint, item.DNCode);
|
|
|
|
DNCode = Code;
|
|
WorkPoint = item.WorkPoint;
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
ID,
|
|
DNCode,
|
|
Sequence,
|
|
VenCode,
|
|
DepCode,
|
|
WHCode,
|
|
DNType,
|
|
InvCode,
|
|
Quantity,
|
|
Amount,
|
|
RCVQuantity,
|
|
UnitPrice,
|
|
Currency,
|
|
Status,
|
|
CreatePerson,
|
|
CreateDateTime
|
|
from ICSDeliveryNotice a
|
|
WHERE a.DNCode = '{0}' and a.Sequence = '{1}' and a.WorkPoint = '{2}'";
|
|
sql = string.Format(sql, DNCode, Sequence, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 采购到货(退货 包含无源头) 修改
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable ICSEDeliveryNoticeUpdate(List<ICSEDeliveryNotice> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string Checksql = string.Empty;
|
|
string Sequence = string.Empty;
|
|
string DNCode = string.Empty;
|
|
string WorkPoint = string.Empty;
|
|
string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
//[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{5}' and F_Location='{6}')
|
|
Checksql = @"select ID,DNCode from ICSDeliveryNotice a
|
|
where ID ='{0}' and WorkPoint='{1}'";
|
|
Checksql = string.Format(Checksql, item.ID, item.WorkPoint);
|
|
DataTable datas = DBHelper.SQlReturnData(Checksql, cmd);
|
|
if (datas.Rows.Count > 0)
|
|
{
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{11}' AND F_Location='{13}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{4}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE [dbo].[ICSDeliveryNotice]
|
|
SET [VenCode] = '{0}'
|
|
,[DepCode] = '{1}'
|
|
,[WHCode] = '{2}'
|
|
,[DNType] = '{3}'
|
|
,[InvCode] = '{4}'
|
|
,[Quantity] = {5}
|
|
,[Amount] = {6}
|
|
,[UnitPrice] = {7}
|
|
,[Currency] = '{8}'
|
|
,[POID] = '{9}'
|
|
,[ExtensionID] = '{10}'
|
|
,[MUSER] = '{11}'
|
|
,[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{11}' and F_Location='{13}')
|
|
,[MTIME] = '{12}'
|
|
,[WorkPoint] = '{13}'
|
|
where ID = '{14}'";
|
|
sql = string.Format(sql, item.VenCode, item.DepCode, item.WHCode, item.DNType, item.InvCode, item.Quantity,
|
|
item.Amount, item.UnitPrice, item.Currency, item.POID, IDD, item.User, Dates, item.WorkPoint, item.ID);
|
|
|
|
DNCode = item.DNCode;
|
|
Sequence = item.Sequence;
|
|
WorkPoint = item.WorkPoint;
|
|
}
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
}
|
|
//修改委外订单的入库数量
|
|
}
|
|
|
|
|
|
#region 查询返回数据
|
|
sql = @"
|
|
select
|
|
ID,
|
|
DNCode,
|
|
Sequence,
|
|
VenCode,
|
|
DepCode,
|
|
WHCode,
|
|
DNType,
|
|
InvCode,
|
|
Quantity,
|
|
Amount,
|
|
RCVQuantity,
|
|
UnitPrice,
|
|
Currency,
|
|
Status,
|
|
CreatePerson,
|
|
CreateDateTime
|
|
from ICSDeliveryNotice a
|
|
WHERE a.DNCode = '{0}' and a.Sequence = '{1}' and a.WorkPoint = '{2}'";
|
|
sql = string.Format(sql, DNCode, Sequence, WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// MES成品条码存入中间表
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static bool FinishedBarCode(string JsonData, string WMSUrl)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
string Identification = Guid.NewGuid().ToString();
|
|
bool flag = false;
|
|
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
string BusinessCode = TransTypeEnum.ManufactureMESReceive.GetDescription<DBValue>();
|
|
sql = @"INSERT INTO [dbo].[ICSAPIScheduler] ([ID], [SourceID], [Type], [WMSUrl], [WMSToken], [WMSParam], [WMSResult], [WMSStatus], [WMSTime],
|
|
[ERPUrl], [ERPToken], [ERPParam], [ERPResult], [ERPStatus], [ERPTime], [MUSER], [MUSERName], [MTIME], [WorkPoint],
|
|
[EATTRIBUTE1], [EATTRIBUTE2], [EATTRIBUTE3], [EATTRIBUTE4], [EATTRIBUTE5], [EATTRIBUTE6], [EATTRIBUTE7], [EATTRIBUTE8], [EATTRIBUTE9], [EATTRIBUTE10], [EATTRIBUTE11], [EATTRIBUTE12], [EATTRIBUTE13], [EATTRIBUTE14], [EATTRIBUTE15], [EATTRIBUTE16], [EATTRIBUTE17], [EATTRIBUTE18], [EATTRIBUTE19], [EATTRIBUTE20], [EATTRIBUTE21], [EATTRIBUTE22], [EATTRIBUTE23], [EATTRIBUTE24], [EATTRIBUTE25], [EATTRIBUTE26], [EATTRIBUTE27], [EATTRIBUTE28], [EATTRIBUTE29], [EATTRIBUTE30])
|
|
VALUES (NEWID(), N'{0}', N'{1}', N'{2}', NULL, '{3}', '', '0', NULL,
|
|
'', NULL, '', '', '0', NULL, '', '', GETDATE(), '',
|
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);";
|
|
sql = string.Format(sql, Identification, BusinessCode, WMSUrl, JsonData);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("MES成品条码存入中间表失败!");
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT 1 FROM ICSAPIScheduler WHERE SourceID='{0}' AND Type='{1}' AND WMSStatus='0'";
|
|
sql = string.Format(sql, Identification, BusinessCode);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
flag = true;
|
|
}
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return flag;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 传输产成品信息
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static DataTable FinishedBarCodeFormal(List<ICSFinishedBarCodeModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
string Identification = Guid.NewGuid().ToString();
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.MUSER, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
//
|
|
sql = @"-- 查询用户是否存在
|
|
-- IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{8}' AND F_Location='{9}')
|
|
-- BEGIN
|
|
-- RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{8}") + @"',16,1);
|
|
-- RETURN
|
|
-- END
|
|
-- 查询物料编码是否存在
|
|
IF NOT EXISTS(SELECT 1 FROM ICSInventory WHERE InvCode='{4}' AND WorkPoint='{9}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo524"), "{4}") + @"',16,1)
|
|
RETURN
|
|
END
|
|
-- 查询工单与行号是否存在
|
|
IF NOT EXISTS(SELECT 1 FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo523"), "{1}", "{2}") + @"',16,1)
|
|
RETURN
|
|
END
|
|
-- 验证条码是否重复绑定
|
|
-- IF EXISTS(SELECT 1 FROM ICSInventoryLotDetail WHERE LotNo='{3}' AND WorkPoint='{9}')
|
|
-- BEGIN
|
|
-- RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo527"), "{3}") + @"',16,1)
|
|
-- RETURN
|
|
-- END
|
|
-- 验证工单行物料与绑定条码物料是否一致
|
|
IF NOT EXISTS(SELECT 1 FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}' AND InvCode='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo522"), "{1}", "{2}") + @"',16,1)
|
|
RETURN
|
|
END
|
|
-- 验证条码是否已存在
|
|
IF EXISTS(SELECT 1 FROM ICSInventoryLot WHERE LotNo='{3}' AND WorkPoint='{9}')
|
|
BEGIN
|
|
-- 若条码存在且有库存,不可以传入
|
|
IF EXISTS (SELECT 1 FROM ICSWareHouseLotInfo WHERE LotNo='{3}' AND WorkPoint='{9}' AND Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + @"{3} " + string.Format(language.GetNameByCode("WMSAPIInfo367")) + @"',16,4)
|
|
RETURN
|
|
END
|
|
-- 若条码已存在但库存为0,删除库存表中该条码,更新关联表
|
|
ELSE IF EXISTS (SELECT 1 FROM ICSWareHouseLotInfo WHERE LotNo='{3}' AND WorkPoint='{9}' AND Quantity=0)
|
|
BEGIN
|
|
-- 更新条码表的数量
|
|
UPDATE ICSInventoryLot SET Quantity='{5}' WHERE LotNo='{3}' AND WorkPoint='{9}'
|
|
-- 删除库存表记录
|
|
DELETE FROM ICSWareHouseLotInfo WHERE LotNo='{3}' AND WorkPoint='{9}'
|
|
-- 更新条码单据关联表
|
|
UPDATE ICSInventoryLotDetail SET TransID=(SELECT ID FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}'),TransCode='{1}',TransSequence='{2}',MUSER='{8}',MUSERName='{8}',MTIME=GETDATE() WHERE LotNo='{3}' AND WorkPoint='{9}'
|
|
-- 记录日志表
|
|
-- INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,Quantity,Lock,TransType,BusinessCode,MUSER,MUSERName,MTIME,WorkPoint)
|
|
-- VALUES(NEWID(),'{10}',(SELECT ID FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}'),'{1}','{2}','{3}','{4}',{5},0,'17','17','{8}','{8}',GETDATE(),'{9}')
|
|
RETURN
|
|
END
|
|
-- 条码已存在但没有入库,对条码表与条码单据关联表进行更新
|
|
ELSE IF NOT EXISTS (SELECT 1 FROM ICSWareHouseLotInfo WHERE LotNo='{3}' AND WorkPoint='{9}')
|
|
BEGIN
|
|
-- 更新条码表的数量
|
|
UPDATE ICSInventoryLot SET Quantity='{5}' WHERE LotNo='{3}' AND WorkPoint='{9}'
|
|
-- 更新条码单据关联表
|
|
UPDATE ICSInventoryLotDetail SET TransID=(SELECT ID FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}'),TransCode='{1}',TransSequence='{2}',MUSER='{8}',MUSERName='{8}',MTIME=GETDATE() WHERE LotNo='{3}' AND WorkPoint='{9}'
|
|
-- 记录日志表
|
|
-- INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,Quantity,Lock,TransType,BusinessCode,MUSER,MUSERName,MTIME,WorkPoint)
|
|
-- VALUES(NEWID(),'{10}',(SELECT ID FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}'),'{1}','{2}','{3}','{4}',{5},0,'17','17','{8}','{8}',GETDATE(),'{9}')
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
-- 插入条码表
|
|
INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Type,MUSER,MUSERName,MTIME,WorkPoint,ExtensionID,EATTRIBUTE10) VALUES('{0}','{3}','{4}','{7}','2999-12-31',{5},'9','{8}','{8}',GETDATE(),'{9}','{11}','{6}')
|
|
-- 条码关联工单行
|
|
INSERT INTO ICSInventoryLotDetail(LotNo,TransID,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint) VALUES('{3}',(SELECT ID FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}'),'{1}','{2}','{8}','{8}',GETDATE(),'{9}')
|
|
-- 记录日志表
|
|
-- INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,Quantity,Lock,TransType,BusinessCode,MUSER,MUSERName,MTIME,WorkPoint)
|
|
-- VALUES(NEWID(),'{10}',(SELECT ID FROM ICSMO WHERE MOCode='{1}' AND Sequence='{2}' AND WorkPoint='{9}'),'{1}','{2}','{3}','{4}',{5},0,'17','17','{8}','{8}',GETDATE(),'{9}')";
|
|
sql = string.Format(sql, item.ID, item.MOCode, item.Sequence, item.LotNo, item.InvCode, item.Quantity, item.BatchCode, item.ProductDate, item.MUSER, item.WorkPoint, Identification, IDD);
|
|
log.Debug("同步产成品条码SQL:" + Environment.NewLine + sql);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
}
|
|
|
|
if (item.ContainerCode != null && item.ContainerCode.Length > 0)
|
|
{
|
|
string Time = "";
|
|
DateTime dtt;
|
|
DateTime now = DateTime.Now;
|
|
|
|
//如果容器不存在直接创建
|
|
string ContainerID = Guid.NewGuid().ToString();
|
|
sql = @"IF NOT EXISTS (SELECT 1 FROM ICSContainer WHERE ContainerCode='{0}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
INSERT INTO dbo.ICSContainer
|
|
( ID ,ContainerID ,ContainerCODE ,ContainerName,Memo,MTIME,MUSER ,MUSERName ,WorkPoint ,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
|
|
Values('{3}','','{0}','{4}','',GETDATE(),'{2}','{2}','{1}','1','1','1','1')
|
|
END
|
|
|
|
SELECT 1 FROM ICSContainer WHERE ContainerCode='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, item.ContainerCode, item.WorkPoint, item.MUSER, ContainerID, item.ContainerName);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo528"), item.ContainerCode));
|
|
}
|
|
|
|
sql = @"select 1 FROM ICSContainerLot WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, item.LotNo, item.WorkPoint);
|
|
DataTable dttte = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttte.Rows.Count > 0)
|
|
{
|
|
|
|
///修改容器关联表
|
|
sql = @"UPDATE ICSContainerLot SET ContainerID=(SELECT ID FROM ICSContainer WHERE ContainerCode='{0}' AND WorkPoint='{1}' )
|
|
where lotno='{2}' and WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, item.ContainerCode, item.WorkPoint, item.LotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo525"), item.ContainerCode, item.LotNo));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
sql = @"select 1 from ICSInventoryLot
|
|
where LotNo='{0}' and WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, item.LotNo, item.WorkPoint);
|
|
DataTable dttaa = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttaa.Rows.Count > 0)
|
|
{
|
|
///存入容器条码关联表
|
|
sql = @"INSERT INTO ICSContainerLot(ID,ContainerID,LotNo,MUSER,MUSERName,WorkPoint,MTIME)
|
|
SELECT NEWID(),a.ID,'{3}','{1}','{1}','{2}',GETDATE()
|
|
FROM ICSContainer a
|
|
WHERE a.ContainerCode='{0}' AND WorkPoint='{2}'
|
|
";
|
|
sql = string.Format(sql, item.ContainerCode, item.MUSER, item.WorkPoint, item.LotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo525"), item.WorkPoint, item.LotNo));
|
|
}
|
|
|
|
///记录日志
|
|
sql = @"INSERT INTO ICSContainerLog(ID,ContainerID,ContainerOrLotNo,Type,MUSER,MUSERName,WorkPoint,MTIME)
|
|
VALUES(NEWID(), (SELECT DISTINCT ID FROM ICSContainer WHERE ContainerCode='{0}'), '{1}', 2, '{2}', (SELECT DISTINCT F_RealName FROM Sys_SRM_User WHERE F_Account='{2}'), '{3}', GETDATE())";
|
|
sql = string.Format(sql, item.ContainerCode, item.LotNo, item.MUSER, item.WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo526"), item.WorkPoint, item.LotNo));
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
codes += "'" + item.LotNo + item.WorkPoint + "',";
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT
|
|
b.MOCode AS TransCode,b.Sequence AS TransSequence,a.LotNo,a.InvCode,a.Quantity,a.MUSER,a.MTIME,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail c ON c.LotNo=a.LotNo AND c.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSMO b ON b.MOCode=c.TransCode AND c.TransSequence=b.Sequence AND b.WorkPoint=a.WorkPoint
|
|
WHERE a.LotNo+a.WorkPoint IN ({1})";
|
|
sql = string.Format(sql, Identification, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
///// <summary>
|
|
///// 红字采购入库 新增
|
|
///// </summary>
|
|
///// <param name="JsonData"></param>
|
|
///// <returns></returns>
|
|
///// <exception cref="Exception"></exception>
|
|
//public static DataTable ICSPurchaseReceiveCreate(List<ICSPurchaseReceive> JsonData)
|
|
//{
|
|
// var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
// if (JsonData.Count <= 0)
|
|
// {
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
// }
|
|
// using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
// {
|
|
// conn.Open();
|
|
// SqlTransaction sqlTran = conn.BeginTransaction();
|
|
// SqlCommand cmd = new SqlCommand();
|
|
// string Colspan = string.Empty;
|
|
// string Sequence = string.Empty;
|
|
// string DNCode = string.Empty;
|
|
// string WorkPoint = string.Empty;
|
|
// string DNCodes = string.Empty;
|
|
// string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
// string IDD = string.Empty;
|
|
// cmd.Transaction = sqlTran;
|
|
// cmd.Connection = conn;
|
|
// cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
// try
|
|
// {
|
|
// string sql = string.Empty;
|
|
|
|
|
|
// HashSet<string> uniqueItems = new HashSet<string>();
|
|
|
|
// foreach (var item in JsonData)
|
|
// {
|
|
// string Code = "";
|
|
// //判断当前录入的总数量是否超过了订单数量
|
|
|
|
// //检验自由项
|
|
// Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
// + "~" + item.Brand + "~" + item.cFree1
|
|
// + "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
// + "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
// + "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
// sql = @"select ID,Colspan from ICSExtension a
|
|
// where Colspan='{0}' and WorkPoint='{1}'";
|
|
// sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
// DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
// if (dttt.Rows.Count == 0)
|
|
// {
|
|
// IDD = Guid.NewGuid().ToString();
|
|
// sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
// select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
// sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
// if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
// {
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// IDD = dttt.Rows[0]["ID"].ToString();
|
|
// }
|
|
|
|
// sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{10}' AND F_Location='{13}')
|
|
// BEGIN
|
|
// RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{10}") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
|
|
// INSERT INTO [dbo].[ICSPurchaseReceive]
|
|
// ([ID],
|
|
// [RCVCode]
|
|
// ,[Sequence]
|
|
// ,[SourceCode]
|
|
// ,[SourceSequence]
|
|
// ,[InvCode]
|
|
// ,[Quantity]
|
|
// ,[Amount]
|
|
// ,[RCVQuantity]
|
|
// ,[WHCode]
|
|
// ,[Type]
|
|
// ,[Status]
|
|
// ,[CreatePerson]
|
|
// ,[CreateDateTime]
|
|
|
|
// ,[RCVID]
|
|
// ,[RCVDetailID]
|
|
// ,[ExtensionID]
|
|
// ,[MUSER]
|
|
// ,[MUSERName]
|
|
// ,[MTIME]
|
|
// ,[WorkPoint])
|
|
// VALUES
|
|
// (NEWID()
|
|
// ,'{0}'
|
|
// ,'{1}'
|
|
// ,'{2}'
|
|
// ,'{3}'
|
|
// ,'{4}'
|
|
// ,{5}
|
|
// ,{6}
|
|
// ,{7}
|
|
// ,'{8}'
|
|
// ,'{9}'
|
|
// ,'1'
|
|
// ,'{10}'
|
|
// ,'{11}'
|
|
|
|
// ,''
|
|
// ,''
|
|
// ,'{12}'
|
|
// ,''
|
|
// ,''
|
|
// ,''
|
|
// ,'{13}')";
|
|
// sql = string.Format(sql, item.RCVCode, item.Sequence, item.SourceCode, item.SourceSequence, item.InvCode, item.Quantity, item.Amount,
|
|
// item.RCVQuantity, item.WHCode, item.Type, item.User, Dates, IDD, item.WorkPoint);
|
|
|
|
// DNCode = Code;
|
|
// WorkPoint = item.WorkPoint;
|
|
// if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
// {
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!");
|
|
// }
|
|
|
|
// }
|
|
|
|
// #region 查询返回数据
|
|
// sql = @"
|
|
// select
|
|
// ID,
|
|
// RCVCode,
|
|
// Sequence,
|
|
// SourceCode,
|
|
// SourceSequence,
|
|
// InvCode,
|
|
// Quantity,
|
|
// Amount,
|
|
// RCVQuantity,
|
|
// WHCode,
|
|
// Type,
|
|
// Status,
|
|
// CreatePerson,
|
|
// CreateDateTime from ICSPurchaseReceive a
|
|
// WHERE a.RCVCode = '{0}' and a.Sequence = '{1}' and a.WorkPoint = '{2}'";
|
|
// sql = string.Format(sql, DNCode, Sequence, WorkPoint);
|
|
// DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
// #endregion
|
|
// cmd.Transaction.Commit();
|
|
// return data;
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// if (cmd.Transaction != null)
|
|
// cmd.Transaction.Rollback();
|
|
// log.Error(ex.Message);
|
|
// throw new Exception(ex.Message);
|
|
// }
|
|
// finally
|
|
// {
|
|
// if (conn.State == ConnectionState.Open)
|
|
// {
|
|
// conn.Close();
|
|
// }
|
|
// conn.Dispose();
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
|
|
///// <summary>
|
|
///// 红字采购入库 修改
|
|
///// </summary>
|
|
///// <param name="JsonData"></param>
|
|
///// <returns></returns>
|
|
//public static DataTable ICSPurchaseReceiveUpdate(List<ICSPurchaseReceive> JsonData)
|
|
//{
|
|
// var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
// if (JsonData.Count <= 0)
|
|
// {
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
// }
|
|
// using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
// {
|
|
// conn.Open();
|
|
// SqlTransaction sqlTran = conn.BeginTransaction();
|
|
// SqlCommand cmd = new SqlCommand();
|
|
// cmd.Transaction = sqlTran;
|
|
// cmd.Connection = conn;
|
|
// cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
// try
|
|
// {
|
|
// string sql = string.Empty;
|
|
// string Checksql = string.Empty;
|
|
// string Sequence = string.Empty;
|
|
// string DNCode = string.Empty;
|
|
// string WorkPoint = string.Empty;
|
|
// string Dates = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
// string Colspan = string.Empty;
|
|
// string IDD = string.Empty;
|
|
// foreach (var item in JsonData)
|
|
// {
|
|
|
|
// //检验自由项
|
|
// Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
// + "~" + item.Brand + "~" + item.cFree1
|
|
// + "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
// + "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
// + "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
// sql = @"select ID,Colspan from ICSExtension a
|
|
// where Colspan='{0}' and WorkPoint='{1}'";
|
|
// sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
// DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
// if (dttt.Rows.Count == 0)
|
|
// {
|
|
// IDD = Guid.NewGuid().ToString();
|
|
// sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
// select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
// sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
// if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
// {
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// IDD = dttt.Rows[0]["ID"].ToString();
|
|
// }
|
|
// //[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{5}' and F_Location='{6}')
|
|
// sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{6}' AND F_Location='{7}')
|
|
// BEGIN
|
|
// RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{6}") + @"',16,1);
|
|
// RETURN
|
|
// END
|
|
// UPDATE [dbo].[ICSPurchaseReceive]
|
|
// SET [InvCode] = '{0}'
|
|
// ,[Quantity] = {1}
|
|
// ,[Amount] = {2}
|
|
// ,[WHCode] = '{3}'
|
|
// ,[Type] = '{4}'
|
|
// ,[ExtensionID] = '{5}'
|
|
// ,[MUSER] = '{6}'
|
|
// ,[MUSERName] = (select F_RealName from Sys_SRM_User where F_Account='{6}' and F_Location='{7}')
|
|
// ,[MTIME] = '{8}'
|
|
// where ID = '{9}'";
|
|
// sql = string.Format(sql, item.InvCode, item.Quantity, item.Amount, item.WHCode, item.Type, IDD, item.User, item.WorkPoint, Dates, item.ID);
|
|
|
|
// DNCode = item.RCVCode;
|
|
// Sequence = item.Sequence;
|
|
// WorkPoint = item.WorkPoint;
|
|
|
|
|
|
// if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
// {
|
|
// throw new Exception(language.GetNameByCode("WMSOur0004"));//"修改失败!");
|
|
// }
|
|
// //修改委外订单的入库数量
|
|
// }
|
|
// #region 查询返回数据
|
|
// sql = @"
|
|
// select
|
|
// ID,
|
|
// RCVCode,
|
|
// Sequence,
|
|
// SourceCode,
|
|
// SourceSequence,
|
|
// InvCode,
|
|
// Quantity,
|
|
// Amount,
|
|
// RCVQuantity,
|
|
// WHCode,
|
|
// Type,
|
|
// Status,
|
|
// CreatePerson,
|
|
// CreateDateTime from ICSPurchaseReceive a
|
|
// WHERE a.RCVCode = '{0}' and a.Sequence = '{1}' and a.WorkPoint = '{2}'";
|
|
// sql = string.Format(sql, DNCode, Sequence, WorkPoint);
|
|
// DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
// #endregion
|
|
// cmd.Transaction.Commit();
|
|
// return data;
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// if (cmd.Transaction != null)
|
|
// cmd.Transaction.Rollback();
|
|
// log.Error(ex.Message);
|
|
// throw new Exception(ex.Message);
|
|
// }
|
|
// finally
|
|
// {
|
|
// if (conn.State == ConnectionState.Open)
|
|
// {
|
|
// conn.Close();
|
|
// }
|
|
// conn.Dispose();
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 产成品退库 调用erp接口(铭锋)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
public static ResultModel1 ErpApprove(List<ApproveInput> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
ResultModel1 results = new ResultModel1();
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
string Inputstr = JsonConvert.SerializeObject(JsonData);
|
|
try
|
|
{
|
|
string resultStr = HTTPHelper.HttpPost("产成品退库", ERPUrl.Rd1011Approve, Inputstr);
|
|
Result result = new Result();
|
|
result = JsonConvert.DeserializeObject<Result>(resultStr);
|
|
if (result.Success)
|
|
{
|
|
results.Success = true;
|
|
}
|
|
else
|
|
{
|
|
results.Success = false;
|
|
results.Message = result.Message;
|
|
}
|
|
return results;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
log.Debug(ex.ToString());
|
|
throw new Exception("调用接口出现错误。" + ex.Message);
|
|
}
|
|
}
|
|
#region 领料出库条码(东辉专用)
|
|
/// <summary>
|
|
/// 领料出库条码(东辉专用)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static ResultModel GetOutWarehouseBarcode(OutWarehouseBarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
DataTable table = new DataTable();
|
|
DataTable ZLtable = new DataTable();
|
|
ResultModel result = new ResultModel();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
//获取工单和超额领料单数据
|
|
|
|
string sql = $@"SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.InvCode PitemCode,a.LotNo barCode,a.Quantity as outStockQty,c.InvCode as itemCode,a.MTIME createTime,a.MUSERName createUser,b.MOCode moNumber ,e.BatchCode FLOT,'1' as doctype ,c.Quantity as planQty
|
|
FROM ICSMO b
|
|
inner JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint
|
|
inner JOIN ICSWareHouseLotInfoLog a ON a.TransCode=b.MOCode AND b.WorkPoint=a.WorkPoint AND a.TransSequence=(b.Sequence+'~'+c.Sequence)
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='13' AND a.MTIME >='{JsonData.Date}'
|
|
UNION ALL
|
|
SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.InvCode PitemCode,a.LotNo barCode,a.Quantity as outStockQty,f.InvCode as itemCode,a.MTIME createTime,a.MUSERName createUser,b.MOCode moNumber,e.BatchCode FLOT,'2' as doctype ,c.Quantity as planQty
|
|
FROM ICSWareHouseLotInfoLog a
|
|
inner JOIN ICSMOIssue c ON c.IssueCode=a.TransCode AND a.WorkPoint=c.WorkPoint AND a.TransSequence=c.Sequence
|
|
inner JOIN ICSMO b ON c.SourceCode=b.MOCode AND b.WorkPoint=a.WorkPoint
|
|
inner JOIN ICSMOPick f ON f.MODetailID=b.MODetailID
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='15' AND a.MTIME >='{JsonData.Date}'";
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
string sql2 = $@"SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.MOCode moNumber ,'1' as doctype
|
|
FROM ICSMO b
|
|
inner JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint
|
|
inner JOIN ICSWareHouseLotInfoLog a ON a.TransCode=b.MOCode AND b.WorkPoint=a.WorkPoint AND a.TransSequence=(b.Sequence+'~'+c.Sequence)
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='13' AND a.MTIME >='{JsonData.Date}'
|
|
UNION ALL
|
|
SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.MOCode moNumber,'2' as doctype
|
|
FROM ICSWareHouseLotInfoLog a
|
|
inner JOIN ICSMOIssue c ON c.IssueCode=a.TransCode AND a.WorkPoint=c.WorkPoint AND a.TransSequence=c.Sequence
|
|
inner JOIN ICSMO b ON c.SourceCode=b.MOCode AND b.WorkPoint=a.WorkPoint
|
|
inner JOIN ICSMOPick f ON f.MODetailID=b.MODetailID
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='15' AND a.MTIME >='{JsonData.Date}'";
|
|
DataTable dt2 = DBHelper.SQlReturnData(sql2, cmd);
|
|
string sql3 = $@"SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.MOCode moNumber ,'1' as doctype ,b.InvCode PitemCode
|
|
FROM ICSMO b
|
|
inner JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint
|
|
inner JOIN ICSWareHouseLotInfoLog a ON a.TransCode=b.MOCode AND b.WorkPoint=a.WorkPoint AND a.TransSequence=(b.Sequence+'~'+c.Sequence)
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='13' AND a.MTIME >='{JsonData.Date}'
|
|
UNION ALL
|
|
SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.MOCode moNumber,'2' as doctype ,b.InvCode PitemCode
|
|
FROM ICSWareHouseLotInfoLog a
|
|
inner JOIN ICSMOIssue c ON c.IssueCode=a.TransCode AND a.WorkPoint=c.WorkPoint AND a.TransSequence=c.Sequence
|
|
inner JOIN ICSMO b ON c.SourceCode=b.MOCode AND b.WorkPoint=a.WorkPoint
|
|
inner JOIN ICSMOPick f ON f.MODetailID=b.MODetailID
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='15' AND a.MTIME >='{JsonData.Date}'";
|
|
DataTable dt3 = DBHelper.SQlReturnData(sql3, cmd);
|
|
string sql4 = $@"SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.MOCode moNumber ,'1' as doctype ,b.InvCode PitemCode,c.InvCode as itemCode,c.Quantity as planQty
|
|
FROM ICSMO b
|
|
inner JOIN ICSMOPick c ON b.MODetailID=c.MODetailID AND b.WorkPoint=c.WorkPoint
|
|
inner JOIN ICSWareHouseLotInfoLog a ON a.TransCode=b.MOCode AND b.WorkPoint=a.WorkPoint AND a.TransSequence=(b.Sequence+'~'+c.Sequence)
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='13' AND a.MTIME >='{JsonData.Date}'
|
|
UNION ALL
|
|
SELECT DISTINCT a.WorkPoint dataAuth,a.TransCode docNO,b.MOCode moNumber,'2' as doctype ,b.InvCode PitemCode,c.InvCode as itemCode,c.Quantity as planQty
|
|
FROM ICSWareHouseLotInfoLog a
|
|
inner JOIN ICSMOIssue c ON c.IssueCode=a.TransCode AND a.WorkPoint=c.WorkPoint AND a.TransSequence=c.Sequence
|
|
inner JOIN ICSMO b ON c.SourceCode=b.MOCode AND b.WorkPoint=a.WorkPoint
|
|
inner JOIN ICSMOPick f ON f.MODetailID=b.MODetailID
|
|
inner JOIN ICSInventoryLot d ON a.LotNo=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
inner JOIN ICSExtension e ON d.ExtensionID=e.ID
|
|
WHERE a.BusinessCode='15' AND a.MTIME >='{JsonData.Date}'";
|
|
DataTable dt4 = DBHelper.SQlReturnData(sql4, cmd);
|
|
result.CodeList = new List<CodeList>();
|
|
if (dt2.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < dt2.Rows.Count; i++)
|
|
{
|
|
List<PitemCodeList> pitemCodeLists = new List<PitemCodeList>();
|
|
string a = $"dataAuth='{dt2.Rows[i]["dataAuth"]}' and docNO = '{dt2.Rows[i]["docNO"]}' and moNumber = '{dt2.Rows[i]["moNumber"]}' and doctype = '{dt2.Rows[i]["doctype"]}' ";
|
|
var pitemCode = dt3.Select(a).Distinct();
|
|
foreach (DataRow row in pitemCode)
|
|
{
|
|
List<ItemCodeList> itemCodeLists = new List<ItemCodeList>();
|
|
var itemCodes = dt4.Select($"dataAuth='{dt2.Rows[i]["dataAuth"]}' and docNO = '{dt2.Rows[i]["docNO"]}' and moNumber = '{dt2.Rows[i]["moNumber"]}' and doctype = '{dt2.Rows[i]["doctype"]}' and PitemCode = '{row["PitemCode"]}'").Distinct();
|
|
foreach (DataRow itemrow in itemCodes)
|
|
{
|
|
List<LotNoList> lotNoLists = new List<LotNoList>();
|
|
var lotCodes = dt.Select($"dataAuth='{dt2.Rows[i]["dataAuth"]}' and docNO = '{dt2.Rows[i]["docNO"]}' and moNumber = '{dt2.Rows[i]["moNumber"]}' and doctype = '{dt2.Rows[i]["doctype"]}' and PitemCode = '{row["PitemCode"]}' and itemCode = '{itemrow["itemCode"]}'").Distinct();
|
|
foreach (DataRow lotrow in lotCodes)
|
|
{
|
|
LotNoList lotNoList = new LotNoList
|
|
{
|
|
barCode = lotrow["barCode"].ToString(),
|
|
outStockQty = Convert.ToDecimal(lotrow["outStockQty"].ToString()),
|
|
FLOT = lotrow["FLOT"].ToString(),
|
|
createTime = Convert.ToDateTime(lotrow["createTime"].ToString()),
|
|
createUser = lotrow["createUser"].ToString()
|
|
};
|
|
lotNoLists.Add(lotNoList);
|
|
}
|
|
ItemCodeList itemCodeList = new ItemCodeList
|
|
{
|
|
itemCode = itemrow["itemCode"].ToString(),
|
|
planQty = Convert.ToDecimal(itemrow["planQty"].ToString()),
|
|
LotNoList = lotNoLists
|
|
};
|
|
|
|
itemCodeLists.Add(itemCodeList);
|
|
}
|
|
PitemCodeList pitemCodeList = new PitemCodeList
|
|
{
|
|
PitemCode = row["PitemCode"].ToString(),
|
|
itemCodeList = itemCodeLists
|
|
};
|
|
pitemCodeLists.Add(pitemCodeList);
|
|
|
|
}
|
|
CodeList codeList = new CodeList
|
|
{
|
|
dataAuth = dt2.Rows[i]["dataAuth"].ToString(),
|
|
docNO = dt2.Rows[i]["docNO"].ToString(),
|
|
moNumber = dt2.Rows[i]["moNumber"].ToString(),
|
|
doctype = dt2.Rows[i]["doctype"].ToString(),
|
|
PitemCodeList = pitemCodeLists
|
|
|
|
};
|
|
result.CodeList.Add(codeList);
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
#region 生产退料单接口(东辉专用)
|
|
/// <summary>
|
|
/// 生产退料单接口(东辉专用)
|
|
/// </summary>
|
|
/// <param name="JsonData"></param>
|
|
/// <returns></returns>
|
|
public static ResultModel1 GetProductionRejectionDoc(ProductionRejectionModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
ResultModel1 result = new ResultModel1();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
//获取工单和超额领料单数据
|
|
|
|
string sql = $@"SELECT DISTINCT a.WorkPoint dataAuth,b.ApplyNegCode docNo,d.InvCode PitemCode,e.InvCode itemCode,b.IssueNegQuantity actQty,d.MOCode moNumber,a.MTIME createTime,a.MUSERName createUser,'1' doctype FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMOApplyNegDetail b ON a.TransCode=b.ApplyNegCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOIssue c ON b.SourceDetailID=c.IssueDetailID AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSMO d ON c.SourceCode=d.MOCode AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSMOPick e ON d.MODetailID=e.MODetailID AND e.WorkPoint=d.WorkPoint AND e.InvCode=a.InvCode
|
|
WHERE
|
|
a.BusinessCode='16-1' AND a.MTIME>='{JsonData.Date}'";
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
string sql2 = $@"SELECT DISTINCT a.WorkPoint dataAuth,b.ApplyNegCode docNo,d.MOCode moNumber,'1' doctype
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMOApplyNegDetail b ON a.TransCode=b.ApplyNegCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOIssue c ON b.SourceDetailID=c.IssueDetailID AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSMO d ON c.SourceCode=d.MOCode AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSMOPick e ON d.MODetailID=e.MODetailID AND e.WorkPoint=d.WorkPoint AND e.InvCode=a.InvCode
|
|
WHERE
|
|
a.BusinessCode='16-1' AND a.MTIME>='{JsonData.Date}'";
|
|
DataTable dt2 = DBHelper.SQlReturnData(sql2, cmd);
|
|
string sql3 = $@"SELECT DISTINCT a.WorkPoint dataAuth,b.ApplyNegCode docNo,d.InvCode PitemCode,d.MOCode moNumber,'1' doctype FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMOApplyNegDetail b ON a.TransCode=b.ApplyNegCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOIssue c ON b.SourceDetailID=c.IssueDetailID AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSMO d ON c.SourceCode=d.MOCode AND c.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSMOPick e ON d.MODetailID=e.MODetailID AND e.WorkPoint=d.WorkPoint AND e.InvCode=a.InvCode
|
|
WHERE
|
|
a.BusinessCode='16-1' AND a.MTIME>='{JsonData.Date}'";
|
|
DataTable dt3 = DBHelper.SQlReturnData(sql3, cmd);
|
|
|
|
result.CodeList = new List<CodeList1>();
|
|
if (dt2.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < dt2.Rows.Count; i++)
|
|
{
|
|
List<PitemCodeList1> pitemCodeLists = new List<PitemCodeList1>();
|
|
string a = $"dataAuth='{dt3.Rows[i]["dataAuth"]}' and docNO = '{dt2.Rows[i]["docNO"]}' and moNumber = '{dt2.Rows[i]["moNumber"]}' and doctype = '{dt2.Rows[i]["doctype"]}' ";
|
|
var pitemCode = dt3.Select(a).Distinct();
|
|
foreach (DataRow row in pitemCode)
|
|
{
|
|
List<ItemCodeList1> itemCodeLists = new List<ItemCodeList1>();
|
|
var itemCodes = dt.Select($"dataAuth='{dt2.Rows[i]["dataAuth"]}' and docNO = '{dt2.Rows[i]["docNO"]}' and moNumber = '{dt2.Rows[i]["moNumber"]}' and doctype = '{dt2.Rows[i]["doctype"]}' and PitemCode = '{row["PitemCode"]}'").Distinct();
|
|
foreach (DataRow itemrow in itemCodes)
|
|
{
|
|
|
|
ItemCodeList1 itemCodeList = new ItemCodeList1
|
|
{
|
|
itemCode = itemrow["itemCode"].ToString(),
|
|
actQty = Convert.ToDecimal(itemrow["actQty"].ToString()),
|
|
createTime = Convert.ToDateTime(itemrow["createTime"].ToString()),
|
|
createUser = itemrow["createUser"].ToString()
|
|
};
|
|
|
|
itemCodeLists.Add(itemCodeList);
|
|
}
|
|
PitemCodeList1 pitemCodeList = new PitemCodeList1
|
|
{
|
|
PitemCode = row["PitemCode"].ToString(),
|
|
itemCodeList = itemCodeLists
|
|
};
|
|
pitemCodeLists.Add(pitemCodeList);
|
|
|
|
}
|
|
CodeList1 codeList = new CodeList1
|
|
{
|
|
dataAuth = dt2.Rows[i]["dataAuth"].ToString(),
|
|
docNO = dt2.Rows[i]["docNO"].ToString(),
|
|
moNumber = dt2.Rows[i]["moNumber"].ToString(),
|
|
PitemCodeList = pitemCodeLists
|
|
|
|
};
|
|
result.CodeList.Add(codeList);
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
public static DataTable ICSMaterialSearchGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = @"SELECT
|
|
inv.InvCode,inv.InvName,lot.LotNo,fo.Quantity,lo.LocationCode,lo.LocationName,wa.WarehouseCode,wa.WarehouseName,convert(nvarchar(10),lot.ProductDate,120) ProductDate
|
|
FROM ICSInventory inv
|
|
INNER JOIN ICSInventoryLot lot ON lot.InvCode=inv.InvCode AND lot.WorkPoint=inv.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo fo ON fo.LotNo=lot.LotNo AND fo.WorkPoint=lot.WorkPoint AND fo.Quantity>0
|
|
LEFT JOIN ICSWarehouse wa ON wa.WarehouseCode=fo.WarehouseCode AND wa.WorkPoint=fo.WorkPoint
|
|
LEFT JOIN ICSLocation lo ON lo.LocationCode=fo.LocationCode AND lo.WorkPoint=fo.WorkPoint
|
|
WHERE inv.InvCode='{0}' AND inv.WorkPoint='{1}'";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable ICSMaterialSearchGetDRCoffee(SearchMode JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string whereSql = string.Empty;
|
|
if (JsonData.Code != null && JsonData.Code.Length > 0)
|
|
{
|
|
whereSql += string.Format(" AND inv.InvCode='{0}' ", JsonData.Code);
|
|
}
|
|
if (JsonData.WHCode != null && JsonData.WHCode.Length > 0)
|
|
{
|
|
whereSql += string.Format(" AND fo.WarehouseCode='{0}' ", JsonData.WHCode);
|
|
}
|
|
if (JsonData.StackCode != null && JsonData.StackCode.Length > 0)
|
|
{
|
|
whereSql += string.Format(" AND fo.LocationCode='{0}' ", JsonData.StackCode);
|
|
}
|
|
|
|
string sql = @"SELECT
|
|
inv.InvCode,inv.InvName,SUM(fo.Quantity) AS Quantity,lo.LocationCode,lo.LocationName,wa.WarehouseCode,wa.WarehouseName,convert(nvarchar(10),lot.ProductDate,120) ProductDate
|
|
FROM ICSInventory inv
|
|
INNER JOIN ICSInventoryLot lot ON lot.InvCode=inv.InvCode AND lot.WorkPoint=inv.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo fo ON fo.LotNo=lot.LotNo AND fo.WorkPoint=lot.WorkPoint AND fo.Quantity>0
|
|
LEFT JOIN ICSWarehouse wa ON wa.WarehouseCode=fo.WarehouseCode AND wa.WorkPoint=fo.WorkPoint
|
|
LEFT JOIN ICSLocation lo ON lo.LocationCode=fo.LocationCode AND lo.WorkPoint=fo.WorkPoint
|
|
WHERE 1=1 AND inv.WorkPoint='{0}'
|
|
" + whereSql + @"
|
|
Group BY inv.InvCode,inv.InvName,lo.LocationCode,lo.LocationName,wa.WarehouseCode,wa.WarehouseName,convert(nvarchar(10),lot.ProductDate,120)";
|
|
sql = string.Format(sql, JsonData.WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable ICSMaterialLogSearchGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = @"DECLARE @wheresql VARCHAR(MAX)
|
|
DECLARE @groupsql VARCHAR(MAX)
|
|
DECLARE @ordersql VARCHAR(MAX)
|
|
DECLARE @aa VARCHAR(MAX)
|
|
DECLARE @bb VARCHAR(MAX)
|
|
DECLARE @cc VARCHAR(MAX)
|
|
DECLARE @dd VARCHAR(MAX)
|
|
DECLARE @b VARCHAR(MAX)
|
|
|
|
select @aa=id from ICSWareHouseLotInfo where LotNo='{0}'
|
|
IF @aa IS NOT NULL
|
|
BEGIN
|
|
set @wheresql='and a.lotno=''{0}'' '
|
|
set @groupsql=' group by a.LotNo
|
|
,a.TransCode
|
|
,a.InvCode
|
|
,b.InvName
|
|
,b.InvStd
|
|
,a.FromLocationCode
|
|
,a.ToLocationCode
|
|
,a.Quantity
|
|
,d.BatchCode
|
|
,a.MTIME
|
|
,a.MUSERName'
|
|
END
|
|
|
|
select @bb=id from ICSLocation where LocationCode='{0}'
|
|
IF @bb IS not NULL
|
|
BEGIN
|
|
set @wheresql='and (a.FromLocationCode=''{0}'' or a.ToLocationCode=''{0}'') '
|
|
set @groupsql = 'group by a.LotNo
|
|
,a.TransCode
|
|
,a.InvCode
|
|
,b.InvName
|
|
,b.InvStd
|
|
,a.FromLocationCode
|
|
,a.ToLocationCode
|
|
,a.Quantity
|
|
,d.BatchCode
|
|
,a.MTIME
|
|
,a.MUSERName'
|
|
END
|
|
|
|
IF @aa IS NULL and @bb IS NULL
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo478") + @"',16,1)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
set @b =
|
|
'select top 100
|
|
a.LotNo
|
|
,a.TransCode
|
|
,a.InvCode
|
|
,b.InvName
|
|
,b.InvStd
|
|
,a.FromLocationCode
|
|
,a.ToLocationCode
|
|
,a.Quantity
|
|
,d.BatchCode
|
|
,a.MTIME
|
|
,a.MUSERName
|
|
from ICSWareHouseLotInfoLog a
|
|
left join ICSInventory b on a.InvCode = b.InvCode and a.WorkPoint = b.WorkPoint
|
|
left join ICSInventoryLot c on a.LotNo = c.LotNo and a.WorkPoint = c.WorkPoint
|
|
left join ICSExtension d on c.ExtensionID = d.ID
|
|
where 1=1 and a.WorkPoint=''{1}'' ' + @wheresql + @groupsql
|
|
END
|
|
|
|
exec(@b)";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#region 销售出货单绑定快递单号
|
|
public static DataTable SalesBindCourierGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string sql = @"UPDATE ICSSSD SET EATTRIBUTE3='{2}' WHERE SSDCode='{0}' AND WorkPoint='{1}' AND Type='1'";
|
|
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint, JsonData.Code);
|
|
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 材料自动出库(WMS提交与ERP提交分开)
|
|
public static void LOTStockDownAutoCreate(List<LOTStockModel> JsonData, string WMSUrl)
|
|
{
|
|
String PrintEnable = "";
|
|
string workPoint = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
int AutoBatchesNum = DBHelper.GetAutoBatchesNum();
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
else if (string.IsNullOrEmpty(item.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
string[] trans = item.TransCode.Split('~');
|
|
string MergeID = "";
|
|
if (trans.Length == 2)
|
|
{
|
|
MergeID = trans[0];
|
|
item.TransCode = trans[1];
|
|
}
|
|
string sql = string.Empty;
|
|
|
|
#region 生产发料——自动出库
|
|
if (TransType == TransTypeEnum.MOIssueAutoDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.MOIssueAutoDoc.GetDescription<DBValue>();
|
|
DataTable idsDt = DBHelper.SQlReturnData(string.Format("SELECT b.ID " +
|
|
"FROM ICSMO a " +
|
|
"INNER JOIN ICSMOPick b ON b.MODetailID = a.MODetailID AND b.WorkPoint = a.WorkPoint " +
|
|
"WHERE a.MOCode = '{0}' AND a.WorkPoint = '{1}'",
|
|
item.TransCode, item.WorkPoint), cmd);
|
|
StringBuilder ids = new StringBuilder();
|
|
int count = 0;
|
|
foreach (DataRow row in idsDt.Rows)
|
|
{
|
|
ids.Append("''''" + row["id"].ToString() + "''''");
|
|
count++;
|
|
if (count % AutoBatchesNum == 0 || count == idsDt.Rows.Count)
|
|
{
|
|
sql = @"INSERT INTO [dbo].[ICSAPIScheduler] ([ID], [SourceID], [Type], [WMSUrl], [WMSToken], [WMSParam], [WMSResult], [WMSStatus], [WMSTime],
|
|
[ERPUrl], [ERPToken], [ERPParam], [ERPResult], [ERPStatus], [ERPTime], [MUSER], [MUSERName], [MTIME], [WorkPoint],
|
|
[EATTRIBUTE1], [EATTRIBUTE2], [EATTRIBUTE3], [EATTRIBUTE4], [EATTRIBUTE5], [EATTRIBUTE6], [EATTRIBUTE7], [EATTRIBUTE8], [EATTRIBUTE9], [EATTRIBUTE10], [EATTRIBUTE11], [EATTRIBUTE12], [EATTRIBUTE13], [EATTRIBUTE14], [EATTRIBUTE15], [EATTRIBUTE16], [EATTRIBUTE17], [EATTRIBUTE18], [EATTRIBUTE19], [EATTRIBUTE20], [EATTRIBUTE21], [EATTRIBUTE22], [EATTRIBUTE23], [EATTRIBUTE24], [EATTRIBUTE25], [EATTRIBUTE26], [EATTRIBUTE27], [EATTRIBUTE28], [EATTRIBUTE29], [EATTRIBUTE30])
|
|
VALUES (NEWID(), N'{0}', N'{1}', N'{2}', '{6}', '', '', '0', NULL,
|
|
N'{3}', NULL, '', '', '0', NULL, N'{4}', (SELECT F_RealName FROM Sys_SRM_User a WHERE a.F_Account='{4}' AND a.F_Location='{5}'), GETDATE(), N'{5}',
|
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);";
|
|
sql = string.Format(sql, item.TransCode, BusinessCode, WMSUrl, ERPUrl.MOIssueDocURL, item.User, item.WorkPoint, ids);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("插入调用接口记录表失败!");
|
|
}
|
|
|
|
ids.Clear();
|
|
}
|
|
else
|
|
{
|
|
ids.Append(",");
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
|
|
}
|
|
cmd.Transaction.Commit();
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 咖博士产成品入入库条码关联表记录
|
|
public static void ManuRecLotCreate(List<LOTStockUpCreateIModel> JsonData)
|
|
{
|
|
String PrintEnable = "";
|
|
string workPoint = "";
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
List<LOTStockModelList> model = new List<LOTStockModelList>();
|
|
DataTable printTable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
try
|
|
{
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
string sql = string.Empty;
|
|
|
|
#region 产成品入库-生产订单
|
|
if (TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription())
|
|
{
|
|
BusinessCode = TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription<DBValue>();
|
|
foreach (LOTStockUpCreateIModelList itemDetail in item.detail)
|
|
{
|
|
sql += @"INSERT INTO ICSManufactureReceiveLot(ID,ProductionCode,ProductionSequence,LotNo,InvCode,WarehouseCode,LocationCode,Quantity,IsBind,MUSER,MUSERName,MTIME,WorkPoint)
|
|
VALUES(NEWID(),'{0}','{1}','{2}','{3}','{4}','{5}',{6},0,'{7}',(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{7}' AND F_Location='{8}'),GETDATE(),'{8}');
|
|
";
|
|
sql = string.Format(sql, itemDetail.TransCode, itemDetail.TransSequence, itemDetail.LotNo, itemDetail.InvCode, itemDetail.WarehouseCode, itemDetail.LocationCode, itemDetail.Quantity, item.User, item.WorkPoint);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("插入产成品入入库条码关联表失败!");
|
|
}
|
|
}
|
|
cmd.Transaction.Commit();
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 成品预入库条码查询
|
|
public static Result PreStoreBarCodeInfoGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
DataTable table = new DataTable();
|
|
DataTable ZLtable = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string ScanType = DBHelper.ScanTypeCheck(JsonData.Code, JsonData.WorkPoint, cmd);
|
|
if (string.IsNullOrEmpty(JsonData.Code))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo005"));//"条码不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string TransType = JsonData.TransType;
|
|
string sql = "";
|
|
string restrictionSql = "";//限制条件SQL
|
|
string LotTypesql = "";
|
|
string LotType = "";
|
|
string zlqty = "0";
|
|
bool needIns = ICSControlModeService.GetOrderIns(EnumHelper.GetDBValue(typeof(TransTypeEnum), TransType));
|
|
|
|
#region SQL
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
//验证条码是否预入库
|
|
string verifyLotExistSql = "";
|
|
verifyLotExistSql = string.Format(@"IF NOT EXISTS(SELECT 1 FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
|
|
DBHelper.ExecuteNonQuery(verifyLotExistSql, cmd);
|
|
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
inv.LotEnable,
|
|
{0}
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
(select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='500fb2a3-c597-4371-ab18-b280b55d571e') AS LotSplitEnable,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'" + ScanType + @"' AS ScanType
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' ";
|
|
}
|
|
else
|
|
{
|
|
//验证箱号中的条码是否已预入库
|
|
string verifyLotExistSql = string.Format(@"WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
WorkPoint,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{0}' AND WorkPoint='{1}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
a.WorkPoint,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
IF NOT EXISTS(SELECT 1 FROM #TempICSBomALL a
|
|
INNER JOIN ICSContainerLot b ON b.ContainerID=a.ID AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE a.TContainerCode='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{0}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
DROP TABLE #TempICSBomALL", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(verifyLotExistSql, cmd);
|
|
|
|
sql = @"SELECT a.ID,
|
|
con.ContainerCode,
|
|
con.ContainerName,
|
|
a.LotNo,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.InvUnit,
|
|
{0}
|
|
inv.AmountUnit,
|
|
ext.ID AS ExtensionID,
|
|
ext.ProjectCode,
|
|
ext.Version,
|
|
--ext.BatchCode,
|
|
ext.Brand,
|
|
ext.cFree1,
|
|
ext.cFree2,
|
|
ext.cFree3,
|
|
ext.cFree4,
|
|
ext.cFree5,
|
|
ext.cFree6,
|
|
ext.cFree7,
|
|
ext.cFree8,
|
|
ext.cFree9,
|
|
ext.cFree10,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime],
|
|
'" + ScanType + @"' AS ScanType
|
|
FROM {1}
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN #TempICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE bom.TContainerCode='{2}' AND a.WorkPoint='{3}' ";
|
|
}
|
|
#endregion
|
|
string columns = string.Empty; //查询源头单据表的特殊列名
|
|
string columnsLOCODE = string.Empty;
|
|
string columnsLONAME = string.Empty;
|
|
string columnsWHCODE = string.Empty;
|
|
string columnsWHNAME = string.Empty;
|
|
string tableName = string.Empty; //查询源头单据表名
|
|
string where = string.Empty; //排序
|
|
|
|
|
|
if (ScanType == "LOTNO")
|
|
{
|
|
if (TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription())
|
|
{
|
|
restrictionSql = string.Format(@"IF EXISTS(SELECT 1 FROM ICSManufactureReceiveLot mrt WHERE mrt.LotNo='{0}' AND mrt.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('条码已预入库!',16,1)
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(restrictionSql, cmd);
|
|
}
|
|
|
|
if ((TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription()) && needIns)
|
|
{
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo = '{2}' AND a.WorkPoint = '{3}')
|
|
BEGIN
|
|
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{2}") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{2}' AND a.WorkPoint='{3}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo039") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND (b.InvFQC='1' AND ins.LotNo IS NULL))
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT a.ID FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint
|
|
WHERE a.LotNo='{2}' AND a.WorkPoint='{3}' AND b.InvIQC='1' AND ISNULL(ins.QualifiedQuantity, 0)+ISNULL(ins.WaiveQuantity, 0)<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo533") + @"',16,1);
|
|
RETURN
|
|
END
|
|
" + sql;
|
|
}
|
|
|
|
ControlMode mode = ICSControlModeService.GetSuLocation();
|
|
|
|
//获取条码类型
|
|
LotTypesql = @"IF NOT EXISTS(SELECT Type FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo461") + @"',16,1);
|
|
RETURN
|
|
END
|
|
SELECT Type FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
LotTypesql = string.Format(LotTypesql, JsonData.Code, JsonData.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(LotTypesql, cmd);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
LotType = dt.Rows[0]["Type"].ToString();
|
|
}
|
|
|
|
if (mode != null)
|
|
{
|
|
if (mode.itemCode.Equals("LocationRemind01"))//固定库位:物料和库位绑定,显示库位名称列表
|
|
{
|
|
columnsLONAME = @"
|
|
(SELECT locat.LocationName from ICSWareHouseLotInfo loinfo
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=loinfo.LocationCode and loinfo.WorkPoint=locat.WorkPoint
|
|
where loinfo.lotno=a.lotno and loinfo.invcode=a.invcode and a.WorkPoint=loinfo.WorkPoint) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
(SELECT locat.LocationCode from ICSWareHouseLotInfo loinfo
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=loinfo.LocationCode and loinfo.WorkPoint=locat.WorkPoint
|
|
where loinfo.lotno=a.lotno and loinfo.invcode=a.invcode and a.WorkPoint=loinfo.WorkPoint) AS LocationCode,";
|
|
|
|
}
|
|
else if (mode.itemCode.Equals("LocationRemind02"))//在库库位:物料有库存的对应库位,显示库位名称列表
|
|
{
|
|
columnsLONAME = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationName
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo on wh.LocationCode=lotinfo.LocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and lotinfo.Quantity>0
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationCode
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfo lotinfo on wh.LocationCode=lotinfo.LocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and lotinfo.Quantity>0
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationCode,";
|
|
}
|
|
else if (mode.itemCode.Equals("LocationRemind03"))//最近一次出入库的库位,显示库位名称
|
|
{
|
|
columnsLONAME = @"
|
|
(SELECT Top 1 locat.LocationName from ICSWareHouseLotInfoLog log
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=log.ToLocationCode and log.WorkPoint=locat.WorkPoint where log.TransType='2' and a.InvCode=log.InvCode AND a.WorkPoint=log.WorkPoint
|
|
ORDER BY log.Mtime desc) AS LocationName,";
|
|
|
|
columnsLOCODE = @"
|
|
(SELECT Top 1 locat.LocationCode from ICSWareHouseLotInfoLog log
|
|
LEFT JOIN ICSLocation locat on locat.LocationCode=log.ToLocationCode and log.WorkPoint=locat.WorkPoint where log.TransType='2' and a.InvCode=log.InvCode AND a.WorkPoint=log.WorkPoint
|
|
ORDER BY log.Mtime desc) AS LocationCode,";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
columnsLONAME = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationName
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfoLog lotinfo on wh.LocationCode=lotinfo.ToLocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and (lotinfo.TransType='2' OR lotinfo.TransType='3')
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationName,";
|
|
columnsLOCODE = @"
|
|
STUFF(
|
|
(SELECT DISTINCT ',' + LocationCode
|
|
from ICSLocation wh
|
|
LEFT JOIN ICSWareHouseLotInfoLog lotinfo on wh.LocationCode=lotinfo.ToLocationCode and wh.WorkPoint=lotinfo.WorkPoint
|
|
WHERE a.InvCode=lotinfo.InvCode AND a.WorkPoint=lotinfo.WorkPoint and (lotinfo.TransType='2' OR lotinfo.TransType='3')
|
|
FOR xml path('')
|
|
),1,1,''
|
|
) AS LocationCode,";
|
|
|
|
}
|
|
|
|
#region 根据条码类型找到单据仓库信息
|
|
if (LotType.Equals("1"))
|
|
{//生产退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("2"))
|
|
{//委外退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("3"))
|
|
{//工单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSMO a WHERE a.MOCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSMO a WHERE a.MOCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("4"))
|
|
{//销售退货
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSSDN a WHERE a.SDNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSSDN a WHERE a.SDNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("5"))
|
|
{//其他入库
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSOtherIn a WHERE a.InCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSOtherIn a WHERE a.InCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("6"))
|
|
{//归还单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSReturn a WHERE a.ReturnCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSReturn a WHERE a.ReturnCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("7"))
|
|
{//采购到货单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("8"))
|
|
{//委外到货单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='1'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='1') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("9"))
|
|
{//成品入库单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSManufactureReceive a WHERE a.RCVCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSManufactureReceive a WHERE a.RCVCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("10"))
|
|
{//拒收单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSDeliveryNotice a WHERE a.DNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint AND a.DNType='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("11"))
|
|
{//委外拒收单
|
|
columnsWHCODE = @"ISNULL((SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT a.WHCode FROM ICSODeliveryNotice a WHERE a.ODNCode=lotdd.TransCode AND a.Sequence=lotdd.TransSequence AND a.WorkPoint=lotdd.WorkPoint and a.ODNType='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("12"))
|
|
{//领料申请退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("13"))
|
|
{//材料出库退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSMOApplyNegDetail neg LEFT JOIN ICSMOApplyNeg negg ON neg.ApplyNegCode=negg.ApplyNegCode
|
|
WHERE lotdd.TransCode=neg.ApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("14"))
|
|
{//委外领料申请退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='2') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("15"))
|
|
{//委外材料出库退料
|
|
columnsWHCODE = @"ISNULL((SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3'),'') AS WHCode";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT negg.WHCODE FROM ICSOApplyNegDetail neg LEFT JOIN ICSOApplyNeg negg ON neg.OApplyNegCode=negg.OApplyNegCode
|
|
WHERE lotdd.TransCode=neg.OApplyNegCode AND lotdd.TransSequence=neg.Sequence AND lotdd.WorkPoint=neg.WorkPoint and negg.Type='3') AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else if (LotType.Equals("16"))
|
|
{//返工工单
|
|
columnsWHCODE = @"ISNULL((SELECT pick.WHCode FROM ICSMOPick pick LEFT JOIN ICSMO moo ON pick.MODetailID=moo.MODetailID AND pick.WorkPoint=moo.WorkPoint
|
|
WHERE moo.MOCode=lotdd.TransCode AND pick.Sequence=lotdd.TransSequence AND pick.WorkPoint=lotdd.WorkPoint),'') AS WHCode ";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT pick.WHCode FROM ICSMOPick pick LEFT JOIN ICSMO moo ON pick.MODetailID=moo.MODetailID AND pick.WorkPoint=moo.WorkPoint
|
|
WHERE moo.MOCode=lotdd.TransCode AND pick.Sequence=lotdd.TransSequence AND pick.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName ";
|
|
}
|
|
else if (LotType.Equals("24"))
|
|
{//销售发货-红字出库单
|
|
columnsWHCODE = @"ISNULL((SELECT ssd.WHCode FROM ICSSSD ssd
|
|
WHERE ssd.SSDCode=lotdd.TransCode AND ssd.Sequence=lotdd.TransSequence AND ssd.WorkPoint=lotdd.WorkPoint),'') AS WHCode ";
|
|
columnsWHNAME = @"ISNULL((SELECT WarehouseName from ICSWareHouse where WarehouseCode in (SELECT ssd.WHCode FROM ICSSSD ssd
|
|
WHERE ssd.SSDCode=lotdd.TransCode AND ssd.Sequence=lotdd.TransSequence AND ssd.WorkPoint=lotdd.WorkPoint) AND WorkPoint=a.WorkPoint),'') AS WHName";
|
|
}
|
|
else
|
|
{
|
|
columnsWHCODE = @"'' AS WHCode";
|
|
columnsWHNAME = @"'' AS WHName";
|
|
}
|
|
#endregion
|
|
|
|
if ((TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription()) && needIns)
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
(SELECT COUNT(detail.lotno) FROM ICSInventoryLotDetail detail where detail.transcode=lotdd.transcode) AS SUMLotCount,
|
|
{0},{2},
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
{0},{2},
|
|
{3}
|
|
{1}
|
|
ext.BatchCode AS BatchCode,
|
|
isnull(lotdd.TransCode,'') as TransCode,isnull(lotdd.TransSequence,'') as TransSequence,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint";
|
|
}
|
|
|
|
columns = string.Format(columns, columnsWHCODE, columnsLONAME, columnsWHNAME, columnsLOCODE);
|
|
|
|
}
|
|
else
|
|
{
|
|
if (TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription())
|
|
{
|
|
restrictionSql = string.Format(@"IF EXISTS(SELECT 1
|
|
FROM ICSContainer con
|
|
INNER JOIN ICSContainerLot conlot ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSManufactureReceiveLot mrt ON mrt.LotNo=conlot.LotNo AND mrt.WorkPoint=conlot.WorkPoint
|
|
WHERE con.ContainerCode='{0}' AND con.WorkPoint='{1}'
|
|
)
|
|
BEGIN
|
|
RAISERROR('容器中存在已预入库条码!',16,1)
|
|
RETURN
|
|
END", JsonData.Code, JsonData.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(restrictionSql, cmd);
|
|
}
|
|
|
|
sql = @"
|
|
WITH ICSBomALL AS
|
|
(
|
|
SELECT
|
|
ContainerCode AS TContainerCode,
|
|
ContainerCode AS PContainerCode,
|
|
ContainerCode AS ContainerCode,
|
|
ID,
|
|
ContainerID,
|
|
0 AS [Level],
|
|
CAST(1 AS nvarchar(MAX)) AS SortSeq,
|
|
CAST('00001' AS nvarchar(MAX)) AS Sort
|
|
FROM ICSContainer
|
|
WHERE ContainerCode='{2}'
|
|
UNION ALL
|
|
SELECT
|
|
b.TContainerCode,
|
|
b.ContainerCode AS PContainerCode,
|
|
a.ContainerCode,
|
|
a.ID,
|
|
a.ContainerID,
|
|
b.[Level]+1 AS [Level],
|
|
CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
|
|
CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
|
|
FROM
|
|
ICSContainer a
|
|
INNER JOIN ICSBomALL b ON a.ContainerID=b.ID
|
|
)
|
|
|
|
SELECT *
|
|
INTO #TempICSBomALL
|
|
FROM ICSBomALL;
|
|
|
|
IF EXISTS(SELECT 1 FROM ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1
|
|
LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
|
|
LEFT JOIN #TempICSBomALL bom ON bom.ID=conlot.ContainerID
|
|
LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
WHERE bom.TContainerCode='{2}' AND a.WorkPoint='{3}' AND inv.InvIQC='1' AND ins.LotNo IS NULL)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo040") + @"',16,1);
|
|
RETURN;
|
|
END
|
|
" + sql + @"
|
|
DROP TABLE #TempICSBomALL";
|
|
|
|
if ((TransType == TransTypeEnum.ManufactureReceiveDRCoffeeDoc.GetDescription()) && needIns)
|
|
{
|
|
columns = @"ISNULL(ins.QualifiedQuantity+ins.WaiveQuantity, a.Quantity) AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
(SELECT COUNT(detail.lotno) FROM ICSInventoryLotDetail detail where detail.transcode=lotdd.transcode) AS SUMLotCount,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
LEFT JOIN ICSInspection ins ON a.LotNo=ins.LotNo AND a.WorkPoint=ins.WorkPoint and ins.enable = 1";
|
|
}
|
|
else
|
|
{
|
|
columns = @"a.Quantity AS Quantity,
|
|
a.Quantity*(a.Amount/a.Quantity) AS Amount,
|
|
lotdd.TransCode,lotdd.TransSequence,
|
|
'' AS WHCode,
|
|
'' AS WHName,
|
|
'' AS LocationCode,
|
|
'' AS LocationName,
|
|
ext.BatchCode AS BatchCode,";
|
|
|
|
tableName = @"ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLotDetail lotdd ON lotdd.LotNo=a.LotNo AND a.WorkPoint=lotdd.WorkPoint
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint";
|
|
}
|
|
}
|
|
|
|
sql = string.Format(sql, columns, tableName, JsonData.Code, JsonData.WorkPoint, zlqty, JsonData.TransCode);
|
|
log.Info("条码sql:" + sql);
|
|
table = DBHelper.SQlReturnData(sql, cmd);
|
|
|
|
if (table == null || table.Rows.Count <= 0)
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo008"));//"未查询到条码数据!"
|
|
|
|
Result res = new Result();
|
|
res.Success = true;
|
|
res.Message = language.GetNameByCode("WMSAPI001");// "接口调用成功!";
|
|
res.Data = table;
|
|
return res;
|
|
//出库时
|
|
//Message无值、Data有值,可直接处理
|
|
//Message有值、Data有值,弹出提醒框(可点击确定、取消,确定后继续出库,取消后不处理这批条码),显示Message信息
|
|
//Message有值、Data无值,弹出警告框(只能点击确定,且不处理这批条码),显示Message信息
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 判断是否需要特殊库位
|
|
public static string ICSSpecialStorageGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = "";
|
|
string TransType = string.Empty;
|
|
string Identification = Guid.NewGuid().ToString();
|
|
string specialStorage = string.Empty;
|
|
|
|
sql += @"SELECT
|
|
b.WarehouseCode,b.WarehouseName
|
|
FROM IcsMatCheckResult a
|
|
INNER JOIN ICSWarehouse b ON b.WarehouseCode=a.WHCode AND b.WorkPoint=a.WorkPoint
|
|
WHERE
|
|
AsnCode IN (SELECT ASNCode FROM ICSASNDetail WHERE LotNo = '{0}' AND WorkPoint='{1}')
|
|
AND InvCode IN (SELECT InvCode FROM ICSInventoryLot WHERE LotNo = '{0}' AND WorkPoint='{1}')
|
|
|
|
AND WHCODE IS NOT NULL AND WHCode<>'1002'";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
specialStorage += (dr["WarehouseCode"].ToString() + " " + dr["WarehouseName"].ToString());
|
|
}
|
|
//string specialStorage = DBHelper.ExecuteScalar(sql, cmd).ToString();
|
|
cmd.Transaction.Commit();
|
|
return specialStorage;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 占料
|
|
|
|
public static DataTable ICSHoldMaterial(List<HoldMaterialModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
string Identification = Guid.NewGuid().ToString();
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string BusinessCode = TransTypeEnum.MOIssueDoc.GetDescription();
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
foreach (var detail in item.detail)
|
|
{
|
|
string detailSql = @"
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,FromWarehouseCode,FromLocationCode,Quantity,Lock,TransType,BusinessCode,ERPUpload,MUSER,MUSERName,MTIME,WorkPoint)
|
|
VALUES(NEWID(),'{0}','{1}','{2}','{3}','{4}','{5}','{6}',{7},1,'15','{8}',0,'{9}','{10}',GETDATE(),'{11}')
|
|
UPDATE ICSWareHouseLotInfo SET LockQuantity=ISNULL(LockQuantity, 0)+{7} WHERE LotNo='{3}'
|
|
";
|
|
sql += string.Format(detailSql, Identification, item.TransCode, item.TransSequence, detail.LotNo, detail.InvCode, detail.WarehouseCode, detail.LocationCode, detail.Quantity, BusinessCode, item.UserCode, item.UserName, item.WorkPoint);
|
|
}
|
|
}
|
|
|
|
log.Debug("占料SQL:" + Environment.NewLine + sql);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo022"));//"生产订单信息创建失败!"
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.TransCode,a.TransSequence,a.LotNo,a.InvCode,a.Quantity,a.MUSER,a.MTIME,a.WorkPoint
|
|
FROM ICSWareHouseLotInfoLog a
|
|
WHERE a.Identification='{0}'";
|
|
sql = string.Format(sql, Identification);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable ICSUnHoldMaterial(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
string Identification = Guid.NewGuid().ToString();
|
|
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string BusinessCode = TransTypeEnum.MOIssueDoc.GetDescription();
|
|
|
|
if (JsonData.Code == null || JsonData.Code == "")
|
|
{
|
|
//整单回撤
|
|
sql = @"UPDATE info
|
|
SET info.LockQuantity=ISNULL(info.LockQuantity, 0) - log.Quantity
|
|
FROM ICSWareHouseLotInfo info
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON log.LotNo=info.LotNo AND log.WorkPoint=info.WorkPoint AND log.Lock=1 AND log.TransType='15'
|
|
WHERE log.TransCode='{0}' AND log.WorkPoint='{1}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog log SET log.Lock=0
|
|
WHERE log.TransCode='{0}' AND log.WorkPoint='{1}' AND log.Lock=1 AND log.TransType='15'";
|
|
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
|
|
}
|
|
else
|
|
{
|
|
//根据条码回撤
|
|
sql = @"UPDATE info
|
|
SET info.LockQuantity=ISNULL(info.LockQuantity, 0) - log.Quantity
|
|
FROM ICSWareHouseLotInfo info
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON log.LotNo=info.LotNo AND log.WorkPoint=info.WorkPoint AND log.Lock=1 AND log.TransType='15'
|
|
WHERE log.TransCode='{0}' AND log.LotNo='{1}' AND log.WorkPoint='{2}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog log SET log.Lock=0
|
|
WHERE log.TransCode='{0}' AND log.LotNo='{1}' AND log.WorkPoint='{2}' AND log.Lock=1 AND log.TransType='15'";
|
|
sql = string.Format(sql, JsonData.TransCode, JsonData.Code, JsonData.WorkPoint);
|
|
}
|
|
|
|
log.Debug("占料SQL:" + Environment.NewLine + sql);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo462"));//条码表更新失败!
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT a.TransCode,a.TransSequence,a.LotNo,a.InvCode,a.Quantity,a.MUSER,a.MTIME,a.WorkPoint
|
|
FROM ICSWareHouseLotInfoLog a
|
|
WHERE a.TransCode='{0}' AND a.WorkPoint='{1}' AND a.Lock=0 AND a.TransType='15'";
|
|
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
if (data == null || data.Rows.Count == 0)
|
|
{
|
|
throw new Exception("回撤占料失败!");
|
|
}
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
#region 赋码入库
|
|
|
|
public static DataTable ICSCodingInNewBarcodeCreate(List<CodingStockInModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
string Identification = Guid.NewGuid().ToString();
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
string Colspan = string.Empty;
|
|
string IDD = string.Empty;
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string codes = string.Empty;
|
|
string sql = string.Empty;
|
|
|
|
foreach (var item in JsonData)
|
|
{
|
|
|
|
//检验自由项
|
|
Colspan = item.ProjectCode + "~" + item.BatchCode + "~" + item.Version
|
|
+ "~" + item.Brand + "~" + item.cFree1
|
|
+ "~" + item.cFree2 + "~" + item.cFree3 + "~" + item.cFree4
|
|
+ "~" + item.cFree5 + "~" + item.cFree6 + "~" + item.cFree7
|
|
+ "~" + item.cFree8 + "~" + item.cFree9 + "~" + item.cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, item.WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttt.Rows.Count == 0)
|
|
{
|
|
IDD = Guid.NewGuid().ToString();
|
|
sql = @"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
select '{17}','{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}',GETDATE(),'{15}',f.F_RealName,'{16}'from Sys_SRM_User f where f.F_Account='{15}' and f.F_Location='{16}'";
|
|
sql = string.Format(sql, Colspan, item.ProjectCode, item.BatchCode, item.Version, item.Brand, item.cFree1, item.cFree2, item.cFree3, item.cFree4, item.cFree5, item.cFree6, item.cFree7, item.cFree8, item.cFree9, item.cFree10, item.User, item.WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IDD = dttt.Rows[0]["ID"].ToString();
|
|
}
|
|
|
|
string checkSql = @"
|
|
-- 查询物料编码是否存在
|
|
IF NOT EXISTS(SELECT 1 FROM ICSInventory WHERE InvCode='{1}' AND WorkPoint='{2}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo524"), "{1}") + @"',16,1)
|
|
RETURN
|
|
END
|
|
-- 查询条码表条数
|
|
SELECT COUNT(1) FROM ICSInventoryLot WHERE LotNo='{0}' AND WorkPoint='{2}'
|
|
";
|
|
checkSql = string.Format(checkSql, item.LotNo, item.InvCode, item.WorkPoint);
|
|
log.Debug("查询条码条数SQL:" + checkSql);
|
|
int lotNum = (int)(DBHelper.ExecuteScalar(checkSql, cmd) == null ? "0" : DBHelper.ExecuteScalar(checkSql, cmd));
|
|
log.Debug("本次查询条码表 " + item.LotNo + " 条数:" + lotNum);
|
|
if (lotNum > 0)
|
|
{
|
|
//条码存在的情况下,验证是否已入库
|
|
sql = @"
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, item.LotNo, item.WorkPoint);
|
|
DBHelper.ExecuteNonQuery(sql, cmd);
|
|
}
|
|
else
|
|
{
|
|
//插入条码表
|
|
sql = @"
|
|
-- 插入条码表
|
|
INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Type,MUSER,MUSERName,MTIME,WorkPoint,ExtensionID,EATTRIBUTE10,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13)
|
|
VALUES(NEWID(),'{0}','{1}','{2}','9999-12-31',{3},'25','{4}',(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{5}'),GETDATE(),'{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}')
|
|
Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint,TransID)
|
|
Values('{0}','','','{4}',(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{4}' AND F_Location='{5}'),GETDATE(),'{5}','' )
|
|
";
|
|
sql = string.Format(sql, item.LotNo, item.InvCode, item.MTIME, item.Quantity, item.User, item.WorkPoint, IDD, item.BatchCode, item.VenCode, item.MPN, item.StreamCode, item.SpecialRequire, item.CreateDate);
|
|
log.Debug("赋码入库创建条码SQL:" + Environment.NewLine + sql);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!"
|
|
}
|
|
}
|
|
|
|
codes += "'" + item.LotNo + item.WorkPoint + "',";
|
|
}
|
|
|
|
#region 查询返回数据
|
|
sql = @"SELECT lot.LotNo,lot.InvCode,lot.Quantity,lot.EATTRIBUTE10 AS BatchCode,lot.EATTRIBUTE8 AS VenCode,lot.EATTRIBUTE9 AS MPN,lot.EATTRIBUTE11 AS StreamCode,lot.EATTRIBUTE13 AS CreateDate,lot.EATTRIBUTE12 AS SpecialRequire,inv.InvName
|
|
FROM ICSInventoryLot lot
|
|
INNER JOIN ICSInventory inv ON inv.InvCode=lot.InvCode AND inv.WorkPoint=lot.WorkPoint
|
|
WHERE lot.LotNo+lot.WorkPoint IN ({0})";
|
|
sql = string.Format(sql, codes.Substring(0, codes.Length - 1));
|
|
DataTable data = DBHelper.SQlReturnData(sql, cmd);
|
|
#endregion
|
|
cmd.Transaction.Commit();
|
|
return data;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable CodingInStorageINCreate(List<LOTStockUpCreateIModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
string BusinessCode = string.Empty;
|
|
string UserCode = string.Empty;
|
|
try
|
|
{
|
|
DataTable dtable = new DataTable();
|
|
string result = string.Empty;
|
|
string IsDx = string.Empty;
|
|
string TransType = string.Empty;
|
|
string TransTypeOriginal = string.Empty;//记录不合格入库条码的原条码的类型
|
|
string Identification = Guid.NewGuid().ToString();
|
|
foreach (var item in JsonData)
|
|
{
|
|
if (string.IsNullOrEmpty(item.IsDx))
|
|
{
|
|
IsDx = "";
|
|
}
|
|
else
|
|
{
|
|
IsDx = item.IsDx;
|
|
}
|
|
TransType = item.TransType;
|
|
if (!EnumHelper.HasDescriptions(typeof(TransTypeEnum), TransType))
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
string WHTransType = "2";
|
|
UserCode = item.User;
|
|
|
|
foreach (var itemInfo in item.detail)
|
|
{
|
|
if (TransType == TransTypeEnum.CodingInStockIn.GetDescription())
|
|
BusinessCode = TransTypeEnum.CodingInStockIn.GetDescription<DBValue>();
|
|
else
|
|
{
|
|
throw new Exception(LanguageHelper.GetNameSingle("WMSAPIInfo003"));//"单据类型不存在!"
|
|
}
|
|
//入库
|
|
ICSWareHouseLotInfoService.WareHouseLotInfoUp(Identification, itemInfo.LocationCode, itemInfo.LotNo, itemInfo.Quantity,
|
|
item.User, item.WorkPoint, WHTransType, BusinessCode, cmd, language, itemInfo.LogID, itemInfo.InvCode + itemInfo.WarehouseCode, itemInfo.TransCode, itemInfo.TransSequence);
|
|
}
|
|
|
|
}
|
|
DataTable table = GetData(Identification, 1, cmd);
|
|
cmd.Transaction.Commit();
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
public static Result BarCodeMsgForSplitDYSGet(BarCodeModel JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
DataTable table = new DataTable();
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
|
|
try
|
|
{
|
|
string sql = @"SELECT DISTINCT
|
|
isnull(a.EATTRIBUTE8,'') as VenCode,
|
|
isnull(a.EATTRIBUTE10,'') as BatchCode,
|
|
isnull(a.EATTRIBUTE11,'') as StreamCode,
|
|
isnull(a.EATTRIBUTE13,'') as ProductDate,
|
|
isnull(b.InvStd,'') as InvStd,
|
|
CASE WHEN isnull(c.Quantity,'')=0 THEN a.Quantity ELSE isnull(c.Quantity,'') END as Quantity,
|
|
isnull(c.LotNo,'') as OLDLotNo,
|
|
isnull(b.InvUnit,'') as InvUnit,
|
|
isnull(b.InvCode,'') as InvCode,
|
|
isnull(b.InvName,'') as InvName,
|
|
isnull(v.VenName,'') as VenName,
|
|
isnull(a.EATTRIBUTE9,'') as MPN,
|
|
CASE WHEN (LEN(isnull(c.LotNo,'')) - LEN(REPLACE(isnull(c.LotNo,''), ',', '')))=6 THEN
|
|
isnull(b.InvCode,'')+','+isnull(a.EATTRIBUTE8,'')+','+isnull(a.EATTRIBUTE9,'')+','+isnull(a.EATTRIBUTE13,'')+','+isnull(a.EATTRIBUTE10,'')+','+CONVERT(NVARCHAR(20),(CONVERT(DECIMAL(18,0),isnull(d.Quantity,'0')))) +',' +isnull(a.EATTRIBUTE11,'')
|
|
WHEN (LEN(isnull(c.LotNo,'')) - LEN(REPLACE(isnull(c.LotNo,''), ',', '')))=7 THEN
|
|
isnull(b.InvCode,'')+','+isnull(a.EATTRIBUTE8,'')+','+isnull(a.EATTRIBUTE9,'')+','+isnull(a.EATTRIBUTE13,'')+','+isnull(a.EATTRIBUTE10,'')+',' +isnull(a.EATTRIBUTE11,'') +','+CONVERT(NVARCHAR(20),(CONVERT(DECIMAL(18,0),isnull(d.Quantity,'0')))) +','+isnull(a.EATTRIBUTE12,'')
|
|
END as NEWLotNo
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventory b ON a.InvCode = b.InvCode
|
|
INNER JOIN ICSWareHouseLotInfo c ON c.LotNo = a.LotNo
|
|
INNER JOIN ICSWareHouseLotInfoLog d ON d.LotNo=a.LotNo
|
|
LEFT JOIN ICSVendor v ON v.VenCode = a.EATTRIBUTE8
|
|
WHERE
|
|
a.lotno LIKE '{0}%' --LEFT('{0}' + '-', CHARINDEX('-', '{0}' + '-') - 1) + '%'
|
|
AND a.WorkPoint = '{1}'
|
|
--AND isnull(c.Quantity, 0) > 0";
|
|
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
|
|
table = DBHelper.SQlReturnData(sql, cmd);
|
|
if (table == null || table.Rows.Count <= 0)
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo008"));//"未查询到条码数据!"
|
|
|
|
Result res = new Result();
|
|
res.Success = true;
|
|
res.Message = language.GetNameByCode("WMSAPI001");// "接口调用成功!";
|
|
res.Data = table;
|
|
return res;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static object UserMsgGet(Sys_SRM_User userModel)
|
|
{
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
string sql = @"select a.[F_Id] as UserId,[F_Account] as userCode,[F_RealName] as UserName from Sys_SRM_User where F_Account='{0}' and F_Location='{1}' and F_EnabledMark='1'";//已经启用的账号
|
|
sql = string.Format(sql, userModel.UserCode, userModel.WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
return JsonConvert.SerializeObject(dt);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable TransCodeForHandOverGet(WMSSourceDocumentModel JsonData)
|
|
{
|
|
DataTable table = new DataTable();
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
conn.Open();
|
|
string sql = string.Empty;
|
|
string arrivalCtrlSql = string.Empty;
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(JsonData.TransCode))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo001"));//"单据号不能为空!"
|
|
}
|
|
else if (string.IsNullOrEmpty(JsonData.WorkPoint))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!"
|
|
}
|
|
|
|
string BusinessCode = TransTypeEnum.MOIssueDoc.GetDescription<DBValue>();
|
|
string chkSql = string.Format(@"SELECT DISTINCT Identification,TransCode,TransSequence FROM ICSWareHouseLotInfoLog WHERE TransCode='{0}' AND WorkPoint='{1}' AND BusinessCode='{2}'",JsonData.TransCode,JsonData.WorkPoint,BusinessCode);
|
|
DataTable chkDt = DBHelper.SQlReturnData(chkSql,cmd);
|
|
if(chkDt.Rows.Count > 0)
|
|
{
|
|
sql = @"SELECT DISTINCT a.ID,
|
|
b.MOCode AS TransCode,
|
|
log.Identification,
|
|
a.PickID AS DetailID,
|
|
a.SupplyType AS Type,
|
|
b.Sequence+'~'+a.Sequence AS TransSequence,
|
|
ISNULL(a.IssueQuantity,0) AS IssueQuantity,
|
|
ISNULL(a.EATTRIBUTE3, isnull(A.Quantity,0)) as DHexcessQty,
|
|
convert(varchar(100),'') AS LocationCode,
|
|
convert(varchar(100),'') AS LotNo,
|
|
convert(varchar(10),'') AS ToWarehouseCode,
|
|
0 AS LocationQty,
|
|
0 AS isMatched,
|
|
a.InvCode,
|
|
inv.InvName,
|
|
inv.InvStd,
|
|
inv.EATTRIBUTE4 AS module,
|
|
a.Quantity,
|
|
inv.InvUnit,
|
|
a.Amount,
|
|
a.WHCode,
|
|
inv.AmountUnit,
|
|
wh.WarehouseName AS WHName,
|
|
(select a.F_EnabledMark from Sys_SRM_ItemsDetail a
|
|
inner JOIN Sys_SRM_Items b on a.F_ItemId=b.F_id
|
|
where b.F_id='4f733e37-445b-4534-8ec0-9f88d0842381') AS TransEnable,
|
|
ISNULL(ext.ProjectCode, '') AS ProjectCode,
|
|
a.ExtensionID,
|
|
CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,
|
|
ISNULL(ext.Version, '') AS Version,
|
|
ISNULL(ext.Brand, '') AS Brand,
|
|
ISNULL(ext.cFree1, '') AS cFree1,
|
|
ISNULL(ext.cFree2, '') AS cFree2,
|
|
ISNULL(ext.cFree3, '') AS cFree3,
|
|
ISNULL(ext.cFree4, '') AS cFree4,
|
|
ISNULL(ext.cFree5, '') AS cFree5,
|
|
ISNULL(ext.cFree6, '') AS cFree6,
|
|
ISNULL(ext.cFree7, '') AS cFree7,
|
|
ISNULL(ext.cFree8, '') AS cFree8,
|
|
ISNULL(ext.cFree9, '') AS cFree9,
|
|
ISNULL(ext.cFree10, '') AS cFree10,
|
|
ISNULL(inv.EATTRIBUTE1, '') AS EATTRIBUTE1,
|
|
a.MUSER AS [User],
|
|
a.MTIME AS [MTime]
|
|
,(dbo.GetExcessQty(a.InvCode, a.Quantity, a.WorkPoint,'1',2,2,inv.ID)) AS excessQty
|
|
FROM ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog log ON log.TransCode=b.MOCode AND log.TransSequence=b.Sequence+'~'+a.Sequence
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.WHCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE b.MOCode='{0}' AND a.WorkPoint='{1}' AND a.SupplyType='3' AND b.MOStatus<>'3' and a.EATTRIBUTE1<>'1' AND inv.EATTRIBUTE11=0 AND inv.EATTRIBUTE12='false'";
|
|
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
|
|
|
|
table = DBHelper.SQlReturnData(sql, cmd);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo537"), JsonData.TransCode));
|
|
}
|
|
|
|
return table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool HandOverCreate(List<HandOverModel> JsonData)
|
|
{
|
|
var language = LanguageHelper.GetName("WMSAPIInfo");
|
|
if (JsonData.Count <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
|
|
}
|
|
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
|
|
{
|
|
bool flag = false;
|
|
string sql = string.Empty;
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
cmd.CommandTimeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["TimeOut"]);
|
|
try
|
|
{
|
|
foreach (var item in JsonData)
|
|
{
|
|
string tempSql = string.Format(@"UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE6='{4}',EATTRIBUTE7='{5}' WHERE Identification='{0}' AND TransCode='{1}' AND TransSequence='{2}' AND WorkPoint='{3}'
|
|
"
|
|
, item.Identification,item.TransCode,item.TransSequence,item.WorkPoint,item.User,item.MTime);
|
|
sql += tempSql;
|
|
}
|
|
if (DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
flag = true;
|
|
}
|
|
|
|
return flag;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (cmd.Transaction != null)
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|