CREATE OR REPLACE TRIGGER TRGCARGA_FORNECEDOR_END
AFTER INSERT OR UPDATE OR DELETE ON ENDEFORN FOR EACH ROW
DECLARE
   V_NMCIDADE VARCHAR2(50);
BEGIN
   IF INSERTING THEN
      BEGIN
         SELECT NMMUNICIPIO
         INTO V_NMCIDADE
         FROM MUNICIPIO
         WHERE CDPAIS      = :NEW.CDPAIS   AND
               SGESTADO    = :NEW.SGESTADO AND
               CDMUNICIPIO = :NEW.CDMUNICIPIO;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN V_NMCIDADE := NULL;
      END;

      IF NVL(:NEW.IDTPENDEFORN, 'P') = 'P' THEN
         UPDATE USR_CARGA_FORNECEDOR
         SET TX_CONTATO  = :NEW.NMCONTFORN,
             TX_EMAIL    = :NEW.DSEMAILFORN,
             TX_ENDERECO = :NEW.DSENDEFORN,
             TX_BAIRRO   = :NEW.NMBAIRFORN,
             TX_CIDADE   = V_NMCIDADE,
             TX_UF       = :NEW.SGESTADO,
             TX_CEP      = SUBSTR(REPLACE(:NEW.NRCEPFORN, '.', ''), 1, 9)
         WHERE TX_CGC = SUBSTR(:NEW.CDFORNECED, 2, 20);
      END IF;
   ELSIF UPDATING THEN
      IF NVL(:OLD.IDTPENDEFORN, 'P') = 'P' THEN
         BEGIN
            SELECT NMMUNICIPIO
            INTO V_NMCIDADE
            FROM MUNICIPIO
            WHERE CDPAIS      = :NEW.CDPAIS   AND
                  SGESTADO    = :NEW.SGESTADO AND
                  CDMUNICIPIO = :NEW.CDMUNICIPIO;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN V_NMCIDADE := NULL;
         END;

         UPDATE USR_CARGA_FORNECEDOR
         SET TX_CONTATO  = :NEW.NMCONTFORN,
             TX_EMAIL    = :NEW.DSEMAILFORN,
             TX_ENDERECO = :NEW.DSENDEFORN,
             TX_BAIRRO   = :NEW.NMBAIRFORN,
             TX_UF       = :NEW.SGESTADO,
             TX_CIDADE   = V_NMCIDADE,
             TX_CEP      = SUBSTR(REPLACE(:NEW.NRCEPFORN, '.', ''), 1, 9),
             TP_ATUALIZACAO = 'A'
         WHERE TX_CGC = SUBSTR(:OLD.CDFORNECED, 2, 20);
      END IF;
   END IF;
END;
/


-- VERSAO --
BEGIN ATUVEROBJ('TRGCARGA_FORNECEDOR_END','4.11.033'); END;
/

