@ -17353,27 +17353,14 @@ a.ExtensionID
item . TransCode = trans [ 1 ] ;
}
#region 销售出库
else if ( TransType = = TransTypeEnum . SalesShipmentDoc . GetDescription ( )
| | TransType = = TransTypeEnum . MOIssueDoc . GetDescription ( )
| | TransType = = TransTypeEnum . OutsourcingIssueDoc . GetDescription ( ) )
else if ( TransType = = TransTypeEnum . SalesShipmentDoc . GetDescription ( ) )
{
BusinessCode = TransTypeEnum . SalesShipmentDoc . GetDescription < DBValue > ( ) ;
// //更新源头单据数量
// pikTbLogsql = @"update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
// from dbo.ICSWareHouseLotInfo b
// inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog
// where TransCode ='{0}' AND TransSequence='{1}' and TransType='15' and WorkPoint='{2}' group by LotNo) c
// on c.LotNo =b.LotNo
//";
// pikTbLogsql = string.Format(pikTbLogsql, item.TransCode, item.TransSequence, item.WorkPoint);
// if (!DBHelper.ExecuteNonQuery(pikTbLogsql, cmd))
// {
// throw new Exception("更新库存锁定数量失败!");
// }
foreach ( var itemInfo in item . detail )
{
pikTbLogsql + = @ "
pikTbLogsql = @ "
IF EXISTS ( SELECT a . LotNo FROM ICSWareHouseLotInfo a WHERE a . LotNo = ' { 7 } ' AND a . WorkPoint = ' { 6 } ' AND Quantity - LockQuantity - ' { 3 } ' < 0 )
BEGIN
RAISERROR ( ' 条 码 : " + " { 7 } " + @" 库 存 数 量 不 足 ! ' , 1 6 , 1 ) ;
@ -17395,8 +17382,91 @@ a.ExtensionID
WHERE a . LotNo = ' { 7 } ' AND a . WorkPoint = ' { 6 } '
update ICSWareHouseLotInfo set LockQuantity = LockQuantity + ' { 3 } ' where LotNo = ' { 7 } ' AND WorkPoint = ' { 6 } '
END ";
pikTbLogsql = string . Format ( pikTbLogsql , Identification , item . TransCode , item . TransSequence , itemInfo . CurrentQuantity
, BusinessCode , item . User , item . WorkPoint , itemInfo . LotNo ) ;
log . Debug ( "1" ) ;
if ( ! DBHelper . ExecuteNonQuery ( pikTbLogsql , cmd ) )
{
throw new Exception ( "拣料失败!" ) ;
}
}
}
#endregion
#region 材料出库
else if ( TransType = = TransTypeEnum . MOIssueDoc . GetDescription ( )
)
{
BusinessCode = TransTypeEnum . MOIssueDoc . GetDescription < DBValue > ( ) ;
foreach ( var itemInfo in item . detail )
{
pikTbLogsql = @ "
IF EXISTS ( SELECT a . LotNo FROM ICSWareHouseLotInfo a WHERE a . LotNo = ' { 7 } ' AND a . WorkPoint = ' { 6 } ' AND Quantity - LockQuantity - ' { 3 } ' < 0 )
BEGIN
RAISERROR ( ' 条 码 : " + " { 7 } " + @" 库 存 数 量 不 足 ! ' , 1 6 , 1 ) ;
RETURN
END
IF NOT EXISTS ( SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode = ' { 1 } ' AND TransSequence = ' { 2 } ' AND LotNo = ' { 7 } ' AND WorkPoint = ' { 6 } ' AND TransType = ' 1 5 ' )
BEGIN
INSERT INTO ICSWareHouseLotInfoLog ( ID , Identification , TransCode , TransSequence , LotNo , InvCode ,
FromWarehouseCode , FromLocationCode , ToWarehouseCode , ToLocationCode , Quantity ,
Memo , Lock , TransType , BusinessCode , ERPUpload , ERPID ,
ERPDetailID , ERPCode , ERPSequence , MUSER , MUSERName ,
MTIME , WorkPoint , EATTRIBUTE1 )
SELECT NEWID ( ) , ' { 0 } ',' { 1 } ',' { 2 } ' , a . LotNo , a . InvCode ,
a . WarehouseCode , a . LocationCode , ' ',' ',' { 3 } ' ,
' ',' 1 ',' 1 5 ',' { 4 } ',' 0 ',' ' ,
' ',' ',' ',' { 5 } ' , ( select Top 1 f . F_RealName FROM ICSInventoryLot a INNER JOIN Sys_SRM_User f ON f . F_Account = ' { 5 } ' AND a . WorkPoint = f . F_Location ) ,
SYSDATETIME ( ) , ' { 6 } ' , ' '
FROM ICSWareHouseLotInfo a
WHERE a . LotNo = ' { 7 } ' AND a . WorkPoint = ' { 6 } '
update ICSWareHouseLotInfo set LockQuantity = LockQuantity + ' { 3 } ' where LotNo = ' { 7 } ' AND WorkPoint = ' { 6 } '
END ";
pikTbLogsql = string . Format ( pikTbLogsql , Identification , item . TransCode , item . TransSequence , itemInfo . CurrentQuantity
, BusinessCode , item . User , item . WorkPoint , itemInfo . LotNo ) ;
log . Debug ( "1" ) ;
if ( ! DBHelper . ExecuteNonQuery ( pikTbLogsql , cmd ) )
{
throw new Exception ( "拣料失败!" ) ;
}
}
}
#endregion
#region 委外发料
else if ( TransType = = TransTypeEnum . OutsourcingIssueDoc . GetDescription ( ) )
{
BusinessCode = TransTypeEnum . OutsourcingIssueDoc . GetDescription < DBValue > ( ) ;
foreach ( var itemInfo in item . detail )
{
pikTbLogsql = @ "
IF EXISTS ( SELECT a . LotNo FROM ICSWareHouseLotInfo a WHERE a . LotNo = ' { 7 } ' AND a . WorkPoint = ' { 6 } ' AND Quantity - LockQuantity - ' { 3 } ' < 0 )
BEGIN
RAISERROR ( ' 条 码 : " + " { 7 } " + @" 库 存 数 量 不 足 ! ' , 1 6 , 1 ) ;
RETURN
END
UPDATE ICSMOApply SET MUSER = ' { 5 } ' WHERE ApplyCode = ' { 1 } ' and Sequence = ' { 2 } ' ; ";
IF NOT EXISTS ( SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode = ' { 1 } ' AND TransSequence = ' { 2 } ' AND LotNo = ' { 7 } ' AND WorkPoint = ' { 6 } ' AND TransType = ' 1 5 ' )
BEGIN
INSERT INTO ICSWareHouseLotInfoLog ( ID , Identification , TransCode , TransSequence , LotNo , InvCode ,
FromWarehouseCode , FromLocationCode , ToWarehouseCode , ToLocationCode , Quantity ,
Memo , Lock , TransType , BusinessCode , ERPUpload , ERPID ,
ERPDetailID , ERPCode , ERPSequence , MUSER , MUSERName ,
MTIME , WorkPoint , EATTRIBUTE1 )
SELECT NEWID ( ) , ' { 0 } ',' { 1 } ',' { 2 } ' , a . LotNo , a . InvCode ,
a . WarehouseCode , a . LocationCode , ' ',' ',' { 3 } ' ,
' ',' 1 ',' 1 5 ',' { 4 } ',' 0 ',' ' ,
' ',' ',' ',' { 5 } ' , ( select Top 1 f . F_RealName FROM ICSInventoryLot a INNER JOIN Sys_SRM_User f ON f . F_Account = ' { 5 } ' AND a . WorkPoint = f . F_Location ) ,
SYSDATETIME ( ) , ' { 6 } ' , ' '
FROM ICSWareHouseLotInfo a
WHERE a . LotNo = ' { 7 } ' AND a . WorkPoint = ' { 6 } '
update ICSWareHouseLotInfo set LockQuantity = LockQuantity + ' { 3 } ' where LotNo = ' { 7 } ' AND WorkPoint = ' { 6 } '
END ";
pikTbLogsql = string . Format ( pikTbLogsql , Identification , item . TransCode , item . TransSequence , itemInfo . CurrentQuantity
, BusinessCode , item . User , item . WorkPoint , itemInfo . LotNo ) ;
log . Debug ( "1" ) ;
@ -17441,14 +17511,14 @@ a.ExtensionID
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public static DataTable BackPickMerge ( List < LOTStockModel > JsonData )
public static DataTable BackPickMerge ( WMSSourceDocumentModel JsonData )
{
String PrintEnable = "" ;
var language = LanguageHelper . GetName ( "WMSAPIInfo" ) ;
if ( JsonData . Count < = 0 )
{
throw new Exception ( language . GetNameByCode ( "WMSAPIInfo007" ) ) ; //"传送数据为空!"
}
//if (JsonData.Count <= 0)
//{
// throw new Exception(language.GetNameByCode("WMSAPIInfo007")); //"传送数据为空!"
//}
List < LOTStockModelList > model = new List < LOTStockModelList > ( ) ;
DataTable printTable = new DataTable ( ) ;
using ( SqlConnection conn = new System . Data . SqlClient . SqlConnection ( connString ) )
@ -17465,88 +17535,38 @@ a.ExtensionID
string TransType = string . Empty ;
string pikTbLogsql = "" ;
string Identification = Guid . NewGuid ( ) . ToString ( ) ;
foreach ( var item in JsonData )
{
TransType = item . TransType ;
if ( ! EnumHelper . HasDescriptions ( typeof ( TransTypeEnum ) , TransType ) )
//foreach (var item in JsonData)
//{
//TransType = item.TransType;
if ( ! EnumHelper . HasDescriptions ( typeof ( TransTypeEnum ) , JsonData . TransType ) )
{
throw new Exception ( LanguageHelper . GetNameSingle ( "WMSAPIInfo003" ) ) ; //"单据类型不存在!"
}
else if ( string . IsNullOrEmpty ( item . TransCode ) )
else if ( string . IsNullOrEmpty ( JsonData . TransCode ) )
{
throw new Exception ( language . GetNameByCode ( "WMSAPIInfo001" ) ) ; //"单据号不能为空!"
}
string [ ] trans = item . TransCode . Split ( '~' ) ;
string MergeID = "" ;
if ( trans . Length = = 2 )
{
MergeID = trans [ 0 ] ;
item . TransCode = trans [ 1 ] ;
}
//string[] trans = item.TransCode.Split('~');
//string MergeID = "";
//if (trans.Length == 2)
//{
// MergeID = trans[0];
// item.TransCode = trans[1];
//}
#region 销售出库
else if ( TransType = = TransTypeEnum . SalesShipmentDoc . GetDescription ( ) )
else if ( JsonData . TransType = = TransTypeEnum . SalesShipmentDoc . GetDescription ( )
| | JsonData . TransType = = TransTypeEnum . MOIssueDoc . GetDescription ( )
| | JsonData . TransType = = TransTypeEnum . OutsourcingIssueDoc . GetDescription ( ) )
{
BusinessCode = TransTypeEnum . SalesShipmentDoc . GetDescription < DBValue > ( ) ;
//更新源头单据数量
pikTbLogsql + = string . Format ( @ " IF EXISTS(SELECT * FROM ICSSDN b
where b . SDNCode = ' { 0 } ' AND b . workpoint = ' { 1 } ' and b . SDNQuantity > 0 )
BEGIN
RAISERROR ( ' 选 中 单 据 { 0 } 已 经 发 过 料 , 不 能 回 撤 拣 料 , 请 先 确 认 ! ' , 1 6 , 1 ) ;
RETURN
END
delete ICSMOPickMerge from ICSMOPickMerge a
LEFT JOIN ICSSDN b on a . SourceID = b . id and a . WorkPoint = b . WorkPoint
where b . SDNCode = ' { 0 } ' AND b . workpoint = ' { 1 } ' ", item.TransCode, item.WorkPoint);
if ( ! DBHelper . ExecuteNonQuery ( pikTbLogsql , cmd ) )
{
throw new Exception ( "回撤拣料失败!" ) ;
}
}
#endregion
#region 生产发料
else if ( TransType = = TransTypeEnum . MOIssueDoc . GetDescription ( ) )
{
BusinessCode = TransTypeEnum . MOIssueDoc . GetDescription < DBValue > ( ) ;
//更新源头单据数量
pikTbLogsql + = string . Format ( @ "IF EXISTS(SELECT * FROM ICSMO b
INNER join ICSMOPick c on c . MODetailID = b . MODetailID and c . WorkPoint = b . WorkPoint
where b . MOCode = ' { 0 } ' AND b . workpoint = ' { 1 } ' and c . IssueQuantity > 0 )
BEGIN
RAISERROR ( ' 选 中 单 据 { 0 } 已 经 发 过 料 , 不 能 回 撤 拣 料 , 请 先 确 认 ! ' , 1 6 , 1 ) ;
RETURN
END
delete ICSMOPickMerge from ICSMOPickMerge a
INNER join ICSMOPick c on a . SourceID = c . id and a . WorkPoint = c . WorkPoint
LEFT JOIN ICSMO b on c . MODetailID = b . MODetailID and c . WorkPoint = b . WorkPoint and b . MOStatus < > '3'
where b . MOCode = ' { 0 } ' AND b . workpoint = ' { 1 } ' ", item.TransCode, item.WorkPoint);
if ( ! DBHelper . ExecuteNonQuery ( pikTbLogsql , cmd ) )
{
throw new Exception ( "回撤拣料失败!" ) ;
}
}
#endregion
#region 委外发料
else if ( TransType = = TransTypeEnum . OutsourcingIssueDoc . GetDescription ( ) )
{
BusinessCode = TransTypeEnum . OutsourcingIssueDoc . GetDescription < DBValue > ( ) ;
//更新源头单据数量
pikTbLogsql + = string . Format ( @ " IF EXISTS(SELECT * FROM ICSOutsourcingOrder b
INNER join ICSOOPick c on c . OODetailID = b . OODetailID and c . WorkPoint = b . WorkPoint
where b . OOCode = ' { 0 } ' AND b . workpoint = ' { 1 } ' and c . IssueQuantity > 0 )
BEGIN
RAISERROR ( ' 选 中 单 据 { 0 } 已 经 发 过 料 , 不 能 回 撤 拣 料 , 请 先 确 认 ! ' , 1 6 , 1 ) ;
RETURN
END
delete ICSMOPickMerge from ICSMOPickMerge a
INNER join ICSOOPick c on a . SourceID = c . id and a . WorkPoint = c . WorkPoint
LEFT JOIN ICSOutsourcingOrder b on c . OODetailID = b . OODetailID and c . WorkPoint = b . WorkPoint
where b . OOCode = ' { 0 } ' AND b . workpoint = ' { 1 } ' ", item.TransCode, item.WorkPoint);
pikTbLogsql + = string . Format ( @ " update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
from dbo . ICSWareHouseLotInfo b
inner join ( select sum ( Quantity ) as Quantity , LotNo from ICSWareHouseLotInfolog where TransCode = ' { 0 } ' and TransType = ' 1 5 ' and WorkPoint = ' { 1 } ' group by LotNo ) c
on c . LotNo = b . LotNo ", JsonData.TransCode, JsonData.WorkPoint);
pikTbLogsql + = string . Format ( @" delete dbo.ICSWareHouseLotInfoLog where TransCode ='{0}' and TransType='15' and WorkPoint='{1}'" , JsonData . TransCode , JsonData . WorkPoint ) ;
if ( ! DBHelper . ExecuteNonQuery ( pikTbLogsql , cmd ) )
{
throw new Exception ( "回撤拣料失败!" ) ;
@ -17557,7 +17577,7 @@ a.ExtensionID
{
throw new Exception ( LanguageHelper . GetNameSingle ( "WMSAPIInfo003" ) ) ; //"单据类型不存在!"
}
}
//}
DataTable table = null ;
cmd . Transaction . Commit ( ) ;
return table ;