UFN_BACSPROCESS_GETTRANSACTIONCODE_MEMBERSHIPDUESBATCH

Return

Return Type
nvarchar(2)

Parameters

Parameter Parameter Type Mode Description
@MEMBERSHIPDUESBATCHID uniqueidentifier IN
@EXISTINGMEMBERSHIPID uniqueidentifier IN

Definition

Copy


                create function dbo.UFN_BACSPROCESS_GETTRANSACTIONCODE_MEMBERSHIPDUESBATCH(@MEMBERSHIPDUESBATCHID uniqueidentifier,@EXISTINGMEMBERSHIPID uniqueidentifier)
                        returns nvarchar(2)
                        with execute as caller
                        as begin
                            declare @SOURCEREVENUEID uniqueidentifier = dbo.UFN_MEMBERSHIP_GETPLEDGE(@EXISTINGMEMBERSHIPID) ;

                            if @SOURCEREVENUEID is null
                            begin
                                select @SOURCEREVENUEID = dbo.UFN_MEMBERSHIP_GETRECURRINGGIFT(@EXISTINGMEMBERSHIPID);
                            end

                                declare @TRANSACTIONTYPECODE tinyint

                                select @TRANSACTIONTYPECODE=TYPECODE
                                from dbo.FINANCIALTRANSACTION 
                                where ID = @SOURCEREVENUEID;

                                declare @ACTIVITYCOUNT integer;

                                if @TRANSACTIONTYPECODE = 2 
                                begin
                                    select @ACTIVITYCOUNT = count(*
                                    from dbo.RECURRINGGIFTACTIVITY
                                    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = RECURRINGGIFTACTIVITY.SOURCEREVENUEID
                                    where FINANCIALTRANSACTION.ID = @SOURCEREVENUEID
                                    and FINANCIALTRANSACTION.DELETEDON is null
                                end
                                else
                                begin
                                    select @ACTIVITYCOUNT = count(*) from dbo.INSTALLMENT
                                        inner join dbo.INSTALLMENTPAYMENT on INSTALLMENT.ID = INSTALLMENTPAYMENT.INSTALLMENTID
                                        where INSTALLMENT.REVENUEID = @SOURCEREVENUEID;
                                end


                                declare @ENDDATE datetime;
                                declare @THISTRANSACTIONDATE datetime;
                                declare @FREQUENCYCODE tinyint;
                                declare @NUMINSTALLMENTS int;
                                select 
                                    @ENDDATE = REVENUESCHEDULE.ENDDATE, 
                                    @THISTRANSACTIONDATE = REVENUESCHEDULE.NEXTTRANSACTIONDATE, 
                                    @FREQUENCYCODE = REVENUESCHEDULE.FREQUENCYCODE,
                                    @NUMINSTALLMENTS = REVENUESCHEDULE.NUMBEROFINSTALLMENTS
                                from REVENUESCHEDULE where REVENUESCHEDULE.ID = @SOURCEREVENUEID;

                                if @FREQUENCYCODE = 5
                                begin
                                        return N'19';
                                end
                                else
                                        begin
                                        declare @NEXTTRANSACTIONDATE datetime;
                                        select @NEXTTRANSACTIONDATE = dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE(@FREQUENCYCODE, @THISTRANSACTIONDATE);

                                        if @ACTIVITYCOUNT = 0
                                        begin
                                            return N'01';
                                        end
                                        else if @TRANSACTIONTYPECODE = 2 
                                        begin
                                                if @ENDDATE < @NEXTTRANSACTIONDATE
                                                begin
                                                        return N'19';
                                                end
                                        end
                                        else if (@NUMINSTALLMENTS - @ACTIVITYCOUNT) = 1
                                        begin
                                                return N'19';
                                        end
                                end
                                return N'17';
                        end