TR_BANKACCOUNTTRANSACTION_POSTDATE_CLOSEDFISCALPERIOD

Definition

Copy


CREATE trigger [dbo].[TR_BANKACCOUNTTRANSACTION_POSTDATE_CLOSEDFISCALPERIOD] on dbo.BANKACCOUNTTRANSACTION for INSERT, UPDATE not for replication as
begin
    set nocount on;

    if (select COUNT(*) from INSERTED where POSTSTATUSCODE = 1 and POSTDATE is not null) > 0
    begin
        if not exists(
            select P.ID
            from INSERTED I
            inner join dbo.GLFISCALPERIOD P on CAST(I.POSTDATE as date) <= P.ENDDATE and CAST(I.POSTDATE as date) >= P.STARTDATE and P.CLOSED = 0
            where I.POSTSTATUSCODE = 1)
        begin
            RAISERROR ('ERR_POSTDATE_CLOSEDFISCALPERIOD',  16, 1)
            ROLLBACK
        end
    end

    if exists(select BAT.ID from dbo.BANKACCOUNTTRANSACTION BAT
            inner join INSERTED I on I.BANKACCOUNTID = BAT.BANKACCOUNTID and I.TRANSACTIONTYPECODE = BAT.TRANSACTIONTYPECODE 
                and I.TRANSACTIONNUMBER = BAT.TRANSACTIONNUMBER and I.ID != BAT.ID
            where BAT.DELETED = 0)
        begin
            raiserror('UIX_BANKACCOUNTTRANSACTION_BANKACCOUNTID_TRANSACTIONTYPECODE_TRANSACTIONNUMBER', 16, 1)
            rollback transaction
        end
end