Levantamento · Visão do todo

Mapa de domínio

O que já foi especificado, o que falta, e em que ordem. O Nexio tem hoje a camada mestre inteira desenhada — o que se compra, de quem, em que unidade e contra qual centro de custo — mais o motor de aprovação. Falta a espinha transacional, que é onde o produto começa a existir.

consolida Item, Fornecedor, UoM, Centro de Custo v2.0, Fluxo de Aprovação v2.0 18 agregados especificados · 10 a especificar v1.1 · 30/08/2026

Ponto de partida

Como ler o mapa

O domínio de um sistema de compras se organiza em três camadas, e a confusão entre elas é a origem de quase todo retrabalho de modelagem. A camada mestre descreve o mundo — existe antes de qualquer transação e sobrevive a todas elas. A espinha transacional é o ciclo do gasto: cada documento nasce do anterior, carrega um instante congelado dos mestres e nunca mais muda de significado. As camadas transversais não são módulos, são capacidades que todo agregado consome.

Regra 1

Mestre muda; documento não. Preço, fator de conversão, cadeia de aprovação e dados do fornecedor são copiados para a linha no momento em que ela é criada. Sem isso, editar um cadastro reescreve o passado.

Regra 2

Cada documento tem um antecessor rastreável. Requisição → cotação → pedido → recebimento → nota. A linha guarda de onde veio, e é essa corrente que sustenta saldo, três vias e indicador de fornecedor.

Regra 3

O que é transversal não vira campo. Anexo, auditoria, notificação, numeração e motivo aparecem em oito agregados. Modelados um a um, viram oito implementações divergentes.

Visão do todo

Mapa do domínio

Camada mestre · organização e dinheiro LegalEntity empresa · CNPJ Abrir a especificação · Centro de Custo CostCenter path · vigência Abrir a especificação · Centro de Custo CostCenterAssign. responsável · alçada GLAccount conta contábil Budget verba e empenho DeliveryLocation onde entrega empresa · CC · conta · local Camada mestre · catálogo e fornecimento Abrir a especificação · Cadastro de Item ItemType config por tenant Abrir a especificação · Cadastro de Item CategoryNode taxonomia n níveis Abrir a especificação · Cadastro de Fornecedor Supplier raiz de 8 do CNPJ Abrir a especificação · Cadastro de Fornecedor SupplierEstablishment CNPJ de 14 · filial Abrir a especificação · Unidade de Medida UnitOfMeasure sigla · conversão Abrir a especificação · Cadastro de Item Item registro fundacional Abrir a especificação · Cadastro de Item ItemSupplier preço · MOQ · prazo Contract preço vigente · saldo toda linha congela: Item · UnitOfMeasure · CategoryNode · CostAllocation[centro de custo + conta + %] · Fornecedor · fator de conversão · preço Espinha transacional · o ciclo do gasto Requisition a demanda interna QuotationRequest RFQ · mapa comparativo PurchaseOrder o compromisso legal Receipt recebimento · OTIF Invoice NF-e · conferência cota emite recebe fatura Three-way match Pedido × Recebimento × Nota · tolerância · bloqueio de divergência Motor de aprovação · genérico por processo Abrir a especificação · Fluxo de Aprovação ApprovalRequest a instância · snapshot Abrir a especificação · Fluxo de Aprovação ApprovalStep nível resolvido · com escopo Abrir a especificação · Fluxo de Aprovação ApprovalAssignment a tarefa de uma pessoa Abrir a especificação · Fluxo de Aprovação ApprovalEvent append-only · a trilha submete Configuração — o que o cliente parametriza Abrir a especificação · Fluxo de Aprovação ApprovalProcess o que é aprovável Abrir a especificação · Fluxo de Aprovação ApprovalPolicy base + complementar Abrir a especificação · Fluxo de Aprovação ApprovalLevel tipo · modo · SLA Abrir a especificação · Fluxo de Aprovação ApprovalGroup comitês Abrir a especificação · Fluxo de Aprovação ApprovalDelegation ausência temporária responsáveis · alçada Camadas transversais · consumidas por todo agregado Attachment AuditLog Notification NumberSequence ExternalRef · Outbox ReasonCode Fronteiras do produto · decisões de tamanho Portal do fornecedor — a decidir Pagamento — fora, fica no ERP Estoque — fora, ganchos prontos
especificado — clique para abrir a spec a especificar transversal fora de escopo ou fronteira em aberto
O barramento no meio é a tese do modelo: nada da espinha transacional lê o cadastro em tempo de execução — cada linha carrega uma cópia congelada do que valia quando foi criada. Só o Contract, o ItemSupplier e a árvore de categorias precisam ser consultados de novo, e só na criação da linha seguinte.

