USP_EDITLOAD_RECURRINGGIFTDETAILS

The load procedure used by the edit dataform template "recurring Gift Details Edit Data 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.
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@AMOUNT money INOUT amount
@SPLITS xml INOUT Designations
@FREQUENCYCODE tinyint INOUT Frequency
@ENDDATE datetime INOUT endDate
@STARTDATE datetime INOUT startDate
@NEXTINSTALLMENTID uniqueidentifier INOUT next installment id
@USEEXISTINGCURRENCY bit INOUT
@INSTALLMENTBEGINDATE datetime INOUT

Definition

Copy


            CREATE PROCEDURE USP_EDITLOAD_RECURRINGGIFTDETAILS 
              @ID uniqueidentifier,
              @DATALOADED bit = 0 output,
                    @TSLONG bigint = 0 output,
                        @AMOUNT money = null output,
                        @SPLITS xml = null output,
                        @FREQUENCYCODE tinyint = null output,
                        @ENDDATE datetime = null output,
                        @STARTDATE datetime = null output,
                        @NEXTINSTALLMENTID uniqueidentifier = null output,
              @USEEXISTINGCURRENCY bit = null output,
              @INSTALLMENTBEGINDATE datetime = null output
          AS
          BEGIN
           set nocount on;

                set @DATALOADED = 0;
                set @TSLONG = 0;                

                select
                    @DATALOADED = 1,
                    @TSLONG = REVENUE.TSLONG,
                    @AMOUNT = REVENUE.AMOUNT
                from dbo.REVENUE
                where REVENUE.ID = @ID and REVENUE.TRANSACTIONTYPECODE = 2;

                declare @STATUSCODE tinyint;

                select top 1
                    @FREQUENCYCODE = FREQUENCYCODE,
                    @ENDDATE = ENDDATE,
                    @STARTDATE = NEXTTRANSACTIONDATE,
          @INSTALLMENTBEGINDATE = STARTDATE,
                    @STATUSCODE = STATUSCODE
                from dbo.REVENUESCHEDULE
                where ID = @ID;

                declare @LASTACTIVITYDATE date

                if exists(select 'x' from dbo.RECURRINGGIFTINSTALLMENT where REVENUEID = @ID)
                begin
                    declare @SAVESTARTDATE date
                    set @SAVESTARTDATE = @STARTDATE
                    set @STARTDATE = null;

                    select @LASTACTIVITYDATE = max(ACTIVITYINSTALLMENT.DATE)
                    from dbo.RECURRINGGIFTINSTALLMENT ACTIVITYINSTALLMENT
                    left join dbo.RECURRINGGIFTINSTALLMENTPAYMENT on RECURRINGGIFTINSTALLMENTPAYMENT.RECURRINGGIFTINSTALLMENTID = ACTIVITYINSTALLMENT.ID
                    left join dbo.RECURRINGGIFTINSTALLMENTWRITEOFF on RECURRINGGIFTINSTALLMENTWRITEOFF.RECURRINGGIFTINSTALLMENTID = ACTIVITYINSTALLMENT.ID
                    where ACTIVITYINSTALLMENT.REVENUEID = @ID
                    and (RECURRINGGIFTINSTALLMENTPAYMENT.ID is not null or
                         RECURRINGGIFTINSTALLMENTWRITEOFF.ID is not null)

                    -- first installment w/ no activity, and after which there is no activity
                    if @STATUSCODE = 0
                        select top 1
                            @NEXTINSTALLMENTID = ID,
                            @STARTDATE = DATE
                        from dbo.RECURRINGGIFTINSTALLMENT
                        where REVENUEID = @ID
                        and (DATE > @LASTACTIVITYDATE or @LASTACTIVITYDATE is null)
                        order by DATE;

                    -- startdate could come out of this null, if the last installment is
                    -- partially paid or the RG is inactive;
                    -- in this case we should not allow edit of the next transaction date
                    if @STARTDATE is null
                    begin
                        set @STARTDATE = @SAVESTARTDATE    
                    end
                end

                set @SPLITS = dbo.[UFN_REVENUE_GETSPLITS_TOITEMLISTXML](@ID);


                return 0;
          END