feat: audited-decision gate for PIS/COFINS and CFOP_ENTRADA NOT_APPLICABLE/OPERATION_TIME

Missao 2 (fechamento de lacunas fiscais, read-only + UI/engine gated):
- field_contract: pis_cofins_profile now also accepts the literal sentinels
  NOT_APPLICABLE/OPERATION_TIME, resolving to NA only from an audited
  FiscalContextEntry - never inferred from emission statistics. CFOP_ENTRADA
  under an already-decided entry_scope=MIXED_OR_DYNAMIC now resolves to NA
  instead of MANUAL, so it stops blocking product completeness and stops
  re-asking an already-answered question. Regression tests prove: no ADMIN
  decision => unchanged old behavior; decision present => gated bucket, no write.
- context_keys: validate_entry accepts the two sentinels for pis_cofins_profile.
- Contexto Fiscal UI: PIS/COFINS and CFOP_ENTRADA cards show the Bloco 2
  cross-database evidence (5 installations, CRT 1 and 3: emission never reads
  the PIS/COFINS cadastral fields anywhere) and a link to an ADMIN-facing,
  anonymized dossie-for-the-accountant; entry_scope is now a dropdown.
- release/tests: decoupled the Hub's GTI_FISCAL_VERSION from the Agent's own
  version (test_versions_are_coherent_across_hub_and_packages vs the new
  test_agent_version_is_internally_coherent) - a Hub-only release must not
  require touching, rebuilding or republishing the Agent.
