Script:
CREATE OR REPLACE PROCEDURE sp_f_ar AS
/*************************************************************
Funcao : ETL AR
Criado em : 19/08/2007
Responsavel: Célio Nunes
Notas :
**************************************************************/
--variaveis
vDT_INICIO VARCHAR2(50) := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS');
vLINHAS NUMERIC(10,0) := 0;
--------------------------------------------------------------------------------
BEGIN
--Execute immediate 'truncate table F_AR';
delete from F_AR;
commit work;
INSERT INTO F_AR(cd_estabelecimento,hist_status, hist_dt_ultimo_contato, hist_dt_proximo_contato,
hist_observacao, ds_usuario_ar, sk_tempo, hist_fl_antecipacao)
(SELECT ar.CD_ESTABELECIMENTO,
CASE
WHEN IND_STATUS='NA' then 'NÃO ANTECIPA'
WHEN IND_STATUS='NP' then 'NÃO PRECISA'
WHEN IND_STATUS='AC' then 'ANTECIPA (OUTROS CARTOES)'
WHEN IND_STATUS='TA' then 'TAXA ALTA'
WHEN IND_STATUS='AG' then 'AGENDADO'
WHEN IND_STATUS='AT' then 'ANTECIPADO'
WHEN IND_STATUS='NE' then 'NÃO ESTAVA'
WHEN IND_STATUS='AL' then 'ACUMULAR LOTES'
WHEN IND_STATUS='OC' then 'OCUPADO'
WHEN IND_STATUS='RE' then 'RESPONSAVEL DECISOR não ESTAVA'
WHEN IND_STATUS='NL' then 'NÃO LIGAR'
WHEN IND_STATUS='NT' then 'NÃO ATENDE'
WHEN IND_STATUS='TE' then 'TELEFONE ERRADO'
WHEN IND_STATUS='EM' then 'EMPRÉSTIMO GIRO FÁCIL'
WHEN IND_STATUS='AA' then 'ANTECIPAÇÃO AUTOMATICA AAR'
WHEN IND_STATUS='SL' then 'SEM LOTES'
WHEN IND_STATUS='PG' then 'PROBLEMAS COM A GOODCARD'
WHEN IND_STATUS='JC' then 'JÁ CONTATADO NOS ÚLTIMOS TRES DIAS'
WHEN IND_STATUS='RA' then 'REDE - ANTECIPA'
WHEN IND_STATUS='RN' then 'REDE - NÃO ANTECIPA'
ELSE IND_STATUS
END AS HIST_STATUS,
trunc(ar.DT_ULTIMO_CONTATO) AS DT_ULTIMO_CONTATO,
trunc(ar.DT_PROXIMO_CONTATO) AS DT_PROXIMO_CONTATO,
Upper(ar.OBSERVACAO) AS OBSERVACAO,
Upper(u.DS_NOME_COMPLETO) as DS_USUARIO_AR,
-1 AS sk_tempo,
'P' AS HIST_FL_ANTECIPACAO
FROM HISTORICO_AR@DB_ORADB01 ar, USUARIO@DB_ORADB01 u
WHERE ar.cd_usuario_ar = U.cd_usuario
AND cd_historico_ar IN(
SELECT Max(cd_historico_ar)
FROM HISTORICO_AR@DB_ORADB01 ar2
--WHERE cd_Estabelecimento = 78654
GROUP BY cd_estabelecimento, Trunc(dt_ultimo_contato)
)
);
COMMIT;
UPDATE F_AR far
SET (SK_TEMPO) = (SELECT DT.SK_TEMPO FROM D_TEMPO DT
WHERE hist_dt_ultimo_contato = dat_data);
COMMIT;
--verifica estabelecimentos antecipados ultimos 60 dias
UPDATE F_AR FAR
SET HIST_FL_ANTECIPACAO = 'M'
WHERE EXISTS(SELECT 1
FROM estabelecimento_adiantamento@db_oradb01 EA
WHERE EA.cd_estabelecimento = FAR.CD_ESTABELECIMENTO
AND dt_reprovacao_adiantamento IS NULL
AND dt_liberacao_adiantamento IS NOT null
AND dt_liberacao_adiantamento BETWEEN (far.hist_dt_ultimo_contato-60) AND (far.hist_dt_ultimo_contato+1)
);
COMMIT;
SELECT Count(*)
INTO vLINHAS
FROM F_AR;
GRAVA_LOG('SP_F_AR',vDT_INICIO, vLINHAS);
commit work;
END;