USP_UNAPPLIEDMG_ADDPAYMENT

Adds an unapplied matching gift payment.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@AMOUNT money IN
@DESIGNATIONID uniqueidentifier IN
@CAMPAIGNS xml IN
@RECOGNITIONCREDITS xml IN
@SOLICITORS xml IN
@CATEGORYCODEID uniqueidentifier IN
@CREATIONDATE datetime IN
@CHANGEAGENTID uniqueidentifier IN
@BASEAMOUNT money IN
@ORGANIZATIONAMOUNT money IN

Definition

Copy


            CREATE procedure dbo.USP_UNAPPLIEDMG_ADDPAYMENT
            (
                @REVENUEID uniqueidentifier,
                @AMOUNT money,
                @DESIGNATIONID uniqueidentifier,
                @CAMPAIGNS xml,
                @RECOGNITIONCREDITS xml,
                @SOLICITORS xml,
                @CATEGORYCODEID uniqueidentifier,
                @CREATIONDATE datetime = null,
                @CHANGEAGENTID uniqueidentifier = null,
                @BASEAMOUNT money = null,
                @ORGANIZATIONAMOUNT money = null
            )
            as
                set nocount on;

                declare @ID uniqueidentifier;
                set @ID = newid();

                -- Get multicurrency values from the revenue.

                declare @TRANSACTIONCURRENCYID uniqueidentifier;
                declare @BASECURRENCYID uniqueidentifier;
                declare @BASEEXCHANGERATEID uniqueidentifier;
                declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                declare @DATE datetime;
                declare @POSTDATE date;
                declare @POSTSTATUSCODE tinyint;

                select
                    @TRANSACTIONCURRENCYID = FT.TRANSACTIONCURRENCYID,
                    @BASECURRENCYID = V.BASECURRENCYID,
                    @BASEEXCHANGERATEID = FT.BASEEXCHANGERATEID,
                    @ORGANIZATIONEXCHANGERATEID = FT.ORGEXCHANGERATEID,
                    @DATE = cast(FT.DATE as datetime),
                    @POSTDATE = FT.POSTDATE,
                    @POSTSTATUSCODE = case FT.POSTSTATUSCODE when 2 then 1 else FT.POSTSTATUSCODE end
                from dbo.FINANCIALTRANSACTION FT
                inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V on V.FINANCIALTRANSACTIONID = FT.ID
                where FT.ID = @REVENUEID;

                declare @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;
                -- Convert the applied amount into base and organization amounts if it is not provided by the caller

                if @BASEAMOUNT is null or @ORGANIZATIONAMOUNT is null
                    exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @DATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEAMOUNT output, null, @ORGANIZATIONAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 0, @BASETOORGANIZATIONEXCHANGERATEID output
                else
                    set @BASETOORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTBASETOORGANIZATIONRATE(@BASECURRENCYID, @DATE, null, @ORGANIZATIONEXCHANGERATEID);

                declare @ADJUSTMENTPOSTSTATUSCODE tinyint;
                declare @ADJUSTMENTPOSTDATE date;
                declare @ADJUSTMENTID uniqueidentifier;
                select top 1 
                    @ADJUSTMENTPOSTSTATUSCODE = case A.POSTSTATUSCODE when 2 then 3 else 1 end
                    ,@ADJUSTMENTPOSTDATE = A.POSTDATE
                    ,@ADJUSTMENTID = ALI.ID
                from dbo.ADJUSTMENT A
                left join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT ALI on A.ID = ALI.ID
                where A.REVENUEID = @REVENUEID
                order by A.DATEADDED desc;

                insert into dbo.FINANCIALTRANSACTIONLINEITEM 
                    (ID
                    ,FINANCIALTRANSACTIONID
                    ,TRANSACTIONAMOUNT
                    ,VISIBLE
                    ,DESCRIPTION
                    ,SEQUENCE
                    ,TYPECODE
                    ,POSTDATE
                    ,POSTSTATUSCODE
                    ,BASEAMOUNT
                    ,ORGAMOUNT
                    ,FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
                    -- Boilerplate

                    ,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                values
                    (@ID
                    ,@REVENUEID
                    ,@AMOUNT
                    ,1
                    ,''
                    ,1
                    ,0
                    ,isnull(@ADJUSTMENTPOSTDATE, @POSTDATE)
                    ,isnull(@ADJUSTMENTPOSTSTATUSCODE, @POSTSTATUSCODE)
                    ,@BASEAMOUNT
                    ,@ORGANIZATIONAMOUNT
                    ,@ADJUSTMENTID
                    ,@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE)

                merge dbo.REVENUESPLIT_EXT as target
                using (select @ID [ID]) as source      
                on (source.ID = target.ID)      
                    when matched then
                update set 
                    DESIGNATIONID = @DESIGNATIONID
                    ,CHANGEDBYID = @CHANGEAGENTID
                    ,DATECHANGED = @CREATIONDATE
                when not matched then
                    insert 
                    (
                        ID
                        ,DESIGNATIONID
                        ,TYPECODE
                        ,APPLICATIONCODE
                        ,OVERRIDEBUSINESSUNITS
                        ,REVENUESPLITBUSINESSUNITOVERRIDECODEID
                        -- boilerplate

                        ,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                    )
                    values 
                    (    
                        @ID
                        ,@DESIGNATIONID
                        ,0
                        ,7
                        ,0
                        ,null
                        --  boilerplate

                        ,@CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE);

                exec dbo.USP_REVENUESPLIT_GETCAMPAIGNS_ADDFROMXML @ID, @CAMPAIGNS, @CHANGEAGENTID;

                 -- Process the recognitions xml to calculate organization amounts.

                set @RECOGNITIONCREDITS = dbo.UFN_REVENUERECOGNITION_CONVERTAMOUNTSINXML(@RECOGNITIONCREDITS,@BASECURRENCYID, @BASETOORGANIZATIONEXCHANGERATEID);
                exec dbo.USP_REVENUE_GETRECOGNITIONS_2_ADDFROMXML @ID, @RECOGNITIONCREDITS, @CHANGEAGENTID;

                if (select count(*) from dbo.UFN_REVENUE_GETSOLICITORS_2_FROMITEMLISTXML(@SOLICITORS)) > 0
                begin
                    set @SOLICITORS = dbo.UFN_REVENUESOLICITOR_CONVERTAMOUNTSINXML(@SOLICITORS, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID);
                    exec dbo.USP_REVENUE_GETSOLICITORS_2_ADDFROMXML @ID, @SOLICITORS, @CHANGEAGENTID;
                end

                exec dbo.USP_REVENUECATEGORY_ADDEDIT @ID, @CATEGORYCODEID, @CHANGEAGENTID;