Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Aviso

Este artigo documenta o funcionamento técnico do sistema em relação as tabelas.
As alterações manuais em base não são recomendadas, e devem ser utilizados apenas em situação de contingência


draw.io Diagram
bordertrue
diagramNameFLUXO 3044
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth1027
revision1

Configuração

Etapa A

Usuário consulta e altera configurações do sistema.
Campos relevantes atualizado em tabela:

CampoDescrição
DS_DIR_GERPASTA GERAÇÃO 3044
DS_DIR_IMPPASTA IMPORTAÇÃO 3044
DS_CRONCron de processamento e geração (link gerador)
ds_cron_impCron de importação (link gerador)
id_ger_3050Indicador de geração de classificação 3050 (S ou N)

Importação

Nesta etapa, os sistemas externos que se integram via banco de dados vão inserir os registros para alimentar a geração do 3044

Etapa A

Insere registro em tabela de controle de importação

Etapa B

Insere registro em tabela de operações

Etapa C

Insere registro em tabela de movimentos

Processamento

Etapa A

Consulta registros do dia anterior (D - 1), prontos para serem processados.
Para verificar se a importação foi finalizada, o sistema filtra pelos campos

Bloco de código
languagesql
SELECT
  ... -- campos
FROM 
  T425CIMP
WHERE
    CD_EMP = [COD. EMPRESA]
AND DT_IMP = [DATA - 1 DIA)
AND ID_SIT = 'F' -- IMPORTACAO FINALIZADA

Etapa B

Insere registro em tabela de controle de processamento com campo id_prc = I (Iniciado)

Etapa C

Faz o batimento das informações da tabela de operação com a tabela de listagens de classificações 3050 (T425_3050)

Etapa D

Etapa de processamento, nesta etapa é feita o preenchimento do IPOC e o campo de classificação do 3050
Os campos preenchidos são:

  • cd_ipoc - IPOC
  • cd_cla_3050 - Classificação 3050

Geração

Etapa A

Consulta registros de processamento prontas para terem o 3044 gerado
A consulta feita para verificar registros de geração

Bloco de código
languagesql
SELECT
  ... -- campos
FROM 
  T425CVPG
WHERE
    CD_EMP = [COD. EMPRESA]
AND ID_PRC = 'F' -- PROCESSAMENTO FINALIZADO
AND (
  ID_GER IS NULL -- GERACAO NAO FOI FEITA
  OR
  ID_GER != 'F' -- GERACAO NAO FINALIZADA
)

Etapa B

Consulta registros das tabelas T425OPED e T425MOVI de maneira paginada, e alimenta arquivo sendo gerado.

Etapa C

Gera arquivo em diretório configurado em tabela T425CFGR, e atualiza registro em tabela T425CVPG
Campos atualizados

  • id_ger = 'F'
  • ds_arq = [BINARIO DE ARQUIVO GERADO]

Acompanhamento

Essa etapa é simboliza o acompanhamento do usuário durante o processo de importação, geração e processamento que é feita normalmente via telas

Etapa A

Acompanhamento de processo de importação, consulta a tabela T425CIMP para verificar status importação.
O seguinte SELECT exemplifica a lógica utilizada na tela

Bloco de código
languagesql
SELECT
  CD_EMP AS EMPRESA,
  SG_ITF AS INTERFACE,
  DT_IMP AS "DT IMPORT",
  CASE id_sit
        WHEN 'I' THEN 'IMPORT. INICIADO'
        WHEN 'F' THEN 'IMPORT. FINALIZ.'
        WHEN 'G' THEN 'GERACAO FINALIZ.'
        WHEN 'P' THEN 'PROC. FINALIZ.'
        ELSE 'DESCONHECIDO'
  END AS SITUACAO,
  id_tp_imp AS "TIPO_IMPORT"
FROM 
  t425cimp 
WHERE 
    CD_EMP = 1 -- INSERIR COD. DE EMPRESA
AND DT_IMP = '2025-09-11' -- INSERIR DATA (YYYY-MM-DD)

Etapa B

Acompanhamento de processamento, que começa acontecer após a finalização da importaçao.
O seguinte SELECT exemplifica a lógica utilizada na tela

Bloco de código
languagesql
SELECT 
    cd_emp       AS "CD.EMP",
    DT_GER       AS "DATA GERACAO",
    DT_IMP       AS "DATA IMPORTACAO",
    NM_ARQ       AS "ARQUIVO",
    CASE id_vld
        WHEN 'I' THEN 'Validação Iniciada'
        WHEN 'F' THEN 'Validado'
        WHEN 'E' THEN 'Erro na Validação'
        ELSE 'Desconhecido'
    END AS "STATUS VALIDACAO",
    CASE id_prc
        WHEN 'I' THEN 'Processamento Iniciado'
        WHEN 'F' THEN 'Processado'
        WHEN 'E' THEN 'Erro no Processamento'
        ELSE 'Desconhecido'
    END AS "STATUS PROC",
    CASE id_ger
        WHEN 'I' THEN 'Geração Iniciada'
        WHEN 'F' THEN 'Gerado'
        WHEN 'E' THEN 'Erro na Geração'
        ELSE 'Desconhecido'
    END AS "STATUS GERACAO",
    QT_OPE       AS "QT OPER",
    QT_CES       AS "QT CONCEC",
    QT_PGT       AS "QT PAG",
    QT_AGR       AS "QT AGREG",
    QT_EST       AS "QT ESTORNO",
    QT_EST_CES   AS "QT ESTORNO CONCEC",
    QT_EST_PGT   AS "QT ESTORNO PAG"
