SET TERM ^ ;

CREATE trigger ttbnfs_parcelamento_b01u for tbnfs_parcelamento
active before update position 0
AS
DECLARE VARIABLE CHEQUE VARCHAR(500);
DECLARE VARIABLE CHEQUE_ITEM INTEGER;
BEGIN
    
    CHEQUE = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.NUMERO_CHEQUE FROM TBCHEQUE_ITEM A INNER JOIN TBCHEQUE B ON B.ID = A.CHEQUE_ID WHERE A.DOCUMENTO_ID = OLD.CONTROLE), '');
    CHEQUE_ITEM = COALESCE((SELECT FIRST 1 A.ID FROM TBCHEQUE_ITEM A WHERE A.DOCUMENTO_ID = OLD.CONTROLE), 0);

    IF((OLD.ESTABELECIMENTO_CODIGO <> NEW.ESTABELECIMENTO_CODIGO) OR (OLD.EMPRESA_CODIGO <> NEW.EMPRESA_CODIGO) OR (OLD.NUMERO_NOTAFISCAL <> NEW.NUMERO_NOTAFISCAL) OR (OLD.SERIE <> NEW.SERIE) OR (OLD.REPRESENTANTE_ID <> NEW.REPRESENTANTE_ID) OR (OLD.PAGAMENTO_FORMA <> NEW.PAGAMENTO_FORMA) OR (OLD.NFS_CONTROLE <> NEW.NFS_CONTROLE))THEN
    BEGIN
        IF(CHEQUE_ITEM > 0)THEN
        BEGIN
            exception "..." 'PARCELA: '||FN_LPAD(OLD.CONTROLE, 7, '0')||' VINCULADA AO CHEQUE: '||CHEQUE||', ALTERAÇÃO NÃO AUTORIZADA!';
        END
    END
END
^

SET TERM ; ^

COMMENT ON TRIGGER TTBNFS_PARCELAMENTO_B01U IS 'Bloqueia Alteração de Informações quando Parcela Vinculada a um Cheque';

SET TERM ^ ;

CREATE trigger ttbnfs_parcelamento_b01d for tbnfs_parcelamento
active before delete position 0
AS
DECLARE VARIABLE CHEQUE VARCHAR(500);
DECLARE VARIABLE CHEQUE_ITEM INTEGER;
BEGIN
    
    CHEQUE = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.NUMERO_CHEQUE FROM TBCHEQUE_ITEM A INNER JOIN TBCHEQUE B ON B.ID = A.CHEQUE_ID WHERE A.DOCUMENTO_ID = OLD.CONTROLE), '');
    CHEQUE_ITEM = COALESCE((SELECT FIRST 1 A.ID FROM TBCHEQUE_ITEM A WHERE A.DOCUMENTO_ID = OLD.CONTROLE), 0);

    IF(CHEQUE_ITEM > 0)THEN
    BEGIN
        exception "..." 'PARCELA: '||FN_LPAD(OLD.CONTROLE, 7, '0')||' VINCULADA AO CHEQUE: '||CHEQUE||', EXCLUSÃO NÃO AUTORIZADA!';
    END
END
^

SET TERM ; ^

COMMENT ON TRIGGER TTBNFS_PARCELAMENTO_B01D IS 'Bloqueia Exclusão de Parcelas quando Vinculada a um Cheque';

