SET TERM ^ ;

CREATE OR ALTER trigger ttbcheque_b01i for tbcheque
active before insert position 0
AS
DECLARE VARIABLE CHEQUE INTEGER;
BEGIN

    IF (NEW.TIPO = 'C') THEN
    BEGIN
        
        CHEQUE = COALESCE((SELECT FIRST 1 A.ID FROM TBCHEQUE A
                    WHERE A.BANCO_PAGAMENTO = NEW.BANCO_PAGAMENTO
                        AND TRIM(A.AGENCIA) = TRIM(NEW.AGENCIA)
                        AND TRIM(A.CONTA) = TRIM(NEW.CONTA)
                        AND A.NUMERO_CHEQUE = NEW.NUMERO_CHEQUE), 0);

        IF (CHEQUE > 0 AND COALESCE(NEW.PDV_ID, 0) = 0) THEN
        BEGIN
            exception "..." 'J?? EXISTE UM CHEQUE DO BANCO INFORMADO INCLU??DO COM ESTE N??MERO. INCLUS??O N??O AUTORIZADA! CHEQUE ID:'||FN_LPAD(CHEQUE, 4, '0')||', CHEQUE N??:'||NEW.NUMERO_CHEQUE||'.';
        END

    END

    

    IF (NEW.TIPO = 'D') THEN
    BEGIN
        
        CHEQUE = COALESCE((SELECT FIRST 1 A.ID FROM TBCHEQUE A
                    WHERE A.BANCO_ID        = NEW.BANCO_ID
                        AND TRIM(A.AGENCIA) = TRIM(NEW.AGENCIA)
                        AND TRIM(A.CONTA)   = TRIM(NEW.CONTA)
                        AND A.NUMERO_CHEQUE = NEW.NUMERO_CHEQUE), 0);

        IF (CHEQUE > 0 AND COALESCE(NEW.PDV_ID, 0) = 0) THEN
        BEGIN
            exception "..." 'J?? EXISTE UM CHEQUE DO BANCO INFORMADO INCLU??DO COM ESTE N??MERO. INCLUS??O N??O AUTORIZADA! CHEQUE ID:'||FN_LPAD(CHEQUE, 4, '0')||', CHEQUE N??:'||NEW.NUMERO_CHEQUE||'.';
        END

    END
    
    IF (NEW.ID IS NULL) THEN
        NEW.ID = GEN_ID(GTBCHEQUE, 1);
END
^

SET TERM ; ^