Já fechado

Camada mestre

Nove agregados especificados entre 27 e 30 de agosto de 2026. Nada implementado no domínio de compras — o levantamento de negócio ainda está em curso.

A árvore que responde quem paga. Caminho materializado com profundidade livre, código imutável, duas portas de status com cascata assimétrica e path como token de concorrência — mecânica preservada da v1.0. Novo: escopo por empresa (nó corporativo ou de uma LegalEntity), vigência própria para obra e projeto, e allowsPosting — só folha recebe lançamento.

O responsável pelo nó, com papel (Owner, Deputy, Watcher), vigência e alçada própria. Substitui o campo managerUserId. Resolve: substituto, co-gestão e — o que importa de verdade — a pergunta "quem tinha autoridade nesta data", que um campo único não sabe responder. Ausente no nó, resolve subindo a árvore.

Item especificado

Agregado único que descreve matéria-prima, produto acabado, MRO, serviço, assinatura e ativo. Descrição gerada de basicName + atributos, com attributeSignature como chave de antiduplicidade. Resolve: o que exatamente está sendo comprado, com precisão suficiente para cotar, comparar, aprovar e conferir — e sem o campo-texto livre que transforma catálogo em lixeira.

ItemType especificado

Entidade de configuração por tenant, não enum. Dirige field selection, classes de unidade permitidas e destinação padrão. Resolve: um único cadastro atender indústria e serviço sem virar formulário com quarenta campos opcionais.

CategoryNode especificado

Nó de taxonomia auto-relacionado, com maxDepth configurável (default 2) e classificação só em folha. Resolve: a categoria de sourcing — o eixo do mercado fornecedor, distinto do NCM (natureza física) e da conta contábil (reporte). É também onde a regra de aprovação se amarra, guardando o nó e valendo por rollup.

UnitOfMeasure especificado

Catálogo global + camada do tenant, sigla local de até 6 caracteres como chave, conversão em numerador/denominador inteiros e hierarquia ItemSupplier > Item > global > erro. Resolve: que o comparativo de cotações signifique alguma coisa. É o módulo mais curto e o de maior consequência: sem ele, 84 unidades viram 84 caixas.

Supplier especificado

Raiz de 8 dígitos do CNPJ, com certidão federal, CRF, CNDT, regime tributário e quadro societário. Resolve: grupo econômico derivado, homologação escopada por categoria, estado Prospect que cota sem receber pedido, e a separação entre documento enviado e verificação em fonte oficial.

CNPJ de 14 — filial, com situação cadastral, IE, IM, alvará e licença ambiental próprios. Resolve: a filial baixada com a matriz ativa, que nenhum cadastro de nível único enxerga. É também o nível que emite a nota e recebe o pedido.

ItemSupplier especificado

A junção entre catálogo e fornecimento: preço, prazo, MOQ, múltiplo, código no fornecedor e unidade de compra. Resolve: tirar do item tudo que é negociado. Precedência na linha: contrato > ItemSupplier > Item — e é justamente o topo dessa precedência que ainda não existe como entidade.

Especificado · 30/08/2026

Motor de aprovação

Não é uma entidade — são nove, em duas camadas. Um motor só, genérico por processo, para requisição, cotação, pedido, contrato, homologação de fornecedor e alteração bancária.

Configuração
  • ApprovalProcess — o que é aprovável, e o que "valor" significa naquele documento
  • ApprovalPolicy — a regra, versionada. Base concorre por prioridade; Complementar empilha
  • ApprovalCriteria — dez critérios; nó de centro de custo e de categoria valem por rollup
  • ApprovalLevel — tipo de aprovador, modo dentro do nível, SLA, valor de ativação, escopo
  • ApprovalGroup — comitês
  • ApprovalDelegation — ausência temporária, com escopo e teto
