Cardio × EME4: layout documentado contra o fonte
Análise de conformidade · Integração financeira
O que a especificação das Tabelas de Integração exige, o que o módulo M3IntegracaoCardio realmente implementa, e onde as duas coisas divergem.
- Documento: Integração ERP — Abr/2026, 84 pág.
- Fonte:
___FINANCEIRO/M3IntegracaoCardio· branch 52000 - Escopo: 96 units (exclui
_Gerados) - Data: 09/09/2026
Resumo
| Métrica | Valor |
|---|---|
| Tabelas TI implementadas | 19/37 |
| Colunas consumidas | 69% |
| Rotinas no pipeline | 4 |
| Lacunas críticas | 4 |
| Lacunas relevantes | 6 |
O percentual de colunas é calculado sobre as 19 tabelas efetivamente implementadas, excluindo as colunas TELOS* — auditoria interna do Sistema de Gestão, que o ERP não precisa ler.
01 · O modelo que o documento define
A especificação não descreve uma API. Descreve um banco de dados de fronteira hospedado na operadora, com 37 tabelas prefixadas TI_, e um contrato de responsabilidades rígido entre os dois lados.
O Sistema de Gestão (Cardio/SGU) é o dono absoluto do conteúdo: gera, altera, cancela e estorna documentos. O ERP lê, registra o efeito financeiro e contábil, devolve baixas e pagamentos, e carimba de volta o status de cada registro. Alterações no documento só podem partir do Sistema de Gestão — a assimetria é deliberada, para não exigir reconciliação bidirecional (pág. 7).
Todo registro carrega dois campos de controle que formam a máquina de estados da integração: COD_OPER_REGISTRO (I / A / E) e COD_STATUS_REG (NP / P / ER). O ERP seleciona o que está NP, processa, e grava P ou ER com a descrição completa do erro (pág. 75).
02 · As rotinas de integração no fonte
O ponto de entrada é Th5OcorrenciaIntCardio.ProcessarIntegracoes. Ele executa quatro estágios em sequência fixa, cada um instanciando o objeto de conexão e devolvendo um bloco de histórico.
Pipeline de quatro estágios
Sistema de Gestão (Cardio / SGU) — gera · altera · cancela · estorna — único dono do conteúdo do documento.
Tabelas de Integração · SQL Server
| Estágio | Rotina | Tabelas |
|---|---|---|
| 1 | ProcessarCRE | TI_DOCUMENTO_REC, TI_ITEM_DOCTO_REC, TI_IMPOSTO_DOC_REC |
| 2 | ProcessarCPA | TI_DOCUMENTO_CON, TI_ITEM_DOCTO_CON, TI_IMPOSTO_DOC_CON |
| 3 | ProcessarBaixasCRE | TI_DOCUMENTO_BAIXA, TI_ITEM_DOCTO_BXA — grava e apaga (write-back) |
| 4 | ProcessarBaixasCPA | TI_DOCUMENTO_PAGO, TI_ITEM_DOCTO_PAGO — grava e apaga (write-back) |
EME4 · Financeiro e Contábil — Receita Diversa · Despesa Diversa · Tesouraria · classificação no plano de contas ANS.
Sequência real de
uh5OcorrenciaIntCardio.pas:97–136. Clientes e fornecedores não têm estágio próprio: são resolvidos sob demanda dentro de CRE e CPA, e há um lote separado emExecIntegracaoCLICardio.
Camadas do módulo
| Camada | Unit | Papel na integração |
|---|---|---|
| L | ul5IntegracaoFinCardio.pas | Gatilhos a partir do financeiro do EME4 — dispara o write-back de baixa CRE/CPA quando um título é liquidado |
| H | uh5OcorrenciaIntCardio.pas | Orquestrador. Cria a ocorrência, encadeia os 4 estágios, consolida o histórico |
| H | uh5CfgBancoDadosCardio.pas | Todo o acesso às TIs. 110 KB, 41 métodos publicados: conexão, leitura, De-Para e write-back |
| H | uh5OcorrenciaIntCRECardio.pas | Receita — monta o Documento de Receita Diversa a partir de TI_DOCUMENTO_REC |
| H | uh5OcorrenciaIntCPACardio.pas | Despesa — monta o Documento de Despesa Diversa a partir de TI_DOCUMENTO_CON |
| H | uh5OcorrenciaIntBaiCRECardio.pas | Baixas de recebimento vindas do SGU e devolução das liquidações |
| H | uh5OcorrenciaIntBaiCPACardio.pas | Baixas de pagamento vindas do SGU e devolução das liquidações |
| H | uh5OcorrenciaIntCliCardio.pas | Cliente — cria/atualiza o cadastro no EME4 a partir de TI_EMPRESA_CLIENTE |
| H | uh5OcorrenciaIntFornCardio.pas | Fornecedor — idem a partir de TI_EMP_FORNECEDOR |
| H | uh5ImportacaoNFSeCardio.pas | Importação de NFS-e — fora do contrato das TIs |
Direção da escrita
O módulo respeita a divisão de responsabilidades do documento. Ele nunca insere documento de receita ou despesa nas TIs — só carimba status. As únicas inserções são o write-back de liquidação, exatamente o que a pág. 7 atribui ao ERP.
| Operação | Tabela | Linha |
|---|---|---|
| INSERT | TI_DOCUMENTO_BAIXA | 2143 |
| INSERT | TI_ITEM_DOCTO_BXA | 2297 |
| INSERT | TI_DOCUMENTO_PAGO | 1786 |
| INSERT | TI_ITEM_DOCTO_PAGO | 1857 |
| UPDATE status | TI_EMPRESA_CLIENTE · TI_EMP_FORNECEDOR · TI_DOCUMENTO_REC · TI_DOCUMENTO_CON · TI_DOCUMENTO_PAGO · TI_DOCUMENTO_BAIXA | 250 · 373 · 1095 · 1068 · 2007 · 1043 |
| DELETE | TI_DOCUMENTO_BAIXA · TI_DOCUMENTO_PAGO — só quando o registro ainda está NP+I, conforme pág. 75 | 1506 · 1632 |
Linhas em uh5CfgBancoDadosCardio.pas.
03 · Conformidade do layout, tabela por tabela
Das 37 tabelas especificadas, 19 aparecem no fonte. As 18 restantes não têm uma única citação em nenhuma das 96 units.
O núcleo transacional — receita, despesa, itens, impostos, baixas e pagamentos — está todo implementado, e com boa cobertura de colunas. O que ficou de fora se concentra em dois lugares: as tabelas De-Para de domínio e os campos de enriquecimento cadastral.
Implementadas
| Tabela | Pág. | Cols | Usadas | Cobertura | Colunas não consumidas |
|---|---|---|---|---|---|
| TI_DOCUMENTO_PAGO | 48 | 29 | 28 | 97% | NUM_PARCELA_SI |
| TI_ITEM_DOCTO_REC | 32 | 18 | 16 | 89% | ID_ITEM_SG, VAL_LIQUIDO_ITEM |
| TI_ITEM_DOCTO_BXA | 39 | 18 | 16 | 89% | ID_ITEM_SG, VAL_LIQUIDO_ITEM |
| TI_ITEM_DOCTO_PAGO | 51 | 18 | 16 | 89% | ID_ITEM_SG, VAL_LIQUIDO_ITEM |
| TI_ITEM_DOCTO_CON | 43 | 17 | 15 | 88% | ID_ITEM_SG, VAL_LIQUIDO_ITEM |
| TI_MAP_COD_IMPOSTO | 72 | 7 | 6 | 86% | COD_TRIBUTO |
| TI_MAP_CT_CORRENTE | 67 | 9 | 7 | 78% | COD_BANCO_SI, COD_AGENCIA_SI |
| TI_IMPOSTO_DOC_REC | 34 | 16 | 12 | 75% | VALOR_RETENCAO, VALOR_RETENCAO_SEC, PERCENTUAL_SEC, VALOR_RET_EXTERNA |
| TI_IMPOSTO_DOC_CON | 47 | 16 | 12 | 75% | VALOR_RETENCAO, VALOR_RETENCAO_SEC, PERCENTUAL_SEC, VALOR_RET_EXTERNA |
| TI_DOCUMENTO_BAIXA | 36 | 44 | 32 | 73% | ANO_COMPET_RECEB, MES_COMPET_RECEB, NUM_DOC_OP_FINANC, COD_ARQUIVO_RECEB, NOM_ARQUIVO_RECEB, NUM_PARCELA_SI, IND_SINTETIZA, NUM_AGRUPAMENTO_REC, COD_GRUPOLANC_EXCLUSAO, COD_GRUPOLANC2_EXCLUSAO, COD_MOVBANC_EXCLUSAO, COD_FILIAL_TITULO_ORIGEM |
| TI_DOCUMENTO_CON | 41 | 39 | 27 | 69% | COD_CLIENTE_SG, DAT_ESTORNO, COD_BANCO, COD_AGENCIA, COD_CCORRENTE, DSC_OBSERVACAO, ARQ_GERADO_SI, COD_MOT_PRORROG_SG, COD_MOTIVO_CANC_SG, AUTOID_DOC_AJUSTADO, COD_DOC_FORNEC_SG, AUTOID_DOCFINANC_SG |
| TI_EMP_FORNECEDOR | 26 | 38 | 26 | 68% | COD_TIPO_DOCUMENTO, DAT_NASC_FUNDACAO, COD_INSCR_ESTADUAL, COD_INSCRICAO_INSS, IND_SITUACAO, COD_MUNICIPIO_SG, DSC_OBSERVACAO, COD_SEGTO_MERC_SG, COD_AREA_SG, COD_CONTA_CONTABIL, CLASSE_FORNECEDOR, IND_CONTRIBUI_IBSCBS |
| TI_MAP_IT_CTA_CTBL | 68 | 22 | 14 | 64% | COD_TIPO_BAIXA_SG, COD_CONTA_CREDITO, COD_CONTA_DEBITO, COD_CONTA_AUX1–4, COD_HIST_PADRAO |
| TI_DOCUMENTO_REC | 30 | 51 | 29 | 57% | COD_CLIENTE_SG, NUM_PARCELA_GERADA, NUM_PARCELA_NEGOC, COD_SITUA_DOC_SG, COD_MOT_PRORROG_SG, COD_MOTIVO_CANC_SG, NUM_REMESSA_BANCO, DAT_REMESSA_BANCO, COD_VENDEDOR_SG, COD_COORDENADOR_SG, DSC_OBSERVACAO, DAT_CONTABIL, NUM_CONTRATO, COD_TIPO_FATUR, COD_NEGOC_JUROS_SG, COD_NEGOC_MULTA_SG, AUTOID_DOC_AJUSTADO, NUM_DOC_FORNEC, NFE_SERIE_SG, NFE_NUMERO_SG, NFE_CODIGO_VERIFICACAO_SG, NFE_DATA_EMISSAO_SG |
| TI_MAP_TIPO_DOC | 59 | 8 | 4 | 50% | IND_CONTABILIZA, COD_AUX1, COD_AUX2 |
| TI_EMPRESA_CLIENTE | 24 | 51 | 25 | 49% | COD_CLIENTE_SG, COD_TIPO_DOCUMENTO, DAT_NASCIMENTO, COD_INSCR_ESTADUAL, IND_CONTRIBUI_ICMS, IND_SITUACAO, COD_AREA_SG, COD_BLOQUEIO_SG, NUM_DIA_ATSO_BLOQ, COD_SEGTO_MERC_SG, COD_MUNICIPIO_SG, DSC_OBSERVACAO, COD_OPER_REG_FORNEC, COD_ST_REG_FORNEC, DSC_ERRO_REG_FORNE, DAT_ATUAL_FORNEC, COD_USUARIO_FORNEC, COD_CONTA_CONTABIL, COD_TIPO_FATUR, IND_DEBITO_CONTA, COD_BANCO_SG_FORNEC, COD_AGENCIA_SG_FORNEC, COD_CCORRENTE_SG_FORNEC, CLASSE_CLIENTE, IND_CONTRIBUI_IBSCBS, COD_ESFERA_GOVERNAMENTAL |
| TI_MAP_EMPRESA | 56 | 4 | 4 | 100% | — |
| TI_MAP_FILIAL | 59 | 5 | 5 | 100% | — |
| TI_MAP_TIPODOC_OPF | 65 | 5 | 5 | 100% | — |
Sem nenhuma citação no fonte
| Grupo | Tabelas | O que se perde |
|---|---|---|
| Registro auxiliar | TI_TIPO_REG_AUXI, TI_FECHA_REG_AUXI | Todo o mecanismo de fechamento mensal do registro auxiliar (pág. 8 e 54). O documento permite que o ERP delegue o fechamento ao Sistema de Gestão — precisa ser confirmado se essa é a decisão vigente ou uma pendência. |
| De-Para de domínio | TI_MAP_SITUA_DOC · TI_MAP_STATUS_DOC · TI_MAP_MOTIVO_CANC · TI_MAP_MOT_PRORROG · TI_MAP_TIPO_BAIXA · TI_MAP_SEGTO_MERC · TI_MAP_AREA · TI_MAP_BLOQUEIO · TI_MAP_MUNICIPIO · TI_MAP_USUARIO · TI_MAP_VENDEDOR · TI_MAP_COORDENADOR | Os domínios são resolvidos por constantes no código Delphi em vez de tabela. Muda o domínio na operadora e a correção exige recompilar o módulo, não parametrizar. TI_MAP_TIPO_BAIXA é o mais sensível: carrega IND_LIQUIDA_DOC e IND_INTEGR_MOVBAN, que decidem se a baixa liquida o título e se gera movimento bancário. |
| Identificação | TI_MAP_CLIENTE, TI_MAP_FORNECEDOR | Coerente com a pág. 76, que manda usar esses De-Para como última opção. O módulo resolve por COD_CLIENTE_SI / COD_FORNECEDOR_SI gravado na própria TI de cadastro. Não é lacuna. |
| Detalhe | TI_DET_DOCTO_REC, TI_DEP_FORNECEDOR | Descrição livre de itens do documento de receita e dependentes do fornecedor. Sem efeito financeiro direto. |
04 · Lacunas
Todas foram lidas no código, não inferidas. As referências apontam uh5CfgBancoDadosCardio.pas salvo indicação em contrário.
🔴 Crítico — Nenhuma busca em tabela De-Para filtra por empresa
Toda tabela TI_MAP_* tem chave única COD_EMPRESA_SG + COD_SISTEMA_SI + COD_<x>_SG. As onze consultas De-Para do módulo filtram apenas pela última parte. Duas delas acrescentam COD_SISTEMA_SI; nenhuma acrescenta COD_EMPRESA_SG.
Com uma só Unimed na base de integração o resultado é correto por acidente. Numa base multi-empresa — ou compartilhada entre singulares — a consulta devolve a primeira linha que casar, e o documento é lançado na filial, conta financeira ou imposto de outra empresa. O erro é silencioso: não há exceção, apenas o valor errado.
Evidência: linhas 465, 502, 578, 618, 644, 687, 779, 836, 905, 1569, 2049 — ex.:
'select COD_FILIAL_SI from TI_MAP_FILIAL where COD_FILIAL_SG='+IntToStr(aCodFilial)
🔴 Crítico — Duas buscas De-Para ignoram parte da chave e podem casar a linha errada
Conta corrente. A chave documentada é COD_BANCO_SG + COD_AGENCIA_SG + COD_CCORRENTE_SG (pág. 67). O código casa só pelo número da conta. Duas contas de mesmo número em bancos ou agências diferentes — situação comum — resolvem para a mesma conta de tesouraria do EME4.
Imposto. A chave inclui COD_TIPO_PESSOA (F/J, pág. 72), precisamente para permitir tratamento distinto de retenção entre pessoa física e jurídica. O código casa só por COD_IMPOSTO_SG, então o mapeamento de PF e o de PJ são indistinguíveis e vence o que o banco devolver primeiro.
Evidência: conta corrente: linhas 643–646 e 1569 · imposto: linhas 577–579
🔴 Crítico — O except do mapeamento contábil degrada para um resultado diferente
A busca da conta financeira filtra por Compartilhamento_Risco, Pacote e, conforme o fluxo, TaxaAdminPagamento ou MaisValia. Se qualquer exceção ocorrer, o bloco except refaz a consulta sem esses quatro predicados.
A intenção é clara — tolerar uma TI antiga que ainda não tenha as colunas. Mas o except é genérico: um timeout, uma queda de conexão ou um deadlock caem no mesmo caminho. E sem os predicados a consulta passa a casar várias linhas que diferiam justamente por eles, devolvendo uma conta arbitrária. O efeito é classificação errada no plano de contas ANS, sem erro registrado.
Vale notar o contraste: para NAT_RENDIMENTO o módulo faz a coisa certa — checa a existência da coluna uma vez na conexão (ExisteColuna, linha 2127) em vez de depender de exceção. O mesmo padrão resolveria este caso.
Evidência: linhas 775–854, fallback em 831–853
🔴 Crítico — O write-back de pagamento não é transacional; o de recebimento é
_INTERNO_IncluirBaixaCRECardio abre transação na conexão Cardio e faz commit/rollback (linhas 1230, 1455, 1460). O gêmeo do lado despesa, _INTERNO_IncluirBaixaCPACardio, não abre transação nenhuma — e insere dois registros: o cabeçalho em TI_DOCUMENTO_PAGO (1786) e o item em TI_ITEM_DOCTO_PAGO (1857).
Falha entre os dois e o SGU passa a enxergar um pagamento sem itens — sem a decomposição por modalidade, regulamentação, natureza e cobertura de que a contabilização ANS depende.
Os métodos IniciaTransacao e TerminaTransacao existem, estão publicados (kMt 26 e 27) e não são chamados em lugar nenhum. No orquestrador a chamada está comentada:
// uh5OcorrenciaIntCardio.pas:89-90
// CfgBDCardio.IniciaTransacao;
// TxbSession(Session).Transacoes.StartTransactionExplicito;Evidência: 1017, 1025 (implementados e órfãos) · 1230/1455/1460 (CRE) · 1753–1900 (CPA, sem transação) · uh5OcorrenciaIntCardio.pas:89–90
🟡 Relevante — A trava contra execução concorrente praticamente nunca libera
Se existe ocorrência em status 0 (processando), a nova execução só prossegue quando a ocorrência é de outro dia, quando o ambiente é Mult, ou quando passaram mais de 5 horas. A conta das 5 horas está invertida:
// uh5OcorrenciaIntCardio.pas:68
StrToInt(FormatDateTime('hh', Hora da ocorrência))
- StrToInt(FormatDateTime('hh', Time)) > 5Uma ocorrência iniciada às 08h, avaliada às 14h, dá 8 − 14 = −6, que nunca é maior que 5. A subtração está na ordem contrária. Na prática, uma execução que morreu bloqueia todas as integrações seguintes até a virada do dia. Como não há transação (achado anterior), morrer no meio é justamente o cenário provável.
Evidência: uh5OcorrenciaIntCardio.pas:67–69
🟡 Relevante — Free no objeto errado no cálculo do tipo de baixa CPA
A função aninhada Retornar_TipoDoctoBaixa da rotina de pagamento cria fSQLQryTotRec e, no finally, libera fSQLQryNumParc — outra variável, declarada no escopo externo e ainda não inicializada nesse ponto do fluxo.
Resultado: fSQLQryTotRec vaza a cada chamada e o Free incide sobre um ponteiro indeterminado. A versão equivalente do lado receita (linha 1208) está correta — é erro de cópia. A rotina está em uso: é chamada na montagem do INSERT em TI_DOCUMENTO_PAGO.
Evidência: linha 1716 (errado) contra 1208 (correto) · chamada em 1799
🟡 Relevante — As rotinas de baixa não tratam alteração, só exclusão
Para CRE e CPA de documento, o módulo cobre a máquina de estados da pág. 75 por inteiro: E exclui, A altera, e um I com status C também altera. Nas duas rotinas de baixa, quando o documento já existe no EME4, o único desvio é E.
Um registro chegando com COD_OPER_REGISTRO = 'A' passa pelo bloco sem ação e é carimbado como processado logo em seguida — a alteração se perde silenciosamente e os dois lados divergem. Confirmar com a Datainfo se o SGU chega a emitir A em baixa; se não emite, isto é apenas robustez ausente, e não um defeito ativo.
Evidência: uh5OcorrenciaIntBaiCRECardio.pas:381–392 · uh5OcorrenciaIntBaiCPACardio.pas:202 — contra uh5OcorrenciaIntCRECardio.pas:891–895
🟡 Relevante — NF-e do documento de receita não é lida
Os quatro campos de nota fiscal eletrônica incluídos na especificação em 31/10/2012 — NFE_SERIE_SG, NFE_NUMERO_SG, NFE_CODIGO_VERIFICACAO_SG, NFE_DATA_EMISSAO_SG — mais Cod_Documento_Fiscal_Sg (19/01/2015) e NUM_DOC_FORNEC (01/06/2012) não têm referência no fonte.
O módulo tem um caminho separado de NFS-e (uh5ImportacaoNFSeCardio.pas), que não passa pelas TIs. Verificar se a nota do lado receita chega por ali ou se realmente não é integrada.
Evidência: pág. 32 do documento · busca sem ocorrência nas 96 units
🟡 Relevante — Retenções secundárias e retenção externa ficam de fora
Nas duas tabelas de imposto, VALOR_RETENCAO, VALOR_RETENCAO_SEC, PERCENTUAL_SEC e VALOR_RET_EXTERNA não são consumidos. O módulo lê VALOR_BASE, VALOR_BASE_SEC, PERCENTUAL, RECOLHER e TOTAL_RETENCAO — ou seja, recalcula em vez de aceitar o valor apurado pelo SGU. Divergência de arredondamento entre os dois cálculos aparece como diferença de centavos na retenção.
Evidência: págs. 34 e 47 · colunas lidas em uh5OcorrenciaIntCRECardio.pas e uh5OcorrenciaIntCPACardio.pas
🟡 Relevante — SQL montado por concatenação de literais vindos da base do SGU
Boa parte das consultas e todos os INSERT de write-back são montados concatenando valores lidos da TI, com aspas via #39. Um COD_DOCUMENTO_SG ou nome de fornecedor contendo apóstrofo quebra o comando — e o except genérico transforma isso em erro obscuro em vez de mensagem útil. Há parâmetros disponíveis e usados em outros pontos do mesmo arquivo; é inconsistência, não limitação.
Evidência: 1792–1830 (INSERT TI_DOCUMENTO_PAGO) · 466, 503, 579, 619, 1190, 1219
⚪ Menor — Mensagem de erro aponta uma tabela que não existe
Quando o De-Para de tipo de documento de receita falha, a exceção diz "na Tabela TI_MAP_TIPODOC". A tabela consultada é TI_MAP_TIPO_DOC. Quem for atender o chamado procura um objeto inexistente.
Evidência: uh5OcorrenciaIntCRECardio.pas:138 e 834 · tabela real em 502
05 · Onde a própria documentação diverge
Nem toda a distância entre os dois lados é falha de implementação. Quatro pontos são do documento.
- Os quatro campos mais recentes de
TI_MAP_IT_CTA_CTBLestão documentados como rótulo, não como coluna. A pág. 72 listaCompartilhamento Risco,É Pacote,Taxa Admin. PagtoeMais Valia— com espaço e acento. As colunas físicas sãoCompartilhamento_Risco,Pacote,TaxaAdminPagamentoeMaisValia. É impossível gerar o DDL a partir do documento, e esta é provavelmente a razão de existir oexceptdo achado anterior. - Os tipos são Oracle; a conexão é SQL Server. O documento especifica
NUMBER,VARCHAR2,DATE. O módulo abreDriverName := 'MSSQL'(linha 2120) e escreve T-SQL —select ValRec = Sum(...), que é erro de sintaxe em Oracle, e datas como literal'yyyy-mm-dd'. Não é defeito, mas significa que o layout publicado não descreve o banco que o conector espera. DSC_OBSERVAÇÃOaparece acentuado emTI_DOCUMENTO_REC,TI_DOCUMENTO_CON,TI_EMPRESA_CLIENTEeTI_EMP_FORNECEDOR. Identificador acentuado exige aspas duplas em Oracle e é má prática nos dois bancos.- Dois erros de digitação em chave.
COD_EMPESA_SGemTI_MAP_TIPO_DOC(pág. 59) eCOD_AGENCIA+SGna chave única deTI_MAP_CT_CORRENTE(pág. 67).
Sobre a cobertura de colunas. Os percentuais medem se a coluna é referenciada em alguma das 96 units. Uma coluna não referenciada é comprovadamente não consumida — as leituras são
select *seguidas deFieldByName. O inverso não vale como prova de uso correto: referência não é validação semântica.
06 · Sugestão de ordem
Os quatro críticos são independentes entre si e todos ficam contidos em um único arquivo — o que torna a correção mais barata do que o número de achados sugere.
| # | Ação | Onde | Por quê primeiro |
|---|---|---|---|
| 1 | Corrigir a subtração da trava de 5 horas | uh5OcorrenciaIntCardio.pas:68 | Uma linha. Destrava operação hoje bloqueada até a meia-noite |
| 2 | Corrigir o Free trocado | :1716 | Uma linha. Remove vazamento e liberação de ponteiro indefinido em rotina ativa |
| 3 | Envolver o write-back CPA em transação | :1753–1900 | Espelha o que o lado CRE já faz; elimina pagamento sem item |
| 4 | Trocar o except por checagem de coluna | :775–854 | Padrão já existe no arquivo (ExisteColuna, :2127) |
| 5 | Acrescentar COD_EMPRESA_SG às 11 buscas De-Para | :465, 502, 578, 618, 644, 687, 779, 836, 905, 1569, 2049 | Mecânico e uniforme; pré-requisito para qualquer base multi-empresa |
| 6 | Completar a chave de conta corrente e de imposto | :643, 577 | Depende de confirmar com a operadora se há colisão real na base atual |
| 7 | Decidir sobre TI_MAP_TIPO_BAIXA e o registro auxiliar | — | Decisão de produto antes de código: parametrizar ou assumir a delegação ao SGU |
A confirmar com a Datainfo antes de mexer
- O SGU emite
COD_OPER_REGISTRO = 'A'em baixa, ou só I e E? - O fechamento do registro auxiliar é delegado ao Sistema de Gestão por decisão, conforme faculta a pág. 8, ou é pendência de implementação?
- A base de integração é por operadora ou compartilhada entre singulares? Define a urgência do item 5.
- A NF-e do documento de receita chega pelo caminho de NFS-e ou não é integrada?
- As retenções apuradas pelo SGU devem ser aceitas como vieram, em vez de recalculadas?
Levantamento por leitura do fonte na branch 52000 e da especificação de Abr/2026. Percentuais medidos por varredura de identificadores nas 96 units editáveis do módulo; units _Gerados excluídas por serem reescritas na geração. Nenhum código foi alterado e nenhuma base foi consultada.