TR_BANKACCOUNT_GLACCOUNTIDPDACCOUNTSEGMENTID_VALIDREQUIRED
Definition
Copy
CREATE trigger dbo.TR_BANKACCOUNT_GLACCOUNTIDPDACCOUNTSEGMENTID_VALIDREQUIRED on BANKACCOUNT for INSERT, UPDATE not for replication as
begin
set nocount on;
if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('0E85C527-E6E9-4C5F-A8E8-105FD0E18FE7') = 1
begin
-- Check new GL business rule to turn off general ledger functionality...if
-- general ledger functionality is turned off allow a bank account to be
-- saved without any cash account information.
if exists(select I.ID from inserted I
where I.GLACCOUNTID is null and I.DEFAULTCASHACCOUNTTYPECODE = 0 and I.STATUSCODE = 1
and dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(I.PDACCOUNTSYSTEMID) = 1)
begin
raiserror('CK_BANKACCOUNT_GLACCOUNTID', 16, 1);
rollback;
end
if exists(select I.ID from inserted I
where I.PDACCOUNTSEGMENTVALUEID is null and I.DEFAULTCASHACCOUNTTYPECODE = 1 and I.STATUSCODE = 1
and dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(I.PDACCOUNTSYSTEMID) = 1)
begin
raiserror('CK_BANKACCOUNT_PDACCOUNTSEGMENTVALUEID', 16, 1);
rollback;
end
if exists(select I.ID from inserted I
inner join deleted D on I.ID = D.ID
inner join dbo.BANKACCOUNTTRANSACTION BAT on BAT.BANKACCOUNTID = I.ID
left outer join dbo.BANKACCOUNTADJUSTMENT A on A.ID = BAT.ID
left outer join dbo.BANKACCOUNTTRANSACTION BAT1 on BAT.ID = A.TRANSFERADJUSTMENTID
where ((I.DEFAULTCASHACCOUNTTYPECODE = 0 and isnull(D.GLACCOUNTID, NEWID()) != isnull(I.GLACCOUNTID, NEWID()))
or (I.DEFAULTCASHACCOUNTTYPECODE = 1 and isnull(D.PDACCOUNTSEGMENTVALUEID, NEWID()) != isnull(I.PDACCOUNTSEGMENTVALUEID, NEWID())))
and (BAT.POSTSTATUSCODE = 1 or isnull(BAT1.POSTSTATUSCODE, 0) = 1) and I.STATUSCODE = 1)
begin
raiserror('ERR_BANKACCOUNT_CANNOTCHANGECASHACCOUNT', 16, 1);
rollback;
end
end
end