FROM t425cvpg
WHERE 
    CD_EMP = 1 -- INSERIR COD. DE EMPRESA
AND DT_IMP = '2025-09-11' -- INSERIR DATA (YYYY-MM-DD)

Etapa C

Verificação de erros em alguma etapa (importação, processamento ou geração)
O seguinte SELECT exemplifica a lógica utilizada na tela de consulta

Bloco de código
languagesql
SELECT
    cd_emp AS "CD.EMP",
    dt_imp AS "DATA IMPORT",
    sg_itf AS "INTERFACE",
    ds_tbl AS "TABELA ERRO",
    ds_cam AS "CAMPO ERRO",
    ds_erro AS "DESC. ERRO",
    CASE tp_ori
        WHEN 'API' THEN 'API'
        WHEN 'ROT' THEN 'ROTINA'
        WHEN 'ARQ' THEN 'ARQUIVO'
        ELSE 'DESCONHECIDO'
    END AS "ORIGEM",
    CASE tp_prc
        WHEN 'I' THEN 'IMPORTAÇÃO'
        WHEN 'V' THEN 'VALIDAÇÃO'
        WHEN 'P' THEN 'PROCESSAMENTO'
        WHEN 'G' THEN 'GERAÇÃO'
        ELSE 'DESCONHECIDO'
    END AS "PROCESSO"
FROM t425ergr
WHERE 
    CD_EMP = 1 -- INSERIR COD. DE EMPRESA 
AND DT_IMP = '2025-09-11' -- INSERIR DATA (YYYY-MM-DD)

Caso desejar verificar quais operações/movimentos apresentaram criticas, o select abaixo mostrará os contratos/ipoc e a critica.

Bloco de código
languagesql
titleSQL SERVER/SYBASE
SELECT oped.cd_emp AS CD_EMP, 
	oped.dt_imp AS DATA_EMPRESA, 
	erro.ds_erro AS ERRO, 
	erro.ds_tbl AS TABELA_ERRO,
	erro.ds_cam AS CAMPO_ERRO,
	erro.tp_prc AS TIPO_PROCESSAMENTO,
	oped.ds_hsh AS HASH_OPERACAO,
	CASE WHEN oped.cd_ipoc IS NOT NULL 
		THEN 'IPOC: ' + oped.cd_ipoc
	ELSE oped.cd_mod_ope + ';' + oped.sg_mod_ope + ';' + oped.id_tp_pes + ';' + oped.nr_cpf_cnpj + ';' + oped.cd_cli + ';' + oped.nr_ctr + ';' + oped.nr_ade_lib 
	END AS CHAVE_CONTRATO,
	CASE WHEN oped.cd_cla_3050 IS NOT NULL
		THEN oped.cd_cla_3050
	ELSE oped.cd_tp_pes + ';' + oped.cd_ori_rec + ';' + oped.cd_mod_cred + ';' + oped.cd_tp_enc
	END AS CLASSIFICACAO_3050,
	movi.ds_hsh as HASH_MOVI
FROM t425ergr erro 
inner join t425oped oped on (oped.cd_emp = erro.cd_emp AND oped.dt_imp = erro.dt_imp AND oped.ds_hsh = erro.ds_hsh_ope)
left join t425movi movi on (movi.cd_emp = erro.cd_emp AND movi.dt_imp = erro.dt_imp and movi.ds_hsh = erro.ds_hsh_movi and movi.ds_hsh_ope = oped.ds_hsh)
WHERE 
	erro.cd_emp = 604
AND erro.dt_imp = '2025-10-23'
Bloco de código
languagesql
titleORACLE
SELECT oped.cd_emp AS CD_EMP, 
	oped.dt_imp AS DATA_EMPRESA, 
	erro.ds_erro AS ERRO, 
	erro.ds_tbl AS TABELA_ERRO,
	erro.ds_cam AS CAMPO_ERRO,
	erro.tp_prc AS TIPO_PROCESSAMENTO,
	oped.ds_hsh AS HASH_OPERACAO,
	CASE WHEN oped.cd_ipoc IS NOT NULL 
		THEN 'IPOC: ' || oped.cd_ipoc
	ELSE oped.cd_mod_ope || ';' || oped.sg_mod_ope || ';' || oped.id_tp_pes || ';' || oped.nr_cpf_cnpj || ';' || oped.cd_cli || ';' || oped.nr_ctr || ';' || oped.nr_ade_lib 
	END AS CHAVE_CONTRATO,
	CASE WHEN oped.cd_cla_3050 IS NOT NULL
		THEN oped.cd_cla_3050
	ELSE oped.cd_tp_pes || ';' || oped.cd_ori_rec || ';' || oped.cd_mod_cred || ';' || oped.cd_tp_enc
	END AS CLASSIFICACAO_3050,
	movi.ds_hsh as HASH_MOVI
FROM t425ergr erro 
inner join t425oped oped on (oped.cd_emp = erro.cd_emp AND oped.dt_imp = erro.dt_imp AND oped.ds_hsh = erro.ds_hsh_ope)
left join t425movi movi on (movi.cd_emp = erro.cd_emp AND movi.dt_imp = erro.dt_imp and movi.ds_hsh = erro.ds_hsh_movi and movi.ds_hsh_ope = oped.ds_hsh)
WHERE 
	erro.cd_emp = 604
AND erro.dt_imp = TO_DATE('2025-10-23', 'yyyy-MM-dd')