9104 lines
586 KiB
9104 lines
586 KiB
using ICSSoft.Common;
|
|
using ICSSoft.Entity;
|
|
using Newtonsoft.Json;
|
|
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 ICSWareHouseLotInfoService
|
|
{
|
|
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
|
|
|
|
/// <summary>
|
|
/// 分批
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="TransCode"></param>
|
|
/// <param name="TransSequence"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoInBatches(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// 添加库存
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="jointLotNo"></param>
|
|
public static void WareHouseLotInfoUp(string Identification, string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType,
|
|
string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID,string jointLotNo, string TransCode, string TransSequence)
|
|
{
|
|
try
|
|
{
|
|
|
|
#region 正常入库
|
|
///添加库存(原条码退回,更新库存;新条码直接入库)
|
|
//stirng locationcode = "";
|
|
string sql = string.Empty;
|
|
string locationcode = "";
|
|
|
|
if (BusinessCode != TransTypeEnum.SalesReturnBack.GetDescription<DBValue>())
|
|
{
|
|
if (string.IsNullOrWhiteSpace(LogID))
|
|
{
|
|
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 ";
|
|
}
|
|
else
|
|
{
|
|
sql = @"SELECT LocationCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), LotNo));
|
|
}
|
|
locationcode = dt.Rows[0]["LocationCode"].ToString();
|
|
}
|
|
|
|
|
|
}
|
|
if (BusinessCode == TransTypeEnum.MOStockINByProductNoTrans.GetDescription<DBValue>())
|
|
{
|
|
sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity=0)
|
|
BEGIN
|
|
UPDATE a SET a.Quantity=ISNULL(a.Quantity,0)+'{3}',WarehouseCode=e.WarehouseCode,LocationCode=d.LocationCode
|
|
From ICSWareHouseLotInfo a
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
ELSE IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.LocationCode='{4}')
|
|
BEGIN
|
|
UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
END
|
|
ELSE IF('" + locationcode + @"' != '{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo395"), "{4}", locationcode) + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
|
|
RETURN
|
|
END
|
|
END
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
--INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END";
|
|
}
|
|
else if(BusinessCode == TransTypeEnum.CodingInStockIn.GetDescription<DBValue>())
|
|
{
|
|
sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity=0)
|
|
BEGIN
|
|
UPDATE a SET a.Quantity=ISNULL(a.Quantity,0)+'{3}',WarehouseCode=e.WarehouseCode,LocationCode=d.LocationCode
|
|
From ICSWareHouseLotInfo a
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
ELSE IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.LocationCode='{4}')
|
|
BEGIN
|
|
UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
END
|
|
ELSE IF('" + locationcode + @"' != '{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo395"), "{4}", locationcode) + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
|
|
RETURN
|
|
END
|
|
END
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
--INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END";
|
|
}
|
|
else
|
|
{
|
|
sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity=0)
|
|
BEGIN
|
|
UPDATE a SET a.Quantity=ISNULL(a.Quantity,0)+'{3}',WarehouseCode=e.WarehouseCode,LocationCode=d.LocationCode
|
|
From ICSWareHouseLotInfo a
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
ELSE IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.LocationCode='{4}')
|
|
BEGIN
|
|
UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
END
|
|
ELSE IF('" + locationcode + @"' != '{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo395"), "{4}", locationcode) + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
|
|
RETURN
|
|
END
|
|
END
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
--INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END";
|
|
}
|
|
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
|
|
}
|
|
|
|
if (BusinessCode == TransTypeEnum.MOStockINByProductNoTrans.GetDescription<DBValue>())
|
|
{
|
|
///添加日志
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
}
|
|
else if (BusinessCode == TransTypeEnum.ReturnDoc.GetDescription<DBValue>()&&!string.IsNullOrEmpty(LogID))
|
|
{
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}','{8}','{9}',a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
}
|
|
else if (BusinessCode == TransTypeEnum.CodingInStockIn.GetDescription<DBValue>())
|
|
{
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
}
|
|
else
|
|
{
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
}
|
|
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID,TransCode,TransSequence);
|
|
|
|
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 管控方式是"料品"时
|
|
|
|
ControlMode mode = ICSControlModeService.GetControlMode();
|
|
|
|
if (mode.itemCode.Equals("ControlMode02"))
|
|
{
|
|
//查询是否存在料品管控的条码
|
|
string sqlStrNew = @"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 ]
|
|
FROM
|
|
ICSInventoryLot a
|
|
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
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID = ext.ID AND a.WorkPoint = ext.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sqlStrNew = string.Format(sqlStrNew, jointLotNo, WorkPoint);
|
|
DataTable table = DBHelper.SQlReturnData(sqlStrNew, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<LotNoMode> modelNew = JsonConvert.DeserializeObject<List<LotNoMode>>(json);
|
|
|
|
//当不存在料品管控条码时,生成新条码
|
|
if (!(modelNew.Count > 0))
|
|
{
|
|
//获取旧条码的信息
|
|
string jsonStr = ICSControlModeService.QueryLotNo(LotNo, WorkPoint);
|
|
List<LotNoMode> model = JsonConvert.DeserializeObject<List<LotNoMode>>(jsonStr);
|
|
//在条码表中插入一条新数据,在条码表中插入一条新数据,并在库存表中添加新数据
|
|
LotNoMode lotNoMode = model[0];
|
|
CreateLotNo(jointLotNo, Quantity, "", "", WorkPoint, Identification, User, lotNoMode.InvCode, BusinessCode, lotNoMode.ProjectCode, lotNoMode.BatchCode,
|
|
lotNoMode.Version, lotNoMode.Brand, lotNoMode.cFree1, lotNoMode.cFree2, lotNoMode.cFree3, lotNoMode.cFree4, lotNoMode.cFree5, lotNoMode.cFree6, lotNoMode.cFree7,
|
|
lotNoMode.cFree8, lotNoMode.cFree9, lotNoMode.cFree10, cmd, language, LocationCode, LotNo);
|
|
}
|
|
try
|
|
{
|
|
|
|
//合并前日志
|
|
WareHouseLotInfoLog(Identification, jointLotNo, User, WorkPoint, "2",
|
|
TransTypeEnum.LOTMergeBefore.GetDescription<DBValue>(),"", cmd, language);
|
|
|
|
//更新目标条码库存
|
|
WareHouseLotInfoMerge(Identification, jointLotNo, LotNo, Quantity, User, WorkPoint, "2",
|
|
TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), cmd, language);
|
|
|
|
//合并后日志
|
|
WareHouseLotInfoLog(Identification, jointLotNo, User, WorkPoint, "2",
|
|
TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), "",cmd, language);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 成品(生产)入库,倒冲
|
|
if (BusinessCode.Equals(TransTypeEnum.ManufactureReceiveDoc.GetDescription<DBValue>()))
|
|
{
|
|
#region sql
|
|
sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.MOCode AS TransCode,
|
|
a.MODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
a.ParentQuantity/c.Quantity*{2} AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
cast(0 as decimal(18,6)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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,a.WHCODE
|
|
INTO #maintemp
|
|
|
|
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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.MOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSMO a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.MOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.MOCode=temp.MOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.SupplyType='1'
|
|
GROUP BY c.MOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.MODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,cast((a.quantity-a.lockQuantity) as decimal(18,6)) as quantity ,ROW_NUMBER() OVER (ORDER BY d.batchCode,a.lotno) as seq,
|
|
a.mtime into #barcodetemp from ICSWareHouseLotInfo a inner JOIN
|
|
(select #maintemp.invcode,#maintemp.WHCODE from #maintemp group by #maintemp.InvCode,#maintemp.WHCODE) b on a.invcode = b.invcode and a.warehousecode =b.WHCODE
|
|
inner JOIN ICSInventoryLot c on a.lotno = c.lotno
|
|
LEFT JOIN ICSExtension d on c.extensionid = d.id
|
|
where a.Quantity-a.lockQuantity>0
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty decimal(18,6);--条码表数量
|
|
DECLARE @needqty decimal(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY seq
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
sql = String.Format(sql,LotNo,WorkPoint, Quantity);
|
|
DataTable table = DBHelper.SQlReturnData(sql,cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
|
|
foreach (DownItemModel model in downItemModels)
|
|
{
|
|
if (model != null && model.LotNo == null || "" == model.LotNo)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
string sqlmsg = @" SELECT
|
|
c.MOCode AS TransCode,
|
|
a.MODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
Convert(decimal(18,6), a.ParentQuantity/c.Quantity*{2})
|
|
AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
cast(0 as decimal(18,6)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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,a.WHCODE,Convert(decimal(18,6), a.ParentQuantity/c.Quantity*{2})-isnull(temp2.quantity,0) as needQty
|
|
|
|
|
|
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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.MOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSMO a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.MOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.MOCode=temp.MOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
left join (select warehousecode,invcode,sum(cast((quantity-lockQuantity) as decimal(18,6))) as quantity
|
|
from ICSWareHouseLotInfo
|
|
where Quantity-lockQuantity>0
|
|
group by invcode,warehousecode) temp2 on a.InvCode = temp2.invcode and a.WHCODE = temp2.warehousecode
|
|
WHERE a.SupplyType='1'
|
|
GROUP BY c.MOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.MODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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,temp2.quantity;
|
|
";
|
|
sqlmsg = String.Format(sqlmsg, LotNo, WorkPoint, Quantity);
|
|
DataTable tablemsg = DBHelper.SQlReturnData(sqlmsg, cmd);
|
|
string message = "";
|
|
foreach (DataRow dr in tablemsg.Rows)
|
|
{
|
|
if (Convert.ToDecimal(dr["needQty"]) > 0)
|
|
message += "料品:" + dr["InvCode"] + ",仓库:" + dr["WHCODE"] + ",库存差额:" + dr["needQty"] + ",需求数量:" + dr["Quantity"] + ",单位:" + dr["InvUnit"]; }
|
|
log.Debug(message + sqlmsg);
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo201")+message);
|
|
}
|
|
WareHouseLotInfoDown(Identification,model.TransCode,model.Sequence + "~" + model.TransSequence,model.LotNo,model.Quantity,User,WorkPoint,"12","61",cmd,language,"","","");
|
|
//增加日志表记录 倒冲数据来源(入库批次自由项)
|
|
sql = @"update ICSWareHouseLotInfoLog
|
|
set EATTRIBUTE3 = (select
|
|
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, '')
|
|
from
|
|
ICSWareHouseLotInfo a
|
|
inner join ICSInventorylot lot on a.lotno = lot.lotno
|
|
inner join ICSExtension ext on lot.ExtensionID=ext.ID and a.workpoint =ext.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 a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
where a.LotNo ='{0}' and a.WorkPoint='{1}')
|
|
where Identification ='{2}'AND TransType='12' and BusinessCode ='61' and EATTRIBUTE3 IS null";
|
|
sql = String.Format(sql, LotNo, WorkPoint, Identification);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
|
|
}
|
|
|
|
//回写已领数量
|
|
sql = @"UPDATE ICSMOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + model.Quantity+") WHERE MODetailID='{0}' AND Sequence='{1}' AND WorkPoint='{2}'";
|
|
sql = String.Format(sql,model.DetailID,model.TransSequence,WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 委外入库,倒冲
|
|
if (BusinessCode.Equals(TransTypeEnum.OutsourcingReceiveDoc.GetDescription<DBValue>()))
|
|
{
|
|
#region sql
|
|
sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.OOCode AS TransCode,
|
|
a.OODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
a.ParentQuantity/c.Quantity*{2} AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
cast(0 as decimal(18,6)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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,a.WHCODE
|
|
INTO #maintemp
|
|
|
|
FROM
|
|
ICSOOPick a
|
|
inner 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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.OOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSOutsourcingOrder a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.OOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.OOCode=temp.OOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.SupplyType='1'
|
|
GROUP BY c.OOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.OODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,cast((a.quantity-a.lockQuantity) as decimal(18,6)) as quantity ,ROW_NUMBER() OVER (ORDER BY d.batchCode,a.lotno) as seq,
|
|
a.mtime into #barcodetemp from ICSWareHouseLotInfo a inner JOIN
|
|
(select #maintemp.invcode,#maintemp.WHCODE from #maintemp group by #maintemp.InvCode,#maintemp.WHCODE) b on a.invcode = b.invcode and a.warehousecode =b.WHCODE
|
|
inner JOIN ICSInventoryLot c on a.lotno = c.lotno
|
|
LEFT JOIN ICSExtension d on c.extensionid = d.id where a.Quantity-a.lockQuantity>0
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty decimal(18,6);--条码表数量
|
|
DECLARE @needqty decimal(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY seq
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
sql = String.Format(sql, LotNo, WorkPoint, Quantity);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
|
|
foreach (DownItemModel model in downItemModels)
|
|
{
|
|
if (model != null && model.LotNo == null || "" == model.LotNo)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
string sqlmsg = @" SELECT
|
|
c.OOCode AS TransCode,
|
|
a.OODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
Convert(decimal(18,6), a.ParentQuantity/c.Quantity*{2})
|
|
AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
cast(0 as decimal(18,6)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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,a.WHCODE ,(Convert(decimal(18,6), a.ParentQuantity/c.Quantity*{2})-isnull(temp2.quantity,0)) as needQty
|
|
|
|
|
|
FROM
|
|
ICSOOPick a
|
|
inner 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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.OOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSOutsourcingOrder a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.OOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.OOCode=temp.OOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
left join (select warehousecode,invcode,sum(cast((quantity-lockQuantity) as decimal(18,6))) as quantity
|
|
from ICSWareHouseLotInfo
|
|
where Quantity-lockQuantity>0
|
|
group by invcode,warehousecode) temp2 on a.InvCode = temp2.invcode and a.WHCODE = temp2.warehousecode
|
|
|
|
WHERE a.SupplyType='1'
|
|
GROUP BY c.OOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.OODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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,temp2.quantity;
|
|
";
|
|
sqlmsg = String.Format(sqlmsg, LotNo, WorkPoint, Quantity);
|
|
DataTable tablemsg = DBHelper.SQlReturnData(sqlmsg, cmd);
|
|
string message = "";
|
|
foreach (DataRow dr in tablemsg.Rows)
|
|
{
|
|
if (Convert.ToDecimal(dr["needQty"])>0)
|
|
message += "料品:" + dr["InvCode"] + ",仓库:" + dr["WHCODE"] + ",库存差额:" + dr["needQty"] + ",需求数量:" + dr["Quantity"] + ",单位:" + dr["InvUnit"];
|
|
}
|
|
log.Debug(message+ sqlmsg);
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo201") + message);
|
|
}
|
|
WareHouseLotInfoDown(Identification, model.TransCode, model.Sequence + "~" + model.TransSequence, model.LotNo, model.Quantity, User, WorkPoint, "13", "60", cmd, language,"","","");
|
|
log.Debug(model.TransCode + "倒冲" + model.Sequence + "~" + model.TransSequence);
|
|
//增加日志表记录 倒冲数据来源(入库批次自由项)
|
|
sql = @"update ICSWareHouseLotInfoLog
|
|
set EATTRIBUTE3 = (select
|
|
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, '')
|
|
from
|
|
ICSWareHouseLotInfo a
|
|
inner join ICSInventorylot lot on a.lotno = lot.lotno
|
|
inner join ICSExtension ext on lot.ExtensionID=ext.ID and a.workpoint =ext.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 a.WarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
where a.LotNo ='{0}' and a.WorkPoint='{1}')
|
|
where Identification ='{2}'AND TransType='13' and BusinessCode ='60' and EATTRIBUTE3 IS null";
|
|
|
|
sql = String.Format(sql, LotNo, WorkPoint, Identification);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
|
|
}
|
|
//回写已领数量
|
|
sql = @"UPDATE ICSOOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + model.Quantity+") WHERE OODetailID='{0}' AND Sequence='{1}' AND WorkPoint='{2}'";
|
|
|
|
sql = String.Format(sql, model.DetailID, model.TransSequence, WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 锐腾委外入库倒冲
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="jointLotNo"></param>
|
|
public static void WareHouseLotInfoBack(string Identification, string LocationCode, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID, string jointLotNo, string TransCode, string TransSequence,string InvCode,string WHCode)
|
|
{
|
|
try
|
|
{
|
|
string VenCode = string.Empty;
|
|
string DisVenCode = string.Empty;
|
|
string LocaCode = string.Empty;
|
|
string newsql = @"select LotNo,WorkPoint,InvCode,ToWarehouseCode,MUSER,Quantity,TransSequence,TransCode
|
|
from ICSWareHouseLotInfoLog
|
|
WHERE Identification='{0}' AND BusinessCode='{1}'";
|
|
newsql = string.Format(newsql, Identification, BusinessCode);
|
|
DataTable dt = DBHelper.SQlReturnData(newsql, cmd);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
|
|
string ssql = @"SELECT a.ODNCode,a.Sequence,a.WorkPoint,a.VenCode
|
|
FROM ICSODeliveryNotice a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.ODNCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'";
|
|
ssql = string.Format(ssql, dt.Rows[i]["LotNo"].ToString(), dt.Rows[i]["WorkPoint"].ToString());
|
|
DataTable ssdt = DBHelper.SQlReturnData(ssql, cmd);
|
|
if (ssdt.Rows.Count > 0)
|
|
{
|
|
DisVenCode = ssdt.Rows[0]["VenCode"].ToString();
|
|
}
|
|
|
|
|
|
string cheksql = @"select b.F_ItemCode as VenCode ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_Define1 AS LocationCode
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='WWLocation' AND b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, DisVenCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count > 0)
|
|
{
|
|
LocaCode = chekdt.Rows[0]["LocationCode"].ToString();
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("委外供应商未维护:" + DisVenCode);
|
|
}
|
|
|
|
#region 委外入库,倒冲
|
|
|
|
#region sql
|
|
string sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.ODNCode AS TransCode,
|
|
a.OODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
'{2}' AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
CAST(0 AS DECIMAL(18, 2)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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
|
|
INTO #maintemp
|
|
|
|
FROM
|
|
ICSOOPick a
|
|
inner join ICSODeliveryNotice 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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.ODNCode,a.Sequence,a.WorkPoint
|
|
FROM ICSODeliveryNotice a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.ODNCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.ODNCode=temp.ODNCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.invcode='{3}'
|
|
GROUP BY c.ODNCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.OODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime into #barcodetemp
|
|
from ICSWareHouseLotInfo a inner JOIN
|
|
(select #maintemp.invcode from #maintemp group by #maintemp.InvCode) b on a.invcode = b.invcode where a.Quantity-a.lockQuantity>0
|
|
AND a.WareHouseCode='{4}' and a.LocationCode='{5}'
|
|
ORDER BY a.MTIME ASC
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty int;--条码表数量
|
|
DECLARE @needqty decimal(10, 2);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY mtime
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (LotNo,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (LotNo,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (LotNo,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
sql = String.Format(sql, dt.Rows[i]["LotNo"].ToString(), dt.Rows[i]["WorkPoint"].ToString(), Quantity, InvCode, WHCode, LocaCode);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
|
|
foreach (DownItemModel model in downItemModels)
|
|
{
|
|
if (model != null && model.LotNo == null || "" == model.LotNo)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo201"));
|
|
}
|
|
WareHouseLotInfoDown(Identification, model.TransCode, model.Sequence + "~" + model.TransSequence, model.LotNo, model.Quantity, User, dt.Rows[i]["WorkPoint"].ToString(), "13", "60", cmd, language, "", "", "");
|
|
//回写已领数量
|
|
sql = @"UPDATE ICSOOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + model.Quantity + ") WHERE OODetailID='{0}' AND Sequence='{1}' AND WorkPoint='{2}'";
|
|
sql = String.Format(sql, model.DetailID, model.TransSequence, dt.Rows[i]["WorkPoint"].ToString());
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 入库倒冲(正向)
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="jointLotNo"></param>
|
|
public static void WareHouseLotInfoBackOut(string Identification,
|
|
string TransCode, string TransSequence, string InvCode, string WHCode, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode,string ERPID, string ERPDetailID, string ERPCode,string ERPSequence,
|
|
string cFree1, string cFree2, string cFree3, string cFree4, string cFree5, string cFree6, string cFree7, string cFree8, string cFree9, string cFree10,
|
|
string ProjectCode, string Batch, string Version, string Brand,
|
|
SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
string VenCode = string.Empty;
|
|
string DisVenCode = string.Empty;
|
|
string LocaCode = string.Empty;
|
|
string sqlwhere = string.Empty;
|
|
string ssql = @"SELECT a.ODNCode,a.Sequence,a.WorkPoint,a.VenCode
|
|
FROM ICSODeliveryNotice a
|
|
WHERE a.ODNCode='{0}' AND a.WorkPoint='{1}'";
|
|
ssql = string.Format(ssql, TransCode, WorkPoint);
|
|
DataTable ssdt = DBHelper.SQlReturnData(ssql, cmd);
|
|
if (ssdt.Rows.Count > 0)
|
|
{
|
|
DisVenCode = ssdt.Rows[0]["VenCode"].ToString();
|
|
}
|
|
|
|
|
|
string cheksql = @"select b.F_ItemCode as VenCode ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_Define1 AS LocationCode
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='WWLocation' AND b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, DisVenCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count > 0)
|
|
{
|
|
LocaCode = chekdt.Rows[0]["LocationCode"].ToString();
|
|
sqlwhere = @"AND a.invcode = '{0}' AND a.warehousecode = '{3}' and a.locationcode='{4}'";
|
|
}
|
|
else
|
|
{
|
|
if (DBHelper.IsRTU9())
|
|
{
|
|
throw new Exception("委外供应商库位未维护:" + DisVenCode);
|
|
}
|
|
else
|
|
{
|
|
sqlwhere = @"AND a.invcode = '{0}' AND a.warehousecode = '{3}'";
|
|
}
|
|
|
|
|
|
}
|
|
|
|
string MTime = string.Empty;
|
|
//1.查询先进先出字段
|
|
string mtimeSql = @"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";
|
|
DataTable mtimedt = DBHelper.SQlReturnData(mtimeSql, cmd);
|
|
if (mtimedt.Rows[0]["F_ItemName"].ToString() == "失效日期")
|
|
{
|
|
MTime = "ISNULL(b.ExpirationDate,b.ProductDate)";
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "生产日期")
|
|
{
|
|
MTime = "b.ProductDate";
|
|
|
|
}
|
|
else if(mtimedt.Rows[0]["F_ItemName"].ToString() == "入库日期")
|
|
{
|
|
MTime = "a.InDate";
|
|
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "批次")
|
|
{
|
|
MTime = "isnull(c.Batchcode ,'0')";
|
|
}
|
|
if (BusinessCode == "9" || BusinessCode == "10") { TransType = "13"; BusinessCode = "60"; } else { TransType = "12"; BusinessCode = "61"; }
|
|
#region 倒冲
|
|
|
|
#region sql
|
|
// sqlwhere = @"AND a.invcode = '{0}' AND a.warehousecode = '{3}'";//and c.batchcode ='{1}' and c.cfree1='{2}'
|
|
if (!string.IsNullOrWhiteSpace(cFree1)) { sqlwhere += " AND c.cFree1 ='" + cFree1 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree2)) { sqlwhere += " AND c.cFree2 ='" + cFree2 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree3)) { sqlwhere += " AND c.cFree3 ='" + cFree3 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree4)) { sqlwhere += " AND c.cFree4 ='" + cFree4 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree5)) { sqlwhere += " AND c.cFree5 ='" + cFree5 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree6)) { sqlwhere += " AND c.cFree6 ='" + cFree6 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree7)) { sqlwhere += " AND c.cFree7 ='" + cFree7 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree8)) { sqlwhere += " AND c.cFree8 ='" + cFree8 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree9)) { sqlwhere += " AND c.cFree9 ='" + cFree9 + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(cFree10)) { sqlwhere += " AND c.cFree10 ='" + cFree10 + "'"; }
|
|
//string ProjectCode, string Batch, string Version, string Brand,
|
|
if (!string.IsNullOrWhiteSpace(ProjectCode)) { sqlwhere += " AND c.ProjectCode ='" + ProjectCode + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(Batch)) { sqlwhere += " AND c.Batch ='" + Batch + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(Version)) { sqlwhere += " AND c.Version ='" + Version + "'"; }
|
|
if (!string.IsNullOrWhiteSpace(Brand)) { sqlwhere += " AND c.Brand ='" + Brand + "'"; }
|
|
string sql = @"-- 2.根据返回的物料信息 查出库存中对应的条码信息 barcodetemp 批次 序列号 仓库 料号
|
|
select a.lotno,a.invcode,(a.quantity-a.lockQuantity) as quantity ,{2} as mtime,ROW_NUMBER() OVER (ORDER BY a.InDate,a.lotno) AS Sequence into #barcodetemp
|
|
from ICSWareHouseLotInfo a inner JOIN ICSInventoryLot b on a.lotno = b.lotno
|
|
LEFT JOIN ICSExtension c on b.extensionid = c.id
|
|
where a.Quantity-a.lockQuantity>0 {9} --order by {2} asc
|
|
|
|
IF NOT EXISTS(SELECT 1 FROM #barcodetemp)
|
|
BEGIN
|
|
RAISERROR('子件没有库存记录!',16,1)
|
|
RETURN;
|
|
END
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @qty DECIMAL(18,6);--条码表数量
|
|
DECLARE @needqty DECIMAL(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @Mtime VARCHAR(50);--入库日期
|
|
--变量赋值(接口返回参数)
|
|
set @needqty = {4}
|
|
DECLARE tempCursor CURSOR FOR (select lotno from #barcodetemp ); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @Mtime; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
IF @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a where lotno =@Mtime
|
|
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')--库存足够扣减,更新库存数量,记录日志
|
|
BEGIN
|
|
--记录日志 库存扣减数量 @qty
|
|
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,MergeID,EATTRIBUTE3,EATTRIBUTE4)
|
|
SELECT NEWID(),'{5}','{10}','{11}',@lotno ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',@qty,
|
|
'','0','{12}','{16}','1','{6}',
|
|
'{1}','{13}','{14}',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','','',''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{7}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo=@lotno AND a.WorkPoint='{8}'
|
|
--更新库存数量
|
|
UPDATE ICSWareHouseLotInfo set Quantity =0 where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
|
|
--记录日志 库存扣减数量 @qty
|
|
--记录日志 库存扣减数量 @qty
|
|
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,MergeID,EATTRIBUTE3,EATTRIBUTE4)
|
|
SELECT NEWID(),'{5}','{10}','{11}',@lotno ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',@needqty,
|
|
'','0','{12}','{16}','1','{6}',
|
|
'{1}','{13}','{14}',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','','',''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{7}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo=@lotno AND a.WorkPoint='{8}'
|
|
--更新库存数量
|
|
update ICSWareHouseLotInfo set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @Mtime;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
--符合条件的条码扣除完之后 扣减数量未消耗完 则记录日志负数 异常退料
|
|
IF(@needqty>0)
|
|
BEGIN
|
|
--记录日志 库存扣减数量 -@needqty异常退料
|
|
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,MergeID,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE10)
|
|
SELECT NEWID(),'{5}','{10}','{11}',@lotno ,a.InvCode ,
|
|
'{3}','','','',-@needqty,
|
|
'','0','{12}','{16}','1','{6}',
|
|
'{1}','{13}','{14}',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','','','','倒冲异常'
|
|
FROM ICSInventory a
|
|
LEFT JOIN ICSWareHouseLotInfo c ON a.INVCODE=c.invcode AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{7}' AND a.WorkPoint=f.F_Location
|
|
WHERE c.LotNo=@lotno AND a.WorkPoint='{8}'
|
|
--更新库存数量
|
|
update ICSWareHouseLotInfo set quantity = quantity-@needqty where lotno = @lotno
|
|
END
|
|
END
|
|
|
|
DROP table #barcodetemp";
|
|
sqlwhere = string.Format(sqlwhere,InvCode, "", "", WHCode, LocaCode);
|
|
|
|
sql = string.Format(sql, InvCode, ERPDetailID, MTime, WHCode,
|
|
Quantity, Identification, ERPID, User, WorkPoint, sqlwhere, TransCode, TransSequence,TransType, ERPCode, ERPSequence,LocaCode,BusinessCode);
|
|
#endregion
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo200"));//"倒冲出错!"
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 退货倒冲(反向)
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="jointLotNo"></param>
|
|
public static void WareHouseLotInfoBackIn(string Identification,
|
|
string TransCode, string TransSequence, string InvCode, string WHCode, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, string ERPID, string ERPDetailID, string ERPCode, string ERPSequence,
|
|
string cFree1, string cFree2, string cFree3, string cFree4, string cFree5, string cFree6, string cFree7, string cFree8, string cFree9, string cFree10,
|
|
string ProjectCode, string Batch, string Version, string Brand,
|
|
SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
string MTime = string.Empty;
|
|
string LocaCode = string.Empty;
|
|
//1.查询先进先出字段
|
|
string mtimeSql = @"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";
|
|
DataTable mtimedt = DBHelper.SQlReturnData(mtimeSql, cmd);
|
|
if (mtimedt.Rows[0]["F_ItemName"].ToString() == "失效日期")
|
|
{
|
|
MTime = "ISNULL(b.ExpirationDate,b.ProductDate)";
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "生产日期")
|
|
{
|
|
MTime = "b.ProductDate";
|
|
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "入库日期")
|
|
{
|
|
MTime = "a.InDate";
|
|
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "批次")
|
|
{
|
|
MTime = "isnull(c.Batchcode ,'0')";
|
|
}
|
|
string sqlwhere = @"where a.invcode = '{0}' AND D.TransCode ='{" + TransCode + "}' and D.TransSequence='" + TransSequence + "'";
|
|
string sqlpick = @"";
|
|
if (BusinessCode == "11")
|
|
{
|
|
BusinessCode = "60"; TransType = "13";
|
|
|
|
sqlwhere = @"select a.lotno,a.invcode,sum(D.quantity ) as quantity into #barcodetemp
|
|
from
|
|
ICSWareHouseLotInfoLOG D
|
|
inner JOIN ICSWareHouseLotInfo a on a.lotno = d.lotno
|
|
inner JOIN ICSInventoryLot b on a.lotno = b.lotno
|
|
inner join ICSODeliveryNotice e on e.ODNCode = d.TransCode and e.Sequence = '" + TransSequence + @"'
|
|
inner join ICSOOPick f on f.OODetailID = e.ODNDetailID and d.TransSequence=e.Sequence+'~'+f.Sequence
|
|
inner join ICSExtension g on g.id=b.ExtensionID
|
|
where d.invcode = '{0}' AND D.TransCode ='" + TransCode + @"' and businesscode ='60' and g.batchcode ='"+ Batch + @"'
|
|
group by a.lotno,a.invcode";
|
|
sqlpick = @"update f set f.IssueQuantity=f.IssueQuantity-"+ Math.Abs(Convert.ToDecimal(Quantity)) + @"
|
|
from ICSODeliveryNotice e
|
|
inner join ICSOOPick f on f.OODetailID = e.ODNDetailID
|
|
where e.ODNCode ='" + TransCode + @"' and e.Sequence = '" + TransSequence + @"'";
|
|
} else { BusinessCode = "61"; TransType = "12"; }
|
|
#region 倒冲
|
|
|
|
#region sql
|
|
//and c.batchcode ='{1}' and c.cfree1='{2}'
|
|
|
|
string sql = @"--从原倒冲出库的log里捞出库数据
|
|
{9}
|
|
|
|
IF NOT EXISTS(SELECT 1 FROM #barcodetemp)
|
|
BEGIN
|
|
RAISERROR('子件没有库存记录!',16,1)
|
|
RETURN;
|
|
END
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @qty DECIMAL(18,6);--条码表数量
|
|
DECLARE @needqty DECIMAL(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @Mtime VARCHAR(50);--入库日期
|
|
--变量赋值(接口返回参数)
|
|
set @needqty = {4}
|
|
DECLARE tempCursor CURSOR FOR (select lotno from #barcodetemp ); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @Mtime; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
IF @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a where lotno =@Mtime
|
|
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')--库存足够扣减,更新库存数量,记录日志
|
|
BEGIN
|
|
--记录日志 库存扣减数量 @qty
|
|
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,MergeID,EATTRIBUTE3,EATTRIBUTE4)
|
|
SELECT NEWID(),'{5}','{10}','{11}',@lotno ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,c.WarehouseCode,c.LocationCode,-@qty,
|
|
'','0','{12}','{15}','1','{6}',
|
|
'{1}','{13}','{14}',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','','',''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{7}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo=@lotno AND a.WorkPoint='{8}'
|
|
--更新库存数量
|
|
UPDATE ICSWareHouseLotInfo set Quantity = Quantity+@qty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
|
|
--记录日志 库存扣减数量 @qty
|
|
--记录日志 库存扣减数量 @qty
|
|
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,MergeID,EATTRIBUTE3,EATTRIBUTE4)
|
|
SELECT NEWID(),'{5}','{10}','{11}',@lotno ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,c.WarehouseCode,c.LocationCode,-@needqty,
|
|
'','0','{12}','{15}','1','{6}',
|
|
'{1}','{13}','{14}',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','','',''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{7}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo=@lotno AND a.WorkPoint='{8}'
|
|
--更新库存数量
|
|
update ICSWareHouseLotInfo set quantity = quantity+@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @Mtime;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
|
|
{16}
|
|
END
|
|
DROP table #barcodetemp";
|
|
sqlwhere = string.Format(sqlwhere, InvCode, "", "", WHCode);
|
|
|
|
sql = string.Format(sql, InvCode, ERPDetailID, MTime, WHCode,
|
|
Math.Abs(Convert.ToDecimal(Quantity)), Identification, ERPID, User, WorkPoint, sqlwhere, TransCode, TransSequence, TransType, ERPCode, ERPSequence,BusinessCode, sqlpick);
|
|
#endregion
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo200"));//"倒冲出错!"
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
}
|
|
|
|
public static void WareHouseLotInfoBackInMF(string Identification,
|
|
string TransCode, string TransSequence, string InvCode, string WHCode, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, string ERPID, string ERPDetailID, string ERPCode, string ERPSequence,
|
|
string cFree1, string cFree2, string cFree3, string cFree4, string cFree5, string cFree6, string cFree7, string cFree8, string cFree9, string cFree10,
|
|
string ProjectCode, string Batch, string Version, string Brand, string PickID,
|
|
SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
string MTime = string.Empty;
|
|
string LocaCode = string.Empty;
|
|
//1.查询先进先出字段
|
|
string mtimeSql = @"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";
|
|
DataTable mtimedt = DBHelper.SQlReturnData(mtimeSql, cmd);
|
|
if (mtimedt.Rows[0]["F_ItemName"].ToString() == "失效日期")
|
|
{
|
|
MTime = "ISNULL(b.ExpirationDate,b.ProductDate)";
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "生产日期")
|
|
{
|
|
MTime = "b.ProductDate";
|
|
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "入库日期")
|
|
{
|
|
MTime = "a.InDate";
|
|
|
|
}
|
|
else if (mtimedt.Rows[0]["F_ItemName"].ToString() == "批次")
|
|
{
|
|
MTime = "isnull(c.Batchcode ,'0')";
|
|
}
|
|
string sqlwhere = @"where a.invcode = '{0}' AND D.TransCode ='{" + TransCode + "}' and D.TransSequence='" + TransSequence + "'";
|
|
string sqlpick = @"";
|
|
if (BusinessCode == "11")
|
|
{
|
|
BusinessCode = "60"; TransType = "13";
|
|
|
|
sqlwhere = @"select a.lotno,a.invcode,sum(a.quantity ) as quantity into #barcodetemp
|
|
from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInventoryLot b on a.lotno = b.lotno
|
|
inner join ICSOOPick f on f.PickID = '" + PickID + @"' and a.WarehouseCode = f.WHCode and a.invcode = f.InvCode
|
|
inner join ICSExtension g on g.id=b.ExtensionID
|
|
where a.invcode = '{0}' and g.batchcode ='" + Batch + @"'
|
|
group by a.lotno,a.invcode";
|
|
sqlpick = @"update f set f.IssueQuantity=f.IssueQuantity-" + Math.Abs(Convert.ToDecimal(Quantity)) + @"
|
|
from ICSODeliveryNotice e
|
|
inner join ICSOOPick f on f.OODetailID = e.ODNDetailID
|
|
where e.ODNCode ='" + TransCode + @"' and e.Sequence = '" + TransSequence + @"'";
|
|
}
|
|
else { BusinessCode = "61"; TransType = "12"; }
|
|
#region 倒冲
|
|
|
|
#region sql
|
|
//and c.batchcode ='{1}' and c.cfree1='{2}'
|
|
|
|
string sql = @"--从原倒冲出库的log里捞出库数据
|
|
{9}
|
|
|
|
IF NOT EXISTS(SELECT 1 FROM #barcodetemp)
|
|
BEGIN
|
|
RAISERROR('子件没有库存记录!',16,1)
|
|
RETURN;
|
|
END
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @qty DECIMAL(18,6);--条码表数量
|
|
DECLARE @needqty DECIMAL(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @Mtime VARCHAR(50);--入库日期
|
|
--变量赋值(接口返回参数)
|
|
set @needqty = {4}
|
|
DECLARE tempCursor CURSOR FOR (select lotno from #barcodetemp ); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @Mtime; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
IF @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = @needqty,@lotno = isnull(lotno,'') from #barcodetemp a where lotno =@Mtime
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')--库存足够扣减,更新库存数量,记录日志
|
|
BEGIN
|
|
--记录日志 库存扣减数量 @qty
|
|
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,MergeID,EATTRIBUTE3,EATTRIBUTE4)
|
|
SELECT NEWID(),'{5}','{10}','{11}',@lotno ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,c.WarehouseCode,c.LocationCode,-@qty,
|
|
'','0','{12}','{15}','1','{6}',
|
|
'{1}','{13}','{14}',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','','',''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{7}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo=@lotno AND a.WorkPoint='{8}'
|
|
--更新库存数量
|
|
UPDATE ICSWareHouseLotInfo set Quantity = Quantity+@qty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
--记录日志 库存扣减数量 @qty
|
|
--记录日志 库存扣减数量 @qty
|
|
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,MergeID,EATTRIBUTE3,EATTRIBUTE4)
|
|
SELECT NEWID(),'{5}','{10}','{11}',@lotno ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,c.WarehouseCode,c.LocationCode,-@needqty,
|
|
'','0','{12}','{15}','1','{6}',
|
|
'{1}','{13}','{14}',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','','',''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{7}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo=@lotno AND a.WorkPoint='{8}'
|
|
--更新库存数量
|
|
update ICSWareHouseLotInfo set quantity = quantity+@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @Mtime;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
|
|
{16}
|
|
END
|
|
DROP table #barcodetemp";
|
|
sqlwhere = string.Format(sqlwhere, InvCode, "", "", WHCode);
|
|
|
|
sql = string.Format(sql, InvCode, ERPDetailID, MTime, WHCode,
|
|
Math.Abs(Convert.ToDecimal(Quantity)), Identification, ERPID, User, WorkPoint, sqlwhere, TransCode, TransSequence, TransType, ERPCode, ERPSequence, BusinessCode, sqlpick);
|
|
#endregion
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo200"));//"倒冲出错!"
|
|
}
|
|
#endregion
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 倒冲前检验数量
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="jointLotNo"></param>
|
|
public static void WareHouseLotInfoBackOutBefore(string Identification, string LocationCode, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID, string jointLotNo, string TransCode, string TransSequence)
|
|
{
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
string LocaCode = "";
|
|
string DisVenCode = "";
|
|
|
|
string ssql = @"SELECT a.ODNCode,a.Sequence,a.WorkPoint,a.VenCode
|
|
FROM ICSODeliveryNotice a
|
|
WHERE a.ODNCode='{0}' AND a.WorkPoint='{1}'";
|
|
ssql = string.Format(ssql, TransCode, WorkPoint);
|
|
DataTable ssdt = DBHelper.SQlReturnData(ssql, cmd);
|
|
if (ssdt.Rows.Count > 0)
|
|
{
|
|
DisVenCode = ssdt.Rows[0]["VenCode"].ToString();
|
|
}
|
|
|
|
string cheksql = @"select b.F_ItemCode as VenCode ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_Define1 AS LocationCode
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='WWLocation' AND b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, DisVenCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count > 0)
|
|
{
|
|
LocaCode = chekdt.Rows[0]["LocationCode"].ToString();
|
|
}
|
|
|
|
string chekscsql = @"SELECT a.InvCode 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
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail d ON c.OOCode=d.TransCode AND c.Sequence=d.TransSequence and c.WorkPoint=d.WorkPoint
|
|
where d.LotNo='{0}' and a.WorkPoint='{1}' and a.SupplyType='1' and a.quantity>0";
|
|
chekscsql = string.Format(chekscsql, LotNo, WorkPoint);
|
|
DataTable chekcdts = DBHelper.SQlReturnData(chekscsql, cmd);
|
|
for (int i = 0; i < chekcdts.Rows.Count; i++)
|
|
{
|
|
#region 成品(生产)入库,倒冲
|
|
if (BusinessCode.Equals(TransTypeEnum.ManufactureReceiveDoc.GetDescription<DBValue>()))
|
|
{
|
|
#region sql
|
|
sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.MOCode AS TransCode,
|
|
a.MODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
a.Quantity AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
cast(0 as decimal(18,6)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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,a.WHCODE
|
|
INTO #maintemp
|
|
|
|
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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.MOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSMO a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.MOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.MOCode=temp.MOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.SupplyType='1' and a.invcode='{2}'
|
|
GROUP BY c.MOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.MODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,cast((a.quantity-a.lockQuantity) as decimal(18,6)) as quantity ,a.mtime into #barcodetemp from ICSWareHouseLotInfo a inner JOIN
|
|
(select #maintemp.invcode,#maintemp.WHCODE from #maintemp group by #maintemp.InvCode,#maintemp.WHCODE) b on a.invcode = b.invcode and a.warehousecode =b.WHCODE where a.Quantity-a.lockQuantity>0 ORDER BY a.MTIME ASC
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty decimal(18,6);--条码表数量
|
|
DECLARE @needqty decimal(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY mtime
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
sql = String.Format(sql, LotNo, WorkPoint, Quantity, chekcdts.Rows[i]["InvCode"].ToString());
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
|
|
if (downItemModels.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo201"));
|
|
}
|
|
//foreach (DownItemModel model in downItemModels)
|
|
//{
|
|
// if (model != null && model.LotNo == null || "" == model.LotNo)
|
|
// {
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo201"));
|
|
// }
|
|
//}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
|
|
|
|
string chekcsql = @"SELECT a.InvCode FROM ICSOOPick a
|
|
inner 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
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
|
|
INNER JOIN ICSInventoryLotDetail d ON c.OOCode=d.TransCode AND c.Sequence=d.TransSequence and c.WorkPoint=d.WorkPoint
|
|
where d.LotNo='{0}' and a.WorkPoint='{1}' and a.SupplyType='1' and a.quantity>0";
|
|
chekcsql = string.Format(chekcsql, LotNo, WorkPoint);
|
|
DataTable chekcdt = DBHelper.SQlReturnData(chekcsql, cmd);
|
|
for (int i = 0; i < chekcdt.Rows.Count; i++)
|
|
{
|
|
#region 委外入库,倒冲
|
|
if (BusinessCode.Equals(TransTypeEnum.OutsourcingReceiveDoc.GetDescription<DBValue>())|| BusinessCode.Equals(TransTypeEnum.ODeliveryNotice.GetDescription<DBValue>()))
|
|
{
|
|
if (LocaCode.Equals(""))
|
|
{
|
|
#region sql
|
|
sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.OOCode AS TransCode,
|
|
a.OODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
a.Quantity AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
cast(0 as decimal(18,6)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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,a.WHCODE
|
|
INTO #maintemp
|
|
|
|
FROM
|
|
ICSOOPick a
|
|
inner 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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.OOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSOutsourcingOrder a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.OOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.OOCode=temp.OOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.SupplyType='1' and a.invcode='{4}'
|
|
GROUP BY c.OOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.OODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,cast((a.quantity-a.lockQuantity) as decimal(18,6)) as quantity ,a.mtime into #barcodetemp from ICSWareHouseLotInfo a inner JOIN
|
|
(select #maintemp.invcode,#maintemp.WHCODE from #maintemp group by #maintemp.InvCode,#maintemp.WHCODE) b on a.invcode = b.invcode and a.warehousecode =b.WHCODE where a.Quantity-a.lockQuantity>0 ORDER BY a.MTIME ASC
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty decimal(18,6);--条码表数量
|
|
DECLARE @needqty decimal(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY mtime
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region sql
|
|
sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.OOCode AS TransCode,
|
|
a.OODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
a.Quantity AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
cast(0 as decimal(18,6)) AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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,a.WHCODE
|
|
INTO #maintemp
|
|
|
|
FROM
|
|
ICSOOPick a
|
|
inner 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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.OOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSOutsourcingOrder a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.OOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.OOCode=temp.OOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.SupplyType='1' and a.invcode='{4}'
|
|
GROUP BY c.OOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.OODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,cast((a.quantity-a.lockQuantity) as decimal(18,6)) as quantity ,a.mtime into #barcodetemp from ICSWareHouseLotInfo a inner JOIN
|
|
(select #maintemp.invcode,#maintemp.WHCODE from #maintemp group by #maintemp.InvCode,#maintemp.WHCODE) b on a.invcode = b.invcode and a.warehousecode =b.WHCODE where a.Quantity-a.lockQuantity>0 AND a.LocationCode='{3}' ORDER BY a.MTIME ASC
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty decimal(18,6);--条码表数量
|
|
DECLARE @needqty decimal(18,6);--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY mtime
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
}
|
|
|
|
sql = String.Format(sql, LotNo, WorkPoint, Quantity,LocaCode, chekcdt.Rows[i]["InvCode"].ToString());
|
|
log.Debug("倒冲前检验子件数量sql:"+sql);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
|
|
if (downItemModels.Count==0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo201"));
|
|
}
|
|
//foreach (DownItemModel model in downItemModels)
|
|
//{
|
|
// if (model != null && model.LotNo == null || "" == model.LotNo)
|
|
// {
|
|
|
|
// }
|
|
//}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Debug(ex.ToString());
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 添加库存(奥美专用)
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="jointLotNo"></param>
|
|
public static void WareHouseLotInfoUpAM(string Identification, string LocationCode, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID, string jointLotNo,string TransCode,string TransSequence)
|
|
{
|
|
try
|
|
{
|
|
|
|
#region 正常入库
|
|
///添加库存(原条码退回,更新库存;新条码直接入库)
|
|
//stirng locationcode = "";
|
|
string sql = string.Empty;
|
|
string locationcode = "";
|
|
string newlocationcode = "";
|
|
string amount = "";
|
|
|
|
//string sqql = @"select a.Amount FROM ICSInventoryLot a
|
|
// WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
//sqql = string.Format(sqql, LotNo, WorkPoint);
|
|
//DataTable dtaa = DBHelper.SQlReturnData(sqql, cmd);
|
|
//amount = dtaa.Rows[0]["Amount"].ToString();
|
|
|
|
//string cheksql = @"select d.EATTRIBUTE1 FROM ICSInventoryLot a
|
|
// INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
// INNER JOIN ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
|
|
// WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.AmountEnable='1'";
|
|
//cheksql = string.Format(cheksql, LotNo, WorkPoint);
|
|
//DataTable dta = DBHelper.SQlReturnData(cheksql, cmd);
|
|
//if (dta.Rows.Count > 0)
|
|
//{
|
|
// Quantity = (decimal.Parse(Quantity) * decimal.Parse(dta.Rows[0]["EATTRIBUTE1"].ToString())).ToString();
|
|
//}
|
|
|
|
if (BusinessCode != TransTypeEnum.SalesReturnBack.GetDescription<DBValue>())
|
|
{
|
|
if (string.IsNullOrWhiteSpace(LogID))
|
|
{
|
|
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 ";
|
|
}
|
|
else
|
|
{
|
|
sql = @"SELECT LocationCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), LotNo));
|
|
}
|
|
locationcode = dt.Rows[0]["LocationCode"].ToString();
|
|
}
|
|
|
|
|
|
}
|
|
if(BusinessCode == TransTypeEnum.MOIssueDocNegative.GetDescription<DBValue>())
|
|
{
|
|
sql = @"SELECT FromLocationCode FROM ICSWareHouseLotInfoLog a WHERE LotNo='{0}' AND WorkPoint='{1}' AND ID='{2}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint,LogID);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), LotNo));
|
|
}
|
|
newlocationcode = dt.Rows[0]["FromLocationCode"].ToString();
|
|
sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity=0)
|
|
BEGIN
|
|
UPDATE a SET a.Quantity=ISNULL(a.Quantity,0)+'{3}',WarehouseCode=e.WarehouseCode,LocationCode=d.LocationCode
|
|
From ICSWareHouseLotInfo a
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
ELSE IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.LocationCode='{4}')
|
|
BEGIN
|
|
UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
END
|
|
ELSE IF('" + locationcode + @"' != '{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo395"), "{4}", locationcode) + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
|
|
RETURN
|
|
END
|
|
END
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
--INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, newlocationcode);
|
|
}
|
|
else
|
|
{
|
|
sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.Quantity=0)
|
|
BEGIN
|
|
UPDATE a SET a.Quantity=ISNULL(a.Quantity,0)+'{3}',WarehouseCode=e.WarehouseCode,LocationCode=d.LocationCode
|
|
From ICSWareHouseLotInfo a
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
ELSE IF EXISTS(SELECT a.LotNO FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.LocationCode='{4}')
|
|
BEGIN
|
|
UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
|
|
WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
END
|
|
ELSE IF('" + locationcode + @"' != '{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo395"), "{4}", locationcode) + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
|
|
INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
|
|
WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
|
|
RETURN
|
|
END
|
|
END
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
--INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
--INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
|
|
}
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
|
|
}
|
|
|
|
if (BusinessCode == TransTypeEnum.MOIssueDocNegative.GetDescription<DBValue>())
|
|
{
|
|
///添加日志
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}','{8}','{9}',a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID,TransCode,TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
else if (BusinessCode == TransTypeEnum.MOStockINByProduct.GetDescription<DBValue>())
|
|
{
|
|
///添加日志
|
|
sql = @"IF EXISTS(SELECT 1 FROM ICSInventoryLot lot WHERE lot.LotNo='{0}' AND lot.WorkPoint='{1}' AND lot.Type=19)
|
|
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,LogID)
|
|
SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
ELSE
|
|
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,LogID)
|
|
SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
else if (BusinessCode == TransTypeEnum.OOStockINByProduct.GetDescription<DBValue>())
|
|
{
|
|
///添加日志
|
|
sql = @"IF EXISTS(SELECT 1 FROM ICSInventoryLot lot WHERE lot.LotNo='{0}' AND lot.WorkPoint='{1}' AND lot.Type=19)
|
|
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,LogID)
|
|
SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
ELSE
|
|
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,LogID)
|
|
SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
///添加日志
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,'{6}',
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region 管控方式是"料品"时
|
|
|
|
ControlMode mode = ICSControlModeService.GetControlMode();
|
|
|
|
if (mode.itemCode.Equals("ControlMode02"))
|
|
{
|
|
//查询是否存在料品管控的条码
|
|
string sqlStrNew = @"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 ]
|
|
FROM
|
|
ICSInventoryLot a
|
|
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
|
|
INNER JOIN ICSExtension ext ON a.ExtensionID = ext.ID AND a.WorkPoint = ext.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sqlStrNew = string.Format(sqlStrNew, jointLotNo, WorkPoint);
|
|
DataTable table = DBHelper.SQlReturnData(sqlStrNew, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<LotNoMode> modelNew = JsonConvert.DeserializeObject<List<LotNoMode>>(json);
|
|
|
|
//当不存在料品管控条码时,生成新条码
|
|
if (!(modelNew.Count > 0))
|
|
{
|
|
//获取旧条码的信息
|
|
string jsonStr = ICSControlModeService.QueryLotNo(LotNo, WorkPoint);
|
|
List<LotNoMode> model = JsonConvert.DeserializeObject<List<LotNoMode>>(jsonStr);
|
|
//在条码表中插入一条新数据,在条码表中插入一条新数据,并在库存表中添加新数据
|
|
LotNoMode lotNoMode = model[0];
|
|
CreateLotNo(jointLotNo, Quantity, "", "", WorkPoint, Identification, User, lotNoMode.InvCode, BusinessCode, lotNoMode.ProjectCode, lotNoMode.BatchCode,
|
|
lotNoMode.Version, lotNoMode.Brand, lotNoMode.cFree1, lotNoMode.cFree2, lotNoMode.cFree3, lotNoMode.cFree4, lotNoMode.cFree5, lotNoMode.cFree6, lotNoMode.cFree7,
|
|
lotNoMode.cFree8, lotNoMode.cFree9, lotNoMode.cFree10, cmd, language, LocationCode, LotNo);
|
|
}
|
|
try
|
|
{
|
|
|
|
//合并前日志
|
|
WareHouseLotInfoLog(Identification, jointLotNo, User, WorkPoint, "2",
|
|
TransTypeEnum.LOTMergeBefore.GetDescription<DBValue>(), "", cmd, language);
|
|
|
|
//更新目标条码库存
|
|
WareHouseLotInfoMerge(Identification, jointLotNo, LotNo, Quantity, User, WorkPoint, "2",
|
|
TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), cmd, language);
|
|
|
|
//合并后日志
|
|
WareHouseLotInfoLog(Identification, jointLotNo, User, WorkPoint, "2",
|
|
TransTypeEnum.LOTMergeAfter.GetDescription<DBValue>(), "", cmd, language);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 成品(生产)入库,倒冲
|
|
if (BusinessCode.Equals(TransTypeEnum.ManufactureReceiveDoc.GetDescription<DBValue>()))
|
|
{
|
|
#region sql
|
|
sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.MOCode AS TransCode,
|
|
a.MODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
a.ParentQuantity/c.Quantity*{2} AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
0 AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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
|
|
INTO #maintemp
|
|
|
|
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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.MOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSMO a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.MOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.MOCode=temp.MOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.SupplyType='1'
|
|
GROUP BY c.MOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.MODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime into #barcodetemp from ICSWareHouseLotInfo a LEFT JOIN
|
|
(select #maintemp.invcode from #maintemp group by #maintemp.InvCode) b on a.invcode = b.invcode where a.Quantity-a.lockQuantity>0 ORDER BY a.MTIME ASC
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty int;--条码表数量
|
|
DECLARE @needqty int;--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY mtime
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
sql = String.Format(sql, LotNo, WorkPoint, Quantity);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
|
|
foreach (DownItemModel model in downItemModels)
|
|
{
|
|
if (model != null && model.LotNo == null || "" == model.LotNo)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo201"));
|
|
}
|
|
WareHouseLotInfoDown(Identification, model.TransCode, model.Sequence + "~" + model.TransSequence, model.LotNo, model.Quantity, User, WorkPoint, "12", BusinessCode, cmd, language, "", "","");
|
|
//回写已领数量
|
|
sql = @"UPDATE ICSMOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + model.Quantity + ") WHERE MODetailID='{0}' AND Sequence='{1}' AND WorkPoint='{2}'";
|
|
sql = String.Format(sql, model.DetailID, model.TransSequence, WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 委外入库,倒冲
|
|
if (BusinessCode.Equals(TransTypeEnum.OutsourcingReceiveDoc.GetDescription<DBValue>()))
|
|
{
|
|
#region sql
|
|
sql = @"-- 1.创建临时表 初始单据数据 maintemp
|
|
SELECT
|
|
c.OOCode AS TransCode,
|
|
a.OODetailID AS DetailID,
|
|
a.InvCode,
|
|
b.InvName,
|
|
b.InvStd,
|
|
a.ParentQuantity/c.Quantity*{2} AS Quantity,
|
|
a.Amount,
|
|
a.Sequence AS TransSequence,
|
|
a.IssueQuantity,
|
|
c.Sequence,
|
|
inv.InvUnit,
|
|
0 AS LocationQty,
|
|
inv.AmountUnit,
|
|
a.ExtensionID,
|
|
a.WorkPoint,
|
|
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
|
|
INTO #maintemp
|
|
|
|
FROM
|
|
ICSOOPick a
|
|
inner 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
|
|
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
|
|
INNER JOIN (
|
|
SELECT a.OOCode,a.Sequence,a.WorkPoint
|
|
FROM ICSOutsourcingOrder a
|
|
INNER JOIN ICSInventoryLotDetail b ON b.TransCode=a.OOCode AND b.TransSequence=a.Sequence AND b.WorkPoint=a.WorkPoint
|
|
INNER JOIN ICSInventoryLot c ON c.LotNo=b.LotNo AND c.WorkPoint=b.WorkPoint
|
|
WHERE c.LotNo='{0}' AND c.WorkPoint='{1}'
|
|
) temp ON c.OOCode=temp.OOCode AND a.WorkPoint=temp.WorkPoint AND c.Sequence=temp.Sequence
|
|
WHERE a.SupplyType='1'
|
|
GROUP BY c.OOCode,a.ParentQuantity,a.Quantity,c.Quantity,a.InvCode,b.InvName,b.InvStd,a.WhCode,a.ExtensionID,a.WorkPoint,inv.BatchEnable,a.OODetailID,a.Amount,a.Sequence,a.IssueQuantity,inv.InvName,inv.InvCode,inv.InvUnit,inv.AmountUnit,c.Sequence,
|
|
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;
|
|
|
|
select * into #resulttemp from #maintemp
|
|
ALTER TABLE #resulttemp ADD LotNo VARCHAR(50)
|
|
delete from #resulttemp
|
|
|
|
-- 2.根据maintemp 中的物料信息 查出库存中对应的条码信息 barcodetemp
|
|
select a.lotno,a.invcode,(a.quantity-a.lockQuantity) as quantity ,a.mtime into #barcodetemp from ICSWareHouseLotInfo a LEFT JOIN
|
|
(select #maintemp.invcode from #maintemp group by #maintemp.InvCode) b on a.invcode = b.invcode where a.Quantity-a.lockQuantity>0 ORDER BY a.MTIME ASC
|
|
|
|
-- 3.循环maintemp,根据 行号和子表ID 向最终结果集中写入数据 ;barcodetemp 中的已匹配数据删除或更新
|
|
BEGIN
|
|
DECLARE @transSequence int;--当前循环的行号
|
|
DECLARE @qty int;--条码表数量
|
|
DECLARE @needqty int;--本行所需数量
|
|
DECLARE @lotno VARCHAR(50);--条码
|
|
DECLARE @DetailID VARCHAR(50);--本行所在工单行ID
|
|
DECLARE tempCursor CURSOR FOR (select transSequence,DetailID from #maintemp); --创建游标tempCursor,并定义游标所指向的集合
|
|
OPEN tempCursor; --打开游标
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID; --游标读取下一个数据
|
|
WHILE @@fetch_status=0
|
|
BEGIN
|
|
select @needqty=Quantity from #maintemp where transSequence = @transSequence AND DetailID = @DetailID
|
|
PRINT @transSequence
|
|
WHILE @needqty>0
|
|
BEGIN
|
|
|
|
select top 1 @qty = isnull(quantity,0),@lotno = isnull(lotno,'') from #barcodetemp a
|
|
RIGHT JOIN (select invcode from #maintemp where transSequence = @transSequence AND DetailID = @DetailID) b on a.invcode=b.invcode ORDER BY mtime
|
|
BEGIN
|
|
IF(@needqty-@qty>=0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0), InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@qty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
delete from #barcodetemp where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE IF(@needqty-@qty<0 and ISNULL(@lotno, '')<>'')
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,@needqty,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
update #barcodetemp set quantity = @qty-@needqty where lotno = @lotno
|
|
SET @needqty=@needqty-@qty
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
insert INTO #resulttemp (lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity,Quantity,
|
|
Amount,InvCode,InvName,InvStd,InvUnit,LocationQty,AmountUnit,
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint)
|
|
SELECT @lotno,TransCode,DetailID,Sequence,TransSequence,IssueQuantity, Quantity,
|
|
ISNULL(Amount, 0),InvCode,InvName,ISNULL(InvStd, ''),InvUnit,0,ISNULL(AmountUnit, ''),
|
|
ExtensionID,ProjectCode,BatchCode, Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,WorkPoint from #maintemp
|
|
where #maintemp.transSequence = @transSequence AND DetailID = @DetailID
|
|
|
|
SET @needqty=0
|
|
END
|
|
END
|
|
END
|
|
FETCH NEXT FROM tempCursor INTO @transSequence,@DetailID;
|
|
END
|
|
CLOSE tempCursor
|
|
DEALLOCATE tempCursor
|
|
END
|
|
|
|
select TransCode,LotNo,LocationQty AS Quantity,InvCode,DetailID,Sequence,TransSequence from #resulttemp
|
|
--select * from #resulttemp
|
|
|
|
DROP table #maintemp
|
|
DROP table #resulttemp
|
|
DROP table #barcodetemp";
|
|
#endregion
|
|
sql = String.Format(sql, LotNo, WorkPoint, Quantity);
|
|
DataTable table = DBHelper.SQlReturnData(sql, cmd);
|
|
string json = JsonConvert.SerializeObject(table);
|
|
List<DownItemModel> downItemModels = JsonConvert.DeserializeObject<List<DownItemModel>>(json);
|
|
foreach (DownItemModel model in downItemModels)
|
|
{
|
|
if (model != null && model.LotNo == null || "" == model.LotNo)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo201"));
|
|
}
|
|
WareHouseLotInfoDown(Identification, model.TransCode, model.Sequence + "~" + model.TransSequence, model.LotNo, model.Quantity, User, WorkPoint, "13", BusinessCode, cmd, language, "", "", "");
|
|
//回写已领数量
|
|
sql = @"UPDATE ICSOOPick SET IssueQuantity=(ISNULL(IssueQuantity,0)+" + model.Quantity + ") WHERE OODetailID='{0}' AND Sequence='{1}' AND WorkPoint='{2}'";
|
|
sql = String.Format(sql, model.DetailID, model.TransSequence, WorkPoint);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo199"));
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 减少库存
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="TransCode"></param>
|
|
/// <param name="TransSequence"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static DataTable WareHouseLotInfoDown(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID, string TransID,string MergeID = "")
|
|
{
|
|
decimal LotQTYYY = 0;
|
|
decimal LotQTY = 0;
|
|
decimal SUMQTY = 0;
|
|
string INVCODE = "";
|
|
string Inspect = "";
|
|
string LotEnable = "";
|
|
string LotDocEnable = "";
|
|
string InvOQc = "";
|
|
string chekEnable = "";
|
|
string DisPrintEnable = "";
|
|
string PrintEnable = "";
|
|
string sql = "";
|
|
string lotstr = "";
|
|
int result = 0;
|
|
bool isDis = false;
|
|
List<string> NewBarCodeList = new List<string>();
|
|
DataTable dtLotno = new DataTable();
|
|
DataTable lstDt = new DataTable();
|
|
DataTable ZLtable = new DataTable();
|
|
try
|
|
{
|
|
//检验是否分批
|
|
sql = @"SELECT b.LotEnable,b.PrintEnable,b.InvOQC,b.LotDocEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
LotDocEnable = dt.Rows[0]["LotDocEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
InvOQc = dt.Rows[0]["InvOQC"].ToString();
|
|
}
|
|
log.Debug("INVOQC:"+InvOQc);
|
|
string cheksql = @"IF NOT EXISTS(select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}' )
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo470") + @"',16,1);
|
|
RETURN
|
|
END
|
|
select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, BusinessCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
chekEnable = chekdt.Rows[0]["Enable"].ToString();
|
|
DisPrintEnable = chekdt.Rows[0]["DisPrintEnable"].ToString();
|
|
}
|
|
sql = @"select Quantity,invcode,Inspect from ICSWareHouseLotInfo
|
|
where LotNO='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dtt = DBHelper.SQlReturnData(sql, cmd);
|
|
LotQTYYY = Convert.ToDecimal(dtt.Rows[0]["Quantity"]);
|
|
LotQTY = Convert.ToDecimal(Quantity);
|
|
INVCODE = dtt.Rows[0]["invcode"].ToString();
|
|
Inspect = dtt.Rows[0]["Inspect"].ToString();
|
|
|
|
|
|
sql = @"SELECT isNULL(SUM(a.quantity)-'{3}',0) AS SumQTY FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode and a.workpoint=b.workpoint and a.warehousecode=b.whcode
|
|
where a.invcode='{2}' and a.workpoint='{1}' ";
|
|
sql = string.Format(sql, LotNo, WorkPoint,INVCODE, Quantity);
|
|
DataTable Sumdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
log.Debug(Sumdtt.Rows[0]["SumQTY"]);
|
|
SUMQTY = Convert.ToDecimal(Sumdtt.Rows[0]["SumQTY"]);
|
|
//Convert.ToDecimal(Sumdtt.Rows[0]["SumQTY"]);
|
|
|
|
|
|
if (LotDocEnable.Equals("True"))
|
|
{
|
|
if (LotEnable.Equals("True") && chekEnable.Equals("True") && LotQTYYY - LotQTY > 0)
|
|
{
|
|
|
|
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 (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID,TransCode,TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,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(),'{3}','{9}','{7}','{8}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,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)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount/a.Quantity*Quantity,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
a.WorkPoint ,'{1}',a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
|
|
a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,a.EATTRIBUTE19,a.EATTRIBUTE20,
|
|
a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' and a.WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'0',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' AND WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransID,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}','{4}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,LogID)
|
|
SELECT NEWID(),'{3}','{11}','{4}','{5}','{10}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, TransID);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{7}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
if (PrintEnable.Equals("True") && DisPrintEnable.Equals("True"))
|
|
{
|
|
string PrintData = DBHelper.ReadPrintStream();
|
|
sql = @""+PrintData+"";
|
|
//sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
// from ICSWareHouseLotInfolog A
|
|
// left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
// left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
// left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
// where A.lotno ='{0}' and a.workpoint='{1}' and a.BusinessCode='{2}'
|
|
// ";
|
|
sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, Identification);
|
|
log.Debug("打印数据源:" + sql);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
NewBarCodeList.Add(LotNo);
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
log.Debug("出库日志" + sql);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
ZLtable = ICSControlModeService.GetZL();
|
|
if (ZLtable == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo471"));
|
|
}
|
|
|
|
for (int i = 0; i < ZLtable.Rows.Count; i++)
|
|
{
|
|
|
|
string zlTransCode = ZLtable.Rows[i]["BusinessCode"].ToString();
|
|
string Enable = ZLtable.Rows[i]["Enable"].ToString();
|
|
if (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
isDis = true;
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
// else { throw new Exception("单据类型未配置!"); }
|
|
|
|
}
|
|
|
|
//if (isDis == false)
|
|
//{
|
|
// throw new Exception("单据类型未配置!");
|
|
//}
|
|
|
|
/////更新库存
|
|
//sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
// IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
// RETURN
|
|
// END";
|
|
//sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
//}
|
|
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (LotEnable.Equals("True") && LotQTYYY - LotQTY > 0)
|
|
{
|
|
|
|
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 (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
|
|
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,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(),'{3}','{9}','{7}','{8}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,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)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount/a.Quantity*Quantity,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
a.WorkPoint ,'{1}',a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
|
|
a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,a.EATTRIBUTE19,a.EATTRIBUTE20,
|
|
a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' and a.WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'0',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' AND WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransID,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}','{4}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,LogID)
|
|
SELECT NEWID(),'{3}','{11}','{4}','{5}','{10}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, TransID);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{7}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
if (PrintEnable.Equals("True") && DisPrintEnable.Equals("True"))
|
|
{
|
|
string PrintData = DBHelper.ReadPrintStream();
|
|
sql = @"" + PrintData + "";
|
|
//sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
// from ICSWareHouseLotInfolog A
|
|
// left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
// left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
// left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
// where A.lotno ='{0}' and a.workpoint='{1}' and a.BusinessCode='{2}'
|
|
// ";
|
|
sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, Identification);
|
|
log.Debug("打印数据源:" + sql);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
NewBarCodeList.Add(LotNo);
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
log.Debug("出库日志" + sql);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
ZLtable = ICSControlModeService.GetZL();
|
|
if (ZLtable == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo471"));
|
|
}
|
|
|
|
for (int i = 0; i < ZLtable.Rows.Count; i++)
|
|
{
|
|
|
|
string zlTransCode = ZLtable.Rows[i]["BusinessCode"].ToString();
|
|
string Enable = ZLtable.Rows[i]["Enable"].ToString();
|
|
if (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
isDis = true;
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
|
|
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
// else { throw new Exception("单据类型未配置!"); }
|
|
|
|
}
|
|
|
|
//if (isDis == false)
|
|
//{
|
|
// throw new Exception("单据类型未配置!");
|
|
//}
|
|
|
|
/////更新库存
|
|
//sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
// IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
// RETURN
|
|
// END";
|
|
//sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
//}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
return lstDt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 减少库存(库存表四舍五入)
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="TransCode"></param>
|
|
/// <param name="TransSequence"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="language"></param>
|
|
/// <param name="LogID"></param>
|
|
/// <param name="TransID"></param>
|
|
/// <param name="MergeID"></param>
|
|
/// <returns></returns>
|
|
public static DataTable WareHouseLotInfoDownRound(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID, string TransID, string MergeID = "")
|
|
{
|
|
decimal LotQTYYY = 0;
|
|
decimal LotQTY = 0;
|
|
decimal SUMQTY = 0;
|
|
string INVCODE = "";
|
|
string Inspect = "";
|
|
string LotEnable = "";
|
|
string LotDocEnable = "";
|
|
string InvOQc = "";
|
|
string chekEnable = "";
|
|
string DisPrintEnable = "";
|
|
string PrintEnable = "";
|
|
string sql = "";
|
|
string lotstr = "";
|
|
string RoundedQuantity = Quantity;//记录四舍五入后的数量
|
|
int result = 0;
|
|
bool isDis = false;
|
|
List<string> NewBarCodeList = new List<string>();
|
|
DataTable dtLotno = new DataTable();
|
|
DataTable lstDt = new DataTable();
|
|
DataTable ZLtable = new DataTable();
|
|
try
|
|
{
|
|
//获取小数位数
|
|
sql = @"SELECT Figure FROM ICSConfiguration WHERE Code='Figure001' AND WorkPoint='{0}'";
|
|
sql = string.Format(sql, WorkPoint);
|
|
int figureNum = (int)(DBHelper.ExecuteScalar(sql, cmd));
|
|
//进行四舍五入操作
|
|
if(decimal.TryParse(Quantity,out decimal numericQuantity))
|
|
{
|
|
RoundedQuantity = Math.Round(numericQuantity,figureNum).ToString();
|
|
}
|
|
|
|
//检验是否分批
|
|
sql = @"SELECT b.LotEnable,b.PrintEnable,b.InvOQC,b.LotDocEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
LotDocEnable = dt.Rows[0]["LotDocEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
InvOQc = dt.Rows[0]["InvOQC"].ToString();
|
|
}
|
|
log.Debug("INVOQC:" + InvOQc);
|
|
string cheksql = @"IF NOT EXISTS(select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}' )
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo470") + @"',16,1);
|
|
RETURN
|
|
END
|
|
select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, BusinessCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
chekEnable = chekdt.Rows[0]["Enable"].ToString();
|
|
DisPrintEnable = chekdt.Rows[0]["DisPrintEnable"].ToString();
|
|
}
|
|
sql = @"select Quantity,invcode,Inspect from ICSWareHouseLotInfo
|
|
where LotNO='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dtt = DBHelper.SQlReturnData(sql, cmd);
|
|
LotQTYYY = Convert.ToDecimal(dtt.Rows[0]["Quantity"]);
|
|
LotQTY = Convert.ToDecimal(RoundedQuantity);
|
|
INVCODE = dtt.Rows[0]["invcode"].ToString();
|
|
Inspect = dtt.Rows[0]["Inspect"].ToString();
|
|
|
|
sql = @"SELECT SUM(a.quantity)-'{3}' AS SumQTY FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode and a.workpoint=b.workpoint
|
|
where a.invcode='{2}' and a.workpoint='{1}' and GETDATE()>b.BeginTime and GETDATE()<b.EndTime";
|
|
sql = string.Format(sql, LotNo, WorkPoint, INVCODE, RoundedQuantity);
|
|
DataTable Sumdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
log.Debug(Sumdtt.Rows[0]["SumQTY"]);
|
|
SUMQTY = 0;
|
|
//Convert.ToDecimal(Sumdtt.Rows[0]["SumQTY"]);
|
|
|
|
|
|
if (LotDocEnable.Equals("True"))
|
|
{
|
|
if (LotEnable.Equals("True") && chekEnable.Equals("True") && LotQTYYY - LotQTY > 0)
|
|
{
|
|
|
|
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 (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,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(),'{3}','{9}','{7}','{8}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,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)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount/a.Quantity*Quantity,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
a.WorkPoint ,'{1}',a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
|
|
a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,a.EATTRIBUTE19,a.EATTRIBUTE20,
|
|
a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' and a.WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, RoundedQuantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'0',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' AND WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, RoundedQuantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransID,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}','{4}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,LogID)
|
|
SELECT NEWID(),'{3}','{11}','{4}','{5}','{10}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, TransID);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{7}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
if (PrintEnable.Equals("True") && DisPrintEnable.Equals("True"))
|
|
{
|
|
string PrintData = DBHelper.ReadPrintStream();
|
|
sql = @"" + PrintData + "";
|
|
//sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
// from ICSWareHouseLotInfolog A
|
|
// left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
// left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
// left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
// where A.lotno ='{0}' and a.workpoint='{1}' and a.BusinessCode='{2}'
|
|
// ";
|
|
sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, Identification);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
NewBarCodeList.Add(LotNo);
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
log.Debug("出库日志" + sql);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
ZLtable = ICSControlModeService.GetZL();
|
|
if (ZLtable == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo471"));
|
|
}
|
|
|
|
for (int i = 0; i < ZLtable.Rows.Count; i++)
|
|
{
|
|
|
|
string zlTransCode = ZLtable.Rows[i]["BusinessCode"].ToString();
|
|
string Enable = ZLtable.Rows[i]["Enable"].ToString();
|
|
if (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
isDis = true;
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
// else { throw new Exception("单据类型未配置!"); }
|
|
|
|
}
|
|
|
|
//if (isDis == false)
|
|
//{
|
|
// throw new Exception("单据类型未配置!");
|
|
//}
|
|
|
|
/////更新库存
|
|
//sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
// IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
// RETURN
|
|
// END";
|
|
//sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
//}
|
|
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (LotEnable.Equals("True") && LotQTYYY - LotQTY > 0)
|
|
{
|
|
|
|
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 (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,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(),'{3}','{9}','{7}','{8}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,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)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount/a.Quantity*Quantity,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
a.WorkPoint ,'{1}',a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
|
|
a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,a.EATTRIBUTE19,a.EATTRIBUTE20,
|
|
a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' and a.WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, RoundedQuantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'0',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' AND WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, RoundedQuantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransID,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}','{4}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,LogID)
|
|
SELECT NEWID(),'{3}','{11}','{4}','{5}','{10}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, TransID);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{7}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
if (PrintEnable.Equals("True") && DisPrintEnable.Equals("True"))
|
|
{
|
|
string PrintData = DBHelper.ReadPrintStream();
|
|
sql = @"" + PrintData + "";
|
|
//sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
// from ICSWareHouseLotInfolog A
|
|
// left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
// left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
// left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
// where A.lotno ='{0}' and a.workpoint='{1}' and a.BusinessCode='{2}'
|
|
// ";
|
|
sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, Identification);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
NewBarCodeList.Add(LotNo);
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransID,TransCode,TransSequence,LotNo,InvCode,
|
|
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
|
|
SELECT NEWID(),'{3}','{10}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, TransID);
|
|
|
|
log.Debug("出库日志" + sql);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
ZLtable = ICSControlModeService.GetZL();
|
|
if (ZLtable == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo471"));
|
|
}
|
|
|
|
for (int i = 0; i < ZLtable.Rows.Count; i++)
|
|
{
|
|
|
|
string zlTransCode = ZLtable.Rows[i]["BusinessCode"].ToString();
|
|
string Enable = ZLtable.Rows[i]["Enable"].ToString();
|
|
if (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
isDis = true;
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15' and TransCode='{3}' and TransSequence='{4}'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}',
|
|
LockQuantity = ISNULL(LockQuantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (InvOQc.Equals("True"))
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' ";//and a.Inspect = '0'
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable Inspectdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (Inspectdtt.Rows.Count > 0 && Inspectdtt != null)
|
|
{
|
|
sql = @"select a.id from ICSWareHouseLotInfo a
|
|
inner JOIN ICSInspectDetail b ON a.WorkPoint=b.WorkPoint and a.LotNo=b.LotNo
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}' and a.Inspect = '0'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable InspectNewdtt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (InspectNewdtt.Rows.Count == 0 || InspectNewdtt == null)
|
|
{
|
|
throw new Exception("条码在库检验,未检验完成,请确认!");
|
|
}
|
|
|
|
}
|
|
}
|
|
///更新库存
|
|
sql = @"DECLARE @ReservedQuantity VARCHAR(10);
|
|
|
|
SELECT @ReservedQuantity = CAST(b.Quantity AS VARCHAR(10))
|
|
FROM ICSReserve b
|
|
INNER JOIN ICSWareHouseLotInfo a
|
|
ON a.invcode = b.invcode
|
|
AND a.workpoint = b.workpoint
|
|
AND a.warehousecode = b.whcode
|
|
WHERE '{4}' < b.Quantity
|
|
AND b.invcode = '{3}'
|
|
AND GETDATE() > b.BeginTime
|
|
AND GETDATE() < b.EndTime;
|
|
|
|
IF EXISTS(SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSReserve b ON a.invcode=b.invcode
|
|
AND a.workpoint=b.workpoint
|
|
AND a.warehousecode=b.whcode
|
|
WHERE a.invcode='{3}'
|
|
AND a.workpoint='{1}'
|
|
AND SYSDATETIME() > b.BeginTime
|
|
AND SYSDATETIME() < b.EndTime
|
|
AND b.enable='1')
|
|
BEGIN
|
|
IF @ReservedQuantity IS NOT NULL
|
|
BEGIN
|
|
RAISERROR('物料:''{3}'',库存剩余数量:''{4}'',不能小于库存预留数量:'' + @ReservedQuantity + ''!', 16, 1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo
|
|
SET Quantity = ISNULL(Quantity, 0) - '{2}'
|
|
WHERE LotNo = '{0}'
|
|
AND WorkPoint = '{1}';
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
WHERE a.LotNo = '{0}'
|
|
AND a.WorkPoint = '{1}'
|
|
AND Quantity - LockQuantity < 0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, RoundedQuantity, INVCODE, SUMQTY);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
// else { throw new Exception("单据类型未配置!"); }
|
|
|
|
}
|
|
|
|
//if (isDis == false)
|
|
//{
|
|
// throw new Exception("单据类型未配置!");
|
|
//}
|
|
|
|
/////更新库存
|
|
//sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
// IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
// RETURN
|
|
// END";
|
|
//sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
//}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
return lstDt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 减少库存(奥美专用)
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="TransCode"></param>
|
|
/// <param name="TransSequence"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static DataTable AMWareHouseLotInfoDown(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID, string TransID, string MergeID = "")
|
|
{
|
|
decimal LotQTYYY = 0;
|
|
decimal LotQTY = 0;
|
|
string LotEnable = "";
|
|
string chekEnable = "";
|
|
string DisPrintEnable = "";
|
|
string PrintEnable = "";
|
|
string sql = "";
|
|
string lotstr = "";
|
|
int result = 0;
|
|
List<string> NewBarCodeList = new List<string>();
|
|
DataTable dtLotno = new DataTable();
|
|
DataTable lstDt = new DataTable();
|
|
DataTable ZLtable = new DataTable();
|
|
try
|
|
{
|
|
string amount = "";
|
|
|
|
//string sqql = @"select a.Amount FROM ICSInventoryLot a
|
|
// WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
//sqql = string.Format(sqql, LotNo, WorkPoint);
|
|
//DataTable dtaa = DBHelper.SQlReturnData(sqql, cmd);
|
|
//amount = dtaa.Rows[0]["Amount"].ToString();
|
|
|
|
string chekksql = @"select c.EATTRIBUTE1 FROM ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventory c on a.InvCode=c.InvCode and a.WorkPoint=c.WorkPoint
|
|
WHERE b.MOCode='{0}' AND b.Sequence+'~'+a.Sequence='{3}' AND a.WorkPoint='{1}' and c.AmountEnable='1'";
|
|
chekksql = string.Format(chekksql, TransCode, WorkPoint, Quantity, TransSequence);
|
|
DataTable dta = DBHelper.SQlReturnData(chekksql, cmd);
|
|
if (dta.Rows.Count > 0)
|
|
{
|
|
Quantity = (decimal.Parse(Quantity) * decimal.Parse(dta.Rows[0]["EATTRIBUTE1"].ToString())).ToString();
|
|
}
|
|
|
|
|
|
|
|
//检验是否分批
|
|
sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
}
|
|
string cheksql = @"IF NOT EXISTS(select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}' )
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo470") + @"',16,1);
|
|
RETURN
|
|
END
|
|
select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, BusinessCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
chekEnable = chekdt.Rows[0]["Enable"].ToString();
|
|
DisPrintEnable = chekdt.Rows[0]["DisPrintEnable"].ToString();
|
|
}
|
|
sql = @"select Quantity from ICSWareHouseLotInfo
|
|
where LotNO='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dtt = DBHelper.SQlReturnData(sql, cmd);
|
|
LotQTYYY = Convert.ToDecimal(dtt.Rows[0]["Quantity"]);
|
|
LotQTY = Convert.ToDecimal(Quantity);
|
|
|
|
if (!LotEnable.Equals("False") && !chekEnable.Equals("False") && LotQTYYY - LotQTY > 0)
|
|
{
|
|
|
|
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 (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}',LockQuantity=ISNULL(LockQuantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity-LockQuantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-ISNULL(LockQuantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity-LockQuantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}','{7}','{8}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
|
|
WorkPoint,EATTRIBUTE1)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount/a.Quantity*Quantity,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
a.WorkPoint ,'{1}'
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' and a.WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'0',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' AND WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
|
|
if (PrintEnable.Equals("True") && DisPrintEnable.Equals("True"))
|
|
{
|
|
sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
from ICSWareHouseLotInfolog A
|
|
left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
where A.lotno ='{0}' and a.workpoint='{1}' and a.BusinessCode='{2}'
|
|
";
|
|
sql = string.Format(sql, lotstr, WorkPoint, BusinessCode);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{7}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
NewBarCodeList.Add(LotNo);
|
|
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
ZLtable = ICSControlModeService.GetZL();
|
|
if (ZLtable == null)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo471"));
|
|
}
|
|
|
|
for (int i = 0; i < ZLtable.Rows.Count; i++)
|
|
{
|
|
|
|
string zlTransCode = ZLtable.Rows[i]["BusinessCode"].ToString();
|
|
string Enable = ZLtable.Rows[i]["Enable"].ToString();
|
|
if (zlTransCode.Equals(BusinessCode))
|
|
{
|
|
if (Enable.Equals("True"))
|
|
{
|
|
///更新日志
|
|
sql = @"
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and transtype='15')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo472") + @"',16,1);
|
|
RETURN
|
|
END
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2='1' WHERE LotNo='{0}' AND WorkPoint='{1}' and transtype='15'
|
|
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, LogID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"占料标识更新失败!");
|
|
}
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}',LockQuantity=ISNULL(LockQuantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity-LockQuantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity-LockQuantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/////更新库存
|
|
//sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
// IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
// RETURN
|
|
// END";
|
|
//sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
return lstDt;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 无源头调拨
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static DataTable WareHouseLotInfoNoTransfer(string Identification, string WarehouseCode, string LocationCode,
|
|
string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID, string Memo)
|
|
{
|
|
decimal LotQTYYY = 0;
|
|
decimal LotQTY = 0;
|
|
String LotEnable = "";
|
|
String PrintEnable = "";
|
|
String ToWareHouseCode = "";
|
|
String ToLocationCode = "";
|
|
string lotstr = "";
|
|
int result = 0;
|
|
DataTable dtLotno = new DataTable();
|
|
DataTable lstDt = new DataTable();
|
|
List<string> NewBarCodeList = new List<string>();
|
|
string sql = "";
|
|
try
|
|
{
|
|
//检验是否分批
|
|
sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
}
|
|
sql = @"select Quantity from ICSWareHouseLotInfo
|
|
where LotNO='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dtt = DBHelper.SQlReturnData(sql, cmd);
|
|
LotQTYYY = Convert.ToDecimal(dtt.Rows[0]["Quantity"]);
|
|
LotQTY = Convert.ToDecimal(Quantity);
|
|
if (!LotEnable.Equals("False") && LotQTYYY - LotQTY > 0)
|
|
{
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}','','',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,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)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
a.WorkPoint ,'{1}',a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
|
|
a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,a.EATTRIBUTE19,a.EATTRIBUTE20,
|
|
a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' and a.WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
#endregion
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}','{4}','{5}',InvCode,'{2}',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' AND WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint, WarehouseCode, LocationCode);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}','','','{8}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{9}','{10}','{4}',
|
|
'{11}','0','{5}','{6}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, Quantity, TransType, BusinessCode, MergeID, lotstr, WarehouseCode, LocationCode,Memo);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{5}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{7}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, Quantity, TransType, BusinessCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
if (PrintEnable.Equals("True"))
|
|
{
|
|
sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNO, B.Quantity AS LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
|
|
from ICSWareHouseLotInfolog A
|
|
left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
where a.BusinessCode ='105'
|
|
and A.lotno like'{0}%' and a.workpoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{7}' AND LocationCode='{8}' AND WorkPoint='{1}' AND LotNo = '{0}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{7}','{8}',{4},
|
|
'{10}','0','{5}','{6}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID,Memo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET WareHouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
log.Error(sql);
|
|
throw;
|
|
}
|
|
return lstDt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改库存
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="TransCode"></param>
|
|
/// <param name="TransSequence"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoUpdate(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
|
|
string WorkPoint, string TransType,string CheckKind, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
///添加日志
|
|
string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
a.WarehouseCode,a.LocationCode,'','',a.Quantity,
|
|
'{8}','0','{6}','{7}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckBefore.GetDescription<DBValue>(), CheckKind);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity='{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
///添加日志
|
|
sql = @"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(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
a.WarehouseCode,a.LocationCode,'','',a.Quantity,
|
|
'{8}','0','{6}','{7}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSWareHouseLotInfo a
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckAfter.GetDescription<DBValue>(), CheckKind);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 调拨
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static DataTable WareHouseLotInfoTransfer(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
|
|
string LotNo, string Quantity, string User, string WorkPoint,string InWorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID)
|
|
{
|
|
decimal LotQTYYY = 0;
|
|
decimal LotQTY = 0;
|
|
String LotEnable = "";
|
|
String PrintEnable = "";
|
|
String chekEnable = "";
|
|
String DisPrintEnable = "";
|
|
string lotstr = "";
|
|
int result = 0;
|
|
DataTable dtLotno = new DataTable();
|
|
DataTable lstDt = new DataTable();
|
|
List<string> NewBarCodeList = new List<string>();
|
|
string Colspan = "";
|
|
string ProjectCode = "";
|
|
string BatchCode = "";
|
|
string Version = "";
|
|
string Brand = "";
|
|
string cFree1 = "";
|
|
string cFree2 = "";
|
|
string cFree3 = "";
|
|
string cFree4 = "";
|
|
string cFree5 = "";
|
|
string cFree6 = "";
|
|
string cFree7 = "";
|
|
string cFree8 = "";
|
|
string cFree9 = "";
|
|
string cFree10 = "";
|
|
string IDD = "";
|
|
|
|
|
|
try
|
|
{
|
|
//派纳不查站点
|
|
if (DBHelper.IsPNU9())
|
|
{
|
|
|
|
string cheksql = @"IF NOT EXISTS(select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}' )
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo470") + @"',16,1);
|
|
RETURN
|
|
END
|
|
select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, BusinessCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
chekEnable = chekdt.Rows[0]["Enable"].ToString();
|
|
DisPrintEnable = chekdt.Rows[0]["DisPrintEnable"].ToString();
|
|
}
|
|
//检验是否分批
|
|
string sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode --AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
}
|
|
sql = @"select Quantity from ICSWareHouseLotInfo
|
|
where LotNO='{0}' ";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dtt = DBHelper.SQlReturnData(sql, cmd);
|
|
LotQTYYY = Convert.ToDecimal(dtt.Rows[0]["Quantity"]);
|
|
LotQTY = Convert.ToDecimal(Quantity);
|
|
if (LotEnable.Equals("True") && chekEnable.Equals("True") && LotQTYYY - LotQTY > 0)//增加数量判断
|
|
{
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' , WorkPoint='{3}' WHERE LotNo='{0}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND Quantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity,InWorkPoint);
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}','{7}','{8}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,'{1}' ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo --AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
|
|
WorkPoint,EATTRIBUTE1)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
'{3}' ,'{1}'
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' ";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
#endregion
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}','{4}','{5}',InvCode,'{2}',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' ";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint, WarehouseCode, LocationCode);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo --AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' ";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{11}','{12}','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo --AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, WarehouseCode, LocationCode);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{7}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,'{1}' ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo --AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
if (PrintEnable.Equals("True"))
|
|
{
|
|
string PrintData = DBHelper.ReadFileStream();
|
|
//sql = @""+PrintData+"";
|
|
sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
from ICSWareHouseLotInfolog A
|
|
left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
where A.lotno like '%{0}%' and a.Identification='{3}' and a.BusinessCode='{2}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, Identification);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
if (DBHelper.IsPNU9() && TransType == "14")
|
|
{
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' )
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND LotNo = '{0}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,'{1}' ,'','{11}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo --AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, InWorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' )
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND LotNo = '{0}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,'{1}' ,'','{11}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo --AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
|
|
|
|
if (DBHelper.IsPNU9() && TransType == "14")
|
|
{
|
|
///更新库存
|
|
//sql = @"UPDATE ICSWareHouseLotInfo SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
|
|
// IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND Quantity<=0)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
// RETURN
|
|
// END";
|
|
|
|
string upsql = @"select b.ProjectCode,b.BatchCode,b.Version,b.Brand,b.cFree1,b.cFree2,b.cFree3,
|
|
b.cFree4,b.cFree5,b.cFree6,b.cFree7,b.cFree8,b.cFree9,b.cFree10 from ICSInventoryLot a
|
|
INNER JOIN ICSExtension B on B.ID=A.ExtensionID
|
|
where a.lotno='{0}' and a.WorkPoint='{1}'";
|
|
upsql = string.Format(upsql, LotNo, WorkPoint);
|
|
DataTable Sumdtt = DBHelper.SQlReturnData(upsql, cmd);
|
|
ProjectCode = Sumdtt.Rows[0]["ProjectCode"].ToString();
|
|
BatchCode = Sumdtt.Rows[0]["BatchCode"].ToString();
|
|
Version = Sumdtt.Rows[0]["Version"].ToString();
|
|
Brand = Sumdtt.Rows[0]["Brand"].ToString();
|
|
cFree1 = Sumdtt.Rows[0]["cFree1"].ToString();
|
|
cFree2 = Sumdtt.Rows[0]["cFree2"].ToString();
|
|
cFree3 = Sumdtt.Rows[0]["cFree3"].ToString();
|
|
cFree4 = Sumdtt.Rows[0]["cFree4"].ToString();
|
|
cFree5 = Sumdtt.Rows[0]["cFree5"].ToString();
|
|
cFree6 = Sumdtt.Rows[0]["cFree6"].ToString();
|
|
cFree7 = Sumdtt.Rows[0]["cFree7"].ToString();
|
|
cFree8 = Sumdtt.Rows[0]["cFree8"].ToString();
|
|
cFree9 = Sumdtt.Rows[0]["cFree9"].ToString();
|
|
cFree10 = Sumdtt.Rows[0]["cFree10"].ToString();
|
|
|
|
//检验自由项
|
|
Colspan = ProjectCode + "~" + BatchCode + "~" + Version
|
|
+ "~" + Brand + "~" + cFree1
|
|
+ "~" + cFree2 + "~" + cFree3 + "~" + cFree4
|
|
+ "~" + cFree5 + "~" + cFree6 + "~" + cFree7
|
|
+ "~" + cFree8 + "~" + cFree9 + "~" + cFree10;
|
|
string exsql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
exsql = string.Format(exsql, Colspan, InWorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(exsql, 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}',(select top 1 f.F_RealName from Sys_SRM_User f where f.F_Account='{15}'),'{16}'";
|
|
sql = string.Format(sql, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, User, InWorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
string uppsql = @"update ICSInventoryLot SET ExtensionID='{0}' where lotno='{1}'";
|
|
uppsql = string.Format(uppsql, IDD, LotNo);
|
|
if (!DBHelper.ExecuteNonQuery(uppsql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("跨组织条码修改自由项id失败"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string uppsql = @"update ICSInventoryLot SET ExtensionID='{0}' where lotno='{1}'";
|
|
uppsql = string.Format(uppsql, dttt.Rows[0]["ID"].ToString(), LotNo);
|
|
if (!DBHelper.ExecuteNonQuery(uppsql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("跨组织条码修改自由项id失败"));
|
|
}
|
|
}
|
|
|
|
sql = @"IF EXISTS(SELECT id FROM ICSTransferApplication a WHERE a.TransferNO='{5}' AND isnull(EATTRIBUTE29,'')<>isnull(EATTRIBUTE30,''))
|
|
BEGIN
|
|
UPDATE ICSWareHouseLotInfo SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
UPDATE ICSInventoryLot SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
UPDATE ICSInventoryLotDetail SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE ICSInventoryLot SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
UPDATE ICSWareHouseLotInfo SET WareHouseCode='{2}',LocationCode='{3}' , WorkPoint='{4}' WHERE LotNo='{0}'
|
|
END
|
|
|
|
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND Quantity<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
|
|
sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, InWorkPoint,TransCode);
|
|
|
|
|
|
|
|
}
|
|
else if (DBHelper.IsPNU9() && TransType == "6")
|
|
{
|
|
///更新库存
|
|
//sql = @"UPDATE ICSWareHouseLotInfo SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
|
|
// IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND Quantity<=0)
|
|
// BEGIN
|
|
// RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
// RETURN
|
|
// END";
|
|
|
|
string upsql = @"select b.ProjectCode,b.BatchCode,b.Version,b.Brand,b.cFree1,b.cFree2,b.cFree3,
|
|
b.cFree4,b.cFree5,b.cFree6,b.cFree7,b.cFree8,b.cFree9,b.cFree10 from ICSInventoryLot a
|
|
INNER JOIN ICSExtension B on B.ID=A.ExtensionID
|
|
where a.lotno='{0}' and a.WorkPoint='{1}'";
|
|
upsql = string.Format(upsql, LotNo, WorkPoint);
|
|
DataTable Sumdtt = DBHelper.SQlReturnData(upsql, cmd);
|
|
ProjectCode = Sumdtt.Rows[0]["ProjectCode"].ToString();
|
|
BatchCode = Sumdtt.Rows[0]["BatchCode"].ToString();
|
|
Version = Sumdtt.Rows[0]["Version"].ToString();
|
|
Brand = Sumdtt.Rows[0]["Brand"].ToString();
|
|
cFree1 = Sumdtt.Rows[0]["cFree1"].ToString();
|
|
cFree2 = Sumdtt.Rows[0]["cFree2"].ToString();
|
|
cFree3 = Sumdtt.Rows[0]["cFree3"].ToString();
|
|
cFree4 = Sumdtt.Rows[0]["cFree4"].ToString();
|
|
cFree5 = Sumdtt.Rows[0]["cFree5"].ToString();
|
|
cFree6 = Sumdtt.Rows[0]["cFree6"].ToString();
|
|
cFree7 = Sumdtt.Rows[0]["cFree7"].ToString();
|
|
cFree8 = Sumdtt.Rows[0]["cFree8"].ToString();
|
|
cFree9 = Sumdtt.Rows[0]["cFree9"].ToString();
|
|
cFree10 = Sumdtt.Rows[0]["cFree10"].ToString();
|
|
|
|
//检验自由项
|
|
Colspan = ProjectCode + "~" + BatchCode + "~" + Version
|
|
+ "~" + Brand + "~" + cFree1
|
|
+ "~" + cFree2 + "~" + cFree3 + "~" + cFree4
|
|
+ "~" + cFree5 + "~" + cFree6 + "~" + cFree7
|
|
+ "~" + cFree8 + "~" + cFree9 + "~" + cFree10;
|
|
string exsql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
exsql = string.Format(exsql, Colspan, WorkPoint);
|
|
DataTable dttt = DBHelper.SQlReturnData(exsql, 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}',(select top 1 f.F_RealName from Sys_SRM_User f where f.F_Account='{15}'),'{16}'";
|
|
sql = string.Format(sql, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, User, WorkPoint, IDD);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
string uppsql = @"update ICSInventoryLot SET ExtensionID='{0}' where lotno='{1}'";
|
|
uppsql = string.Format(uppsql, IDD, LotNo);
|
|
if (!DBHelper.ExecuteNonQuery(uppsql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("跨组织条码修改自由项id失败"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string uppsql = @"update ICSInventoryLot SET ExtensionID='{0}' where lotno='{1}'";
|
|
uppsql = string.Format(uppsql, dttt.Rows[0]["ID"].ToString(), LotNo);
|
|
if (!DBHelper.ExecuteNonQuery(uppsql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("跨组织条码修改自由项id失败"));
|
|
}
|
|
}
|
|
|
|
sql = @"IF EXISTS(SELECT id FROM ICSTransferApplication a WHERE a.TransferNO='{5}' AND isnull(EATTRIBUTE29,'')<>isnull(EATTRIBUTE30,''))
|
|
BEGIN
|
|
UPDATE ICSWareHouseLotInfo SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
UPDATE ICSInventoryLot SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE ICSInventoryLot SET WorkPoint='{4}' WHERE LotNo='{0}'
|
|
UPDATE ICSWareHouseLotInfo SET WareHouseCode='{2}',LocationCode='{3}' , WorkPoint='{4}' WHERE LotNo='{0}'
|
|
END
|
|
|
|
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND Quantity<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
|
|
sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, WorkPoint, TransCode);
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET WareHouseCode='{2}',LocationCode='{3}' , WorkPoint='{1}' WHERE LotNo='{0}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND Quantity<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
|
|
sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, WorkPoint);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
|
|
DateTime now = DateTime.Now;
|
|
sql = @"select 1 from ICSContainerLot
|
|
where LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
log.Debug("查询容器条码关联表是否存在");
|
|
DataTable dttte = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttte.Rows.Count > 0)
|
|
{
|
|
///删除条码关联表数据
|
|
sql = @"DELETE FROM ICSContainerLot
|
|
where LotNo='{0}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("容器条码关联表数据删除失败"));
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string cheksql = @"IF NOT EXISTS(select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}' )
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo470") + @"',16,1);
|
|
RETURN
|
|
END
|
|
select b.F_ItemCode as Code ,b.F_ItemName as Name,b.F_EnabledMark AS Enable ,b.F_IsDefault AS DisPrintEnable
|
|
from Sys_SRM_Items a
|
|
left join Sys_SRM_ItemsDetail b on a.F_Id=b.F_ItemId
|
|
where a.F_EnCode='TransBatch' and b.F_ItemCode='{0}'
|
|
";
|
|
cheksql = string.Format(cheksql, BusinessCode);
|
|
DataTable chekdt = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (chekdt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
chekEnable = chekdt.Rows[0]["Enable"].ToString();
|
|
DisPrintEnable = chekdt.Rows[0]["DisPrintEnable"].ToString();
|
|
}
|
|
//检验是否分批
|
|
string sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
}
|
|
sql = @"select Quantity from ICSWareHouseLotInfo
|
|
where LotNO='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dtt = DBHelper.SQlReturnData(sql, cmd);
|
|
LotQTYYY = Convert.ToDecimal(dtt.Rows[0]["Quantity"]);
|
|
LotQTY = Convert.ToDecimal(Quantity);
|
|
if (LotEnable.Equals("True") && chekEnable.Equals("True") && LotQTYYY - LotQTY > 0)//增加数量判断
|
|
{
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND Quantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
|
|
///分批前添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}','{7}','{8}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity+{6},
|
|
'','0','{4}','31','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, TransCode, TransSequence);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#region 获取分批后的条码(lotstr)
|
|
sql = @"SELECT TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}'
|
|
ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
lotstr = LotNo + "-" + 1;
|
|
}
|
|
else
|
|
{
|
|
lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
|
|
}
|
|
NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
|
|
#endregion
|
|
|
|
#region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
|
|
sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,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)
|
|
SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
|
|
'{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
|
|
a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
|
|
a.WorkPoint ,'{1}',a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
|
|
a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,a.EATTRIBUTE19,a.EATTRIBUTE20,
|
|
a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
|
|
From ICSInventoryLot a
|
|
where a.LotNo='{1}' and a.WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
|
|
}
|
|
#endregion
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
select NEWID(),'{0}','{4}','{5}',InvCode,'{2}',InDate,LockQuantity
|
|
,MUSER,MUSERName,GETDATE(),'{3}',''
|
|
from ICSWareHouseLotInfo
|
|
where LotNO='{1}' AND WorkPoint='{3}'";
|
|
sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint, WarehouseCode, LocationCode);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
sql = @"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,LogID)
|
|
SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{11}','{12}','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr, WarehouseCode, LocationCode);
|
|
cmd.CommandText = sql;
|
|
result = cmd.ExecuteNonQuery();
|
|
if (result <= 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
|
|
}
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'','',c.Quantity,
|
|
'','0','{7}','32','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{9}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
if (PrintEnable.Equals("True"))
|
|
{
|
|
string PrintData = DBHelper.ReadFileStream();
|
|
//sql = @""+PrintData+"";
|
|
sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
from ICSWareHouseLotInfolog A
|
|
left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
where A.lotno like '%{0}%' and a.Identification='{3}' and a.workpoint='{1}' and a.BusinessCode='{2}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, Identification);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND WorkPoint='{1}' AND LotNo = '{0}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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,MergeID)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,'','{11}'
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
///更新库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET WareHouseCode='{2}',LocationCode='{3}',WorkPoint='{1}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<=0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
}
|
|
|
|
DateTime now = DateTime.Now;
|
|
sql = @"select 1 from ICSContainerLot
|
|
where LotNo='{0}' and WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
log.Debug("查询容器条码关联表是否存在");
|
|
DataTable dttte = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttte.Rows.Count > 0)
|
|
{
|
|
///删除条码关联表数据
|
|
sql = @"DELETE FROM ICSContainerLot
|
|
where LotNo='{0}' and WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("容器条码关联表数据删除失败"));
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
return lstDt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 移库
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoLibrary(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
|
|
string LotNo, string User, string WorkPoint, string TransType, string BusinessCode,String ScanType, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
|
|
string sql = @"SELECT WarehouseCode FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo,WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt == null || dt.Rows.Count <= 0)
|
|
{
|
|
throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo171"), LotNo));
|
|
}
|
|
string whcode = dt.Rows[0]["WarehouseCode"].ToString();
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF('" + whcode + @"' != '{8}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo394"), "{8}", whcode) + @"', 16, 1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
c.WarehouseCode,c.LocationCode,'{8}','{9}',c.Quantity,
|
|
'','0','{6}','{7}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, BusinessCode, WarehouseCode, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
///添加库存
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.WarehouseCode='{2}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
|
|
}
|
|
|
|
DateTime now = DateTime.Now;
|
|
if (ScanType== "LOTNO")
|
|
{
|
|
sql = @"select 1 from ICSContainerLot
|
|
where LotNo='{0}' and WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
log.Debug("查询容器条码关联表是否存在");
|
|
DataTable dttte = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dttte.Rows.Count > 0)
|
|
{
|
|
///删除条码关联表数据
|
|
sql = @"DELETE FROM ICSContainerLot
|
|
where LotNo='{0}' and WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("容器条码关联表数据删除失败"));
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 两步调入
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoTwoStepTransferDocIn(string Identification, string TransCode, string TransSequence, string WarehouseCode,
|
|
string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
///添加日志
|
|
string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
|
|
ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
'{9}','{10}','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
///添加库存
|
|
sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}',Quantity=Quantity+'{4}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 锐腾两步调入
|
|
/// </summary>
|
|
/// <param name="LocationCode"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void RTWareHouseLotInfoTwoStepTransferDocIn(string Identification, string TransCode, string TransSequence, string WarehouseCode,
|
|
string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
///添加日志
|
|
string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
|
|
ToWarehouseCode,ToLocationCode,Quantity,
|
|
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
|
|
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
|
|
MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
|
|
'{9}','{10}','{6}',
|
|
'','0','{7}','{8}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
///添加库存
|
|
sql = @"IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('条码已入库!',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
--INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 合并日志
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static DataTable WareHouseLotInfoLogMerge(string Identification, string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, string newLotno, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
String LotEnable = "";
|
|
String PrintEnable = "";
|
|
DataTable dtLotno = new DataTable();
|
|
DataTable lstDt = new DataTable();
|
|
try
|
|
{
|
|
|
|
|
|
//检验是否分批
|
|
string sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
}
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,c.Quantity,
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
if (PrintEnable.Equals("True"))
|
|
{
|
|
sql = @"select A.LotNO , B.Quantity AS OLDLotQty, C.Quantity AS LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
|
|
from ICSWareHouseLotInfolog A
|
|
left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
where a.BusinessCode='34'
|
|
and A.lotno = '{0}' and a.workpoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, BusinessCode, newLotno);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
return lstDt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 拆分、合并日志
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static DataTable WareHouseLotInfoLog(string Identification, string LotNo, string User, string WorkPoint, string TransType, string BusinessCode,string newLotno, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
String LotEnable = "";
|
|
String PrintEnable = "";
|
|
DataTable dtLotno = new DataTable();
|
|
DataTable lstDt = new DataTable();
|
|
try{
|
|
|
|
|
|
//检验是否分批
|
|
string sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
|
|
LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
where a.LotNo='{0}' and a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint);
|
|
DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
|
|
}
|
|
else
|
|
{
|
|
LotEnable = dt.Rows[0]["LotEnable"].ToString();
|
|
PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
|
|
}
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,c.Quantity,
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
|
|
//if (PrintEnable.Equals("True"))
|
|
//{
|
|
// sql = @"select A.LotNO , C.Quantity AS OLDLotQty, B.Quantity AS LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode,c.LocationCode,f.BatchCode,b.EATTRIBUTE4
|
|
// from ICSWareHouseLotInfolog A
|
|
// left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
// left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
// left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
// left JOIN ICSExtension f on b.ExtensionID=f.id and b.WorkPoint=f.WorkPoint
|
|
// where a.BusinessCode='32'
|
|
// and A.lotno = '{3}' and a.workpoint='{1}'
|
|
// ";
|
|
// sql = string.Format(sql, LotNo, WorkPoint, BusinessCode,newLotno);
|
|
// dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
// lstDt = dtLotno;
|
|
//}
|
|
|
|
if (PrintEnable.Equals("True") )
|
|
{
|
|
string PrintData = DBHelper.ReadPrintStream();
|
|
sql = @"" + PrintData + "";
|
|
//sql = @"select A.LotNO AS OLDLotNo , C.Quantity AS OLDLotQty, A.eattribute1 as LotNo, B.Quantity AS LotQty ,b.InvCode,d.InvStd,d.InvName,b.MTime,A.TransCode
|
|
// from ICSWareHouseLotInfolog A
|
|
// left join ICSInventoryLot B on A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint
|
|
// left join ICSWareHouseLotInfo C ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint
|
|
// left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint
|
|
// where A.lotno ='{0}' and a.workpoint='{1}' and a.BusinessCode='{2}'
|
|
// ";
|
|
sql = string.Format(sql, newLotno, WorkPoint, BusinessCode, Identification);
|
|
log.Debug("拆分数据源:"+ sql);
|
|
dtLotno = DBHelper.SQlReturnData(sql, cmd);
|
|
lstDt = dtLotno;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
return lstDt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 合并
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoMerge(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
|
|
string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
///更新目标条码库存
|
|
string sql = @"IF NOT EXISTS(SELECT a.LotNo FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLot b ON b.LotNo='{3}' AND a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo170") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
|
|
RETURN
|
|
END
|
|
IF EXISTS(
|
|
SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSInventory d on c.invcode=d.invcode and c.WorkPoint=d.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.BatchEnable='1'
|
|
)
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSWareHouseLotInfo b ON b.LotNo='{3}' AND a.WarehouseCode=b.WarehouseCode AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSInventoryLot d on b.LotNo=d.LotNo and b.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSExtension e on c.ExtensionID=e.ID and c.WorkPoint=e.WorkPoint
|
|
INNER JOIN ICSExtension f on d.ExtensionID=f.id and d.WorkPoint=f.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and e.ID=f.ID)
|
|
BEGIN
|
|
RAISERROR('不同仓库/批次条码,不能合并',16,1);
|
|
RETURN
|
|
END
|
|
END
|
|
IF NOT EXISTS(
|
|
SELECT * FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSInventoryLot c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSInventory d on c.invcode=d.invcode and c.WorkPoint=d.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.BatchEnable='1'
|
|
)
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a
|
|
INNER JOIN ICSWareHouseLotInfo b ON b.LotNo='{3}' AND a.WarehouseCode=b.WarehouseCode AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventoryLot c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSInventoryLot d on b.LotNo=d.LotNo and b.WorkPoint=d.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('不同仓库/批次条码,不能合并',16,1);
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
UPDATE ICSInventoryLot SET Amount=(ISNULL(Amount,0)+(select Amount from
|
|
ICSInventoryLot where LotNo='{3}' AND WorkPoint='{1}')) WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity, CurrentLotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo169"));//"目标条码库存更新失败!");
|
|
}
|
|
|
|
///更新原条码库存
|
|
sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
UPDATE ICSInventoryLot SET Amount=(ISNULL(Amount,0)-(select Amount from
|
|
ICSInventoryLot where LotNo='{0}' AND WorkPoint='{1}')) WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, CurrentLotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
///添加日志
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
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(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,c.Quantity,
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 拆分
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoSplit(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
|
|
string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
///更新库存
|
|
string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
#region 添加库存
|
|
//插入条码表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a WHERE a.LotNo='{4}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo172") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,Type,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)
|
|
SELECT NEWID(),'{4}' ,a.InvCode,a.ProductDate,a.ExpirationDate ,'{3}',a.Amount/a.Quantity*{3},a.ExtensionID,'101',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,a.LotNo,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
|
|
a.EATTRIBUTE9,a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,a.EATTRIBUTE19,a.EATTRIBUTE20,
|
|
a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, CurrentLotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!");
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, CurrentLotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
///添加库存
|
|
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
|
|
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,freeze)
|
|
SELECT NEWID(),a.LotNo ,d.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',d.INdate,'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,'',d.freeze
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
|
|
}
|
|
///添加日志
|
|
sql = @"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(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,c.Quantity,
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#endregion
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 拆分(奥美)
|
|
/// </summary>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void AMWareHouseLotInfoSplit(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
|
|
string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
|
|
{
|
|
try
|
|
{
|
|
string amount = "";
|
|
|
|
//string sqql = @"select a.Amount FROM ICSInventoryLot a
|
|
// WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
//sqql = string.Format(sqql, LotNo, WorkPoint);
|
|
//DataTable dtaa = DBHelper.SQlReturnData(sqql, cmd);
|
|
//amount = dtaa.Rows[0]["Amount"].ToString();
|
|
|
|
string cheksql = @"select d.EATTRIBUTE1 FROM ICSInventoryLot a
|
|
INNER JOIN ICSWareHouseLotInfo b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' and d.AmountEnable='1'";
|
|
cheksql = string.Format(cheksql, LotNo, WorkPoint);
|
|
DataTable dta = DBHelper.SQlReturnData(cheksql, cmd);
|
|
if (dta.Rows.Count > 0)
|
|
{
|
|
Quantity = (decimal.Parse(Quantity) * decimal.Parse(dta.Rows[0]["EATTRIBUTE1"].ToString())).ToString();
|
|
}
|
|
///更新库存
|
|
string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
|
|
RETURN
|
|
END";
|
|
sql = string.Format(sql, LotNo, WorkPoint, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
|
|
}
|
|
#region 添加库存
|
|
//插入条码表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a WHERE a.LotNo='{4}' AND a.WorkPoint='{1}')
|
|
BEGIN
|
|
RAISERROR('" + language.GetNameByCode("WMSAPIInfo172") + @"',16,1);
|
|
RETURN
|
|
END
|
|
INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),'{4}' ,a.InvCode,a.ProductDate,a.ExpirationDate ,'{3}',a.Amount/a.Quantity*{3},a.ExtensionID,'101',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,a.LotNo
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, CurrentLotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!");
|
|
}
|
|
//插入条码单据表
|
|
sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
|
|
SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, CurrentLotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
|
|
}
|
|
///添加库存
|
|
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
|
|
|
|
INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,d.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Quantity);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
|
|
}
|
|
///添加日志
|
|
sql = @"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(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
|
|
'','',c.WarehouseCode,c.LocationCode,c.Quantity,
|
|
'','0','{4}','{5}','0','',
|
|
'','','',f.F_Account ,f.F_RealName ,
|
|
SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
|
|
";
|
|
sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
|
|
}
|
|
#endregion
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 回写ERP ID
|
|
/// </summary>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="SourceDetailID"></param>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="ID"></param>
|
|
/// <param name="DetailID"></param>
|
|
/// <param name="Code"></param>
|
|
/// <param name="Sequence"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoLogUpdate(string TransType, string SourceDetailID, string Identification, string ID, string DetailID, string Code, string Sequence, string col, SqlCommand cmd, Dictionary<string, string> language, string BusinessCode)
|
|
{
|
|
string ERPupdate = string.Empty;
|
|
string NewERPupdate = string.Empty;
|
|
try
|
|
{
|
|
//采购入库
|
|
if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.PODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.towarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP";
|
|
}
|
|
//审核的到货单
|
|
else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.towarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//采购拒收
|
|
else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
|
|
";
|
|
}
|
|
//审核的委外到货单
|
|
else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
|
|
";
|
|
}
|
|
//委外拒收
|
|
else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
";
|
|
}
|
|
//采购退货
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSDeliveryNotice c ON a.TransCode=c.DNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}' --AND c.DNType='2'
|
|
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//委外发料
|
|
else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSOutsourcingOrder y ON a.TransCode=y.OOCode AND a.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//委外退料
|
|
else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
|
|
{
|
|
ERPupdate = @"--根据退料单退料
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSOApplyNeg d ON c.OApplyNegCode=d.OApplyNegCode AND c.WorkPoint=d.WorkPoint
|
|
Left JOIN ICSOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
WHERE ISNULL(m.ApplyDetailID,ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
--根据原条码退料-备料表
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOutsourcingOrder y ON b.TransCode=y.OOCode AND b.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
|
|
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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
--根据原条码退料-申请单
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
--根据原条码退料-材料出库单
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
|
|
LEFT JOIN ICSOOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
|
|
LEFT JOIN ICSOutsourcingOrder y ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint
|
|
LEFT JOIN ICSOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
";
|
|
}
|
|
//委外入库
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog 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 a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
WHERE c.OODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
--ISNULL(a.ToWarehouseCode, '') +
|
|
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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP";
|
|
}
|
|
//委外退货
|
|
else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSODeliveryNotice c ON a.TransCode=c.ODNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'--AND c.ODNType='2'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//生产发料
|
|
else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
|
|
{
|
|
//ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
// FROM ICSWareHouseLotInfoLog a
|
|
// INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
|
|
// INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
// LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
// WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
// and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
// ";
|
|
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE x.PickID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP";
|
|
}
|
|
//生产退料
|
|
else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
|
|
|| TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
|
|
{
|
|
ERPupdate = @"--根据退料单退料
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
|
|
left JOIN ICSMOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
|
|
WHERE ISNULL(m.ApplyDetailID, ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
--根据原条码退料-备料表
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
|
|
INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
|
|
WHERE x.PickID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
--根据原条码退料-申请单
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOApply z ON b.TransCode=z.ApplyCode AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
|
|
WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
--根据原条码退料-材料出库单
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
|
|
LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
|
|
LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
|
|
LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
|
|
WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
";
|
|
}
|
|
//生产入库
|
|
else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
|
|
{
|
|
//ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
// FROM ICSWareHouseLotInfoLog 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 a.WorkPoint=c.WorkPoint
|
|
// INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
// LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
// WHERE c.MODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
// and (ISNULL(a.fromwarehousecode, '')
|
|
// + CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END
|
|
// + CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END
|
|
// + CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END)='{6}'
|
|
//";
|
|
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog 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 a.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSExtension docext ON docext.ID=c.ExtensionID AND docext.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.MODetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.ToWarehouseCode, '')
|
|
+ CASE WHEN ISNULL(docext.ProjectCode,'')!='' Then ISNULL(ext.ProjectCode, '') ELSE '' END
|
|
+ CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.Version,'')!='' Then ISNULL(ext.Version, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.Brand,'')!='' THEN ISNULL(ext.Brand, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree1,'')!='' THEN ISNULL(ext.cFree1, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree2,'')!='' THEN ISNULL(ext.cFree2, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree3,'')!='' THEN ISNULL(ext.cFree3, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree4,'')!='' THEN ISNULL(ext.cFree4, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree5,'')!='' THEN ISNULL(ext.cFree5, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree6,'')!='' THEN ISNULL(ext.cFree6, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree7,'')!='' THEN ISNULL(ext.cFree7, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree8,'')!='' THEN ISNULL(ext.cFree8, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree9,'')!='' THEN ISNULL(ext.cFree9, '') ELSE '' END
|
|
+ CASE WHEN ISNULL(docext.cFree10,'')!='' THEN ISNULL(ext.cFree10, '') ELSE '' END)='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//开立的生产入库单
|
|
else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//销售出库
|
|
else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//销售退货
|
|
else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.ToWarehouseCode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP";
|
|
}
|
|
|
|
//返工工单
|
|
else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog 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.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
|
|
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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE d.PickID='{3}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//一步调拨
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//调拨
|
|
else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
|
|
//无源头调拨
|
|
else if (TransType == TransTypeEnum.StepNoTransferDocIn.GetDescription())
|
|
{
|
|
ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM 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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode='70'
|
|
and (ISNULL(a.FromWareHouseCode, '')+ 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, ''))='{6}'
|
|
";
|
|
}
|
|
//两步调出
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSTransfer d ON c.TransferDetailID=d.TransferDetailID AND c.WorkPoint=d.WorkPoint
|
|
WHERE c.OutID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//两步调入
|
|
else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSOtherIn b ON a.TransCode=b.InCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSTransfer c ON b.TransferDetailID=c.TransferDetailID AND b.WorkPoint=c.WorkPoint
|
|
WHERE b.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//销售退货-原条码
|
|
else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.ToWarehouseCode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP";
|
|
}
|
|
//其他出库
|
|
else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.OutID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//其他入库
|
|
else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSOtherIn c ON b.TransCode=c.InCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
WHERE c.InID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//采购入库-入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceiveRevDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog 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
|
|
WHERE c.RcvID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//委外入库-入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveRevDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog 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
|
|
WHERE c.RcvID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//拆卸单
|
|
else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"UPDATE d set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSWareHouseLotInfoLog d ON b.TransCode=d.TransCode AND d.TransSequence='1' AND b.WorkPoint=d.WorkPoint
|
|
WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND d.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
|
|
UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.DABDOCType='2' AND a.BusinessCode ='{7}'
|
|
";
|
|
}
|
|
//领料申请单
|
|
else if (TransType == TransTypeEnum.MOApply.GetDescription())
|
|
{
|
|
//ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
// FROM ICSWareHouseLotInfoLog a
|
|
// INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
// LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
// WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
// and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
// ";
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
|
|
//补料申请单
|
|
else if (TransType == TransTypeEnum.MOReplenishment.GetDescription())
|
|
{
|
|
//ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
// FROM ICSWareHouseLotInfoLog a
|
|
// INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
// LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
// WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
// and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
// ";
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMOReplenishment c ON a.TransCode=c.ReplenishmentCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.ReplenishmentDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//委外领料申请单
|
|
else if (TransType == TransTypeEnum.OOApply.GetDescription())
|
|
{
|
|
//ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
// FROM ICSWareHouseLotInfoLog a
|
|
// INNER JOIN ICSOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
// LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
// WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
// and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
// ";
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
|
|
WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//开立材料出库
|
|
else if (TransType == TransTypeEnum.MOIssue.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//开立委外材料出库
|
|
else if (TransType == TransTypeEnum.OOIssue.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.IssueID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//开立红字入库单
|
|
else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSPurchaseReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//开立委外红字入库单
|
|
else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSOutsourcingReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.RCVID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='2' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
//借用
|
|
else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSBrrow c ON a.TransCode=c.BrrowCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.FromWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.BrrowDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.fromwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP";
|
|
}
|
|
//归还
|
|
else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN ICSReturn c ON b.TransCode=c.ReturnCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.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 ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
|
|
LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
|
|
WHERE c.ReturnDetailID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
and (ISNULL(a.tohwarehousecode, '') + 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, ''))='{6}'
|
|
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP";
|
|
}
|
|
//销售出库-出库单
|
|
else if (TransType == TransTypeEnum.SalesShipmentOutDoc.GetDescription())
|
|
{
|
|
ERPupdate = @"SELECT a.id
|
|
INTO #NewTempERP
|
|
FROM ICSWareHouseLotInfoLog a
|
|
INNER JOIN ICSSSD c ON a.TransCode=c.SSDCOde AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
|
|
WHERE c.SSDID='{0}' AND a.Identification='{1}' AND a.ERPUpload='0' AND a.BusinessCode ='{7}'
|
|
UPDATE ICSWareHouseLotInfoLog set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
|
|
where ID in (select id from #NewTempERP)
|
|
|
|
DROP TABLE #NewTempERP
|
|
";
|
|
}
|
|
|
|
ERPupdate = string.Format(ERPupdate, SourceDetailID, Identification, ID, DetailID, Code, Sequence, col, BusinessCode);
|
|
if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
|
|
{
|
|
throw new Exception(TransType + language.GetNameByCode("WMSAPIInfo175"));//"回写日志失败!");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Debug(ex.ToString());
|
|
log.Debug(TransType + Environment.NewLine + ERPupdate);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 倒冲时子件已领数量回写
|
|
/// </summary>
|
|
public static void DetailQTYUpdate()
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成条码
|
|
/// </summary>
|
|
/// <param name="LotNo"></param>
|
|
/// <param name="Quantity"></param>
|
|
/// <param name="TransCode"></param>
|
|
/// <param name="TransSequence"></param>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <param name="Identification"></param>
|
|
/// <param name="User"></param>
|
|
/// <param name="InvCode"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="ProjectCode"></param>
|
|
/// <param name="BatchCode"></param>
|
|
/// <param name="Version"></param>
|
|
/// <param name="Brand"></param>
|
|
/// <param name="cFree1"></param>
|
|
/// <param name="cFree2"></param>
|
|
/// <param name="cFree3"></param>
|
|
/// <param name="cFree4"></param>
|
|
/// <param name="cFree5"></param>
|
|
/// <param name="cFree6"></param>
|
|
/// <param name="cFree7"></param>
|
|
/// <param name="cFree8"></param>
|
|
/// <param name="cFree9"></param>
|
|
/// <param name="cFree10"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="language"></param>
|
|
public static void CreateLotNo(string LotNo, string Quantity, string TransCode, string TransSequence, string WorkPoint, string Identification, string User, string InvCode, string BusinessCode,
|
|
string ProjectCode, string BatchCode, string Version, string Brand, string cFree1, string cFree2, string cFree3, string cFree4, string cFree5,string cFree6, string cFree7, string cFree8, string cFree9, string cFree10, SqlCommand cmd, Dictionary<string, string> language,string LocationCode,string OLDLotNo)
|
|
{
|
|
try
|
|
{
|
|
String EffectiveEnable = "";
|
|
String Colspan = "";
|
|
String IDD = "";
|
|
int EffectiveDays = 0;
|
|
String Time = "";
|
|
int EffectiveDayss = 0;
|
|
DateTime dtt;
|
|
DateTime now = DateTime.Now;
|
|
string sql = string.Empty;
|
|
//string sql = @"select EffectiveEnable,EffectiveDays from ICSInventory a
|
|
// Left Join ICSMO b ON a.InvCode=b.InvCode and a.WorkPoint = b.WorkPoint
|
|
// where b.MoCode='{0}' and b.WorkPoint='{1}'";
|
|
//sql = string.Format(sql, TransCode, WorkPoint);
|
|
//DataTable dt = DBHelper.SQlReturnData(sql, cmd);
|
|
//if (dt.Rows.Count == 0)
|
|
//{
|
|
// throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
//}
|
|
//else
|
|
//{
|
|
// EffectiveEnable = dt.Rows[0]["EffectiveEnable"].ToString();
|
|
//EffectiveDays = Convert.ToInt32(dt.Rows[0]["EffectiveDays"]);
|
|
//}
|
|
//EffectiveDayss = Convert.ToInt32(EffectiveDays);
|
|
//if (!EffectiveEnable.Equals("False"))
|
|
//{
|
|
int year = now.Year;
|
|
int month = now.Month;
|
|
int day = now.Day;
|
|
int n = DateTime.DaysInMonth(year, month);
|
|
int k = day + EffectiveDays;
|
|
if (k > n)
|
|
{
|
|
day = EffectiveDays - (n - day);
|
|
month = month + 1;
|
|
if (month > 12)
|
|
{
|
|
month = 1;
|
|
year = year + 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
day = day + EffectiveDays;
|
|
}
|
|
Time = year + "-" + month + "-" + day;
|
|
//}
|
|
//else
|
|
//{
|
|
// Time = "2999-12-31 00:00:00.000";
|
|
//}
|
|
dtt = Convert.ToDateTime(Time);
|
|
|
|
//检验自由项
|
|
Colspan = ProjectCode + "~" + BatchCode + "~" + Version
|
|
+ "~" + Brand + "~" + cFree1
|
|
+ "~" + cFree2 + "~" + cFree3 + "~" + cFree4
|
|
+ "~" + cFree5 + "~" + cFree6 + "~" + cFree7
|
|
+ "~" + cFree8 + "~" + cFree9 + "~" + cFree10;
|
|
sql = @"select ID,Colspan from ICSExtension a
|
|
where Colspan='{0}' and WorkPoint='{1}'";
|
|
sql = string.Format(sql, Colspan, 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, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, User, 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='{2}' AND F_Location='{4}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
|
|
Quantity,Amount,ExtensionID,Type,PrintTimes,
|
|
LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
|
|
WorkPoint,EATTRIBUTE1)
|
|
SELECT TOP 1 NEWID(),'{0}','{8}',GETDATE(),'{6}',
|
|
'{1}','0','{7}','16',null,
|
|
null,null,'{2}' ,f.F_RealName ,GETDATE(),
|
|
'{4}' ,''
|
|
FROM Sys_SRM_User f
|
|
where f.F_Account='{2}' and f.F_Location='{4}'
|
|
";
|
|
sql = string.Format(sql, LotNo, Quantity, User, TransCode, WorkPoint, TransSequence, dtt, IDD,InvCode);
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo366"));
|
|
}
|
|
|
|
///存入条码关联表
|
|
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{3}')
|
|
BEGIN
|
|
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
|
|
RETURN
|
|
END
|
|
|
|
INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,
|
|
WorkPoint,EATTRIBUTE1)
|
|
SELECT '{4}','{0}','{1}',f.F_Account ,f.F_RealName,GETDATE(),
|
|
a.WorkPoint,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{5}' AND a.WorkPoint='{3}'
|
|
";
|
|
sql = string.Format(sql, TransCode, TransSequence, User, WorkPoint, LotNo, OLDLotNo);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo367"));
|
|
}
|
|
|
|
//存入库存表
|
|
sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
|
|
SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'0',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
|
|
FROM ICSInventoryLot a
|
|
INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
|
|
--INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
|
|
INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
|
|
INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
|
|
INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
|
|
WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
|
|
|
|
sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 东辉日志表记录交接人EATTRIBUTE3
|
|
/// </summary>
|
|
/// <param name="TransType"></param>
|
|
/// <param name="BusinessCode"></param>
|
|
/// <param name="Heir"></param>
|
|
/// <param name="cmd"></param>
|
|
public static void WareHouseLotInfoLogUpdateHeir(string Identification, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language,string Heir)
|
|
{
|
|
try
|
|
{
|
|
|
|
///更新日志表
|
|
string sql = @"
|
|
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE3='{2}' WHERE Identification='{0}' and BusinessCode ='{1}'
|
|
";
|
|
sql = string.Format(sql, Identification, BusinessCode, Heir);
|
|
|
|
if (!DBHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception(language.GetNameByCode("WMSAPIInfo166"));//"库存表更新失败!");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
//public void AutoWarehousingCreate()
|
|
//{
|
|
|
|
//}
|
|
|
|
}
|
|
}
|