USP_RECURRINGGIFT_ADDMISSINGINSTALLMENTS

Bring a recurring gift's installments up to date, including the next expected payment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CREATIONDATE datetime IN
@AMOUNT money IN
@LASTINSTALLMENTDATE date INOUT
@BASECURRENCYID uniqueidentifier IN
@ORGANIZATIONAMOUNT money IN
@ORGANIZATIONEXCHANGERATEID uniqueidentifier IN
@TRANSACTIONAMOUNT money IN
@TRANSACTIONCURRENCYID uniqueidentifier IN
@BASEEXCHANGERATEID uniqueidentifier IN
@ASOFDATE date IN

Definition

Copy


CREATE procedure dbo.USP_RECURRINGGIFT_ADDMISSINGINSTALLMENTS (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier,
    @CREATIONDATE datetime,
    @AMOUNT money,
    @LASTINSTALLMENTDATE date = null output,
    @BASECURRENCYID uniqueidentifier = null,
    @ORGANIZATIONAMOUNT money = null,
    @ORGANIZATIONEXCHANGERATEID uniqueidentifier = null,
    @TRANSACTIONAMOUNT money = null,
    @TRANSACTIONCURRENCYID uniqueidentifier = null,
    @BASEEXCHANGERATEID uniqueidentifier = null,
    @ASOFDATE date = null
)
as
begin
    declare @DATES table (DATE date)

    insert into @DATES
    select DATE
    from dbo.UFN_RECURRINGGIFT_GETMISSINGINSTALLMENTS_ASOFDATE(@ID, @ASOFDATE);

    declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()

    -- insert any missing installments and the next installment

    insert into dbo.RECURRINGGIFTINSTALLMENT (
        ID,
        REVENUEID,
        AMOUNT,
        DATE,
        BASECURRENCYID,
        ORGANIZATIONAMOUNT,
        ORGANIZATIONEXCHANGERATEID,
        TRANSACTIONAMOUNT,
        TRANSACTIONCURRENCYID,
        BASEEXCHANGERATEID,
        ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
    select
        newid(),
        @ID,
        @AMOUNT,
        DATE,
        coalesce(@BASECURRENCYID,@ORGANIZATIONCURRENCYID),
        coalesce(@ORGANIZATIONAMOUNT,@AMOUNT),
        @ORGANIZATIONEXCHANGERATEID,
        coalesce(@TRANSACTIONAMOUNT,@AMOUNT),
        coalesce(@TRANSACTIONCURRENCYID,@ORGANIZATIONCURRENCYID),
        @BASEEXCHANGERATEID,
        @CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE
    from @DATES;

    select @LASTINSTALLMENTDATE = max(DATE) from dbo.RECURRINGGIFTINSTALLMENT where REVENUEID = @ID;
end