SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBNFE_PARCELAMENTO00IU FOR TBNFE_PARCELAMENTO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE CLASSIFICACAO_NF VARCHAR(20);
BEGIN

    SELECT FIRST 1
        T.CLASSIFICACAO
    FROM TBNFE T
    WHERE T.CONTROLE = NEW.NFE_CONTROLE
    INTO :CLASSIFICACAO_NF;

    IF(CHAR_LENGTH(:CLASSIFICACAO_NF) > 0)THEN
    BEGIN
        NEW.CLASSIFICACAO = TRIM(:CLASSIFICACAO_NF);
    END

    IF (INSERTING) THEN
        BEGIN
        IF (EXTRACT(WEEKDAY FROM NEW.DATA_VENCIMENTO) IN (6, 0)) THEN
            BEGIN
            IF (FN_PARAMETRO('SISTEMA.PRORROGA_VENCIMENTO_NFE')='1') THEN
                BEGIN
                IF (EXTRACT(WEEKDAY FROM NEW.DATA_VENCIMENTO) = 0) THEN -- DOMINGO
                    NEW.DATA_VENCIMENTO = NEW.DATA_VENCIMENTO + 1;
                IF (EXTRACT(WEEKDAY FROM NEW.DATA_VENCIMENTO) = 6) THEN -- SABADO
                    NEW.DATA_VENCIMENTO = NEW.DATA_VENCIMENTO + 2;
                END
            END
        END

    IF(NEW.DATA_VENCIMENTO_ORIGINAL IS NULL)THEN
    BEGIN
       NEW.DATA_VENCIMENTO_ORIGINAL = NEW.DATA_VENCIMENTO;
    END     

    IF(NEW.DATA_COMPETENCIA IS NULL)THEN
    BEGIN
       NEW.DATA_COMPETENCIA = NEW.DATA_ENTRADA;
    END

    IF(NEW.AVULSO = 1 OR NEW.NF_NATUREZA = 2) THEN
    BEGIN
       NEW.SITUACAO_NF = 2;
    END

    IF(COALESCE(NEW.AVULSO,0) <> 1 AND NEW.SITUACAO_NF IS NULL AND NEW.NFE_CONTROLE > 0)THEN
    BEGIN
       NEW.SITUACAO_NF = (SELECT FIRST 1 NFE.SITUACAO FROM TBNFE NFE WHERE NFE.CONTROLE = NEW.NFE_CONTROLE);
    END

END^

SET TERM ; ^

