<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TRIG_AF_RW_FINALIZA_USUARIO]]></title><description><![CDATA[<h2>Visão Geral</h2>
<p dir="auto">A trigger <strong><code>TRIG_AF_RW_FINALIZA_USUARIO</code></strong> é responsável por manter a consistência do vínculo entre <strong>clientes</strong> e <strong>usuários/funcionários</strong>, reagindo a alterações na data de desativação do cliente (<code>DATA_DESATIVACAO</code>) na tabela <code>IN4MB_CLIENTES</code>.</p>
<p dir="auto">Seu objetivo principal é <strong>bloquear</strong> automaticamente os registros da tabela <code>USUARIOS_FUNCIONARIOS</code> assim que a base do cliente for bloqueada na <code>PSM0020</code>.</p>
<hr />
<h2>Definição Técnica</h2>
<ul>
<li><strong>Tipo:</strong> Trigger de linha (<code>FOR EACH ROW</code>)</li>
<li><strong>Momento:</strong> <code>AFTER UPDATE</code></li>
<li><strong>Coluna monitorada:</strong> <code>DATA_DESATIVACAO</code></li>
<li><strong>Tabela base:</strong> <code>IN4MB_CLIENTES</code></li>
</ul>
<hr />
<h2>Regras de Negócio Implementadas</h2>
<p dir="auto">A trigger trata três cenários distintos relacionados à coluna <code>DATA_DESATIVACAO</code>.</p>
<hr />
<h3>1. Bloqueio do Cliente</h3>
<p dir="auto"><strong>Condição</strong></p>
<ul>
<li><code>:OLD.DATA_DESATIVACAO</code> é <code>NULL</code></li>
<li><code>:NEW.DATA_DESATIVACAO</code> é <strong>NOT NULL</strong></li>
</ul>
<p dir="auto"><strong>Ação</strong></p>
<ul>
<li>Calcula <code>v_data_fim = TRUNC(:NEW.DATA_DESATIVACAO) - 1</code></li>
<li>Atualiza os usuários vinculados ao cliente:
<ul>
<li>Define <code>DATA_FINAL_VIGENCIA</code> com a data calculada</li>
<li>Marca <code>CLIENTE_DESATIVADO = 'S'</code></li>
</ul>
</li>
</ul>
<p dir="auto"><strong>Impacto</strong></p>
<ul>
<li>Finaliza a vigência dos usuários ativos no dia imediatamente anterior à desativação do cliente.</li>
</ul>
<hr />
<h3>2. Alteração da Data de Bloqueio</h3>
<p dir="auto"><strong>Condição</strong></p>
<ul>
<li><code>:OLD.DATA_DESATIVACAO</code> é <strong>NOT NULL</strong></li>
<li><code>:NEW.DATA_DESATIVACAO</code> é <strong>NOT NULL</strong></li>
<li>Datas diferentes entre <code>OLD</code> e <code>NEW</code></li>
</ul>
<p dir="auto"><strong>Ação</strong></p>
<ul>
<li>Recalcula <code>v_data_fim = TRUNC(:NEW.DATA_DESATIVACAO) - 1</code></li>
<li>Atualiza apenas usuários já marcados como desativados:
<ul>
<li>Ajusta <code>DATA_FINAL_VIGENCIA</code> caso esteja diferente do novo valor</li>
</ul>
</li>
</ul>
<p dir="auto"><strong>Impacto</strong></p>
<ul>
<li>Mantém a coerência das datas de vigência quando a data de desativação do cliente é alterada.</li>
</ul>
<hr />
<h3>3. Desbloqueio do Cliente</h3>
<p dir="auto"><strong>Condição</strong></p>
<ul>
<li><code>:OLD.DATA_DESATIVACAO</code> é <strong>NOT NULL</strong></li>
<li><code>:NEW.DATA_DESATIVACAO</code> é <code>NULL</code></li>
</ul>
<p dir="auto"><strong>Ação</strong></p>
<ul>
<li>Remove a data final de vigência (<code>DATA_FINAL_VIGENCIA = NULL</code>)</li>
<li>Marca <code>CLIENTE_DESATIVADO = 'N'</code></li>
</ul>
<p dir="auto"><strong>Impacto</strong></p>
<ul>
<li>Reativa os usuários vinculados ao cliente, tornando-os novamente vigentes.</li>
</ul>
<hr />
<h2>Relacionamentos Utilizados</h2>
<p dir="auto">A trigger atua apenas sobre usuários que possuam vínculo válido com o cliente, verificado pela tabela:</p>
<ul>
<li><strong><code>IN4MB_CLIENTES_USUARIOS_APP</code></strong></li>
</ul>
<h3>Critério de vínculo</h3>
<pre><code class="language-sql">cua.id = uf.cliente_usuario_app_id
and cua.cliente_id = :new.id
</code></pre>
<hr />
<h2>Exemplo prático</h2>
<p dir="auto"><strong>Data Desativação</strong> informada na <strong>PSM0020</strong>:<br />
<img src="/assets/uploads/files/1768243796284-beb7690b-e524-4ad0-8585-1bd3d5bd10e9-image.png" alt="beb7690b-e524-4ad0-8585-1bd3d5bd10e9-image.png" class="img-responsive img-markdown" /></p>
<p dir="auto"><strong>Data Final Vigência</strong> gerada automaticamente para <code>usuarios_funcionarios</code> na <strong>PSM0030</strong>:<br />
<img src="/assets/uploads/files/1768244016421-cac43a89-e5ef-4152-97f6-c9ad7a6ed17d-image.png" alt="cac43a89-e5ef-4152-97f6-c9ad7a6ed17d-image.png" class="img-responsive img-markdown" /></p>
]]></description><link>http://insoft-docker1:4567/topic/468/trig_af_rw_finaliza_usuario</link><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 07:25:04 GMT</lastBuildDate><atom:link href="http://insoft-docker1:4567/topic/468.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Jan 2026 18:55:30 GMT</pubDate><ttl>60</ttl></channel></rss>