6.2 KiB
Modelo RTC + PIS/COFINS no SGV (evidência: TESTESOFICIAIS.FDB)
Tudo abaixo é observação read-only. Nenhum valor é preenchido, nenhum write é habilitado (FIREBIRD_WRITES=0).
Código: agent/src/gti_fiscal_agent/rtc_pis_cofins.py (capabilities, validadores, aplicabilidade, cobertura ampliada),
integrado ao job de sync do Agent (expanded_scope no result_summary) e exibido no detalhe do Agent.
1. Modelo real do RTC
C000025.CCLASSTRIB (VARCHAR(6)) → RTC_CCLASSTRIB.CCLASSTRIB (CHAR(6), PK) → RTC_CCLASSTRIB.CSTIBSCBS (CHAR(3)) → RTC_CST.CSTIBSCBS (CHAR(3), PK).
- Há FK física nos dois elos:
FK_C000025_CCLASSTRIB(RESTRICT/RESTRICT) eFK_RTC_CCLASSTRIB_CST. - Catálogo local: 145 cClassTrib (6 dígitos, únicos, 0 duplicados, 0 órfãos) para 18 CST IBS/CBS (3 dígitos); nenhum registro com
FIM_VIGENCIA;INICIO_VIGENCIAde 2025-05-05 a 2025-11-19. Cada CST tem ao menos um cClassTrib. - Atributos do catálogo (não são valores do produto):
TIPO_ALIQUOTA,PRED_IBS/PRED_CBS(redução),IND_TRIB_REGULAR,IND_CREDPRES_OPER,IND_ESTORNO_CRED, monofasia,IND_NFE/NFCE/...(documentos aplicáveis),ANEXO,LINK.RTC_CSTdescreve o CST (IND_IBSCBS,IND_REDBC,IND_REDALIQ,IND_DIF,IND_CREDPRES_IBSZFM...). - Não existem no produto: CST IBS/CBS, alíquotas IBS/CBS, cCredPres. O CST IBS/CBS só se obtém do catálogo, a partir do cClassTrib informado.
PARAMETROS.USAR_REFORMA_TRIBUTARIA = 0: o ERP não usa RTC neste banco. Documentos (C000062,C000032,C000088,NFCE_ITENS) não têm campos RTC.LOCAL_CATALOG_ONLY=true: comparamos apenas com o catálogo do próprio banco. Não há dataset oficial integrado; o ponto de extensão écatalogemexpanded_scope_summary/validate_cclasstrib.
2. PIS/COFINS no produto (C000025)
| Campo | Tipo | Semântica observada |
|---|---|---|
COD_ENTRADA_PIS / COD_ENTRADA_COFINS |
VARCHAR(3) | CST de entrada (ex.: 73); 2/521 preenchidos |
COD_SAIDA_PIS / COD_SAIDA_COFINS |
VARCHAR(3) | CST de saída (ex.: 01, 04); 3/521 |
ALIQ_PIS / ALIQ_COFINS |
VARCHAR(8) | percentual textual com vírgula (0,65, 3); 2 não vazios |
PISCOFINS |
VARCHAR(1) | flag S/N (N=519, S=2) |
INCIDENCIA_PISCOFINS |
VARCHAR(30) | regime adicional: NENHUMA=519, MONOFÁSICA=1, SUBST.TRIBUTÁRIA=1 (coerente com o flag) |
- CST oficial PIS/COFINS tem 2 dígitos; um produto traz
2em todos os campos (formato inválido, aparenta dado de teste) e é o único com flag inconsistente (Ncom códigos). - Não existe catálogo PIS/COFINS no SGV (nenhuma tabela com PIS/COFINS/CST no nome além de
RTC_CST). Os códigos são texto livre. - Produto × documento.
C000062(itens de saída) gravaCOD_*_PIS/COFINSe alíquotas por item (7 de 693 com20/41/12);NFCE_ITENS.CST_PIS_COFINStem01em 3.336 itens, inclusive de produtos comINCIDENCIA=NENHUMAe sem código no produto. Conclusão: o documento não depende do cadastro do produto para o CST.PRODUCT_DEFAULT_MODEL= campos esparsos emC000025(2–3 produtos);DOCUMENT_ITEM_MODEL= campos por item;CANONICAL_SOURCE_FOR_PRODUCT_DEFAULT=C000025somente onde preenchido, sem fonte canônica para os demais.
3. Aplicabilidade (conservadora)
Quatro coisas separadas: SCHEMA_SUPPORT, DATA_PRESENT, APPLICABILITY, MANDATORYNESS. Só a última bloqueia, e só com aplicabilidade provada por dado local.
- RTC:
NOT_SUPPORTED(schema sem o modelo) ·NOT_ENABLED_BY_ERP(parâmetro do ERP = 0; não bloqueia nem conta como desconhecido) ·UNKNOWN_APPLICABILITY(parâmetro ilegível) ·APPLICABLE(parâmetro = 1 e modelo existe → cClassTrib passa a ser exigido/validado). - PIS/COFINS:
APPLICABLEsó quando o próprio produto traz evidência (algum código/alíquota,PISCOFINS='S'ou incidência especial). Produto vazio comN/NENHUMAéUNKNOWN_APPLICABILITY: não é completo nem bloqueado.
4. Validadores (determinísticos, sem preenchimento)
- cClassTrib:
EMPTY,INVALID_FORMAT(≠ 6 dígitos),NOT_IN_LOCAL_CATALOG,VALID_LOCAL,CST_MISSING,VALID_WITH_CST. - CST PIS/COFINS:
EMPTY,VALID,INVALID_FORMAT(fora do conjunto oficial 01–09, 49, 50–56, 60–67, 70–75, 98, 99). Alíquota:EMPTY,VALID(0–100, vírgula ou ponto),INVALID_RATE. Flag:CONSISTENT/INCONSISTENT/EMPTY. - Blockers específicos (rótulos PT-BR no painel):
CCLASSTRIB_MISSING/INVALID/NOT_IN_CATALOG,RTC_CST_INVALID,PIS|COFINS_CST_MISSING/INVALID,PIS|COFINS_RATE_INVALID,PIS_COFINS_FLAG_INCONSISTENT. Eles ficam emexpanded_scope.blockers_by_type, separados dos blockers legados (não alteram o invariante 495+26+0=521 do escopo anterior).
5. Cobertura: legado × ampliada
legacy_scope (LEGACY_SCOPE_COVERAGE) é preservado sem alteração. expanded_scope (EXPANDED_FISCAL_SCOPE_COVERAGE) só acrescenta condições: bloqueado/falha legado continua assim; completo legado vira completo ampliado, bloqueado (blocker específico) ou unknown_applicability. Invariante: soma = total.
Resultado no TESTESOFICIAIS (521 produtos): legado 495 completos / 26 bloqueados / 0 falhas; ampliado 2 completos / 27 bloqueados / 0 falhas / 492 com aplicabilidade desconhecida; blockers novos: PIS_CST_INVALID 2, COFINS_CST_INVALID 2, PIS_COFINS_FLAG_INCONSISTENT 1 (mesmo produto). Os 492 desconhecidos não são defeitos: faltam evidências para dizer se o cadastro do produto deve trazer CST de PIS/COFINS.
6. Limitações
- Sem catálogo oficial RTC nem regra tributária: nenhuma correspondência é inventada.
- A aplicabilidade de PIS/COFINS por regime (CRT 1 aqui) não está determinada por dado local confiável.
- Vigência do cClassTrib não é usada como bloqueio (o catálogo local não tem
FIM_VIGENCIA).
7. Campos candidatos a write futuro (NÃO autorizado)
CANDIDATE, sem write habilitado e sem autorização: C000025.CCLASSTRIB, COD_ENTRADA_PIS, COD_SAIDA_PIS, ALIQ_PIS, COD_ENTRADA_COFINS, COD_SAIDA_COFINS, ALIQ_COFINS.
Não devem ser escritos: RTC_CCLASSTRIB, RTC_CST (catálogos), PARAMETROS.USAR_REFORMA_TRIBUTARIA, PISCOFINS/INCIDENCIA_PISCOFINS sem evidência de regime, campos de documentos fiscais, e qualquer CST IBS/CBS "inventado" no produto.