USP_DATAFORMTEMPLATE_ADD_REVENUETRIBUTE

The save procedure used by the add dataform template "Revenue Tribute Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@REVENUEID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@TRIBUTEID uniqueidentifier IN Tribute
@AMOUNT money IN Amount
@DESIGNATIONID uniqueidentifier IN Default designation
@APPLYDEFAULTDESIGNATION bit IN Apply default designation to revenue
@ISTRIBUTEANONYMOUS bit IN Do not display on website

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_REVENUETRIBUTE
                    (
                        @ID uniqueidentifier = null output,
                        @REVENUEID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @TRIBUTEID uniqueidentifier,
                        @AMOUNT money,
                        @DESIGNATIONID uniqueidentifier = null,
                        @APPLYDEFAULTDESIGNATION bit = 0,
                        @ISTRIBUTEANONYMOUS bit = 0
                    )
                    as

                    set nocount on;

                    declare @CURRENTDATE datetime;

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

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

                    set @CURRENTDATE = getdate();

                    declare @ORGANIZATIONAMOUNT money;
                    declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                    declare @BASECURRENCYID uniqueidentifier;

                    select @BASECURRENCYID = BASECURRENCYID from REVENUE where REVENUE.ID = @REVENUEID

                    exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @CURRENTDATE, @BASECURRENCYID, null, null, null, null, @ORGANIZATIONAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 1;

                    begin try

                        if dbo.UFN_REVENUETRIBUTE_VALIDAMOUNT(@ID, @REVENUEID, @AMOUNT) = 0
                            raiserror('The sum of the tribute amounts cannot be greater than the revenue amount.', 13, 1)

                        insert into dbo.REVENUETRIBUTE
                            (ID, REVENUEID, TRIBUTEID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID, ISTRIBUTEANONYMOUS)
                        values
                            (@ID, @REVENUEID, @TRIBUTEID, @AMOUNT, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @BASECURRENCYID, @ORGANIZATIONAMOUNT, @ORGANIZATIONEXCHANGERATEID, @ISTRIBUTEANONYMOUS);

            if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
            begin
              exec dbo.USP_REVENUETRIBUTETAXCLAIMAMOUNT_ADDUPDATE @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
            end

                        insert into dbo.REVENUETRIBUTELETTER(ID,REVENUETRIBUTEID,CONSTITUENTID,TRIBUTELETTERCODEID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                            select newid(),@ID,TA.CONSTITUENTID,TA.TRIBUTELETTERCODEID,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                            from dbo.REVENUETRIBUTE RT
                            inner join dbo.TRIBUTEACKNOWLEDGEE TA on RT.TRIBUTEID = TA.TRIBUTEID
                            where TA.TRIBUTELETTERCODEID is not null and
                            RT.ID not in (select RTL.REVENUETRIBUTEID from dbo.REVENUETRIBUTELETTER RTL) and
                            RT.REVENUEID = @REVENUEID;

                        if (@APPLYDEFAULTDESIGNATION = 1) and (@DESIGNATIONID is not null)
                        begin

                            --Cache CONTEXT INFO

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

                            if not @CHANGEAGENTID is null
                                set CONTEXT_INFO @CHANGEAGENTID;

                            declare @REVENUEBASEAMOUNT money;
                            declare @REVENUEBASECURRENCYID uniqueidentifier;
                            declare @REVENUEBASEEXCHANGERATEID uniqueidentifier;
                            declare @REVENUEORGANIZATIONAMOUNT money;
                            declare @REVENUETRANSACTIONAMOUNT money;
                            declare @REVENUETRANSACTIONCURRENCYID uniqueidentifier;
                            declare @REVENUEORGANIZATIONEXCHANGERATEID uniqueidentifier;

                            select
                                @REVENUEBASEAMOUNT = AMOUNT,
                                @REVENUEBASECURRENCYID = BASECURRENCYID,
                                @REVENUEBASEEXCHANGERATEID = BASEEXCHANGERATEID,
                                @REVENUEORGANIZATIONAMOUNT = ORGANIZATIONAMOUNT,
                                @REVENUETRANSACTIONAMOUNT = TRANSACTIONAMOUNT,
                                @REVENUETRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
                                @REVENUEORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
                            from
                                dbo.REVENUE
                            where
                                ID = @REVENUEID;

                            delete from dbo.REVENUESPLIT where REVENUEID = @REVENUEID;

                            insert into dbo.REVENUESPLIT(ID,REVENUEID,DESIGNATIONID,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED, BASECURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID)
                                values(newid(),@REVENUEID,@DESIGNATIONID,@REVENUEBASEAMOUNT,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE, @REVENUEBASECURRENCYID, @REVENUEBASEEXCHANGERATEID, @REVENUEORGANIZATIONAMOUNT, @REVENUEORGANIZATIONEXCHANGERATEID, @REVENUETRANSACTIONAMOUNT, @REVENUETRANSACTIONCURRENCYID);

                            --Reset installments if needed;

                            delete from dbo.INSTALLMENTSPLIT where PLEDGEID = @REVENUEID;
                            exec dbo.USP_PLEDGE_GENERATEINSTALLMENTSPLITS @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;

                            -- Add new GL distributions

                            if exists(select top 1 ID from dbo.REVENUE where ID = @REVENUEID and DONOTPOST = 0)
                            begin
                                -- Clear GL

                                delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
                                --reload GL

                                exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
                            end

                            --Restore CONTEXT INFO 

                            if not @contextCache is null
                                set CONTEXT_INFO @contextCache

                        end
                    end try

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

                    return 0;