Execução
  • ApprovalRequest — a instância, com a cadeia congelada e as versões das políticas que a formaram
  • ApprovalStep — o nível resolvido, com escopo: documento, linha ou fatia de rateio
  • ApprovalAssignment — a tarefa de uma pessoa. É a entidade que faltava, e sem ela não existe fila endereçável, aprovação por papel, delegação registrada nem paralelo dentro do nível
  • ApprovalEventappend-only. O estado é projeção; a trilha é a fonte

Abrir a especificação completa do Fluxo de Aprovação →

A decisão que reorganiza tudo: a cadeia é congelada na submissão e as pessoas são resolvidas na ativação de cada passo. O que a política decidiu não muda quando alguém edita a configuração; quem aprova é sempre quem responde pelo nó hoje. As cinco decisões que estavam em aberto desde junho caem como consequência disso e do escopo do passo.

A construir · prioridade máxima

Espinha transacional

Sem estes seis, o Nexio é um cadastro. Com eles, é um sistema de compras.

Requisition a especificar

O que é: a demanda interna — quem pediu, para qual centro de custo, qual item, quantidade, data necessária, justificativa. Cabeçalho com N linhas.

O que resolve: dá origem a tudo. É o objeto que entra no fluxo de aprovação, que se agrupa em cotação e que se converte em pedido, mantendo rastreabilidade da linha até a nota.

Decisões que nascem aqui: rateio de centro de custo por linha (padrão no Brasil desde o Protheus v10 — e a alçada deve avaliar a fatia rateada, não o total); linha de catálogo versus free-text para o que não está cadastrado; e agrupamento de requisições de vários solicitantes numa única cotação.

Aprovação especificado

Saiu da lista de pendências. O motor está especificado em nove entidades e independe de qual documento o aciona — a Requisição só precisa submeter um assunto com valor, empresa, requisitante e linhas.

O que a Requisição ainda precisa entregar a ele: o rateio por linha (que o Centro de Custo v2.0 já define como CostAllocation) e o evento de alteração que dispara a reavaliação.

QuotationRequest a especificar

O que é: o evento de sourcing — convite a N fornecedores, com SupplierQuote e QuoteLine como respostas, em rodadas.

O que resolve: o mapa comparativo com frete, impostos e prazo equalizados; a negociação em mais de uma rodada; e a justificativa obrigatória quando o escolhido não é o menor preço, que é o controle que auditoria efetivamente cobra.

Decisões que nascem aqui: o fornecedor responde por portal ou por planilha importada; o comparativo honra o "não comparável" da classe Serviço já decidido em UoM; e o Prospect pode ser convidado, mas o vencedor precisa estar homologado na categoria antes de virar pedido.

PurchaseOrder a especificar

O que é: o compromisso legal com o fornecedor. Cabeçalho, linhas e cronograma de entrega (a mesma linha entregue em parcelas com datas distintas).

O que resolve: preço, quantidade, condição de pagamento, local de entrega, moeda e status aberto / parcial / fechado. É onde o priceQty e o snapshot do fator de conversão viram dinheiro de verdade.

Decisões que nascem aqui: alteração de pedido já enviado é versão nova, não update — e alteração acima de tolerância volta para aprovação; envio e aceite pelo fornecedor; e conversão parcial de requisição (uma requisição vira dois pedidos para fornecedores diferentes).

Receipt a especificar

O que é: o recebimento — quantidade recebida, divergência, aceite ou rejeição, devolução, recebimento parcial, quem recebeu e quando.

O que resolve: é o "R" do three-way match e a fonte do desempenho do fornecedor — OTIF, atraso e divergência calculados do fato, não de formulário de avaliação. A spec de Fornecedor já promete esse indicador; ele só existe se o recebimento existir.

Decisões que nascem aqui: serviço precisa de um irmão — medição e aceite de serviço, no espírito do service entry sheet do SAP. Recebimento físico não modela hora trabalhada nem entrega parcial de projeto.

Invoice a especificar

O que é: a nota do fornecedor entrando no sistema — XML da NF-e, chave de acesso, itens, impostos.

