SET TERM ^;

CREATE OR ALTER TRIGGER TTBNFS_B18U FOR TBNFS
ACTIVE BEFORE UPDATE POSITION 0
AS

DECLARE VARIABLE LIMITE NUMERIC(10,2);
DECLARE VARIABLE SALDO NUMERIC(10,2);
DECLARE VARIABLE BLOQUEIA_NF CHAR(1);
DECLARE VARIABLE QTD_PARCELAS INTEGER;

BEGIN
    IF(NEW.GC_WEB = 1) THEN
    BEGIN
        IF(OLD.SITUACAO = 1 AND NEW.SITUACAO = 2) THEN
        BEGIN
            SELECT COUNT(T.CONTROLE) FROM TBNFS_PARCELAMENTO T WHERE T.NFS_CONTROLE = NEW.CONTROLE INTO :QTD_PARCELAS;

            IF(QTD_PARCELAS > 0) THEN
            BEGIN
                SELECT TRIM(A.BLOQUEIA_NOTAFISCAL) FROM TBCLIENTE A WHERE A.CODIGO = NEW.EMPRESA_CODIGO INTO :BLOQUEIA_NF;

                IF(BLOQUEIA_NF = '1') THEN
                BEGIN
                   EXCEPTION "..." 'CLIENTE BLOQUEADO PARA EMISSAO DE NOVAS NOTAS FISCAIS. OPERACAO CANCELADA!';
                END /*ELSE
                    SELECT * FROM SPC_NFS_PARCELAMENTO_SALDO11(NEW.EMPRESA_CODIGO, NEW.CONTROLE) INTO :LIMITE, :SALDO;
                    IF(:LIMITE > 0) THEN
                    BEGIN
                        IF(:SALDO > :LIMITE) THEN
                        BEGIN
                            EXCEPTION "..." 'CLIENTE COM LIMITE DE CREDITO EXCEDIDO. OPERACAO CANCELADA! LIMITE: R$ '||:LIMITE||' SALDO R$ '||:SALDO;
                        END
                    END  */
            END

            IF(NEW.PDV_DEVOLUCAO_ID > 0)THEN
            BEGIN
               EXECUTE PROCEDURE SPUI_DEVOLUCAO_TROCA_NF(NEW.PDV_DEVOLUCAO_ID,COALESCE((SELECT FIRST 1 B.VALOR_TOTAL_NF FROM TBNFS_TOTAIS B WHERE B.NFS_CONTROLE = NEW.CONTROLE),0),2);
            END
        END

        IF(OLD.SITUACAO = 2 AND NEW.SITUACAO <> 2) THEN
        BEGIN
         IF(NEW.PDV_DEVOLUCAO_ID > 0)THEN
            BEGIN
               EXECUTE PROCEDURE SPUI_DEVOLUCAO_TROCA_NF(NEW.PDV_DEVOLUCAO_ID,COALESCE((SELECT FIRST 1 B.VALOR_TOTAL_NF FROM TBNFS_TOTAIS B WHERE B.NFS_CONTROLE = NEW.CONTROLE),0),1);
               
               IF(NEW.SITUACAO = 3)THEN
               BEGIN
                  IF(NEW.NATUREZA = 1)THEN
                  BEGIN
                    UPDATE TBPDV_DEVOLUCAO_TROCA A SET A.NFE_DEVOLUCAO = 0 WHERE A.ID = NEW.PDV_DEVOLUCAO_ID;
                  END                
                  IF(NEW.NATUREZA = 2)THEN
                  BEGIN
                    UPDATE TBPDV_DEVOLUCAO_TROCA A SET A.ROMANEIO_DEVOLUCAO = 0 WHERE A.ID = NEW.PDV_DEVOLUCAO_ID;
                  END
                  NEW.PDV_DEVOLUCAO_ID = 0;
               END
            END
        END

    END
END^

SET TERM ; ^