Documentação Funcional — ecosif-automations

Público-alvo: Clientes / Negócio / Operação
Módulo: ecosif-automations


1. Objetivo do Módulo

O ecosif-automations automatiza a importação de lançamentos contábeis a partir de ficheiros .IPL e do ficheiro mestre CT32.LD: valida formato e dados (empresa e filial), resolve o mapeamento do fundo via CT32, envia os lançamentos para fila de processamento e organiza os ficheiros em pastas de sucesso ou erro. Em produção (AWS), o fluxo é acionado pelo upload para S3 e processado em fila (SQS); localmente, pode ser testado com scripts e pasta local.

Em linguagem de negócio:


2. Tipos de Ficheiros e Layouts Suportados

2.1 Ficheiro .IPL (Lançamentos)

Layout por posição (156 caracteres):

Posições Conteúdo Exemplo / Observação
0–6 Data (YYMMDD) 240101 = 2024-01-01
6–12 Lote 000001
12–17 Número do lançamento 00001
17 Tipo (1=crédito, 2=débito) 1 ou 2
18 Espaço
19–26 Conta contábil 8 caracteres
26–30 Código do histórico 4 caracteres
30–80 Descrição do histórico 50 caracteres
80–87 Conta contrapartida 8 caracteres
87–91 Código histórico contrapartida 4 caracteres
91–140 Descrição histórico contrapartida 49 caracteres
140–157 Valor (numérico, vírgula ou ponto decimal) 17 caracteres

Qualquer linha com comprimento diferente de 156 ou com tipo diferente de 1/2 é considerada erro de parse; se houver erros, o ficheiro inteiro falha e é movido para a pasta de erro com CSV de diagnóstico.

2.2 Ficheiro .CT32.LD (Mestre de mapeamento)

Ordem Campo Descrição
1 source_name Nome da base/ambiente (ex.: ecosif_prod)
2 company_code Código da empresa
3 branch_code Código da filial
4 fund_code Código do fundo (deve coincidir com o prefixo do IPL)
5 description Descrição (ex.: do ficheiro ou período)

O CT32.LD é usado para resolver empresa + filial a partir do fundo do nome do IPL:

  1. o sistema extrai NNNNNN de NNNNNN_YYYYMMDD.IPL;
  2. procura no CT32 linha com fund_code = NNNNNN;
  3. usa company_code e branch_code dessa linha para validação no masterdata e para o processamento seguinte.

Se o CT32 não existir, estiver inválido, tiver duplicidade de fund_code ou não contiver o fundo do IPL, a importação falha.

2.3 Resumo

Tipo Nome Formato Uso
.IPL NNNNNN_YYYYMMDD.IPL Texto, linhas fixas de 156 caracteres Lançamentos contábeis (data, lote, conta, histórico, valor, tipo crédito/débito).
.CT32.LD CT32.LD (ou chave em CT32_MASTER_KEY) CSV, 5 campos, multi-linha Mapeamento fundo → empresa/filial para validação e contexto.

Não são suportados outros formatos (ex.: Excel, XML) nem outros layouts de .IPL no código atual.


3. O Que Fazer Quando uma Importação Falha

3.1 Confirmar que falhou

3.2 Ler o CSV de erro

O CSV de erro tem o formato (exemplo):

timestamp;nome_do_ficheiro;mensagem_de_erro;estado_do_ct32;ERROR

3.3 Ações por tipo de erro

Mensagem típica Causa provável O que fazer
Invalid IPL filename format Nome do ficheiro não segue NNNNNN_YYYYMMDD.IPL Renomear o ficheiro para o padrão (6 dígitos + _ + 8 dígitos + .IPL).
CT32.LD file not found Não existe o ficheiro mestre na chave configurada Criar/enviar o CT32 na chave definida em CT32_MASTER_KEY (default CT32.LD).
Company not found: <code> Código de empresa do CT32 não existe no masterdata Cadastrar a empresa no eCosif (ecosif-masterdata) ou corrigir o campo company_code no .CT32.LD.
Branch not found: <company>/<branch> Filial não existe no masterdata Cadastrar a filial para essa empresa no eCosif ou corrigir branch_code no .CT32.LD.
Fund code not found in CT32: <code> Fundo do nome do IPL não existe no CT32 mestre Incluir/corrigir linha no CT32 com esse fund_code.
CT32 has duplicate fund code mappings Mesmo fundo aparece em duas linhas do CT32 Corrigir o CT32 para manter um único mapeamento por fund_code.
IPL file has N validation errors Linhas com tamanho diferente de 156 ou tipo inválido (não 1/2) Revisar o ficheiro .IPL: garantir 156 caracteres por linha e tipo 1 ou 2 na posição 17. Corrigir o ficheiro na origem ou manualmente e reenviar.
Failed to parse CT32 file CSV do CT32 com menos de 5 campos ou formato inválido Garantir que o CT32 tem linhas com 5 campos (source_name,company_code,branch_code,fund_code,description).

3.4 Depois de corrigir

Não é necessário apagar manualmente o ficheiro da pasta de erro; o sistema apenas move os que falham para importError/. Os relatórios de sucesso ficam em imported/reports/ (S3) ou local_data/imported/reports/ (local).


4. Glossário

Termo Significado
.IPL Ficheiro de importação de lançamentos contábeis (layout fixo 156 caracteres por linha).
.CT32.LD Ficheiro mestre de mapeamento fundo → empresa/filial em formato CSV.
Importação Processo de validação do .IPL, resolução de empresa/filial no CT32, validação no masterdata e envio para fila de processamento.
Pasta de erro / importError Pasta onde são movidos os .IPL (e CSV de erro) quando a validação ou o parse falham.
Pasta importada / imported Pasta onde são movidos os ficheiros processados com sucesso após a API de import responder.
Relatório de processamento Ficheiro CSV (ex.: <fileName>.report.csv) com total de lançamentos e quantidade importada, gerado após sucesso na API.

Para detalhes técnicos dos fluxos e da integração com moviments/masterdata, ver architecture/arquitetura.md. Para variáveis de ambiente, pastas e monitorização, ver deploy/operacao.md.