O que resolve: a conferência automática pedido × recebimento × nota, com tolerância configurável por tipo de divergência e bloqueio explícito quando estoura. É o que transforma o Nexio de ferramenta de compra em controle de gasto.

Decisões que nascem aqui: a fronteira com o financeiro. A recomendação é conciliar e liberar, não pagar — contas a pagar fica no ERP. Entra também a manifestação do destinatário e o que fazer com nota sem pedido.

A construir · decidir cedo

Estruturais

Baratos agora, caríssimos depois — todos mudam a chave primária ou a dimensionalidade de agregados que já vão existir.

LegalEntity bloqueante

Empresa e filial dentro do tenant. Hoje TenantSettings tem um único CNPJ, o que força grupo econômico a virar N tenants — duplicando catálogo, centro de custo, alçada e usuário. Resolve: no Brasil, empresa e filial são dimensão de regra de aprovação, de numeração de documento e de nota fiscal. É a decisão mais cara de adiar: entra na chave de quase todo agregado transacional.

GLAccount a especificar

O eixo contábil ausente. Conta contábil mais o mapping set categoria → conta, amarrável em qualquer nível da árvore, no padrão Oracle. Resolve: cliente vindo do Protheus amarra alçada em entidade contábil — centro de custo, conta, classe de valor. Sem esse eixo, o Nexio não conversa com o razão e a integração com o ERP vira digitação.

Contract a especificar

Já é o topo da precedência de preço e não existe como entidade. Preço negociado com vigência, volume comprometido, saldo consumido (contrato guarda-chuva com liberação parcial), reajuste por índice, renovação e SLA. Resolve: compra recorrente sem RFQ toda vez — é o que separa um sistema de cotação de um sistema de compras.

DeliveryLocation a especificar

Armazém, filial, obra. Resolve: para onde entrega e qual CNPJ recebe — que é dimensão fiscal (ICMS interestadual muda com a UF de destino). Depende de LegalEntity; modelado antes dela, nasce errado.

Budget a especificar

Verba por centro de custo × conta × período, com empenho na aprovação da requisição ou na emissão do pedido, e política de estouro configurável (avisar ou bloquear). Resolve: a pergunta de primeira reunião comercial no Brasil. Coupa, Oracle e Precoro vendem controle orçamentário como diferencial; sem ele o comprador aprova no escuro.

A construir · capacidades

Transversais

Attachment

Anexo com escopo, tipo e retenção. Já aparece em item, fornecedor, requisição, cotação, pedido e contrato. Uma implementação, seis consumidores.

AuditLog

Quem mudou o quê, quando e de onde. Não é opcional em compras — é o que sustenta segregação de função e resposta a auditoria interna.

Notification

Template, canal e preferência. Fluxo de aprovação sem notificação não funciona: o aprovador não entra no sistema para descobrir que tem fila.

NumberSequence

Numeração por tenant, empresa e tipo de documento. Parece detalhe e sempre vira migração dolorosa, porque o número já foi impresso e enviado ao fornecedor.

ExternalRef · Outbox

Referência externa em fornecedor, item, centro de custo e pedido, mais fila de saída para o ERP. O Nexio quase sempre vai conviver com Protheus, SAP ou Omie — não substituí-los.

ReasonCode

Motivo configurável para rejeição, cancelamento, devolução e escolha de fornecedor. Campo-texto livre aqui é dado que nunca vira relatório.

Decisões de tamanho

Fronteiras do produto

1. Portal do fornecedor — a decidir, e muda tudo

Sem portal, todo documento de homologação, toda proposta de RFQ e toda confirmação de pedido entram por e-mail e alguém digita — e metade do valor das specs de Fornecedor e Cotação evapora. Com portal, você ganha um segundo tipo de usuário, autenticação externa, superfície de segurança e um roadmap paralelo. Ariba Network, Coupa Supplier Portal, Mercado Eletrônico e Nimbi vivem disso. É a maior decisão de escopo em aberto.

2. Onde o Nexio para no financeiro

Recomendação: parar no match e na liberação para pagamento. Contas a pagar, fluxo de caixa e conciliação bancária são território de ERP, e entrar neles multiplica a superfície fiscal e contábil sem aumentar o diferencial competitivo.

