USP_ORGANIZATIONCURRENCY_EDIT

Saves organization currency changes.

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN
@ORGANIZATIONCURRENCYID uniqueidentifier IN
@DEFAULTCURRENCYSETID uniqueidentifier IN

Definition

Copy


create procedure dbo.USP_ORGANIZATIONCURRENCY_EDIT
(
    @CHANGEAGENTID uniqueidentifier = null,
    @ORGANIZATIONCURRENCYID uniqueidentifier,
    @DEFAULTCURRENCYSETID uniqueidentifier
)
with execute as caller
as
    set nocount on;

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

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

    begin try

        -- ORGANIZATIONCURRENCYID is required. Enforced at the web server level, but not at

        -- the table level so also enforce it here

        if @ORGANIZATIONCURRENCYID is null
            begin
                raiserror('BB_ERR_ORGANIZATIONCURRENCYREQUIRED : An organization currency is required.', 13, 1);
                return 1;
            end

        -- DEFAULTCURRENCYSETID is required. Enforced at the web server level, but not at

        -- the table level so also enforce it here

        if @DEFAULTCURRENCYSETID is null
            begin
                raiserror('BB_ERR_DEFAULTCURRENCYSETREQUIRED : A default currency set is required.', 13, 1);
                return 1;
            end


        -- the organization currency cannot be changed

        declare @OLDORGANIZATIONCURRENCY uniqueidentifier;
        select 
            @OLDORGANIZATIONCURRENCY = CURRENCY.ID
        from
            dbo.CURRENCY
        where
            CURRENCY.ISORGANIZATIONCURRENCY = 1;

        if (@OLDORGANIZATIONCURRENCY is not null) and (@OLDORGANIZATIONCURRENCY <> @ORGANIZATIONCURRENCYID)
            begin
                raiserror('BB_ERR_ORGANIZATIONCURRENCYCANNOTCHANGE : The organization currency cannot be changed once it has been set.', 13, 1);
                return 1;
            end

        update dbo.CURRENCY set
            ISORGANIZATIONCURRENCY = 1,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where
            ID = @ORGANIZATIONCURRENCYID;


        -- don't change the row if the same currency set was chosen

        declare @OLDDEFAULTCURRENCYSETID uniqueidentifier;
        select 
            @OLDDEFAULTCURRENCYSETID = CURRENCYSET.ID
        from
            dbo.CURRENCYSET
        where
            CURRENCYSET.ISAPPUSERDEFAULT = 1;

        if (@OLDDEFAULTCURRENCYSETID is null) or (@OLDDEFAULTCURRENCYSETID <> @DEFAULTCURRENCYSETID)
            begin            
                update dbo.CURRENCYSET set
                    ISAPPUSERDEFAULT = 0,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where
                    ISAPPUSERDEFAULT = 1;

                update dbo.CURRENCYSET set
                    ISAPPUSERDEFAULT = 1,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where
                    ID = @DEFAULTCURRENCYSETID;
            end

        exec dbo.USP_CONDITIONSETTING_SETCONDITION
            @NAME = N'Multicurrency',
            @CHANGEAGENTID = @CHANGEAGENTID,
            @CURRENTDATE = @CURRENTDATE;

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

    return 0;