create or replace TRIGGER REPLICA_INTERLOCUTOR_INTEPROSP
AFTER INSERT OR UPDATE
ON CRM_INTERLOCUTOR
FOR EACH ROW
DECLARE

  V_CDPROSPECT_RELACIONADO VARCHAR2(50);
  V_NOVO_CODIGO_INTEPROSP VARCHAR2(2);
  V_CARGO_INTERLOCUTOR VARCHAR2(50);
  V_BAIRRO_INTERLOCUTOR VARCHAR2(100);

BEGIN

    BEGIN
      SELECT CDPROSPECT
      INTO V_CDPROSPECT_RELACIONADO
      FROM PROSPECT
      WHERE NRPARCNEGOCIO = :NEW.NRPARCNEGOCIO
      AND NRORG = :NEW.NRORG;

      EXCEPTION
        WHEN NO_DATA_FOUND THEN 
        V_CDPROSPECT_RELACIONADO  := NULL;
    END;

  IF V_CDPROSPECT_RELACIONADO IS NOT NULL THEN

    SELECT NVL(MAX(CDINTEPROS) + 1, '01')
    INTO V_NOVO_CODIGO_INTEPROSP
    FROM INTEPROSP
    WHERE CDPROSPECT = V_CDPROSPECT_RELACIONADO
    AND NRORG = :NEW.NRORG;


    BEGIN
      SELECT NMCARGOINTERLOC
      INTO V_CARGO_INTERLOCUTOR
      FROM CARGOINTERLOC
      WHERE CDCARGOINTERLOC = :NEW.CDCARGOINTERLOC
      AND NRORG = :NEW.NRORG;

      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          V_CARGO_INTERLOCUTOR  := '';
    END;

    BEGIN
      SELECT NMBAIRRO
      INTO V_BAIRRO_INTERLOCUTOR
      FROM BAIRRO
      WHERE CDPAIS = :NEW.CDPAIS
      AND SGESTADO = :NEW.SGESTADO
      AND CDMUNICIPIO = :NEW.CDMUNICIPIO
      AND CDBAIRRO = :NEW.CDBAIRRO
      AND NRORG = :NEW.NRORG;

      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          V_BAIRRO_INTERLOCUTOR  := '';
    END;

    IF INSERTING THEN

        INSERT INTO INTEPROSP (CDPROSPECT, CDINTEPROS, NRSEQINTERLOCUTOR, NMINTEPROS, CDCARGOINTERLOC, DSCARGINPROS, IDINPROSRECPRES, CDPAIS, SGESTADO, CDMUNICIPIO,
        NMBAIRINPROS, NRCEPINPROS, DSENDEINPROS, IDTPINTEPROS, DTNASCINPROS, DSEMAILIPROS, NRTEL1INPROS, NRTEL2INPROS, DTINCLUSAO)
        VALUES(V_CDPROSPECT_RELACIONADO, V_NOVO_CODIGO_INTEPROSP, :NEW.NRSEQINTERLOCUTOR, :NEW.NMINTERLOCUTOR, :NEW.CDCARGOINTERLOC, V_CARGO_INTERLOCUTOR, :NEW.IDRECEBEPRESENTE,
        :NEW.CDPAIS, :NEW.SGESTADO, :NEW.CDMUNICIPIO, V_BAIRRO_INTERLOCUTOR, :NEW.NRCEPINTERLOCUTOR, :NEW.DSENDEINTERLOCUTOR, 'O', :NEW.DTNASCIMENTO, :NEW.EMAILINTERLOC, :NEW.NRTELEFONE1,
        :NEW.NRTELEFONE2, SYSDATE);

    ELSE

      UPDATE INTEPROSP
      SET NMINTEPROS = :NEW.NMINTERLOCUTOR, CDCARGOINTERLOC = :NEW.CDCARGOINTERLOC, DSCARGINPROS = V_CARGO_INTERLOCUTOR, CDPAIS = :NEW.CDPAIS, SGESTADO = :NEW.SGESTADO,
      CDMUNICIPIO = :NEW.CDMUNICIPIO, NMBAIRINPROS = V_BAIRRO_INTERLOCUTOR, NRCEPINPROS = :NEW.NRCEPINTERLOCUTOR, DSENDEINPROS = :NEW.DSENDEINTERLOCUTOR,
      IDINPROSRECPRES = :NEW.IDRECEBEPRESENTE, DTNASCINPROS = :NEW.DTNASCIMENTO, DSEMAILIPROS = :NEW.EMAILINTERLOC,
      NRTEL1INPROS = :NEW.NRTELEFONE1, NRTEL2INPROS = :NEW.NRTELEFONE2, DTULTATU = SYSDATE
      WHERE NRSEQINTERLOCUTOR = :OLD.NRSEQINTERLOCUTOR;
    END IF;
  END IF;
