USP_REVENUE_ADDCAMPAIGNS

Adds campaigns to a revenue transaction.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_REVENUE_ADDCAMPAIGNS
            (
                @REVENUEID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @CHANGEDATE datetime
            )
            as
                set nocount on

                if @CHANGEAGENTID is null
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                if @CHANGEDATE is null
                    set @CHANGEDATE = getdate()

                insert into dbo.REVENUESPLITCAMPAIGN(REVENUESPLITID, CAMPAIGNID, CAMPAIGNSUBPRIORITYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                select distinct
                    REVENUESPLIT.ID,
                    DESIGNATIONCAMPAIGN.CAMPAIGNID,
                    DESIGNATIONCAMPAIGN.CAMPAIGNSUBPRIORITYID,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CHANGEDATE,
                    @CHANGEDATE
                from dbo.FINANCIALTRANSACTION REVENUE
                inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
                inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
                cross apply dbo.UFN_DESIGNATION_GETCAMPAIGNSTODEFAULT(REVENUESPLIT_EXT.DESIGNATIONID, cast(REVENUE.DATE as datetime)) as DESIGNATIONCAMPAIGN
                where
                    REVENUE.ID = @REVENUEID and REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15) and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1 and
                    -- For payments, only default for donations, other, and unapplied matching gift payments

                    (REVENUE.TYPECODE <> 0 or ((REVENUESPLIT_EXT.APPLICATIONCODE in (0,4) or (REVENUESPLIT_EXT.APPLICATIONCODE = 1 and REVENUESPLIT_EXT.TYPECODE = 0)) or
                    -- Verify if its a matching gift payment, it isn't applied

                    (REVENUESPLIT_EXT.APPLICATIONCODE = 7 and not exists (select 1 from dbo.INSTALLMENTSPLITPAYMENT where PAYMENTID = REVENUESPLIT.ID)))) and
                    -- Prevent duplicate campaigns from being added

                    not exists (    select 1 
                                    from dbo.REVENUESPLITCAMPAIGN 
                                    where 
                                        REVENUESPLITID = REVENUESPLIT.ID and
                                        CAMPAIGNID = DESIGNATIONCAMPAIGN.CAMPAIGNID and
                                        (CAMPAIGNSUBPRIORITYID = DESIGNATIONCAMPAIGN.CAMPAIGNSUBPRIORITYID or
                                        (CAMPAIGNSUBPRIORITYID is null and DESIGNATIONCAMPAIGN.CAMPAIGNSUBPRIORITYID is null)))