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;