Origem do prefixo SC5/C5 (pedido de venda)
Por que pedido de venda no Protheus se chama SC5 e os campos comecam com C5_? Vem do tempo do Siga Advanced em DBF.
Todo dev Protheus aprende rapido: pedido de venda = SC5, cliente = SA1, produto = SB1. Mas por que essa nomenclatura estranha? De onde vem o C5, A1, B1?
Padrao S* + letra + numero
Praticamente toda tabela do Protheus segue o padrao S + letra + numero (1 char):
- SA*: cadastros (SA1=cliente, SA2=fornecedor, SA3=vendedor)
- SB*: estoque/produtos (SB1=produto, SB2=saldo, SB9=saldo inicial)
- SC*: compras/vendas (SC1=solicit.compra, SC5=pedido venda, SC6=itens pedido, SC7=pedido compra)
- SD*: documentos (SD1=NF entrada, SD2=NF saida, SD3=mov.interno)
- SE*: financeiro (SE1=receber, SE2=pagar, SE5=mov.bancario)
Ate SZ* aproximadamente.
O 'S' do Siga
O S de todas as tabelas vem de Siga. Lembra do nome original do ERP? Antes de ser "Protheus", a Microsiga (empresa fundadora) chamava o produto de "Siga Advanced". Cada tabela do core do Siga ganhou prefixo S.
O alfabeto agrupa por dominio
A letra apos o S define o dominio. Foi planejado em ordem mais ou menos alfabetica conforme novos modulos eram criados:
- SA: cadastros base (clientes, fornecedores)
- SB: produtos / estoque
- SC: compras e vendas (ordenadas: solicitacao SC1 -> venda SC5/SC6 -> compra SC7)
- SD: documentos fiscais
- SE: financeiro
- SF: faturamento direto / fiscal
- SX: dicionarios (SX2, SX3, SX5, SX6, SX7, SX8)
- SY: tabelas auxiliares (vendedores estendidos, regras)
- SZ: livre pra customizacao do cliente
Os campos: prefixo da tabela
Cada campo comeca com o prefixo da sua tabela:
- SA1 ->
A1_*(A1_COD, A1_NOME) - SC5 ->
C5_*(C5_NUM, C5_CLIENTE) - SC6 ->
C6_*(C6_PRODUTO, C6_QTDVEN) - SE1 ->
E1_*(E1_VALOR, E1_VENCTO)
Por que? Em DBF (xBase original), nao havia SELECT a.id, b.nome FROM .... Voce abria multiplas tabelas ao mesmo tempo e referenciava campos diretamente. Sem prefixo, conflitaria: SA1 e SA2 ambos teriam campo COD e voce nao saberia qual era qual.
O prefixo da tabela no campo eliminou ambiguidade.
Numeracao
O numero apos a letra (1, 2, 5, etc) e a ordem cronologica de criacao OU agrupamento por subdominio. Por isso temos:
- SC1, SC5, SC6, SC7 — mas nao SC2, SC3, SC4 (existem em alguns ambientes ou foram descontinuadas)
- SD1, SD2, SD3 — entrada, saida, interno
- SE1, SE2, SE5 — receber, pagar, banco
Fossil que ficou
30 anos depois, em SQL Server com queries JOIN avancadas, o padrao continua. Mudar significaria refatorar milhoes de linhas em milhares de clientes. Vai ficar pra sempre — e dev Protheus precisa decorar.