![]() |
---|
CREATE trigger dbo.TR_BANKACCOUNT_VALIDCURRENCY on BANKACCOUNT for INSERT, UPDATE not for replication as begin set nocount on; if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('97D98E59-5B0B-446F-BF48-DE8709F50AFE') = 1 begin --validate that the currency is in the currency set of the account system declare @DEFAULTCURRENCY uniqueidentifier; select @DEFAULTCURRENCY = ID from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1; if (select count(ID) from inserted) > 0 and (not exists(select I.ID from INSERTED I inner join dbo.PDACCOUNTSYSTEM S on S.ID = I.PDACCOUNTSYSTEMID inner join dbo.CURRENCYSETTRANSACTIONCURRENCY C on C.CURRENCYSETID = S.CURRENCYSETID where C.CURRENCYID = I.TRANSACTIONCURRENCYID or I.TRANSACTIONCURRENCYID is null or I.TRANSACTIONCURRENCYID = @DEFAULTCURRENCY)) BEGIN RAISERROR('ERR_BANKACCOUNT_TRANSACTIONCURRENCYID_NOTINCURRENCYSET', 16, 1) ROLLBACK TRANSACTION END --Do not allow to change transaction currency once transactions have been added to bank account if exists(select I.ID from inserted I inner join deleted D on D.ID = I.ID inner join dbo.BANKACCOUNTTRANSACTION BAT on I.ID = BAT.BANKACCOUNTID where ((not D.TRANSACTIONCURRENCYID is null) and I.TRANSACTIONCURRENCYID <> D.TRANSACTIONCURRENCYID) or I.TRANSACTIONCURRENCYID is null) BEGIN RAISERROR('ERR_BANKACCOUNT_TRANSACTIONCURRENCYIDCANNOTBECHANGED', 16, 1) ROLLBACK TRANSACTION END end end |