USP_DATAFORMTEMPLATE_EDIT_RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY

The save procedure used by the edit dataform template "Recurring Gift Revenue Function History Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@REVENUEDEVELOPMENTFUNCTIONCODEID uniqueidentifier IN Revenue function
@TRANSACTIONDATE date IN Date

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @REVENUEDEVELOPMENTFUNCTIONCODEID uniqueidentifier,
    @TRANSACTIONDATE date
)
as

    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    declare @ERR tinyint;
    set @ERR = 0;

    -- make sure the new date is still between any surrounding history rows

    select top 1 @ERR = case when [OTHER].SEQUENCE < [ME].SEQUENCE then 1 else 2 end
    from dbo.RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY [ME]
    inner join dbo.RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY [OTHER] on [OTHER].REVENUEID = [ME].REVENUEID and [OTHER].ID <> [ME].ID
    where (([OTHER].SEQUENCE < [ME].SEQUENCE and @TRANSACTIONDATE < [OTHER].TRANSACTIONDATE) or
           ([OTHER].SEQUENCE > [ME].SEQUENCE and @TRANSACTIONDATE > [OTHER].TRANSACTIONDATE))
    and [ME].ID = @ID;

    if @ERR = 1
    begin
        raiserror('BBERR_TRANSACTIONDATETOOEARLY',13,1)
        return 1;
    end
    else if @ERR = 2
    begin
        raiserror('BBERR_TRANSACTIONDATETOOLATE',13,1)
        return 1;
    end

    begin try
        update dbo.RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY
        set TRANSACTIONDATE = @TRANSACTIONDATE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID
        and TRANSACTIONDATE <> @TRANSACTIONDATE;

        update F
        set REVENUEDEVELOPMENTFUNCTIONCODEID = @REVENUEDEVELOPMENTFUNCTIONCODEID
        from REVENUEDEVELOPMENTFUNCTION F
        inner join dbo.RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY on RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY.REVENUEDEVELOPMENTFUNCTIONID = F.ID
        where RECURRINGGIFTDEVELOPMENTFUNCTIONHISTORY.ID = @ID
        and F.REVENUEDEVELOPMENTFUNCTIONCODEID <> @REVENUEDEVELOPMENTFUNCTIONCODEID;
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;