USP_EVENTEXPENSE_COPY

Copies expenses from one event to another event.

Parameters

Parameter Parameter Type Mode Description
@SOURCEEVENTID uniqueidentifier IN
@DESTINATIONEVENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_EVENTEXPENSE_COPY
            (
                @SOURCEEVENTID uniqueidentifier,
                @DESTINATIONEVENTID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null,
                @CURRENTAPPUSERID uniqueidentifier = null
            )
            with execute as caller
            as
                set nocount on;

                -- Cannot copy if the source event does not exist

                if not exists (select ID from dbo.EVENT where ID = @SOURCEEVENTID)
                    raiserror('The source event specified does not exist.',13,1);

                declare @CURRENTDATE datetime;
                set @CURRENTDATE = getdate();

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

                declare @BASECURRENCYID uniqueidentifier;
                select @BASECURRENCYID = BASECURRENCYID
                from dbo.EVENT 
                where ID = @DESTINATIONEVENTID;

                if @BASECURRENCYID is null
                    set @BASECURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);

                declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                declare @ORGANIZATIONCURRENCYID uniqueidentifier;

                set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);

                insert into dbo.EVENTEXPENSE
                (
                    EVENTID,
                    EVENTEXPENSETYPECODEID,
                    BUDGETEDAMOUNT,
                    ORGANIZATIONBUDGETEDAMOUNT,
                    COMMENT,
                    VENDORID,
                    BASECURRENCYID, 
                    ORGANIZATIONEXCHANGERATEID,
                    ADDEDBYID,
                    CHANGEDBYID,
                    DATEADDED,
                    DATECHANGED
                )
                select
                    @DESTINATIONEVENTID,
                    EVENTEXPENSETYPECODEID,
                    ACTUALAMOUNT,
                    case when @ORGANIZATIONCURRENCYID = @BASECURRENCYID 
                         then ACTUALAMOUNT
                         else dbo.UFN_CURRENCY_CONVERT(ACTUALAMOUNT, @ORGANIZATIONEXCHANGERATEID)
                    end,
                    COMMENT,
                    VENDORID,
                    @BASECURRENCYID,
                    @ORGANIZATIONEXCHANGERATEID,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE
                from
                    dbo.EVENTEXPENSE
                where
                    EVENTID = @SOURCEEVENTID;

                return 0;