ALTER TRIGGER TTBNFS_TOTAIS_B1IU_01 INACTIVE;

CREATE OR ALTER trigger ttbnfs_totais_b03iu for tbnfs_totais
active before insert or update position 3
AS
BEGIN

    IF(NEW.BASECALCULO_ICMS IS NULL)                      THEN NEW.BASECALCULO_ICMS = 0;
    IF(NEW.BASECALCULO_ICMS_SUBST IS NULL)                THEN NEW.BASECALCULO_ICMS_SUBST = 0;
    IF(NEW.VALOR_ICMS IS NULL)                            THEN NEW.VALOR_ICMS = 0;
    IF(NEW.VALOR_ICMS_SUBST IS NULL)                      THEN NEW.VALOR_ICMS_SUBST = 0;
    IF(NEW.VALOR_IPI IS NULL)                             THEN NEW.VALOR_IPI = 0;
    IF(NEW.VALOR_ISSQN IS NULL)                           THEN NEW.VALOR_ISSQN = 0;
    IF(NEW.VALOR_FRETE IS NULL)                           THEN NEW.VALOR_FRETE = 0;
    IF(NEW.VALOR_SEGURO IS NULL)                          THEN NEW.VALOR_SEGURO = 0;
    IF(NEW.VALOR_PIS IS NULL)                             THEN NEW.VALOR_PIS = 0;
    IF(NEW.VALOR_COFINS IS NULL)                          THEN NEW.VALOR_COFINS = 0;
    IF(NEW.VALOR_CSLL IS NULL)                            THEN NEW.VALOR_CSLL = 0;
    IF(NEW.VALOR_DESCONTO IS NULL)                        THEN NEW.VALOR_DESCONTO = 0;
    IF(NEW.VALOR_ACRESCIMO IS NULL)                       THEN NEW.VALOR_ACRESCIMO = 0;
    IF(NEW.VALOR_OUTROSCUSTOS IS NULL)                    THEN NEW.VALOR_OUTROSCUSTOS = 0;
    IF(NEW.VALOR_TOTAL_PRODUTO IS NULL)                   THEN NEW.VALOR_TOTAL_PRODUTO = 0;
    IF(NEW.VALOR_TOTAL_NF IS NULL)                        THEN NEW.VALOR_TOTAL_NF = 0;
    IF(NEW.RETENCAO_VALOR_PIS IS NULL)                    THEN NEW.RETENCAO_VALOR_PIS = 0;
    IF(NEW.RETENCAO_VALOR_COFINS IS NULL)                 THEN NEW.RETENCAO_VALOR_COFINS = 0;
    IF(NEW.RETENCAO_VALOR_INSS IS NULL)                   THEN NEW.RETENCAO_VALOR_INSS = 0;
    IF(NEW.RETENCAO_VALOR_ISSQN IS NULL)                  THEN NEW.RETENCAO_VALOR_ISSQN = 0;
    IF(NEW.RETENCAO_VALOR_IRRF IS NULL)                   THEN NEW.RETENCAO_VALOR_IRRF = 0;
    IF(NEW.RETENCAO_VALOR_CSLL IS NULL)                   THEN NEW.RETENCAO_VALOR_CSLL = 0;
    IF(NEW.VALOR_PARCELAS IS NULL)                        THEN NEW.VALOR_PARCELAS = 0;
    IF(NEW.RETENCAO_BASE_CALCULO_IRRF IS NULL)            THEN NEW.RETENCAO_BASE_CALCULO_IRRF = 0;
    IF(NEW.RETENCAO_BASE_CALCULO_INSS IS NULL)            THEN NEW.RETENCAO_BASE_CALCULO_INSS = 0;
    IF(NEW.VALOR_CONTABIL IS NULL)                        THEN NEW.VALOR_CONTABIL = 0;
    IF(NEW.VALOR_ESTORNO IS NULL)                         THEN NEW.VALOR_ESTORNO = 0;


