CREATE OR REPLACE TRIGGER TRGCARGA_CLIENTE_END
AFTER INSERT OR UPDATE OR DELETE ON ENDECLIE 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.IDTPENDECLIE, 'P') = 'P' THEN
         UPDATE USR_CARGA_CLIENTE
         SET TX_ENDERECO = :NEW.DSENDECLIE,
             TX_BAIRRO   = :NEW.NMBAIRCLIE,
             TX_UF       = :NEW.SGESTADO,
             TX_CIDADE   = V_NMCIDADE,
             TX_CEP      = SUBSTR(REPLACE(:NEW.NRCEPCLIE, '.', ''), 1, 9)
         WHERE TX_CGC_CPF = SUBSTR(:NEW.CDCLIENTE, 2, 20);
      END IF;
   ELSIF UPDATING THEN
      IF NVL(:OLD.IDTPENDECLIE, '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_CLIENTE
         SET TX_ENDERECO = :NEW.DSENDECLIE,
             TX_BAIRRO   = :NEW.NMBAIRCLIE,
             TX_UF       = :NEW.SGESTADO,
             TX_CIDADE   = V_NMCIDADE,
             TX_CEP      = SUBSTR(REPLACE(:NEW.NRCEPCLIE, '.', ''), 1, 9),
             TP_ATUALIZACAO = 'A'
         WHERE TX_CGC_CPF = SUBSTR(:OLD.CDCLIENTE, 2, 20);
      END IF;
   END IF;
END;
/


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

