UFN_ADJUSTMENTHISTORY_GETPREVIOUSSTREAMS_2

Returns the previous splits for an adjustment, for reporting purposes.

Return

Return Type
nvarchar(max)

Parameters

Parameter Parameter Type Mode Description
@ADJUSTMENTID uniqueidentifier IN
@CURRENCYCODE tinyint IN

Definition

Copy


            CREATE function dbo.UFN_ADJUSTMENTHISTORY_GETPREVIOUSSTREAMS_2
            (
                @ADJUSTMENTID uniqueidentifier,
                @CURRENCYCODE tinyint
            )    
            returns nvarchar(max)
            as 
            begin
                declare @ADJUSTMENTHISTORYID uniqueidentifier;
                declare @DETAILTYPE nvarchar(25);
                declare @DETAILTYPECODE tinyint;
                declare @DETAILAPPLICATION nvarchar(30);
                declare @DETAILAPPLICATIONCODE tinyint;
                declare @AMOUNT money;
                declare @REVENUECATEGORY nvarchar(100);
                declare @RESULT nvarchar(max);
                declare @APPLICATIONSTRING nvarchar(100);

                set @RESULT = N'';

                select @ADJUSTMENTHISTORYID = ID 
                from dbo.ADJUSTMENTHISTORY where ADJUSTMENTID = @ADJUSTMENTID;

                if @ADJUSTMENTHISTORYID is null
                    return @RESULT;

                declare DETAIL_CURSOR cursor local fast_forward for
                    select 
                        TYPE, TYPECODE, APPLICATION, APPLICATIONCODE, case @CURRENCYCODE when 0 then AMOUNT when 2 then TRANSACTIONAMOUNT else ORGANIZATIONAMOUNT end, REVENUECATEGORYCODETRANSLATION
                    from dbo.ADJUSTMENTHISTORYREVENUE
                    where ADJUSTMENTHISTORYID = @ADJUSTMENTHISTORYID;

                open DETAIL_CURSOR;
                    fetch next from DETAIL_CURSOR into @DETAILTYPE, @DETAILTYPECODE, @DETAILAPPLICATION, @DETAILAPPLICATIONCODE, @AMOUNT, @REVENUECATEGORY;
                    while @@FETCH_STATUS = 0
                    begin
                        select @APPLICATIONSTRING = 
                        case
                            when @DETAILTYPECODE <> 0 then @DETAILTYPE
                            when @DETAILAPPLICATIONCODE = 0 then @DETAILAPPLICATION
                            else @DETAILAPPLICATION + ' Payment'
                        end

                        if len(@REVENUECATEGORY) = 0 
                            set @RESULT = @RESULT + @APPLICATIONSTRING + ' (' + cast(@AMOUNT as nvarchar) + ')' + char(13) + char(10);
                        else
                            set @RESULT = @RESULT + @APPLICATIONSTRING + ' (' + cast(@AMOUNT as nvarchar) + ')' + ' [' + @REVENUECATEGORY + ']' + char(13) + char(10);
                        fetch next from DETAIL_CURSOR into @DETAILTYPE, @DETAILTYPECODE, @DETAILAPPLICATION, @DETAILAPPLICATIONCODE, @AMOUNT, @REVENUECATEGORY;
                    end

                --When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long

                close DETAIL_CURSOR;
                deallocate DETAIL_CURSOR;

                return @RESULT;
            end