USP_DATAFORMTEMPLATE_EDIT_MKTMATERIALBASECURRENCY

The save procedure used by the edit dataform template "Material Base Currency 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.
@BASECURRENCYID uniqueidentifier IN Base currency

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MKTMATERIALBASECURRENCY (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @BASECURRENCYID uniqueidentifier
                    )
                    as

                        set nocount on;

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

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

                        begin try
                            declare @OLDBASECURRENCYID uniqueidentifier;
                            select 
                                @OLDBASECURRENCYID = [BASECURRENCYID]
                            from 
                                dbo.[MKTMATERIAL]
                            where
                                [ID] = @ID;

                            --If the user saves without changing the base currency, don't update org amounts.

                            if @OLDBASECURRENCYID <> @BASECURRENCYID
                            begin
                                declare @ORGCURRENCYID uniqueidentifier = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();

                                --If the new base currency is the org currency, org amount equals amount, so don't bother getting

                                --    an exchange rate or doing a conversion.

                                if @BASECURRENCYID = @ORGCURRENCYID
                                begin

                                update dbo.[MKTMATERIAL] set
                                    [BASECURRENCYID] = @BASECURRENCYID,
                                    [CHANGEDBYID] = @CHANGEAGENTID,
                                    [DATECHANGED] = @CURRENTDATE
                                where [ID] = @ID;

                                end
                                else --Base currency has changed and isn't the org currency

                                begin
                                    declare @DATEADDED datetime;
                                    select
                                        @DATEADDED = [DATEADDED]
                                    from 
                                        dbo.[MKTMATERIAL]
                                    where 
                                         [ID] = @ID;

                                    declare @CURRENCYEXCHANGERATEID uniqueidentifier = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY](), @DATEADDED, 0, null);

                                    update dbo.[MKTMATERIAL]
                                    set
                    [BASECURRENCYID] = @BASECURRENCYID,
                                        [ORGANIZATIONCOST] = dbo.[UFN_CURRENCY_CONVERT]([COST], @CURRENCYEXCHANGERATEID),
                                        [CURRENCYEXCHANGERATEID] = @CURRENCYEXCHANGERATEID,
                                        [CHANGEDBYID] = @CHANGEAGENTID,
                                        [DATECHANGED] = @CURRENTDATE
                                    where
                                        [ID] = @ID;

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

                        return 0;