/****** Object: UserDefinedFunction [dbo].[fn_SO_GetIssuedQty] Script Date: 12/11/2009 08:53:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/**********************************
销售订单跟踪报表 -- 获取已开票领料套数
Author : 马琪玉
Date : 2009年12月10日14:56:41
规则:要么全领料要么全没领料。
1、领料单的生产订单号 = 实际跟踪的销售订单对应的生产订单号
2、如果第一行实发数量 >= 应发数量 ,则已开票领料套数等于 “接单数量”
否则,已开票领料套数等于 0
传入参数:
@TrackMODocNO
数据类型:Varchar(50)
描述:销售订单跟踪报表中的生产订单号
@OrderByQtyTU
数据类型:Decimal
描述:销售订单跟踪报表中的接单数量[订货数量( 销售单位)]
返回值:
@YKP_Num
数据类型:Decimal
描述:已开票领料套数
**********************************/
CREATE FUNCTION [dbo].[fn_SO_GetIssuedQty]
(
@TrackMODocNO Varchar(50),
@OrderByQtyTU Decimal
)
RETURNS Decimal
AS
BEGIN
Declare @YKP_Num Decimal; -- 已开票领料套数
Declare @IssuedQty Decimal; -- 实发数量(发料单位)
Declare @IssueQty Decimal; -- 应发数量(发料单位)
begin
select top 1 @IssueQty=A1.[IssueQty],@IssuedQty=A1.[IssuedQty] from MO_IssueDoc as A
left join [MO_IssueDocLine] as A1 on (A.[ID] = A1.[IssueDoc])
left join [MO_MO] as A2 on (A1.[MO] = A2.[ID])
where (A2.[DocNo] = @TrackMODocNO)
if(@@rowcount = 0) set @YKP_Num=0
else if(@IssuedQty >= @IssueQty) set @YKP_Num=@OrderByQtyTU
else set @YKP_Num=0
end
return @YKP_Num
END;
GO