USP_DATAFORMTEMPLATE_VIEW_PAYMENTRECURRINGGIFT

The load procedure used by the view dataform template "Payment: Recurring Gift View Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@TRANSACTIONTYPE nvarchar(20) INOUT Type
@CONSTITUENTNAME nvarchar(700) INOUT Constituent
@DESCRIPTION nvarchar(700) INOUT Description
@GIFTDATE datetime INOUT Date
@NEXTINSTALLMENTDATE datetime INOUT Next Installment Due
@NEXTINSTALLMENTDUE money INOUT Next Installment Amount
@AMOUNT money INOUT Amount
@TOTALPAID money INOUT Total paid
@FREQUENCY nvarchar(100) INOUT Frequency
@DESIGNATIONS nvarchar(3000) INOUT Designations
@ANONYMOUS bit INOUT ANONYMOUS
@REVENUETYPE nvarchar(20) INOUT Revenue type
@SPONSORNAME nvarchar(500) INOUT Sponsor name
@OPPORTUNITYNAME nvarchar(500) INOUT Opportunity
@PASTDUE money INOUT Past due
@DESIGNATIONID uniqueidentifier INOUT Designation
@ADDITIONALAMOUNT money INOUT Additional amount
@TRANSACTIONCURRENCYID uniqueidentifier INOUT Transaction currency ID
@ACTIONABOVEAMOUNT money INOUT
@OVERPAYMENTCODE tinyint INOUT
@ACTIONBELOWAMOUNTS xml INOUT
@UNDERPAYMENTCODE tinyint INOUT
@SPLITS xml INOUT

Definition

