USP_DATAFORMTEMPLATE_ADD_BANKACCOUNTDEPOSITCORRECTION

The save procedure used by the add dataform template "Bank Account Deposit Correction Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@DATE datetime IN Date
@REFERENCE nvarchar(100) IN Reference
@PAYMENTMETHODCODE tinyint IN Method
@AMOUNT money IN Amount
@DEPOSITID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CORRECTIONTYPECODE tinyint IN Correction type
@PDACCOUNTSYSTEMID uniqueidentifier IN Account System
@BASEEXCHANGERATEID uniqueidentifier IN Exchange rate ID
@BASEEXCHANGERATE decimal(20, 8) IN Exchange rate

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_BANKACCOUNTDEPOSITCORRECTION
                    (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,    
                        @DATE datetime = null,
                        @REFERENCE nvarchar(100) = '',
                        @PAYMENTMETHODCODE tinyint = 0,
                        @AMOUNT money = null,
                        @DEPOSITID uniqueidentifier,
                        @CORRECTIONTYPECODE tinyint = 0,
                        @PDACCOUNTSYSTEMID uniqueidentifier = null,
                        @BASEEXCHANGERATEID uniqueidentifier = null,
                        @BASEEXCHANGERATE decimal(20,8) = null            
                    )
                    as
                        set nocount on;

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

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

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

                            declare @TRANSACTIONCURRENCYID uniqueidentifier;
                            declare @BASECURRENCYID uniqueidentifier;
                            declare @BASEAMOUNT money;
                            declare @ORGAMOUNT money;
                            declare @ORGEXCHANGERATEID uniqueidentifier;
                            declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                            declare @POSTSTATUSCODE tinyint;

                            select 
                                @TRANSACTIONCURRENCYID = D.TRANSACTIONCURRENCYID
                                ,@BASECURRENCYID = BAT.BASECURRENCYID
                                ,@POSTSTATUSCODE = BAT.POSTSTATUSCODE
                            from dbo.BANKACCOUNTDEPOSIT D
                            inner join dbo.BANKACCOUNTTRANSACTION BAT on D.ID = BAT.ID
                            where D.ID = @DEPOSITID;

                        if @TRANSACTIONCURRENCYID = @BASECURRENCYID
                            exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @DATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEAMOUNT output, @ORGANIZATIONCURRENCYID output, @ORGAMOUNT output, @ORGEXCHANGERATEID output, 0;
                        else
                            --Add a spot exchange rate if an existing rate hasn't
                            --been selected, the base and transaction currencies are different, and the rate
                            --entered isn't zero (which indicates that the user wants to enter the record without a rate).
                            if @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
                            begin
                                set @BASEEXCHANGERATEID = newid()

                                insert into dbo.CURRENCYEXCHANGERATE(
                                    ID, 
                                    FROMCURRENCYID,
                                    TOCURRENCYID,
                                    RATE,
                                    ASOFDATE,
                                    TYPECODE,
                                    SOURCECODEID,
                                    ADDEDBYID, 
                                    CHANGEDBYID, 
                                    DATEADDED, 
                                    DATECHANGED
                                )
                                values(
                                    @BASEEXCHANGERATEID,
                                    @TRANSACTIONCURRENCYID,
                                    @BASECURRENCYID,
                                    @BASEEXCHANGERATE,
                                    @DATE,
                                    2,
                                    null,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );
                            end

                            declare @ORGAMOUNTORIGINCODE tinyint;
                            declare @ORGCURRENCYID uniqueidentifier;
                            declare @ORGCURRENCYNAME nvarchar(100);
                            select @ORGAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE from dbo.MULTICURRENCYCONFIGURATION;
                            select @ORGCURRENCYID = ID, @ORGCURRENCYNAME = NAME from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1;

                            exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @DATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEAMOUNT output, @ORGCURRENCYID output, @ORGAMOUNT output, @ORGEXCHANGERATEID output, 1;
                            if (@ORGAMOUNTORIGINCODE = 1 and @TRANSACTIONCURRENCYID <> @ORGCURRENCYID) or (@ORGAMOUNTORIGINCODE = 0 and @BASECURRENCYID <> @ORGCURRENCYID)
                                if @ORGEXCHANGERATEID is null
                                begin
                                    declare @CURRENCYNAME nvarchar(100);
                                    select @CURRENCYNAME = NAME from dbo.CURRENCY where (ID = @TRANSACTIONCURRENCYID and @ORGAMOUNTORIGINCODE = 1) or (ID = @BASECURRENCYID and @ORGAMOUNTORIGINCODE = 0)
                                    declare @errormessage nvarchar(200);
                                    set @errormessage = 'A corporate exchange rate does not exist for ' + @CURRENCYNAME + ' to ' + @ORGCURRENCYNAME
                                    raiserror (@errormessage, 16, 1);
                                end

                            insert into dbo.BANKACCOUNTDEPOSITCORRECTION
                                (ID
                                ,DATE
                                ,REFERENCE
                                ,PAYMENTMETHODCODE
                                ,AMOUNT
                                ,DEPOSITID
                                ,CORRECTIONTYPECODE
                                ,TRANSACTIONAMOUNT
                                ,ORGANIZATIONAMOUNT
                                ,BASECURRENCYID
                                ,BASEEXCHANGERATEID
                                ,ORGANIZATIONEXCHANGERATEID
                                ,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values 
                                (@ID
                                ,@DATE
                                ,@REFERENCE
                                ,@PAYMENTMETHODCODE
                                ,@BASEAMOUNT
                                ,@DEPOSITID
                                ,@CORRECTIONTYPECODE
                                ,@AMOUNT
                                ,@ORGAMOUNT
                                ,@BASECURRENCYID
                                ,@BASEEXCHANGERATEID
                                ,@ORGEXCHANGERATEID
                                ,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                        

                            if @POSTSTATUSCODE = 1
                            begin
                                set @PDACCOUNTSYSTEMID = (select PDACCOUNTSYSTEMID from dbo.BANKACCOUNT where ID = dbo.UFN_BANKACCOUNTTRANSACTION_GETSYSTEMID(@DEPOSITID));
                                exec dbo.USP_BANKACCOUNTDEPOSITCORRECTION_CREATEDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE, @PDACCOUNTSYSTEMID;
                            end 
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch
                        return 0;