- New read-only evidence: docs/runs/GTI_dryrun_universe_summary.json (527
  products, Agent 2's real database), docs/runs/BLOCO2_PIS_COFINS_CROSS_DB_V1.json
  (5 installations), docs/fiscal_completeness_matrix.md, docs/dossie_contador.md
  (internal, real names) + central/static/docs/dossie_contador.md (public,
  anonymized - no CNPJ/razao social/product names), docs/AGENT2_UPGRADE_RUNBOOK_V1.md.
- CLAUDE.md: recorded the permanent fiscal-mission rules (no AI/scraping, no
  Firebird schema changes, deploy only via deploy_hub.ps1, never reenroll,
  no remote access to client Agent hosts, no client data in unauthenticated
  static routes).

No schema/migration change. Zero Firebird writes (new scripts never open a
write connection). Hub only - Agent code untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
gti
2026-09-28 09:44:05 -03:00
co-authored by Claude Sonnet 5
parent 1621ea4e0b
commit e935ed61d5
21 changed files with 1066 additions and 35 deletions
+46
View File
@@ -0,0 +1,46 @@
# Agent 2 — Roteiro de upgrade manual 1.3.7 → 1.3.8
## Self-update: NÃO EXISTE
Evidência no código:
- `deploy/agent-windows/gti-agent.ps1` só aceita `install | install-auto | configure |
preflight | start | stop | restart | status | uninstall` (`ValidateSet` na linha 20).
Não há verbo `update`/`upgrade`.
- `install-auto` é idempotente e **recusa fazer qualquer coisa** se `.env` já tem
`AGENT_TOKEN` e o serviço já existe ("Already enrolled and installed... Nothing to
do.") — não reenrola, não atualiza arquivos.
- O painel do Hub (`central/app/control_plane.py:140`, `compute_version_drift`) só
calcula e **exibe** o rótulo "Desatualizada" (`version_drift`); não existe nenhum
código que baixe pacote, copie arquivo ou reinicie o serviço a partir do Hub. O
botão "Atualização disponível" é só informativo — não há ação de clique associada.
- `docs/PILOT_DEPLOYMENT.md:367` já documenta isso: "There is no auto-update
mechanism yet (deliberately out of scope)".
Conclusão: o upgrade é sempre manual, feito por humano na máquina do cliente.
## Roteiro (operador, elevado)
1. **Backup antes de tocar em qualquer arquivo**
- Copie `<pasta_instalação>\agent\agent_state.sqlite` para um local seguro
(ex.: `agent_state.sqlite.bak-2026-09-28`).
- Copie também `<pasta_instalação>\.env` (tem o `AGENT_TOKEN` permanente —
nunca gerar um novo).
2. `gti-agent.ps1 stop` (para o serviço `GTIFiscalAgent`).
3. Extraia o pacote 1.3.8 publicado **sobre** a mesma pasta de instalação
(sobrescrever arquivos de código), **sem apagar a pasta antes** e:
- **não** sobrescrever `.env`;
- **não** sobrescrever/apagar `agent\agent_state.sqlite`;
- **não** copiar/usar `enrollment.json` do pacote novo (ele é só para instalação
nova; reenrollar geraria outro `installation_id`/token).
4. `gti-agent.ps1 install` (elevado) — reinstala dependências no venv existente e
re-registra o serviço com o novo código. Não toca `.env` nem o SQLite.
5. Confira que `.env` continua com o mesmo `AGENT_TOKEN`/`AGENT_ID` de antes.
6. `gti-agent.ps1 preflight` — deve passar (mesmas credenciais Firebird de antes).
7. `gti-agent.ps1 start`.
8. Verificar (ainda na máquina): `gti-agent.ps1 status` mostra o serviço rodando.
9. Confirmar sozinho ou pedir para eu confirmar (somente leitura, pelo Hub):
heartbeat com `agent_version=1.3.8`, `installation_id` inalterado
(`bb50884a-5e78-4f26-8cac-804932dae8de`), horário do heartbeat novo.
Se algo falhar depois do passo 3, restaurar o backup do `agent_state.sqlite` e do
`.env` resolve qualquer estado inconsistente sem precisar reenrolar.
+73
View File
@@ -0,0 +1,73 @@
# Dossiê para o contador — Missão 2 (2026-09-28)
Este documento não afirma nenhuma regra fiscal. Cada pergunta mostra a evidência real medida
(somente leitura, sem gravação em nenhum banco) e qual clique na tela "Contexto Fiscal" do painel
a resposta libera.
## (a) Em CRT=1, o PIS/COFINS por item segue o cadastro do produto ou a operação/regime?
**Evidência**: nos 5 bancos auditados (Agent 2/GTI, CONSTRUCAO, MMMODAS, RINCAO, UNIAO — CRT 1 e
CRT 3), o cadastro do produto (`C000025`) **nunca** tem os campos de PIS/COFINS usados pela emissão:
mesmo quando a nota fiscal emitida traz um CST de PIS/COFINS preenchido, o cadastro está em branco
para o mesmo produto (23 casos confirmados no Agent 2). Em CONSTRUCAO, MMMODAS, RINCAO e UNIAO, a
emissão nunca preenche o CST de PIS/COFINS (0% dos itens, em todos os anos de histórico
disponíveis). Isso indica que a emissão não lê o cadastro — mas não decide se o valor correto é
"não aplicável", "por operação" ou um perfil fixo por empresa. **Libera**: card "Perfil de
PIS/COFINS" → escolher `NOT_APPLICABLE`, `OPERATION_TIME` ou um perfil JSON de 6 campos.
## (b) O CST 01 emitido em ~9,5% dos itens é intencional?
**Evidência**: dos 34.946 itens de NFC-e emitidos pelo Agent 2, 3.336 (9,5%) trazem CST de
PIS/COFINS = "01" — mas **3.336 desses 3.669 itens estão concentrados no ano de 2022** (90,9% dos
itens daquele ano); nos demais anos com dados (2018, 2023, 2024, 2025, 2026), a taxa é 0%. O ano de
2022 já havia sido sinalizado em outra auditoria (`docs/AI_PROJECT_STATE.md`, mission
"Product Fiscal Defaults Engine V1") como um período com problema de integridade de dados (drift de
identidade de produto em dezembro/2022). A leitura mais provável é que **não é uma política atual
deliberada** — é um comportamento isolado de um período específico, possivelmente uma versão antiga
do software de emissão ou uma configuração temporária. Não decidimos isso por evidência
insuficiente para confirmar a causa exata; a pergunta é se o contador reconhece esse padrão de 2022.
## (c) CFOP_ENTRADA no cadastro do produto é necessário ou é sempre definido na nota de compra?
**Evidência**:
- **Schema do Firebird** (`RDB$RELATION_FIELDS`/`RDB$CHECK_CONSTRAINTS` em `C000025.CFOP_ENTRADA`):
coluna **NULLABLE**, **sem DEFAULT**, **sem CHECK/domínio** — o próprio SGV nunca exige um valor
aqui a nível de banco.
- **Uso real é muito diferente entre clientes**: no Agent 2 (GTI), CFOP_ENTRADA está em branco em
527/527 produtos (100%). Em RINCAO, 891/894 (99,7%) em branco. Mas em CONSTRUCAO, MMMODAS e UNIAO
o campo está **preenchido** em 99,8%/99,9%/99,97% dos produtos, com valores plausíveis (1102, 1403,
2202 etc.) — ou seja, alguns clientes efetivamente mantêm esse cadastro, outros não.
- Isso mostra que não existe uma regra universal: depende de como cada loja opera. Por isso o motor
já trata isso como uma decisão por instalação (`entry_scope`), nunca uma regra fixa do sistema.
- **Não verificado nesta sessão** (requer acesso ao executável da tela de entrada de nota, que não
fizemos): se a tela de lançamento de nota de compra do SGV lê o CFOP_ENTRADA do cadastro como
sugestão inicial, ou sempre pede a digitação manual. Roteiro de 5 passos para teste manual:
1. Anote o CFOP_ENTRADA atual de um produto de teste (ou deixe em branco).
2. Abra o cadastro do produto no SGV e grave um CFOP_ENTRADA diferente (ex.: 1102).
3. Lance uma nota de entrada (compra) desse mesmo produto.
4. Veja se o CFOP do item da nota já vem preenchido com o valor do cadastro, ou em branco.
5. Repita com CFOP_ENTRADA em branco no cadastro e confirme se a nota exige digitação manual.
- **Libera**: card "CFOP de entrada padrão" → `INTRA`, `INTER` ou `MIXED_OR_DYNAMIC` (este último
não bloqueia mais a completude do produto — Missão 2, Bloco 3.4).
## (d) O que mais o dry-run deixou como decisão pendente com evidência insuficiente?
- **COD_ORIGEM_MERCADORIA** (origem da mercadoria): nenhuma fonte automática existe no ERP para
decidir nacional/importado — 526 de 527 produtos do Agent 2 não têm nenhuma evidência. Só pode
ser respondido produto a produto ou por grupo, nunca por uma regra geral.
- **icms_treatment** para 12 produtos (Agent 2) cujo CSOSN está em branco — a maioria concentrada em
produtos de teste/cadastro incompleto (nomes como "TESTE...", "BUG", "SDFSDFSD"), mas 12 produtos
reais também aparecem (Coca-Cola, queijos, peixes) — ver `docs/runs/GTI_dryrun_universe_summary.json`.
- **30 produtos com CSOSN em branco no Agent 2** (medição em 2026-09-28; uma medição anterior de
2026-09-27, registrada em `central/app/fiscal_context_ui.py`, contava 28 — a diferença de 2 é
compatível com o cadastro de produtos de teste que muda dia a dia neste ambiente, não uma
divergência de regra). Nenhuma simulação escreve nada; o padrão 102 só se aplica de fato após a
confirmação do "Tratamento padrão de ICMS" no card correspondente, e mesmo assim o motor consulta
o tratamento antes de propor o código (nunca aplica 102 cegamente).
## Como usar este dossiê
Cada resposta é dada uma única vez, no painel ("Contexto Fiscal", aba do Agent), nunca escrevendo
nada no Firebird diretamente — a decisão fica registrada e auditada (`FiscalContextEntry`), e só
depois disso o motor passa a considerar o campo resolvido (ou explicitamente não-bloqueante).
Nenhuma decisão aqui é assumida por padrão.
+44
View File
@@ -0,0 +1,44 @@
# Matriz de completude fiscal — 18 campos (Missão 2 / Bloco 4)
Evidência: dry-run read-only de 2026-09-28 sobre GTI.FDB (Agent 2, 527 produtos, CRT=1, UF=BA,
CONTRIBUINTE_IPI=N — `docs/runs/GTI_dryrun_universe_summary.json`), cruzamento com CONSTRUCAO/
MMMODAS/RINCAO/UNIAO (`docs/runs/BLOCO2_PIS_COFINS_CROSS_DB_V1.json`) e metadados de esquema
Firebird lidos diretamente (`RDB$RELATION_FIELDS`/`RDB$CHECK_CONSTRAINTS`). Nenhuma regra fiscal
nova foi inventada: campos sem evidência suficiente ficam `pendente de contador`.
| Campo | Classificação | Condição | Fonte da evidência | Status |
|---|---|---|---|---|
| CLASSIFICACAO_FISCAL (NCM) | MANDATORY | sempre | dataset NCM oficial | comprovado |
| CEST | CONDITIONALLY_MANDATORY | só quando o NCM tem CEST oficial único | tabela CEST/CONFAZ | comprovado |
| IPI | CONDITIONALLY_MANDATORY | só quando TIPI dá alíquota numérica não-ambígua | TIPI/IPI | comprovado |
| EX_TIPI | OPTIONAL | só quando o NCM tem múltiplas linhas TIPI (EX) | TIPI/IPI | comprovado |
| SITUACAO_TRIBUTARIA | CONDITIONALLY_MANDATORY | depende do NCM ser válido | regra ST interna (BA Anexo 1) | comprovado |
| CFOP | CONDITIONALLY_MANDATORY | não aplicável a INPUT (matéria-prima) | product_role + ST | comprovado |
| CFOP_ENTRADA | OPERATION_TIME_ONLY | quando `entry_scope=MIXED_OR_DYNAMIC` (decisão ADMIN auditada); caso contrário CONDITIONALLY_MANDATORY (INTRA/INTER) | decisão ADMIN + product_role + ST; **schema Firebird: coluna NULLABLE, sem DEFAULT, sem CHECK — o próprio SGV nunca exige valor** | comprovado (schema); decisão de escopo pendente por instalação |
| CST | NOT_APPLICABLE | CRT=1 (Simples) sempre usa CSOSN, nunca CST | regra CRT/emissão | comprovado |
| CST_ENTRADA | NOT_APPLICABLE | mesma razão que CST | regra CRT/emissão | comprovado |
| CSOSN | CONDITIONALLY_MANDATORY | CRT=1; precisa de `icms_treatment` quando em branco | dataset CSOSN + contexto ADMIN | comprovado |
| ALIQUOTA (ICMS) | NOT_APPLICABLE | CSOSN Simples sem destaque de ICMS (102/103/300/400/500) | regra CSOSN | comprovado |
| COD_ORIGEM_MERCADORIA | CONDITIONALLY_MANDATORY | nenhuma fonte automática decide — sempre depende de contexto GROUP/PRODUCT | nenhuma (evidência zero no ERP) | pendente de contador/operador (sem fonte determinística) |
| CST_IPI | NOT_APPLICABLE | empresa não é contribuinte de IPI (C000004.CONTRIBUINTE_IPI=N) | heartbeat do Agent | comprovado |
| COD_ENTRADA_PIS / COD_SAIDA_PIS / ALIQ_PIS / COD_ENTRADA_COFINS / COD_SAIDA_COFINS / ALIQ_COFINS | CONDITIONALLY_MANDATORY (bloqueante) até decisão ADMIN; podem virar NOT_APPLICABLE ou OPERATION_TIME_ONLY só por decisão ADMIN auditada (`pis_cofins_profile`) | ver Bloco 2 — emissão nunca lê o cadastro em nenhum dos 5 bancos auditados | evidência de emissão (NFCE_ITENS) + decisão ADMIN | evidência forte (não-uso na emissão); classificação final pendente de confirmação contábil |
| INCIDENCIA_PISCOFINS | OPTIONAL | valor declarado válido não é contradito | regra de incidência | comprovado |
| PISCOFINS | OPTIONAL | idem | regra de incidência | comprovado |
| IAT | OPTIONAL | arredondamento, evidência fraca | regra + contexto `rounding` | comprovado (não bloqueia) |
| IPPT | CONDITIONALLY_MANDATORY | derivado de product_role/receita/compra quando role conhecido | evidência de produção/compra | comprovado |
## Regra de bloqueio do "COMPLETE"
`central/app/enrichment/status.py::coverage_status` já implementa exatamente a regra pedida:
`SAFE_BLOCKED` só quando existe campo `NEEDS_REVIEW` ou `INSUFFICIENT_EVIDENCE`; `NOT_APPLICABLE`,
`ALREADY_SET` e `AUTO_FILL_SAFE` nunca bloqueiam. Os dois ajustes de engine desta missão
(CFOP_ENTRADA com `entry_scope=MIXED_OR_DYNAMIC` → `NA`; PIS/COFINS com decisão ADMIN
`NOT_APPLICABLE`/`OPERATION_TIME` → `NA`) plugam diretamente nessa regra já existente — nenhuma
mudança adicional foi necessária em `coverage_status`. Sem decisão ADMIN, os dois grupos continuam
bloqueando exatamente como antes (testes de regressão em `central/tests/test_field_contract.py`).
## Pendente de contador (não implementado, não bloqueia nada além do que já bloqueava)
- COD_ORIGEM_MERCADORIA: nenhuma fonte automática existe; permanece MANUAL por produto/grupo.
- Classificação final de PIS/COFINS (NOT_APPLICABLE vs OPERATION_TIME vs perfil fixo): ver
`docs/dossie_contador.md`.
@@ -0,0 +1,264 @@
{
"GTI": {
"name": "GTI",
"company_status": "PASS",
"crt": "1",
"uf": "BA",
"items_total": 34946,
"items_cst_pis_cofins_filled": 3336,
"pct_cst_filled": 9.55,
"cst_distribution": {
"01": 3336,
"(blank)": 1332
},
"by_year": {
"2018": {
"items": 30278,
"cst_filled": 0
},
"2022": {
"items": 3669,
"cst_filled": 3336
},
"2023": {
"items": 240,
"cst_filled": 0
},
"2024": {
"items": 426,
"cst_filled": 0
},
"2025": {
"items": 230,
"cst_filled": 0
},
"2026": {
"items": 103,
"cst_filled": 0
}
},
"aliquota_pis_distribution": {
"0": 4668
},
"aliquota_cofins_distribution": {
"0": 4668
},
"identity_consistent_items": 1241,
"emitted_cst_present_when_cadastro_blank": 23
},
"TESTESOFICIAIS": {
"name": "TESTESOFICIAIS",
"company_status": "PASS",
"crt": "1",
"uf": "BA",
"items_total": 34946,
"items_cst_pis_cofins_filled": 3336,
"pct_cst_filled": 9.55,
"cst_distribution": {
"01": 3336,
"(blank)": 1332
},
"by_year": {
"2018": {
"items": 30278,
"cst_filled": 0
},
"2022": {
"items": 3669,
"cst_filled": 3336
},
"2023": {
"items": 240,
"cst_filled": 0
},
"2024": {
"items": 426,
"cst_filled": 0
},
"2025": {
"items": 230,
"cst_filled": 0
},
"2026": {
"items": 103,
"cst_filled": 0
}
},
"aliquota_pis_distribution": {
"0": 4668
},
"aliquota_cofins_distribution": {
"0": 4668
},
"identity_consistent_items": 1241,
"emitted_cst_present_when_cadastro_blank": 23
},
"CONSTRUCAO": {
"name": "CONSTRUCAO",
"company_status": "PASS",
"crt": "1",
"uf": "BA",
"items_total": 28934,
"items_cst_pis_cofins_filled": 0,
"pct_cst_filled": 0.0,
"cst_distribution": {
"(blank)": 28934
},
"by_year": {
"2024": {
"items": 5144,
"cst_filled": 0
},
"2025": {
"items": 13266,
"cst_filled": 0
},
"2026": {
"items": 10524,
"cst_filled": 0
}
},
"aliquota_pis_distribution": {
"0": 28934
},
"aliquota_cofins_distribution": {
"0": 28934
},
"identity_consistent_items": 28714,
"emitted_cst_present_when_cadastro_blank": 0
},
"MMMODAS": {
"name": "MMMODAS",
"company_status": "PASS",
"crt": "1",
"uf": "BA",
"items_total": 26067,
"items_cst_pis_cofins_filled": 0,
"pct_cst_filled": 0.0,
"cst_distribution": {
"(blank)": 23238
},
"by_year": {
"2018": {
"items": 2655,
"cst_filled": 0
},
"2019": {
"items": 174,
"cst_filled": 0
},
"2024": {
"items": 9456,
"cst_filled": 0
},
"2025": {
"items": 9403,
"cst_filled": 0
},
"2026": {
"items": 4379,
"cst_filled": 0
}
},
"aliquota_pis_distribution": {
"0": 23238
},
"aliquota_cofins_distribution": {
"0": 23238
},
"identity_consistent_items": 23201,
"emitted_cst_present_when_cadastro_blank": 0
},
"RINCAO": {
"name": "RINCAO",
"company_status": "PASS",
"crt": "3",
"uf": "BA",
"items_total": 224355,
"items_cst_pis_cofins_filled": 0,
"pct_cst_filled": 0.0,
"cst_distribution": {
"(blank)": 142784
},
"by_year": {
"2017": {
"items": 22363,
"cst_filled": 0
},
"2018": {
"items": 57888,
"cst_filled": 0
},
"2019": {
"items": 1320,
"cst_filled": 0
},
"2024": {
"items": 33989,
"cst_filled": 0
},
"2025": {
"items": 65881,
"cst_filled": 0
},
"2026": {
"items": 42914,
"cst_filled": 0
}
},
"aliquota_pis_distribution": {
"0": 142784
},
"aliquota_cofins_distribution": {
"0": 142784
},
"identity_consistent_items": 94195,
"emitted_cst_present_when_cadastro_blank": 0
},
"UNIAO": {
"name": "UNIAO",
"company_status": "PASS",
"crt": "1",
"uf": "BA",
"items_total": 121266,
"items_cst_pis_cofins_filled": 0,
"pct_cst_filled": 0.0,
"cst_distribution": {
"(blank)": 104973
},
"by_year": {
"2017": {
"items": 9169,
"cst_filled": 0
},
"2018": {
"items": 6747,
"cst_filled": 0
},
"2019": {
"items": 377,
"cst_filled": 0
},
"2024": {
"items": 24146,
"cst_filled": 0
},
"2025": {
"items": 45031,
"cst_filled": 0
},
"2026": {
"items": 35796,
"cst_filled": 0
}
},
"aliquota_pis_distribution": {
"0": 104973
},
"aliquota_cofins_distribution": {
"0": 104973
},
"identity_consistent_items": 104830,
"emitted_cst_present_when_cadastro_blank": 0
}
}
+277
View File
@@ -0,0 +1,277 @@
{
"name": "GTI",
"total_products": 527,
"company": {
"uf": "BA",
"crt": "1",
"contribuinte_ipi": "N",
"company_code": "000001",
"company_key": "9b1d6541",
"pis_cofins_emission_items": 34946,
"pis_cofins_emission_nonblank": 3336,
"pis_cofins_unused_by_emission": false
},
"context_entries": 0,
"fields": {
"CLASSIFICACAO_FISCAL": {
"ALREADY_CORRECT": 500,
"MANUAL_INPUT_REQUIRED": 27
},
"IPI": {
"NOT_APPLICABLE": 317,
"MANUAL_INPUT_REQUIRED": 210
},
"EX_TIPI": {
"NOT_APPLICABLE": 500,
"MANUAL_INPUT_REQUIRED": 27
},
"CEST": {
"NOT_APPLICABLE": 482,
"MANUAL_INPUT_REQUIRED": 41,
"ALREADY_CORRECT": 4
},
"SITUACAO_TRIBUTARIA": {
"ALREADY_CORRECT": 499,
"MANUAL_INPUT_REQUIRED": 28
},
"CFOP": {
"ALREADY_CORRECT": 488,
"CHANGE_REQUIRED": 4,
"MANUAL_INPUT_REQUIRED": 28,
"NOT_APPLICABLE": 7
},
"CFOP_ENTRADA": {
"MANUAL_INPUT_REQUIRED": 527
},
"CST": {
"NOT_APPLICABLE": 527
},
"CST_ENTRADA": {
"NOT_APPLICABLE": 527
},
"CSOSN": {
"ALREADY_CORRECT": 489,
"MANUAL_INPUT_REQUIRED": 38
},
"ALIQUOTA": {
"NOT_APPLICABLE": 493,
"ALREADY_CORRECT": 34
},
"COD_ORIGEM_MERCADORIA": {
"MANUAL_INPUT_REQUIRED": 526,
"ALREADY_CORRECT": 1
},
"CST_IPI": {
"NOT_APPLICABLE": 527
},
"COD_ENTRADA_PIS": {
"MANUAL_INPUT_REQUIRED": 526,
"ALREADY_CORRECT": 1
},
"COD_SAIDA_PIS": {
"MANUAL_INPUT_REQUIRED": 525,
"ALREADY_CORRECT": 2
},
"ALIQ_PIS": {
"MANUAL_INPUT_REQUIRED": 525,
"ALREADY_CORRECT": 2
},
"COD_ENTRADA_COFINS": {
"MANUAL_INPUT_REQUIRED": 526,
"ALREADY_CORRECT": 1
},
"COD_SAIDA_COFINS": {
"MANUAL_INPUT_REQUIRED": 525,
"ALREADY_CORRECT": 2
},
"ALIQ_COFINS": {
"MANUAL_INPUT_REQUIRED": 525,
"ALREADY_CORRECT": 2
},
"INCIDENCIA_PISCOFINS": {
"ALREADY_CORRECT": 527
},
"PISCOFINS": {
"ALREADY_CORRECT": 527
},
"IAT": {
"ALREADY_CORRECT": 527
},
"IPPT": {
"ALREADY_CORRECT": 512,
"CHANGE_REQUIRED": 8,
"NOT_APPLICABLE": 7
}
},
"reasons": {
"CLASSIFICACAO_FISCAL": {
"ALREADY_CORRECT|NCM_VALID_IN_DATASET": 500,
"MANUAL_INPUT_REQUIRED|NCM_INVALID": 24,
"MANUAL_INPUT_REQUIRED|NCM_LEGACY_NO_UNAMBIGUOUS_SUCCESSOR": 3
},
"IPI": {
"NOT_APPLICABLE|TIPI_RATE_BLANK_NEVER_ZERO": 297,
"MANUAL_INPUT_REQUIRED|STORE_IPI_PROFILE_NOT_DECIDED": 107,
"MANUAL_INPUT_REQUIRED|SEVERAL_TIPI_ROWS_FOR_NCM": 76,
"MANUAL_INPUT_REQUIRED|BLOCKED_BY_NCM": 27,
"NOT_APPLICABLE|TIPI_NT_OR_NON_NUMERIC_NEVER_WRITTEN_TO_NUMERIC_FIELD": 20
},
"EX_TIPI": {
"NOT_APPLICABLE|NO_EX_ROW_FOR_NCM": 424,
"NOT_APPLICABLE|DESCRIPTION_EVIDENCES_NO_EX_BASE_RATE_APPLIES": 76,
"MANUAL_INPUT_REQUIRED|BLOCKED_BY_NCM": 27
},
"CEST": {
"NOT_APPLICABLE|DESCRIPTION_MATCHES_NO_OFFICIAL_CEST_ITEM": 449,
"NOT_APPLICABLE|NCM_NOT_IN_CEST_LIST": 33,
"MANUAL_INPUT_REQUIRED|BLOCKED_BY_NCM": 27,
"MANUAL_INPUT_REQUIRED|SEVERAL_OFFICIAL_CEST_FOR_NCM": 13,
"ALREADY_CORRECT|ERP_CEST_IS_OFFICIAL_FOR_NCM": 4,
"MANUAL_INPUT_REQUIRED|ERP_CEST_NOT_OFFICIAL_FOR_NCM": 1
},
"SITUACAO_TRIBUTARIA": {
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 499,
"MANUAL_INPUT_REQUIRED|BLOCKED_BY_NCM": 27,
"MANUAL_INPUT_REQUIRED|BLANK_OR_INVALID": 1
},
"CFOP": {
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 472,
"MANUAL_INPUT_REQUIRED|BLOCKED_BY_NCM": 21,
"ALREADY_CORRECT|RULE_PROVEN_EQUALS_DECLARED": 16,
"NOT_APPLICABLE|INPUT_IS_NOT_A_SALE_ITEM": 7,
"MANUAL_INPUT_REQUIRED|CFOP_NEEDS_ST_STATUS": 7,
"CHANGE_REQUIRED|PROVEN_ROLE_AND_ST_CONTRADICT_DECLARED_CFOP": 2,
"CHANGE_REQUIRED|DERIVED_FROM_ROLE_AND_ST_FILLING_BLANK": 2
},
"CFOP_ENTRADA": {
"MANUAL_INPUT_REQUIRED|CFOP_ENTRADA_NEEDS_PRODUCT_ROLE": 253,
"MANUAL_INPUT_REQUIRED|CFOP_ENTRADA_NEEDS_ENTRY_SCOPE": 247,
"MANUAL_INPUT_REQUIRED|BLOCKED_BY_NCM": 27
},
"CST": {
"NOT_APPLICABLE|CRT1_SIMPLES_EMISSION_USES_CSOSN": 527
},
"CST_ENTRADA": {
"NOT_APPLICABLE|CRT1_SIMPLES_EMISSION_USES_CSOSN": 527
},
"CSOSN": {
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 489,
"MANUAL_INPUT_REQUIRED|BLOCKED_BY_NCM": 27,
"MANUAL_INPUT_REQUIRED|CSOSN_NEEDS_ICMS_TREATMENT": 11
},
"ALIQUOTA": {
"NOT_APPLICABLE|SIMPLES_CSOSN_HIGHLIGHTS_NO_ICMS_RATE": 493,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 34
},
"COD_ORIGEM_MERCADORIA": {
"MANUAL_INPUT_REQUIRED|ORIGIN_NO_EVIDENCE": 526,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 1
},
"CST_IPI": {
"NOT_APPLICABLE|COMPANY_IS_NOT_AN_IPI_TAXPAYER_C000004.CONTRIBUINTE_IPI": 527
},
"COD_ENTRADA_PIS": {
"MANUAL_INPUT_REQUIRED|NO_OFFICIAL_RULE_SOURCE_IN_CORE_DATASETS": 525,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 1,
"MANUAL_INPUT_REQUIRED|DECLARED_CST_NOT_IN_OFFICIAL_TABLE": 1
},
"COD_SAIDA_PIS": {
"MANUAL_INPUT_REQUIRED|NO_OFFICIAL_RULE_SOURCE_IN_CORE_DATASETS": 524,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 2,
"MANUAL_INPUT_REQUIRED|DECLARED_CST_NOT_IN_OFFICIAL_TABLE": 1
},
"ALIQ_PIS": {
"MANUAL_INPUT_REQUIRED|NO_OFFICIAL_RULE_SOURCE_IN_CORE_DATASETS": 525,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 2
},
"COD_ENTRADA_COFINS": {
"MANUAL_INPUT_REQUIRED|NO_OFFICIAL_RULE_SOURCE_IN_CORE_DATASETS": 525,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 1,
"MANUAL_INPUT_REQUIRED|DECLARED_CST_NOT_IN_OFFICIAL_TABLE": 1
},
"COD_SAIDA_COFINS": {
"MANUAL_INPUT_REQUIRED|NO_OFFICIAL_RULE_SOURCE_IN_CORE_DATASETS": 524,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 2,
"MANUAL_INPUT_REQUIRED|DECLARED_CST_NOT_IN_OFFICIAL_TABLE": 1
},
"ALIQ_COFINS": {
"MANUAL_INPUT_REQUIRED|NO_OFFICIAL_RULE_SOURCE_IN_CORE_DATASETS": 525,
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 2
},
"INCIDENCIA_PISCOFINS": {
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 527
},
"PISCOFINS": {
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 527
},
"IAT": {
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 527
},
"IPPT": {
"ALREADY_CORRECT|DECLARED_VALID_NOT_CONTRADICTED": 264,
"ALREADY_CORRECT|DERIVED_FROM_PRODUCT_ROLE:C000025.TIPO=VENDA,STOCK_ENTRIES(C000100.ENTRADAS>0)": 229,
"ALREADY_CORRECT|DERIVED_FROM_PRODUCT_ROLE:C000025.TIPO=VENDA,PURCHASE_DOCUMENT": 19,
"CHANGE_REQUIRED|DERIVED_FROM_PRODUCT_ROLE:C000032.TIPO=COMPOSICAO": 7,
"NOT_APPLICABLE|INPUT_OR_SERVICE_HAS_NO_PRODUCTION_INDICATOR": 7,
"CHANGE_REQUIRED|DERIVED_FROM_PRODUCT_ROLE:PROD_COZINHA=1,RECEITA_INGREDIENTES": 1
}
},
"manual_inputs": {
"COD_ORIGEM_MERCADORIA|origin": 526,
"COD_ENTRADA_PIS|pis_cofins_profile": 526,
"COD_ENTRADA_COFINS|pis_cofins_profile": 526,
"COD_SAIDA_PIS|pis_cofins_profile": 525,
"ALIQ_PIS|pis_cofins_profile": 525,
"COD_SAIDA_COFINS|pis_cofins_profile": 525,
"ALIQ_COFINS|pis_cofins_profile": 525,
"CFOP_ENTRADA|product_role": 253,
"CFOP_ENTRADA|entry_scope": 247,
"IPI|store_ipi_profile": 107,
"IPI|ex_tipi": 76,
"CLASSIFICACAO_FISCAL|ncm": 27,
"IPI|ncm": 27,
"EX_TIPI|ncm": 27,
"CEST|ncm": 27,
"SITUACAO_TRIBUTARIA|ncm": 27,
"CFOP_ENTRADA|ncm": 27,
"CSOSN|ncm": 27,
"CFOP|ncm": 21,
"CEST|cest": 14,
"CSOSN|icms_treatment": 11,
"CFOP|st_status": 7,
"SITUACAO_TRIBUTARIA|icms_treatment": 1
},
"roles": {
"UNKNOWN": 264,
"RESALE": 248,
"OWN_PRODUCTION": 8,
"INPUT": 7
},
"change_required_cells": 12,
"write_eligible_cells": 12,
"manual_inputs_by_scope": {
"COD_ORIGEM_MERCADORIA|origin|GROUP": 526,
"COD_ENTRADA_PIS|pis_cofins_profile|COMPANY": 526,
"COD_ENTRADA_COFINS|pis_cofins_profile|COMPANY": 526,
"COD_SAIDA_PIS|pis_cofins_profile|COMPANY": 525,
"ALIQ_PIS|pis_cofins_profile|COMPANY": 525,
"COD_SAIDA_COFINS|pis_cofins_profile|COMPANY": 525,
"ALIQ_COFINS|pis_cofins_profile|COMPANY": 525,
"CFOP_ENTRADA|product_role|GROUP": 253,
"CFOP_ENTRADA|entry_scope|COMPANY": 247,
"IPI|store_ipi_profile|COMPANY": 107,
"IPI|ex_tipi|PRODUCT": 76,
"CLASSIFICACAO_FISCAL|ncm|PRODUCT": 27,
"IPI|ncm|PRODUCT": 27,
"EX_TIPI|ncm|PRODUCT": 27,
"CEST|ncm|PRODUCT": 27,
"SITUACAO_TRIBUTARIA|ncm|PRODUCT": 27,
"CFOP_ENTRADA|ncm|PRODUCT": 27,
"CSOSN|ncm|PRODUCT": 27,
"CFOP|ncm|PRODUCT": 21,
"CEST|cest|PRODUCT": 14,
"CSOSN|icms_treatment|GROUP": 11,
"CFOP|st_status|GROUP": 7,
"SITUACAO_TRIBUTARIA|icms_treatment|GROUP": 1
}
}