END;
/
create or replace TRIGGER GERA_RELAC_PARCNEG_INTEPROSP
BEFORE INSERT OR UPDATE ON INTEPROSP
FOR EACH ROW

DECLARE

	V_NOVOCODIGO    VARCHAR2(20);
	V_NRENDEPARC    VARCHAR2(20);
	V_NRCOMUNICA    VARCHAR2(20);
	V_NRPARCNEGOCIO VARCHAR2(20);
	V_SEQRELAC      VARCHAR2(20);
	V_PARCNEG       VARCHAR2(20);
	V_NMPROSP	    PROSPECT.NMRAZSOCPROS%TYPE;
	V_IDATIVO 	    VARCHAR2(1);
	V_CARGO			VARCHAR2(30);
	V_TIPO          NUMBER;

BEGIN
	--Retorna o nome e o nr. do parceiro ao qual o interlocutor pertence
	BEGIN
	    SELECT NMRAZSOCPROS, NRPARCNEGOCIO INTO V_NMPROSP, V_PARCNEG
		FROM PROSPECT
		WHERE CDPROSPECT = :NEW.CDPROSPECT
		AND NRORG = :NEW.NRORG;

		EXCEPTION
		WHEN NO_DATA_FOUND THEN
			V_NMPROSP := NULL;
			V_PARCNEG := NULL;
	END;

	IF V_NMPROSP IS NOT NULL THEN

		--Verifica qual é o cargo (CDCARGO) correspondente ao cargo do interlocutor em questão (CDCARGOINTERLOC)
		V_CARGO := NULL;
		IF :NEW.CDCARGOINTERLOC IS NOT NULL THEN
			BEGIN
				SELECT CDCARGO INTO V_CARGO
				FROM CARGO
				WHERE CDMIGRACARGOINT = :NEW.CDCARGOINTERLOC
				AND NRORG = :NEW.NRORG;

				EXCEPTION
				WHEN NO_DATA_FOUND THEN
					V_CARGO := NULL;
			END;
		END IF;

		V_IDATIVO :=
		CASE :NEW.IDSTINTEPROS
			WHEN 'D' THEN 'N'
			ELSE 'S'
		END;

		SELECT MIN(NRTIPORELACIONA) INTO V_TIPO
		FROM TIPORELACIONA
		WHERE NMTIPORELACIONA = 'Interlocutor';

		IF V_TIPO IS NULL THEN
			INSERT INTO TIPORELACIONA (NRTIPORELACIONA, NRORG , NMTIPORELACIONA, IDATIVO, DTINCLUSAO)
			VALUES (25, :NEW.NRORG, 'Interlocutor', 'S',SYSDATE);
			V_TIPO := 25;
		END IF;

		IF :NEW.NRRELACIONAPARC IS NULL AND V_PARCNEG IS NOT NULL THEN
			NOVO_CODIGO_SC('PARCNEGOCIO',V_NOVOCODIGO,1,:NEW.NRORG);
			V_NOVOCODIGO := SUBSTR(V_NOVOCODIGO, 11, 10);

			INSERT INTO PARCNEGOCIO
				(NRPARCNEGOCIO, NRORG, NMPRINCIPALPARC, NMSECUNDARIPARC, DTNASCIFUNDPARC,
				CDTIPOINSCRICAO, NRINSCRICAOPARC, CDTIPOPARCPRINCIPAL, IDATIVO, DTINCLUSAO,
				IDPESSOAFISICA, NRORGINCLUSAO, CDOPERINCLUSAO)
			VALUES
				(V_NOVOCODIGO, :NEW.NRORG, :NEW.NMINTEPROS, 'PROSPECT - '||V_NMPROSP, :NEW.DTNASCINPROS,
				'LIVRE', '1', 'INTERLOCUTOR', V_IDATIVO, SYSDATE, 'S', :NEW.NRORGINCLUSAO, :NEW.CDOPERINCLUSAO);

			NOVO_CODIGO_SC('RELACPARCNEG',V_SEQRELAC,1,:NEW.NRORG);
			V_SEQRELAC := SUBSTR(V_SEQRELAC, 11, 10);

			INSERT INTO RELACIONAPARC
				(NRRELACIONAPARC, NRORG, NRPARCNEGOCIO, NRPARCNEGRELAC, NRTIPORELACIONA, IDATIVO, DTINCLUSAO, CDCARGO)
			VALUES (V_SEQRELAC, :NEW.NRORG, V_PARCNEG, V_NOVOCODIGO, V_TIPO, V_IDATIVO, SYSDATE, V_CARGO);

			:NEW.NRRELACIONAPARC := V_SEQRELAC;

		ELSE

			--Retorna o nr. do parceiro referente ao interlocutor
			BEGIN
				SELECT NRPARCNEGRELAC INTO V_NRPARCNEGOCIO
				FROM RELACIONAPARC
				WHERE NRRELACIONAPARC = :NEW.NRRELACIONAPARC
				AND NRORG = :NEW.NRORG;

				EXCEPTION
				WHEN NO_DATA_FOUND THEN
					V_NRPARCNEGOCIO := NULL;
			END;

			IF V_NRPARCNEGOCIO IS NOT NULL THEN

				UPDATE PARCNEGOCIO SET CDTIPOINSCRICAO = 'LIVRE',
						NRINSCRICAOPARC = '1', NMPRINCIPALPARC = :NEW.NMINTEPROS,
						NMSECUNDARIPARC = 'PROSPECT - '||V_NMPROSP,  DTULTATU = SYSDATE, IDATIVO = V_IDATIVO,
						CDTIPOPARCPRINCIPAL =  'INTERLOCUTOR', IDPESSOAFISICA = 'S', DTNASCIFUNDPARC = :NEW.DTNASCINPROS,
						NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU
				WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
				AND NRORG = :NEW.NRORG;

				UPDATE RELACIONAPARC SET NRTIPORELACIONA = V_TIPO, IDATIVO = V_IDATIVO, DTULTATU = SYSDATE,
						NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU, CDCARGO = V_CARGO
				WHERE NRRELACIONAPARC = :NEW.NRRELACIONAPARC
				AND NRORG = :NEW.NRORG;
			END IF;
		END IF;

		--Retorna o nr. do endereco do parceiro referente ao interlocutor
		BEGIN
			SELECT MAX(NRENDERECOPARC) INTO V_NRENDEPARC
			FROM ENDERECOPARC
			WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
			AND NRORG = :NEW.NRORG;

			EXCEPTION
				WHEN NO_DATA_FOUND THEN
				V_NRENDEPARC := NULL;
		END;

		--Retorna o nr. do parceiro referente ao interlocutor(2)
		BEGIN
			SELECT NRPARCNEGRELAC INTO V_NRPARCNEGOCIO
			FROM RELACIONAPARC
			WHERE NRRELACIONAPARC = :NEW.NRRELACIONAPARC
			AND NRORG = :NEW.NRORG;

			EXCEPTION
			WHEN NO_DATA_FOUND THEN
				V_NRPARCNEGOCIO := NULL;
		END;

		--Se interlocutor possuir endereço e for um parceiro, insere ou upadata os dados de seu endereço
		--nas tabelas ENDERECOPARC e ENDERECO
		IF :NEW.DSENDEINPROS IS NOT NULL AND V_NRPARCNEGOCIO IS NOT NULL THEN

			--Se não possuir nenhum endereco, insere. Senão, updata.
			IF V_NRENDEPARC IS NULL THEN

				NOVO_CODIGO_SC('ENDERECOPARC',V_NRENDEPARC,1,:NEW.NRORG);
				V_NRENDEPARC := SUBSTR(V_NRENDEPARC, 11, 10);

				INSERT INTO ENDERECOPARC
					(NRENDERECOPARC, NRPARCNEGOCIO, CDTIPOENDERECO, IDATIVO, NRORG,
					DTINCLUSAO, DTULTATU, NRORGINCLUSAO, CDOPERINCLUSAO, NRORGULTATU, CDOPERULTATU,
					CDPAIS, SGESTADO, CDMUNICIPIO, DSENDERECO, NMBAIRROENDERECO, NRCEPENDERECO)
				VALUES
					(V_NRENDEPARC, V_NRPARCNEGOCIO, 'PRINCIPAL', V_IDATIVO, :NEW.NRORG,
					SYSDATE, SYSDATE, :NEW.NRORGINCLUSAO, :NEW.CDOPERINCLUSAO, :NEW.NRORGULTATU, :NEW.CDOPERULTATU,
					:NEW.CDPAIS, :NEW.SGESTADO, :NEW.CDMUNICIPIO, :NEW.DSENDEINPROS, :NEW.NMBAIRINPROS, :NEW.NRCEPINPROS);

			ELSE

				UPDATE ENDERECOPARC SET CDPAIS = :NEW.CDPAIS, SGESTADO = :NEW.SGESTADO, CDMUNICIPIO = :NEW.CDMUNICIPIO,
								DSENDERECO = :NEW.DSENDEINPROS, NMBAIRROENDERECO = :NEW.NMBAIRINPROS,
								NRCEPENDERECO = :NEW.NRCEPINPROS, IDATIVO = V_IDATIVO, DTULTATU = SYSDATE,
								NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU
				WHERE NRENDERECOPARC = V_NRENDEPARC
				AND NRORG = :NEW.NRORG;
			END IF;

		ELSE
			--Se houve mudança no valor do campo e se o novo valor for null, apaga o registro da tabela ENDERECO, ENDERECOPARC.
			--Senão, apenas updata.
			IF :OLD.DSENDEINPROS IS NOT NULL AND :NEW.DSENDEINPROS IS NULL THEN

				DELETE FROM ENDERECOPARC
				WHERE NRENDERECOPARC = V_NRENDEPARC
				AND NRORG = :NEW.NRORG;
			END IF;
		END IF;

	    --Insere os dados na tabela COMUNICAPARC

		--NRTEL1INPROS
		BEGIN
			SELECT MAX(NRCOMUNICAPARC) INTO V_NRCOMUNICA
			FROM COMUNICAPARC
			WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
			AND NRORG = :NEW.NRORG
			AND CDFORMACOMU = '01';

			EXCEPTION
				WHEN NO_DATA_FOUND THEN
					V_NRCOMUNICA := NULL;
		END;
		--Se houve mudança no valor do campo e se o novo valor for null, apaga o registro da tabela COMUNICAPARC.
		IF :OLD.NRTEL1INPROS IS NOT NULL AND :NEW.NRTEL1INPROS IS NULL THEN
			DELETE FROM COMUNICAPARC
			WHERE NRCOMUNICAPARC = V_NRCOMUNICA
			AND NRORG = :NEW.NRORG;
		ELSE
			IF :NEW.NRTEL1INPROS IS NOT NULL THEN
				IF V_NRPARCNEGOCIO IS NOT NULL THEN
					IF V_NRCOMUNICA IS NULL THEN
						NOVO_CODIGO_SC('COMUNICAPARC',V_NRCOMUNICA,1,:NEW.NRORG);
						V_NRCOMUNICA := SUBSTR(V_NRCOMUNICA, 11, 10);
						INSERT INTO COMUNICAPARC
							(NRCOMUNICAPARC, NRPARCNEGOCIO, CDFORMACOMU,
							CDCOMUNICAPARC, IDATIVO, CDCOMPLECOMUPARC, NRORG, DTINCLUSAO, DTULTATU,
							NRORGINCLUSAO, CDOPERINCLUSAO, NRORGULTATU, CDOPERULTATU)
						VALUES (V_NRCOMUNICA, V_NRPARCNEGOCIO, '01',
								:NEW.NRTEL1INPROS, V_IDATIVO, :NEW.NRRAM1INPROS, :NEW.NRORG, SYSDATE, SYSDATE,
								:NEW.NRORGINCLUSAO, :NEW.CDOPERINCLUSAO, :NEW.NRORGULTATU, :NEW.CDOPERULTATU);
					ELSE
						UPDATE COMUNICAPARC SET CDCOMUNICAPARC = :NEW.NRTEL1INPROS, CDCOMPLECOMUPARC = :NEW.NRRAM1INPROS,
							IDATIVO = V_IDATIVO, DTULTATU = SYSDATE, NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU
						WHERE NRCOMUNICAPARC = V_NRCOMUNICA
						AND NRORG = :NEW.NRORG;
					END IF;
				END IF;
			END IF;
		END IF;

		--NRTELREINPRO
		BEGIN
			SELECT MAX(NRCOMUNICAPARC) INTO V_NRCOMUNICA
			FROM COMUNICAPARC
			WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
			AND NRORG = :NEW.NRORG
			AND CDFORMACOMU = '03';

			EXCEPTION
				WHEN NO_DATA_FOUND THEN
					V_NRCOMUNICA := NULL;
		END;

		IF :OLD.NRTELREINPRO IS NOT NULL AND :NEW.NRTELREINPRO IS NULL THEN
			DELETE FROM COMUNICAPARC
			WHERE NRCOMUNICAPARC = V_NRCOMUNICA
			AND NRORG = :NEW.NRORG;
		ELSE
			IF :NEW.NRTELREINPRO IS NOT NULL THEN
				IF V_NRPARCNEGOCIO IS NOT NULL THEN
					IF V_NRCOMUNICA IS NULL THEN
						NOVO_CODIGO_SC('COMUNICAPARC',V_NRCOMUNICA,1,:NEW.NRORG);
						V_NRCOMUNICA := SUBSTR(V_NRCOMUNICA, 11, 10);
						INSERT INTO COMUNICAPARC
							(NRCOMUNICAPARC, NRPARCNEGOCIO, CDFORMACOMU,
							CDCOMUNICAPARC, IDATIVO, CDCOMPLECOMUPARC, NRORG, DTINCLUSAO, DTULTATU,
							NRORGINCLUSAO, CDOPERINCLUSAO, NRORGULTATU, CDOPERULTATU)
						VALUES (V_NRCOMUNICA, V_NRPARCNEGOCIO, '03',
								:NEW.NRTELREINPRO, V_IDATIVO, :NEW.NRRAM1INPROS, :NEW.NRORG, SYSDATE, SYSDATE,
								:NEW.NRORGINCLUSAO, :NEW.CDOPERINCLUSAO, :NEW.NRORGULTATU, :NEW.CDOPERULTATU);
					ELSE
						UPDATE COMUNICAPARC SET CDCOMUNICAPARC = :NEW.NRTELREINPRO, CDCOMPLECOMUPARC = :NEW.NRRAM1INPROS,
							IDATIVO = V_IDATIVO, DTULTATU = SYSDATE, NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU
						WHERE NRCOMUNICAPARC = V_NRCOMUNICA
						AND NRORG = :NEW.NRORG;
					END IF;
				END IF;
			END IF;
		END IF;

		--NRCELULINPRO
		BEGIN
			SELECT MAX(NRCOMUNICAPARC) INTO V_NRCOMUNICA
			FROM COMUNICAPARC
			WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
			AND NRORG = :NEW.NRORG
			AND CDFORMACOMU = '02';

			EXCEPTION
				WHEN NO_DATA_FOUND THEN
					V_NRCOMUNICA := NULL;
		END;

		IF :OLD.NRCELULINPRO IS NOT NULL AND :NEW.NRCELULINPRO IS NULL THEN
			DELETE FROM COMUNICAPARC
			WHERE NRCOMUNICAPARC = V_NRCOMUNICA
			AND NRORG = :NEW.NRORG;
		ELSE
			IF :NEW.NRCELULINPRO IS NOT NULL THEN
				IF V_NRPARCNEGOCIO IS NOT NULL THEN
					IF V_NRCOMUNICA IS NULL THEN
						NOVO_CODIGO_SC('COMUNICAPARC',V_NRCOMUNICA,1,:NEW.NRORG);
						V_NRCOMUNICA := SUBSTR(V_NRCOMUNICA, 11, 10);
						INSERT INTO COMUNICAPARC
							(NRCOMUNICAPARC, NRPARCNEGOCIO, CDFORMACOMU,
							CDCOMUNICAPARC, IDATIVO, CDCOMPLECOMUPARC, NRORG, DTINCLUSAO, DTULTATU,
							NRORGINCLUSAO, CDOPERINCLUSAO, NRORGULTATU, CDOPERULTATU)
						VALUES (V_NRCOMUNICA, V_NRPARCNEGOCIO, '02',
								:NEW.NRCELULINPRO, V_IDATIVO, :NEW.NRRAM1INPROS, :NEW.NRORG, SYSDATE, SYSDATE,
								:NEW.NRORGINCLUSAO, :NEW.CDOPERINCLUSAO, :NEW.NRORGULTATU, :NEW.CDOPERULTATU);
					ELSE
						UPDATE COMUNICAPARC SET CDCOMUNICAPARC = :NEW.NRCELULINPRO, CDCOMPLECOMUPARC = :NEW.NRRAM1INPROS,
							IDATIVO = V_IDATIVO, DTULTATU = SYSDATE, NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU
						WHERE NRCOMUNICAPARC = V_NRCOMUNICA
						AND NRORG = :NEW.NRORG;
					END IF;
				END IF;
			END IF;
		END IF;

		--NRFAXINPROS
		BEGIN
			SELECT MAX(NRCOMUNICAPARC) INTO V_NRCOMUNICA
			FROM COMUNICAPARC
			WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
			AND NRORG = :NEW.NRORG
			AND CDFORMACOMU = '10';

			EXCEPTION
				WHEN NO_DATA_FOUND THEN
					V_NRCOMUNICA := NULL;
		END;

		IF :OLD.NRFAXINPROS IS NOT NULL AND :NEW.NRFAXINPROS IS NULL THEN
				DELETE FROM COMUNICAPARC
				WHERE NRCOMUNICAPARC = V_NRCOMUNICA
				AND NRORG = :NEW.NRORG;
		ELSE
			IF :NEW.NRFAXINPROS IS NOT NULL THEN
				IF V_NRPARCNEGOCIO IS NOT NULL THEN
					IF V_NRCOMUNICA IS NULL THEN
						NOVO_CODIGO_SC('COMUNICAPARC',V_NRCOMUNICA,1,:NEW.NRORG);
						V_NRCOMUNICA := SUBSTR(V_NRCOMUNICA, 11, 10);
						INSERT INTO COMUNICAPARC
							(NRCOMUNICAPARC, NRPARCNEGOCIO, CDFORMACOMU,
							CDCOMUNICAPARC, IDATIVO, CDCOMPLECOMUPARC, NRORG, DTINCLUSAO, DTULTATU,
							NRORGINCLUSAO, CDOPERINCLUSAO, NRORGULTATU, CDOPERULTATU)
						VALUES (V_NRCOMUNICA, V_NRPARCNEGOCIO, '10',
								:NEW.NRFAXINPROS, V_IDATIVO, :NEW.NRRAM1INPROS, :NEW.NRORG, SYSDATE, SYSDATE,
								:NEW.NRORGINCLUSAO, :NEW.CDOPERINCLUSAO, :NEW.NRORGULTATU, :NEW.CDOPERULTATU);
					ELSE
						UPDATE COMUNICAPARC SET CDCOMUNICAPARC = :NEW.NRFAXINPROS, CDCOMPLECOMUPARC = :NEW.NRRAM1INPROS,
							IDATIVO = V_IDATIVO, DTULTATU = SYSDATE, NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU
						WHERE NRCOMUNICAPARC = V_NRCOMUNICA
						AND NRORG = :NEW.NRORG;
					END IF;
				END IF;
			END IF;
		END IF;

		--DSEMAILIPROS
		BEGIN
			SELECT MAX(NRCOMUNICAPARC) INTO V_NRCOMUNICA
			FROM COMUNICAPARC
			WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
			AND NRORG = :NEW.NRORG
			AND CDFORMACOMU = '05';

			EXCEPTION
				WHEN NO_DATA_FOUND THEN
					V_NRCOMUNICA := NULL;
		END;

		IF :OLD.DSEMAILIPROS IS NOT NULL AND :NEW.DSEMAILIPROS IS NULL THEN
			DELETE FROM COMUNICAPARC
			WHERE NRCOMUNICAPARC = V_NRCOMUNICA
			AND NRORG = :NEW.NRORG;
		ELSE
			IF :NEW.DSEMAILIPROS IS NOT NULL THEN
				IF V_NRPARCNEGOCIO IS NOT NULL THEN
					IF V_NRCOMUNICA IS NULL THEN
						NOVO_CODIGO_SC('COMUNICAPARC',V_NRCOMUNICA,1,:NEW.NRORG);
						V_NRCOMUNICA := SUBSTR(V_NRCOMUNICA, 11, 10);
						INSERT INTO COMUNICAPARC
							(NRCOMUNICAPARC, NRPARCNEGOCIO, CDFORMACOMU,
							CDCOMUNICAPARC, IDATIVO, CDCOMPLECOMUPARC, NRORG, DTINCLUSAO, DTULTATU,
							NRORGINCLUSAO, CDOPERINCLUSAO, NRORGULTATU, CDOPERULTATU)
						VALUES (V_NRCOMUNICA, V_NRPARCNEGOCIO, '05',
								:NEW.DSEMAILIPROS, V_IDATIVO, :NEW.NRRAM1INPROS, :NEW.NRORG, SYSDATE, SYSDATE,
								:NEW.NRORGINCLUSAO, :NEW.CDOPERINCLUSAO, :NEW.NRORGULTATU, :NEW.CDOPERULTATU);
					ELSE
						UPDATE COMUNICAPARC SET CDCOMUNICAPARC = :NEW.DSEMAILIPROS, CDCOMPLECOMUPARC = :NEW.NRRAM1INPROS,
							IDATIVO = V_IDATIVO, DTULTATU = SYSDATE, NRORGULTATU = :NEW.NRORGULTATU, CDOPERULTATU = :NEW.CDOPERULTATU
						WHERE NRCOMUNICAPARC = V_NRCOMUNICA
						AND NRORG = :NEW.NRORG;
					END IF;
				END IF;
			END IF;
		END IF;

	END IF;
END;