USP_DATAFORMTEMPLATE_EDIT_PLEDGEORIGINALAMOUNT

The save procedure used by the edit dataform template "Pledge Original Amount Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@ORIGINALAMOUNT money IN Original pledge amount

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PLEDGEORIGINALAMOUNT (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @ORIGINALAMOUNT money
)
as

    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        --Multicurrency - RobertDi 4/15/10 - Convert @ORIGINALAMOUNT (in transaction currency) to base and org currency.                
        declare @TRANSACTIONCURRENCYID uniqueidentifier;
        declare @BASECURRENCYID uniqueidentifier;
        declare @BASEEXCHANGERATEID uniqueidentifier;
        declare @BASEAMOUNT money;
        declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
        declare @ORGANIZATIONAMOUNT money;

        select
            @TRANSACTIONCURRENCYID = coalesce(PLEDGEORIGINALAMOUNT.TRANSACTIONCURRENCYID, FINANCIALTRANSACTION.TRANSACTIONCURRENCYID),
            @BASECURRENCYID = coalesce(PLEDGEORIGINALAMOUNT.BASECURRENCYID, CURRENCYSET.BASECURRENCYID),
            @BASEEXCHANGERATEID = coalesce(PLEDGEORIGINALAMOUNT.BASEEXCHANGERATEID, FINANCIALTRANSACTION.BASEEXCHANGERATEID),
            @ORGANIZATIONEXCHANGERATEID = coalesce(PLEDGEORIGINALAMOUNT.ORGANIZATIONEXCHANGERATEID, FINANCIALTRANSACTION.ORGEXCHANGERATEID)
        from dbo.FINANCIALTRANSACTION
        inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
        inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID         
        left join dbo.PLEDGEORIGINALAMOUNT on PLEDGEORIGINALAMOUNT.ID = FINANCIALTRANSACTION.ID
        where 
            FINANCIALTRANSACTION.ID = @ID

        -- This section taken from UFN_CURRENCY_GETCURRENCYVALUES and modified to keep the old
        -- transaction currency and organization exchange rate the same.
        -- Note that we don't want these to update to new data;  we're changing an amount
        -- that lies in the past, not updating an amount from the past to be an amount from the present.
        -- ***



        declare @ORGANIZATIONCURRENCYID uniqueidentifier;
        declare @BASEAMOUNTISVALID bit;

        set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
        set @BASEAMOUNTISVALID = 1;

        if @TRANSACTIONCURRENCYID = @BASECURRENCYID
            set @BASEAMOUNT = @ORIGINALAMOUNT;
        else if @BASEEXCHANGERATEID is null
        begin
            set @BASEAMOUNT = 0;
            set @BASEAMOUNTISVALID = 0;
        end
        else
            set @BASEAMOUNT = dbo.UFN_CURRENCY_CONVERT(@ORIGINALAMOUNT, @BASEEXCHANGERATEID);

        if (@BASEAMOUNTISVALID = 0)
            set @ORGANIZATIONAMOUNT = 0;
        else
        begin
            declare @ORGANIZATIONAMOUNTORIGINCODE tinyint;
            select top 1
                @ORGANIZATIONAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE
            from
                dbo.MULTICURRENCYCONFIGURATION;

            if (@BASECURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 0)
                set @ORGANIZATIONAMOUNT = @BASEAMOUNT;
            else if (@TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 1)
                set @ORGANIZATIONAMOUNT = @ORIGINALAMOUNT;
            else
            begin
                set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASEAMOUNT, @ORGANIZATIONEXCHANGERATEID, @ORIGINALAMOUNT);
            end
        end        


        -- ***

        update dbo.PLEDGEORIGINALAMOUNT set
            TRANSACTIONAMOUNT = @ORIGINALAMOUNT,
            ORIGINALAMOUNT = @BASEAMOUNT,
            ORGANIZATIONAMOUNT = @ORGANIZATIONAMOUNT,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID

        if @@ROWCOUNT = 0
            insert into dbo.PLEDGEORIGINALAMOUNT
            (
                ID,
                ORIGINALAMOUNT,
                TRANSACTIONAMOUNT,
                ORGANIZATIONAMOUNT,
                BASECURRENCYID,
                ORGANIZATIONEXCHANGERATEID,
                TRANSACTIONCURRENCYID,
                BASEEXCHANGERATEID,
                DATEADDED,
                DATECHANGED,
                ADDEDBYID,
                CHANGEDBYID
            )
            values
            (
                @ID,
                @BASEAMOUNT,
                @ORIGINALAMOUNT,
                @ORGANIZATIONAMOUNT,
                @BASECURRENCYID,
                @ORGANIZATIONEXCHANGERATEID,
                @TRANSACTIONCURRENCYID,
                @BASEEXCHANGERATEID,
                @CURRENTDATE,
                @CURRENTDATE,
                @CHANGEAGENTID,
                @CHANGEAGENTID                                    
            )
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;