Copy


        CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_PAYMENTRECURRINGGIFT
        (
          @ID uniqueidentifier,    
          @DATALOADED bit = 0 output,
          @TRANSACTIONTYPE nvarchar(20) = null output,
          @CONSTITUENTNAME nvarchar(700) = null output,
          @DESCRIPTION nvarchar(700) = null output,
          @GIFTDATE datetime = null output,
          @NEXTINSTALLMENTDATE datetime = null output,
          @NEXTINSTALLMENTDUE money = null output,
          @AMOUNT money = null output,
          @TOTALPAID money = null output,
          @FREQUENCY nvarchar(100) = null output,
          @DESIGNATIONS nvarchar(3000) = null output,
          @ANONYMOUS bit = null output,
          @REVENUETYPE nvarchar(20) = null output,
          @SPONSORNAME nvarchar(500) = null output,
          @OPPORTUNITYNAME nvarchar(500) = null output,
          @PASTDUE money = null output,
          @DESIGNATIONID uniqueidentifier = null output,
          @ADDITIONALAMOUNT money = null output,
          @TRANSACTIONCURRENCYID uniqueidentifier = null output,
          @ACTIONABOVEAMOUNT money = null output,
          @OVERPAYMENTCODE tinyint = null output,
          @ACTIONBELOWAMOUNTS xml = null output,
          @UNDERPAYMENTCODE tinyint = null output,
          @SPLITS xml = null output
        )
        as
        set nocount on;

        declare @LASTPAYMENTID uniqueidentifier;

        select top 1 @LASTPAYMENTID = ID 
        from RECURRINGGIFTACTIVITY
        where SOURCEREVENUEID = @ID and TYPECODE = 0
        order by SCHEDULEDATE desc;

        set @DATALOADED = 0;

        select
          @DATALOADED = 1,
          @TRANSACTIONTYPE = REVENUE.TRANSACTIONTYPE,
          @CONSTITUENTNAME = NF.NAME,
          @GIFTDATE = REVENUE.DATE,
          @NEXTINSTALLMENTDATE = NEXTINSTALLMENT.DATE,
          @NEXTINSTALLMENTDUE = NEXTINSTALLMENT.BALANCE,
          @AMOUNT = REVENUE.TRANSACTIONAMOUNT,
          @FREQUENCY = REVENUESCHEDULE.FREQUENCY,
          @DESIGNATIONS = dbo.UFN_REVENUE_DESIGNATIONLIST(REVENUE.ID),
          @ANONYMOUS = REVENUE.GIVENANONYMOUSLY,
          @PASTDUE = dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNT_2(@ID, null, 1),
          @TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID
        from dbo.REVENUE
        cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) NF
        inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
        outer apply dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTINFO(REVENUE.ID,null) NEXTINSTALLMENT
        where REVENUE.ID = @ID;

        set @SPLITS = (
        select 
            SPLITS.ID, 
            SPLITS.TRANSACTIONAMOUNT AMOUNT, 
            SPLITS.DESIGNATIONID, 
            DESIGNATION.USERID DESIGNATIONDESCRIPTION, 
            SPLITS.TRANSACTIONCURRENCYID
        from 
            dbo.UFN_REVENUE_GETSPLITS_2(@ID) SPLITS
            left join dbo.DESIGNATION on DESIGNATION.ID = SPLITS.DESIGNATIONID
        for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64
        );

        select @TOTALPAID = coalesce(sum(RECURRINGGIFTACTIVITY.AMOUNT), 0.00)
        from REVENUE REVLAST
        inner join dbo.REVENUESPLIT REVSPLITLAST on REVSPLITLAST.REVENUEID = REVLAST.ID
        inner join dbo.RECURRINGGIFTACTIVITY on RECURRINGGIFTACTIVITY.PAYMENTREVENUEID = REVSPLITLAST.ID
        where RECURRINGGIFTACTIVITY.SOURCEREVENUEID = @ID;

        set @DESCRIPTION = @CONSTITUENTNAME;


        -- information for handling donations and UI messages

        declare @APPLYTOPASTINSTALLMENTS bit;
        declare @PASTBALANCEUNDERPAYMENTCODE tinyint;

        select @ACTIONABOVEAMOUNT = ACTIONABOVEAMOUNT,
               @OVERPAYMENTCODE = OVERPAYMENTCODE,
               @ACTIONBELOWAMOUNTS = ACTIONBELOWAMOUNTS,
               @UNDERPAYMENTCODE = INSTALLMENTUNDERPAYMENTCODE,
   @APPLYTOPASTINSTALLMENTS = APPLYTOPASTINSTALLMENTS,
               @PASTBALANCEUNDERPAYMENTCODE = PASTBALANCEUNDERPAYMENTCODE
        from dbo.UFN_RECURRINGGIFT_GETPAYMENTUIFIELDS(@ID,@NEXTINSTALLMENTDUE,@PASTDUE,@NEXTINSTALLMENTDATE,getdate(),null);

        -- fix @PASTDUE - don't show if:

        if @PASTDUE = @NEXTINSTALLMENTDUE or       -- it's the same as the next installment amount

           (@APPLYTOPASTINSTALLMENTS = 0 and
            (@PASTBALANCEUNDERPAYMENTCODE = 0 or   -- applying that amount wouldn't result in paying off the past balance

             @OVERPAYMENTCODE = 2))                -- that amount would not all be applied to the RG

          set @PASTDUE = 0;

        -- sponsorship

        select 
          @REVENUETYPE = SP.TYPE,
          @SPONSORNAME = NF.NAME,
          @OPPORTUNITYNAME = coalesce((select NAME from SPONSORSHIPOPPORTUNITYCHILD where ID=S.SPONSORSHIPOPPORTUNITYID),
                        (select NAME from SPONSORSHIPOPPORTUNITYPROJECT where ID = S.SPONSORSHIPOPPORTUNITYID)),
          @DESIGNATIONID = SP.DESIGNATIONID
        from REVENUESPLIT SP
        inner join SPONSORSHIP S on S.REVENUESPLITID = SP.ID
        cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(S.CONSTITUENTID) NF
        inner join SPONSORSHIPOPPORTUNITY SO on SO.ID = S.SPONSORSHIPOPPORTUNITYID
        where SP.REVENUEID = @ID
          and S.ISMOSTRECENTFORCOMMITMENT = 1;

        -- sponsorship recurring additional gift

        select 
          @REVENUETYPE = (select top 1 TYPECODE from dbo.REVENUESPLIT RS where RS.REVENUEID = SPRAG.REVENUEID),
          @OPPORTUNITYNAME = coalesce((select NAME from SPONSORSHIPOPPORTUNITYCHILD where ID=S.SPONSORSHIPOPPORTUNITYID),
                        (select NAME from SPONSORSHIPOPPORTUNITYPROJECT where ID = S.SPONSORSHIPOPPORTUNITYID))
        from dbo.SPONSORSHIPRECURRINGADDITIONALGIFT SPRAG
        inner join SPONSORSHIP S on S.ID = SPRAG.SPONSORSHIPID
        inner join SPONSORSHIPOPPORTUNITY SO on SO.ID = S.SPONSORSHIPOPPORTUNITYID
        where SPRAG.REVENUEID = @ID
        and SPRAG.STATUSCODE in (0, 1, 5)
        and S.STATUSCODE = 1;

        return 0;