USP_REVENUE_COPYSPLITS

Copies prorated REVENUESPLIT records from a source REVENUE record to a destination REVENUERECORD.

Parameters

Parameter Parameter Type Mode Description
@SOURCEID uniqueidentifier IN
@DESTINATIONID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@DATEADDED datetime IN
@DESTINATIONAMOUNT money IN
@APPLICATIONCODE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_REVENUE_COPYSPLITS
            (
                @SOURCEID uniqueidentifier,
                @DESTINATIONID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @DATEADDED datetime,
                @DESTINATIONAMOUNT money = null,
                @APPLICATIONCODE tinyint = null
            )
            as 
            set nocount on;

            begin try
                if @CHANGEAGENTID is null
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                --Delete the original splits for the destination (if any) 

                declare @contextCache varbinary(128);
                set @contextCache = CONTEXT_INFO();

                if not @CHANGEAGENTID is null
                    set CONTEXT_INFO @CHANGEAGENTID;

                if not @contextCache is null
                    set CONTEXT_INFO @contextCache

                declare @REVENUETYPECODE tinyint;

                if @DESTINATIONAMOUNT is null
                    select @DESTINATIONAMOUNT = AMOUNT from dbo.REVENUE where ID = @DESTINATIONID ;

                select @REVENUETYPECODE = TRANSACTIONTYPECODE from dbo.REVENUE where ID = @SOURCEID ;

                if @REVENUETYPECODE in (1, 3) --pledge payment or mg pledge payment (support pledge installment splits)

                begin
                        insert into dbo.REVENUESPLIT(ID, REVENUEID, APPLICATIONCODE, TYPECODE, DESIGNATIONID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        select
                            newid(),
                            @DESTINATIONID,
                            SOURCE.APPLICATIONCODE,
                            SOURCE.TYPECODE,
                            a.DESIGNATIONID,
                            a.AMOUNT,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @DATEADDED,
                            @DATEADDED
                    from (select INSTALLMENTSPLIT.DESIGNATIONID, sum(INSTALLMENTSPLITPAYMENT.AMOUNT) AMOUNT
                        from dbo.INSTALLMENTSPLITPAYMENT
                        inner join dbo.INSTALLMENTSPLIT
                            on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
                        where 
                            INSTALLMENTSPLITPAYMENT.PAYMENTID = @DESTINATIONID
                            and INSTALLMENTSPLITPAYMENT.PLEDGEID = @SOURCEID
                        group by INSTALLMENTSPLIT.DESIGNATIONID) a
                        inner join dbo.REVENUESPLIT SOURCE on SOURCE.REVENUEID = @SOURCEID; --ASSUMING 1 per

                end
                else
                begin
                        insert into dbo.REVENUESPLIT(ID, REVENUEID, APPLICATIONCODE, TYPECODE, DESIGNATIONID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        select
                            newid(),
                            @DESTINATIONID,
                            case when @APPLICATIONCODE is null then APPLICATIONCODE else @APPLICATIONCODE end,
                            TYPECODE,
                            DESIGNATIONID,
                            AMOUNT,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @DATEADDED,
                            @DATEADDED
                        from 
                        dbo.UFN_PLEDGE_GETSPLITSFORPAYMENT(@SOURCEID, @DESTINATIONAMOUNT); --Note: The PLEDGE here is a misnomer at this point since pledges are handled above. However, this function 

                                                                                           --works for the other revenue types just as well so there's no need for a new one and renaming it would cause API breakage.

                end

            end try
            begin catch
                exec dbo.USP_RAISE_ERROR;
                return 1;
            end catch 
            return 0;