<?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[OS10278 - Solicitação 21124 - Procedimentos de replicação de marcações de ponto para bloqueio de VPN na Previ]]></title><description><![CDATA[<p dir="auto">A solicitação consiste na replicação das marcações de ponto do dia atual (somente dia corrente) utilizando uma procedure de banco disponibilizada pela Previ que irá fazer o bloqueio da VPN de acordo com as marcações de ponto do funcionário.</p>
<p dir="auto">Devem ser enviadas apenas as marcações mais recentes.</p>
<p dir="auto"><strong>Exemplo</strong>: se já foi enviada uma marcação de saída as 17:00 e houve uma alteração em uma marcação de entrada anterior, das 13:00 para as 13:05 por exemplo, essa alteração não é enviada, pois o que "importa" é saber que o funcionário saiu as 17 horas e depois desse horário o acesso a VPN deve ser bloqueado.</p>
<p dir="auto">Foram criadas as seguintes tabelas customizadas:</p>
<pre><code>CREATE TABLE CONTROLE_REPL_MARC_PONTO_PREVI
(
  COD_FUNCIONARIO              NUMBER(6) NOT NULL,
  DATA_MARCACAO                DATE NOT NULL,
  ULTIMA_HORA_ENTRADA          DATE,
  ULTIMA_HORA_SAIDA            DATE,
  SEQUENCIA_COMANDO_REPLICACAO NUMBER(3) NOT NULL
)
</code></pre>
<pre><code>CREATE TABLE COMANDO_REPL_MARC_PONTO_PREVI
(
  COD_FUNCIONARIO               NUMBER(6) NOT NULL,
  DATA_MARCACAO                 DATE NOT NULL,
  SEQUENCIA_COMANDO_REPLICACAO  NUMBER(3) NOT NULL,
  DATA_HORA_MARCACAO            DATE,
  TIPO_MARCACAO                 VARCHAR2(1) NOT NULL,
  DATA_HORA_MOVIMENTACAO        DATE NOT NULL,
  STATUS_INTEGRACAO             VARCHAR2(1) NOT NULL,
  DESCRICAO_ERRO                VARCHAR2(2000),
  DATA_HORA_INTEGRACAO          DATE,
  NRO_TENTATIVAS_INTEGRACAO     NUMBER(3) NOT NULL
)
</code></pre>
<p dir="auto">A tabela <strong>CONTROLE_REPL_MARC_PONTO_PREVI</strong> é atualizada através de três triggers e uma package (para controle de mutating table) na tabela <strong>MARCACOES_PONTOS</strong>, recebendo sempre a informação da maior entrada e a maior saída do dia para o funcionário, independente de quantos registros de marcações ou turnos distintos tenha no dia.</p>
<p dir="auto">Segue lista das triggers customizadas criadas:</p>
<ul>
<li><strong>PS34520</strong> - <strong>TRIG_BF_ST_PREVI_REPL_MP</strong>: trigger de <em>before statement</em> na tabela <em>MARCACOES_PONTOS</em> que limpa a <em>pl table</em> com a lista de registros a processar</li>
<li><strong>PS34510</strong> - <strong>TRIG_AF_RW_PREVI_REPL_MP</strong>: trigger <em>after each row</em> na tabela <em>MARCACOES_PONTOS</em> que adiciona os registro para processamento na <em>pl table</em></li>
<li><strong>PS34525</strong> - <strong>TRIG_AF_ST_PREVI_REPL_MP</strong>: trigger <em>after statement</em> na tabela <em>MARCACOES_PONTOS</em> que processa as informações da <em>pl table</em> e atualiza os registros necessários na tabela <em>CONTROLE_REPL_MARC_PONTO_PREVI</em></li>
<li><strong>PS34530</strong> - <strong>TRIG_BF_RW_PREVI_REPL_CNT_REPL</strong>: trigger <em>before each row</em> na tabela <em>CONTROLE_REPL_MARC_PONTO_PREVI</em> que processa as regras de negócio necessárias e chama o procedimento <em>PACK_REPLICA_MARCACOES_PREVI.PROCESSA_REPLICACAO</em> que irá fazer a atualização da tabela <em>COMANDO_REPL_MARC_PONTO_PREVI</em> e chamar o procedimento de banco disponibilizado pelo cliente <em><strong>SGRSP170</strong></em> quando necessário.</li>
</ul>
<p dir="auto"><strong>PACK_REPLICA_MARCACOES_PREVI</strong></p>
<p dir="auto">Esta package foi criada para reunir os procedimentos necessários para a realização da replicação das informações chamando a procedure de banco do cliente. A seguir a descrição de cada procedimento dentro da package:</p>
<ul>
<li><strong>INICIALIZA</strong>: procedimento que limpa a pl/table de controle</li>
<li><strong>ADD_REGISTRO</strong>: procedimento que adiciona os registros de controle de replicação de marcação de pontos que sofreram alteração para replicação</li>
<li><strong>GERA_CONTROLE_REPLICACAO</strong>: procedimento que aplica a regra de negócio processando os registros adicionados para replicação, fazendo a chamada do procedimento de banco SGRSP170 do cliente e realizando o controle da atualização dos retornos do processamento para as tabelas de controle.</li>
<li><strong>REPROCESSA_REPLICACAO_ERRO</strong>: procedimento criado para que possa ser chamado via JOB pelo sistema do cliente para que seja realizada a tentativa de reprocessamento dos comandos que geraram erro anteriormente na tentativa de replicação. Não existe nenhum parâmetro de entrada ou saída para execução do procedimento, e ao ser chamado irá processar todos os registros de comando com ERRO no dia corrente (sempre é processado apenas o dia corrente, pois a atualização de horários deve ser em tempo real, não tem necessidade de atualizações retroativas). Existe um número limite de tentativas de reprocessamento que é definido pelo valor do parâmetro customizado <em>MAX_TRIES_REPL_MARC_PNT_PREVI</em>, existente na tabela <em>PARAMETROS_CUSTOMIZADOS_PONTOS</em>.</li>
</ul>
<p dir="auto"><strong>Observação:</strong> <em>para que seja possível realizar os testes no ambiente de desenvolvimento (PONTO6@DESENV01) foi criado um "mock" do procedimento chamado SGRSP170 que aceita somente receber dados do dia corrente. Dessa forma para testar cenários de replicação com sucesso deve ser chamada com dados do dia corrente, e para testar cenários de falha deve ser passado informação de outras datas.</em></p>
<p dir="auto">Relação de scripts para implantação:</p>
<ul>
<li>OS10278.sql (irá executar os scripts OS10278.tab, OS10278.con e OS10278.atz)</li>
<li>PS34515.pks</li>
<li>PS34515.pkb</li>
<li>PS34510.trg</li>
<li>PS34520.trg</li>
<li>PS34525.trg</li>
<li>PS34530.trg</li>
</ul>
<p dir="auto">Script do "mock" da procedure SGRSP170 (não implantar, apenas para simular em banco de desenvolvimento)</p>
<ul>
<li>SGRSP170.prc</li>
</ul>
<p dir="auto"><em><strong>ATENÇÃO: ao implantar no cliente verificar quais os sinônimos e grants necessários e adicionar aos scripts existentes.</strong></em></p>
]]></description><link>http://insoft-docker1:4567/topic/214/os10278-solicitação-21124-procedimentos-de-replicação-de-marcações-de-ponto-para-bloqueio-de-vpn-na-previ</link><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 06:10:57 GMT</lastBuildDate><atom:link href="http://insoft-docker1:4567/topic/214.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Jan 2023 19:32:47 GMT</pubDate><ttl>60</ttl></channel></rss>