@ -682,6 +682,10 @@ namespace ICSSoft.DataProject
string locationcode = "" ;
string newlocationcode = "" ;
string amount = "" ;
string warehousecode = "" ;
string nlocationcode = "" ;
string logwarehousecode = "" ;
string lognlocationcode = "" ;
decimal LotQTYYY = 0 ;
decimal LotQTY = 0 ;
string LotEnable = "" ;
@ -737,67 +741,222 @@ namespace ICSSoft.DataProject
}
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 )
// 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=(select a.FromLocationCode FROM ICSWareHouseLotInfoLog a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND a.id='{5}'
//AND a.FromLocationCode='" + locationcode + @"'))
// BEGIN
// UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}'
// WHERE LotNo='{0}' AND WorkPoint='{1}'
// END
// ELSE
// 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, LogID);
//入库分批
sql = @ "select a.Quantity,a.WarehouseCode,a.LocationCode,b.FromWarehouseCode,b.FromLocationCode from ICSWareHouseLotInfo a
INNER JOIN ICSWareHouseLotInfoLog b on a . lotno = b . lotno and a . workpoint = b . workpoint
where a . LotNO = ' { 0 } ' AND a . WorkPoint = ' { 1 } ' and BusinessCode = ' 1 3 ' ";
sql = string . Format ( sql , LotNo , WorkPoint ) ;
DataTable dtt = DBHelper . SQlReturnData ( sql , cmd ) ;
if ( dtt . Rows . Count < 0 | | dtt = = null )
{
throw new Exception ( string . Format ( language . GetNameByCode ( "WMSAPIInfo171" ) , LotNo ) ) ;
throw new Exception ( "请使用发料条码进行退料" ) ; //条码分批后条码表存入失败!
}
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}')
LotQTYYY = Convert . ToDecimal ( dtt . Rows [ 0 ] [ "Quantity" ] ) ;
warehousecode = dtt . Rows [ 0 ] [ "WarehouseCode" ] . ToString ( ) ;
nlocationcode = dtt . Rows [ 0 ] [ "LocationCode" ] . ToString ( ) ;
logwarehousecode = dtt . Rows [ 0 ] [ "FromWarehouseCode" ] . ToString ( ) ;
lognlocationcode = dtt . Rows [ 0 ] [ "FromLocationCode" ] . ToString ( ) ;
log . Debug ( "数量:" + LotQTYYY ) ;
if ( warehousecode = = logwarehousecode & & nlocationcode = = lognlocationcode )
{
LotFlag = "0" ;
}
else
{
LotFlag = "1" ;
}
if ( LotFlag = = "1" )
{
#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 ) ;
dttt = DBHelper . SQlReturnData ( sql , cmd ) ;
if ( dttt . Rows . Count = = 0 )
{
lotstr = LotNo + "-" + 1 ;
}
else
{
lotstr = LotNo + "-" + ( Convert . ToInt32 ( dttt . Rows [ 0 ] [ "LotNO" ] . ToString ( ) . Split ( '-' ) [ dttt . 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 * { 2 } , 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 } ',' { 5 } ',' { 4 } ' , InvCode , ' { 2 } ' , InDate , LockQuantity
, MUSER , MUSERName , GETDATE ( ) , ' { 3 } ',' '
from ICSWareHouseLotInfo
where LotNO = ' { 1 } ' AND WorkPoint = ' { 3 } ' ";
sql = string . Format ( sql , lotstr , LotNo , Quantity , WorkPoint , lognlocationcode , logwarehousecode ) ;
log . Debug ( "添加库存sql:" + sql ) ;
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 } ',' { 4 } ',' { 5 } ' , 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 , TransCode , TransSequence ) ;
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 } ',' { 1 0 } ' , a . InvCode ,
' ',' ',' { 1 2 } ',' { 1 1 } ',' { 6 } ' ,
' ',' 0 ',' { 7 } ',' { 8 } ',' 0 ',' ' ,
' ',' ',' ' , f . F_Account , f . F_RealName ,
SYSDATETIME ( ) , a . WorkPoint , ' ',' { 9 } '
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 , TransCode , TransSequence , Quantity , TransType , BusinessCode , LogID , lotstr , lognlocationcode , logwarehousecode ) ;
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
//{
// throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//"条码单据表写入失败!");
//}
#endregion
}
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 } ") + @" ' , 1 6 , 1 ) ;
RETURN
END
UPDATE ICSWareHouseLotInfo SET Quantity = ISNULL ( Quantity , 0 ) + ' { 3 } '
WHERE LotNo = ' { 0 } ' AND WorkPoint = ' { 1 } '
";
sql = string . Format ( sql , LotNo , WorkPoint , User , Quantity , LocationCode ) ;
if ( ! DBHelper . ExecuteNonQuery ( sql , cmd ) )
{
throw new Exception ( language . GetNameByCode ( "WMSAPIInfo165" ) ) ;
}
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 = ( select a . FromLocationCode FROM ICSWareHouseLotInfoLog a WHERE a . LotNo = ' { 0 } ' AND a . WorkPoint = ' { 1 } ' AND a . id = ' { 5 } '
AND a . FromLocationCode = ' " + locationcode + @" ' ) )
BEGIN
UPDATE ICSWareHouseLotInfo SET Quantity = ISNULL ( Quantity , 0 ) + ' { 3 } '
WHERE LotNo = ' { 0 } ' AND WorkPoint = ' { 1 } '
END
ELSE
BEGIN
RAISERROR ( ' " + string.Format(language.GetNameByCode(" WMSAPIInfo395 "), " { 4 } ", locationcode) + @" ' , 1 6 , 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 ") + @" ' , 1 6 , 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 , 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 } ',' { 1 0 } ',' { 1 1 } ' , 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 , LocationCode , WarehouseCode , TransCode , TransSequence ) ;
}
}
else if ( BusinessCode = = TransTypeEnum . MOStockINByProductNoTrans . GetDescription < DBValue > ( ) )
{
@ -854,7 +1013,231 @@ namespace ICSSoft.DataProject
END ";
sql = string . Format ( sql , LotNo , WorkPoint , User , Quantity , LocationCode ) ;
}
else if ( BusinessCode = = TransTypeEnum . ICSOutsourcingIssueDoNegative . GetDescription < DBValue > ( ) )
else if ( BusinessCode = = TransTypeEnum . ICSOutsourcingIssueDoNegative . GetDescription < DBValue > ( ) )
{
//入库分批
sql = @ "select Quantity from ICSWareHouseLotInfo
where LotNO = ' { 0 } ' AND WorkPoint = ' { 1 } ' ";
sql = string . Format ( sql , LotNo , WorkPoint ) ;
DataTable dtt = DBHelper . SQlReturnData ( sql , cmd ) ;
if ( dtt . Rows . Count < 0 | | dtt = = null )
{
throw new Exception ( "请使用发料条码进行退料" ) ; //条码分批后条码表存入失败!
}
LotQTYYY = Convert . ToDecimal ( dtt . Rows [ 0 ] [ "Quantity" ] ) ;
log . Debug ( "数量:" + LotQTYYY ) ;
if ( LotFlag = = "1" )
{
if ( LotQTYYY > 0 )
{
#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 ) ;
dttt = DBHelper . SQlReturnData ( sql , cmd ) ;
if ( dttt . Rows . Count = = 0 )
{
lotstr = LotNo + "-" + 1 ;
}
else
{
lotstr = LotNo + "-" + ( Convert . ToInt32 ( dttt . Rows [ 0 ] [ "LotNO" ] . ToString ( ) . Split ( '-' ) [ dttt . 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 * { 2 } , 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 } ',' { 5 } ',' { 4 } ' , InvCode , ' { 2 } ' , InDate , LockQuantity
, MUSER , MUSERName , GETDATE ( ) , ' { 3 } ',' '
from ICSWareHouseLotInfo
where LotNO = ' { 1 } ' AND WorkPoint = ' { 3 } ' ";
sql = string . Format ( sql , lotstr , LotNo , Quantity , WorkPoint , LocationCode , WarehouseCode ) ;
log . Debug ( "添加库存sql:" + sql ) ;
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 } ',' { 4 } ',' { 5 } ' , 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 , TransCode , TransSequence ) ;
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 } ',' { 1 0 } ' , a . InvCode ,
' ',' ',' { 1 2 } ',' { 1 1 } ',' { 6 } ' ,
' ',' 0 ',' { 7 } ',' { 8 } ',' 0 ',' ' ,
' ',' ',' ' , f . F_Account , f . F_RealName ,
SYSDATETIME ( ) , a . WorkPoint , ' ',' { 9 } '
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 , TransCode , TransSequence , Quantity , TransType , BusinessCode , "" , lotstr , LocationCode , WarehouseCode ) ;
//if (!DBHelper.ExecuteNonQuery(sql, cmd))
//{
// throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//"条码单据表写入失败!");
//}
#endregion
}
else if ( LotQTYYY = = 0 )
{
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 } ") + @" ' , 1 6 , 1 ) ;
RETURN
END
UPDATE ICSWareHouseLotInfo SET Quantity = ISNULL ( Quantity , 0 ) + ' { 3 } ' , LocationCode = ' { 4 } ' , WarehouseCode = ' { 5 } '
WHERE LotNo = ' { 0 } ' AND WorkPoint = ' { 1 } '
";
sql = string . Format ( sql , LotNo , WorkPoint , User , Quantity , LocationCode , WarehouseCode ) ;
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 , LogID )
SELECT NEWID ( ) , ' { 3 } ',' { 1 0 } ',' { 1 1 } ' , a . LotNo , a . InvCode ,
' ',' ',' { 9 } ',' { 8 } ',' { 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 , LocationCode , WarehouseCode , TransCode , TransSequence ) ;
}
}
else
{
if ( LotQTYYY > 0 )
{
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 } ") + @" ' , 1 6 , 1 ) ;
RETURN
END
UPDATE ICSWareHouseLotInfo SET Quantity = ISNULL ( Quantity , 0 ) + ' { 3 } '
WHERE LotNo = ' { 0 } ' AND WorkPoint = ' { 1 } '
";
sql = string . Format ( sql , LotNo , WorkPoint , User , Quantity , LocationCode ) ;
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 , LogID )
SELECT NEWID ( ) , ' { 3 } ',' { 1 0 } ',' { 1 1 } ' , a . LotNo , a . InvCode ,
' ',' ',' { 9 } ',' { 8 } ',' { 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 , LocationCode , WarehouseCode , TransCode , TransSequence ) ;
}
else if ( LotQTYYY = = 0 )
{
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 } ") + @" ' , 1 6 , 1 ) ;
RETURN
END
UPDATE ICSWareHouseLotInfo SET Quantity = ISNULL ( Quantity , 0 ) + ' { 3 } ' , LocationCode = ' { 4 } ' , WarehouseCode = ' { 5 } '
WHERE LotNo = ' { 0 } ' AND WorkPoint = ' { 1 } '
";
sql = string . Format ( sql , LotNo , WorkPoint , User , Quantity , LocationCode , WarehouseCode ) ;
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 , LogID )
SELECT NEWID ( ) , ' { 3 } ',' { 1 0 } ',' { 1 1 } ' , a . LotNo , a . InvCode ,
' ',' ',' { 9 } ',' { 8 } ',' { 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 , LocationCode , WarehouseCode , TransCode , TransSequence ) ;
}
}
}
else if ( BusinessCode = = TransTypeEnum . SalesReturnBack . GetDescription < DBValue > ( ) )
{
//入库分批
@ -862,12 +1245,12 @@ namespace ICSSoft.DataProject
where LotNO = ' { 0 } ' AND WorkPoint = ' { 1 } ' ";
sql = string . Format ( sql , LotNo , WorkPoint ) ;
DataTable dtt = DBHelper . SQlReturnData ( sql , cmd ) ;
if ( dtt . Rows . Count < 0 | | dtt = = null )
if ( dtt . Rows . Count < 0 | | dtt = = null )
{
throw new Exception ( "请使用发料条码进行退料" ) ; //条码分批后条码表存入失败!
}
LotQTYYY = Convert . ToDecimal ( dtt . Rows [ 0 ] [ "Quantity" ] ) ;
log . Debug ( "数量:" + LotQTYYY ) ;
log . Debug ( "数量:" + LotQTYYY ) ;
if ( LotFlag = = "1" )
{
@ -914,7 +1297,7 @@ namespace ICSSoft.DataProject
from ICSWareHouseLotInfo
where LotNO = ' { 1 } ' AND WorkPoint = ' { 3 } ' ";
sql = string . Format ( sql , lotstr , LotNo , Quantity , WorkPoint , LocationCode , WarehouseCode ) ;
log . Debug ( "添加库存sql:" + sql ) ;
log . Debug ( "添加库存sql:" + sql ) ;
cmd . CommandText = sql ;
result = cmd . ExecuteNonQuery ( ) ;
if ( result < = 0 )
@ -928,7 +1311,7 @@ namespace ICSSoft.DataProject
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 , TransCode , TransSequence ) ;
sql = string . Format ( sql , LotNo , WorkPoint , User , lotstr , TransCode , TransSequence ) ;
if ( ! DBHelper . ExecuteNonQuery ( sql , cmd ) )
{
@ -990,9 +1373,9 @@ namespace ICSSoft.DataProject
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 , LocationCode , WarehouseCode , TransCode , TransSequence ) ;
sql = string . Format ( sql , LotNo , WorkPoint , User , Identification , TransType , BusinessCode , Quantity , LogID , LocationCode , WarehouseCode , TransCode , TransSequence ) ;
}
}
@ -1070,10 +1453,10 @@ namespace ICSSoft.DataProject
";
sql = string . Format ( sql , LotNo , WorkPoint , User , Identification , TransType , BusinessCode , Quantity , LogID , LocationCode , WarehouseCode , TransCode , TransSequence ) ;
}
}
@ -1143,36 +1526,37 @@ namespace ICSSoft.DataProject
}
if ( BusinessCode ! = TransTypeEnum . ICSOutsourcingIssueDoNegative . GetDescription < DBValue > ( ) )
if ( BusinessCode ! = TransTypeEnum . ICSOutsourcingIssueDoNegative . GetDescription < DBValue > ( ) & & BusinessCode ! = TransTypeEnum . MOIssueDocNegative . GetDescription < DBValue > ( )
& & BusinessCode ! = TransTypeEnum . SalesReturnBack . GetDescription < DBValue > ( ) )
{
log . Debug ( "1111" ) ;
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 > ( ) )
//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"));
// }
//}
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)
@ -2152,6 +2536,215 @@ namespace ICSSoft.DataProject
}
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 WareHouseLotInfoDownDisPatch ( 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 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
{
//检验是否分批
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 ") + @" ' , 1 6 , 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 ) ;
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 } ") + @" ' , 1 6 , 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 = ' 1 5 ' )
BEGIN
RAISERROR ( ' " + language.GetNameByCode(" WMSAPIInfo472 ") + @" ' , 1 6 , 1 ) ;
RETURN
END
UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE2 = '1' WHERE LotNo = ' { 0 } ' AND WorkPoint = ' { 1 } ' and transtype = ' 1 5 '
";
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 ") + @" ' , 1 6 , 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 ") + @" ' , 1 6 , 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 )
{
xxxxxxxxxx