3. Estoque continua fora

Já declarado fora de escopo, com ItemType.controlsStock sempre false como gancho. Vale reconfirmar agora, porque Requisição e Recebimento vão puxar por ele — "requisição contra saldo" e "recebimento que dá entrada" são pedidos que aparecem na primeira demo.

Recomendação

Sequenciamento

Ordem sugerida de especificação
#MóduloDepende deDesbloqueiaCusto de adiar
1LegalEntity + GLAccountCentro de Custo v2.0 feitonumeração, alçada, integração, todo agregado transacionalalto
2RequisitionItem, CC, UoM, LegalEntityo produto começa a existir
3Motor de aprovaçãoRequisition especificadoa promessa central do Nexio
4PurchaseOrderRequisition, ItemSupplierReceipt, Invoice, indicador de fornecedor
5ReceiptPurchaseOrderOTIF, three-way match
6QuotationRequestRequisition, Fornecedorsourcing e negociaçãomédio
7ContractItemSupplier, Quotationcompra recorrente sem RFQmédio
8Invoice + matchPO, Receiptcontrole de gasto
9BudgetGLAccount, CCbloqueio por verbabaixo

Por que cotação vem depois do pedido. Parece contraintuitivo — no fluxo real a cotação vem antes. Mas o caminho mais curto até um produto utilizável é requisição → aprovação → pedido: já existe cliente que compra de fornecedor fixo e só precisa de controle de alçada. Cotação é o módulo mais caro (rodadas, equalização, resposta do fornecedor) e o mais dependente da decisão sobre portal. Especificar depois do pedido significa especificá-lo já sabendo como a linha de documento se comporta.

Aferição

Referência de mercado

Nenhuma entidade proposta aqui é invenção — todas existem, com nomes diferentes, nos produtos que o Nexio vai encontrar em concorrência.

Como cada entidade aparece nos produtos de referência
NexioSAP AribaCoupaOracle ProcurementProtheus
RequisitionRequisitionRequisitionRequisitionSolicitação de Compra
ApprovalPolicy · RequestApproval FlowApproval ChainApproval Task (BPM)Alçadas de aprovação
QuotationRequestSourcing Event / RFxSourcing EventNegotiationCotação
PurchaseOrderPurchase OrderPurchase OrderPurchase OrderPedido de Compra
ReceiptGoods ReceiptReceiptReceivingDocumento de Entrada
Invoice + matchInvoice ReconciliationInvoice / APInvoice MatchingPré-nota e classificação
ContractAriba ContractsContracts / CLMBlanket & Contract Purchase AgreementContratos de Parceria
BudgetSpend controlBudgetsBudgetary ControlControle Orçamentário
LegalEntityBusiness UnitBusiness GroupBusiness Unit / Legal EntityEmpresa e Filial
Portal do fornecedorAriba NetworkCoupa Supplier PortalSupplier PortalPortal de Compras

Carregado das specs anteriores

Pendências herdadas

Do Cadastro de Item
  • Esquema de atributos semente por setor versus cada tenant desenhar o seu
  • Extração assistida por LLM na importação — MVP ou depois
  • Mapeamento categoria → conta contábil — vira o GLAccount. A forma da relação já está fixada no Centro de Custo v2.0; falta o plano de contas
  • Multi-empresa / múltiplos CNPJs — vira o LegalEntity. O legalEntityId já nasce no nó de centro de custo
De Fornecedor e UoM
  • Fonte de consulta ao CNPJ: base própria dos dados abertos versus serviço comercial com SLA
  • O Nexio guarda dado bancário ou só referencia o ERP
  • Base compartilhada de fornecedores entre tenants — decisão jurídica antes de produto
  • Embalagem que muda: nova versão do ItemSupplier ou novo código de unidade (CX10)

LegalEntity e GLAccount continuam sendo o bloqueio. Apareceram em quatro specs seguidas como "decidir depois". O Centro de Custo v2.0 já reservou o lugar das duas — legalEntityId no nó e a conta na fatia de rateio — mas nenhuma delas existe. A partir do momento em que a primeira linha de requisição for gravada, as duas entram na chave de todo documento, e "depois" passa a custar migração de dados transacionais em vez de uma tarde de modelagem.