USP_GIFT_ADDPAYMENT

Adds a payment of a gift.

Parameters

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

Definition

Copy


            CREATE procedure dbo.USP_GIFT_ADDPAYMENT
            (
                @REVENUEID uniqueidentifier,
                @AMOUNT money,
                @DESIGNATIONID uniqueidentifier,
                @OPPORTUNITYID uniqueidentifier,
                @CAMPAIGNS xml,
                @RECOGNITIONCREDITS xml,
                @SOLICITORS xml,
                @CATEGORYCODEID uniqueidentifier, 
                @CREATIONDATE datetime = null,
                @CHANGEAGENTID uniqueidentifier = null,
                @ID uniqueidentifier = null output,
                @REVENUETYPECODE tinyint = 0,
                @BASEAMOUNT money = null,
                @ORGANIZATIONAMOUNT money = null
            )
            as
                set nocount on;

                if @ID is null
                    set @ID = newid();

                if @REVENUETYPECODE is null
                    set @REVENUETYPECODE = 0;

                -- Get multicurrency values from the revenue.

                declare @TRANSACTIONCURRENCYID uniqueidentifier;
                declare @BASECURRENCYID uniqueidentifier;
                declare @BASEEXCHANGERATEID uniqueidentifier;
                declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                declare @DATE datetime;
                declare @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;                 
                declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                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;

                -- 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)

                    if exists (select 1 from dbo.REVENUESPLIT_EXT where ID = @ID)
                    begin
                        update dbo.REVENUESPLIT_EXT set 
                            DESIGNATIONID = @DESIGNATIONID
                            ,CHANGEDBYID = @CHANGEAGENTID
                            ,DATECHANGED = @CREATIONDATE
                        where
                            ID = @ID
                    end
                    else
                    begin
                        insert into dbo.REVENUESPLIT_EXT
                        (
                            ID
                            ,DESIGNATIONID
                            ,TYPECODE
                            ,APPLICATIONCODE
                            ,OVERRIDEBUSINESSUNITS
                            ,REVENUESPLITBUSINESSUNITOVERRIDECODEID
                            -- boilerplate

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

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

                if (@OPPORTUNITYID is not null) and (@OPPORTUNITYID <> '00000000-0000-0000-0000-000000000000')
                begin
                    insert into dbo.REVENUEOPPORTUNITY(ID, OPPORTUNITYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values(@ID, @OPPORTUNITYID, @CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE);
                end

                exec dbo.USP_OPPORTUNITY_UPDATEACCEPTEDSTATUS @OPPORTUNITYID, @DATE, @CHANGEAGENTID, @CREATIONDATE

                exec dbo.USP_REVENUESPLIT_GETCAMPAIGNS_ADDFROMXML @ID, @CAMPAIGNS, @CHANGEAGENTID;
                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, @BASETOORGANIZATIONEXCHANGERATEID);
                    exec dbo.USP_REVENUE_GETSOLICITORS_2_ADDFROMXML @ID, @SOLICITORS, @CHANGEAGENTID;
                end
                exec dbo.USP_REVENUECATEGORY_ADDEDIT @ID, @CATEGORYCODEID, @CHANGEAGENTID;

        /* Business units */
        exec dbo.USP_REVENUESPLIT_APPLYBUSINESSUNITS @REVENUEID, @CHANGEAGENTID, @CREATIONDATE;