【自定义函数】销售订单跟踪报表 -- 获取已开票领料套数

本文介绍了一个用于计算销售订单中已开票领料套数的SQL函数。该函数通过比较实发数量与应发数量来确定是否全部领料,并据此计算已开票领料套数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
/****** 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
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值