END;

DROP TRIGGER TBNFS_TOTAIS_B02IU;

CREATE OR ALTER trigger ttbnfs_totais_b02iu for tbnfs_totais
active before insert or update position 2
AS
BEGIN

  IF(NEW.BASECALCULO_ICMS < 0)                      THEN EXCEPTION "..." 'BASE CALC. ICMS TOTAL DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.BASECALCULO_ICMS_SUBST < 0)                THEN EXCEPTION "..." 'BASE CALC. ICMS ST TOTAL DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.VALOR_ICMS < 0)                            THEN EXCEPTION "..." 'VALOR ICMS TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_ICMS_SUBST < 0)                      THEN EXCEPTION "..." 'VALOR ICMS ST TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_IPI < 0)                             THEN EXCEPTION "..." 'VALOR IPI TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_ISSQN < 0)                           THEN EXCEPTION "..." 'VALOR ISSQN DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_FRETE < 0)                           THEN EXCEPTION "..." 'VALOR FRETE TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_SEGURO < 0)                          THEN EXCEPTION "..." 'VALOR SEGURO TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_PIS < 0)                             THEN EXCEPTION "..." 'VALOR PIS TOTAL DO DOCUMENTONAO PODE SER NEGATIVO';
  IF(NEW.VALOR_COFINS < 0)                          THEN EXCEPTION "..." 'VALOR COFINS TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_CSLL < 0)                            THEN EXCEPTION "..." 'VALOR CSLL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_DESCONTO < 0)                        THEN EXCEPTION "..." 'VALOR DESCONTO TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_ACRESCIMO < 0)                       THEN EXCEPTION "..." 'VALOR ACRESCIMO TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_OUTROSCUSTOS < 0)                    THEN EXCEPTION "..." 'VALOR OUTROS CUSTOS TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_TOTAL_PRODUTO < 0)                   THEN EXCEPTION "..." 'VALOR TOTAL DOS PRODUTOS DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_TOTAL_NF < 0)                        THEN EXCEPTION "..." 'VALOR TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.RETENCAO_VALOR_PIS < 0)                    THEN EXCEPTION "..." 'RETENCAO VALOR PIS DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.RETENCAO_VALOR_COFINS < 0)                 THEN EXCEPTION "..." 'RETENCAO VALOR COFINS DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.RETENCAO_VALOR_INSS < 0)                   THEN EXCEPTION "..." 'RETENCAO VALOR INSS DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.RETENCAO_VALOR_ISSQN < 0)                  THEN EXCEPTION "..." 'RETENCAO VALOR ISSQN DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.RETENCAO_VALOR_IRRF < 0)                   THEN EXCEPTION "..." 'RETENCAO VALOR IRRF DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.RETENCAO_VALOR_CSLL < 0)                   THEN EXCEPTION "..." 'RETENCAO VALOR CSLL DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.VALOR_PARCELAS < 0)                        THEN EXCEPTION "..." 'VALOR DAS PARCELAS TOTAL DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.RETENCAO_BASE_CALCULO_IRRF < 0)            THEN EXCEPTION "..." 'RETENCAO BASE CALC. IRRF DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.RETENCAO_BASE_CALCULO_INSS < 0)            THEN EXCEPTION "..." 'RETENCAO BASE CALC. INSS DO DOCUMENTO NAO PODE SER NEGATIVA';
  IF(NEW.VALOR_CONTABIL < 0)                        THEN EXCEPTION "..." 'VALOR CONTABIL TOTAL DO DOCUMENTO NAO PODE SER NEGATIVO';
  IF(NEW.VALOR_ESTORNO < 0)                         THEN EXCEPTION "..." 'VALOR ESTORNO DO DOCUMENTO NAO PODE SER NEGATIVO';


END;

UPDATE TBNFS_TOTAIS T SET T.nfs_controle = T.nfs_controle
WHERE COALESCE(T.GC_WEB, 0) = 1;