Files
sar-android/docs/data-models.md
Julio Schlickmann dc61705c91 add project files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 22:33:42 -03:00

7.4 KiB

Modelos de Dados — SARAndroid

Banco Local: SQLite (jcsinformatica.sar, versão 40)

Diagrama de Relacionamento (simplificado)

empresa
  ├── representante (1:1)
  ├── config (1:2 — externa/interna)
  ├── config_ftp (1:1)
  ├── sarcfg (1:1) — feature flags
  ├── municipio (1:N)
  ├── formapag (1:N)
  ├── pauta (1:N)
  │     └── pauta_produto (N:N com produto)
  ├── cliente (1:N)
  ├── produto (1:N)
  │     └── produto_fotos (1:N)
  ├── pedido (1:N)
  │     └── peditem (1:N)
  ├── pedido_consulta (1:N) — read-only, vem do servidor
  │     ├── peditem_consulta (1:N)
  │     └── conta_receber (1:N)
  │           └── recebimento (1:N)
  └── sticms (1:N) — tabelas ICMS-ST

Tabelas

empresa

Coluna Tipo Notas
id_empresa INTEGER PK AUTOINCREMENT chave local
nome / razao TEXT nome comercial e razão social
password TEXT senha de acesso local
cnpj TEXT
id_empresa_erp INT chave no ERP remoto
id_empresa_matriz INT empresa matriz (multi-filial)
ultima_atualizacao DATE controla quando forçar sync total
sistema TEXT sig ou gerente
id_portador_padrao INT
id_empresa_prod / id_empresa_grup INT filtros de produtos
uf TEXT

representante

Coluna Tipo Notas
id_representante INTEGER PK
id_empresa INT FK
codigo / nome / password
taxa_comissao REAL % comissão padrão
forma_pag TEXT
desconto_maximo REAL limite de desconto
valor_ped_minimo REAL valor mínimo de pedido
permite_flex / saldo_flex INT / REAL pedido flex
desc_rateio_comissao REAL taxa de rateio de desconto/comissão
origem_comissao INT 1=representante, outro=produto

cliente

Coluna Tipo Notas
id_cliente INTEGER PK chave local
id_erp INT chave remota (nullable para novos clientes)
id_empresa INT FK
ativo / inativo BOOLEAN / INT
razao / fantasia TEXT
pessoa INT 1=PJ, 2=PF
consfinal BOOLEAN consumidor final
cgcpf / suf_cgcpf TEXT CNPJ ou CPF + sufixo
inscricao TEXT inscrição estadual
id_municipio INT FK
id_formapag INT FK forma de pagamento padrão
id_pauta INT FK pauta de preços associada
st_especifica TEXT regime especial ICMS-ST
desc_cliente_rede INT flag desconto rede
ctr_vencido INT tem títulos vencidos
limite_credito REAL
md5 TEXT hash para detecção de mudanças
UNIQUE (id_empresa, cgcpf, suf_cgcpf)

produto

Coluna Tipo Notas
id_produto INTEGER PK chave local
id_erp INT chave remota
id_empresa INT FK
codigo / referencia / nome TEXT
ativo INT
unidade / tipo TEXT
valor1 / valor2 / valor3 REAL 3 tabelas de preço
desc_max REAL desconto máximo permitido
qtd_estoque REAL
grupo_st TEXT grupo ICMS-ST
tx_comissao / aliq_ipi / cod_st REAL/INT fiscal
qtd_volume / lote_multiplo / permite_dif_lote
preco_promocional INT flag preço promocional ativo
id_prodvinc INT produto vinculado
md5 TEXT
UNIQUE (id_empresa, id_erp)

pedido

Coluna Tipo Notas
id_pedido INTEGER PK chave local
id_empresa INT FK
numero INT número local (autogerado)
id_erp / numero_erp INT chaves remotas (NULL até sync)
status INT 0=Pendente, 1=Liberado, 2=Enviado, 3=Cancelado, 4=Emitido
tipo INT 1=Venda, 2=Bonificação
data / data_emissao DATE
id_cliente INT FK
id_formapag INT FK
id_pauta INT FK
permite_flex / vl_flex INT / REAL pedido flex
desconto_p / desconto_v REAL desconto % e valor
cod_liberacao INT
total REAL total calculado
UNIQUE (id_empresa, id_erp), (id_empresa, numero)

peditem

Coluna Tipo Notas
id_peditem INTEGER PK
id_pedido INT FK
id_produto INT FK
quantidade REAL
valor REAL preço unitário
desconto_p / desconto_v REAL
preco_pauta REAL preço da pauta/tabela
vl_flex REAL
comissao REAL % comissão calculada
vl_liquido REAL valor líquido após descontos
preco_com_ipi INT flag preço inclui IPI
base_ipi / vl_ipi REAL
base_icmsst / vl_icmsst REAL
num_oc / item_oc TEXT referência ordem de compra

pauta (tabela de preços/descontos)

Coluna Tipo Notas
id_pauta INTEGER PK
numero / descricao TEXT
data_inicio / data_fim DATE vigência
exclusiva_cliente INT
vl_pedido1..5 REAL faixas de volume
tx_desconto1..5 REAL descontos por faixa
tp_desconto INT tipo: 1=valor, 2=peso

sarcfg (feature flags por empresa)

Flag Tipo Significado
bloq_novo_cliente INT impede cadastro de clientes
bloq_preco_pedido INT impede alterar preço
bloq_desc_pedido INT impede desconto em pedido
ativa_grupost INT ativa grupos ICMS-ST
ativar_prod_pauta INT exige pauta para produto
dias_bloq_credito INT dias para bloquear crédito
preco_padrao INT tabela de preço padrão (1/2/3)
preco_com_ipi INT preço padrão inclui IPI
bloq_preco_promocional INT bloqueia preço promocional
bloq_formapag_cliente INT forma de pag. fixada por cliente
bloq_limite_credito INT bloqueia pedido acima do limite

sticms (tabelas ICMS-ST)

Coluna Tipo
cod_st INT código substituição tributária
uf TEXT estado destino
st_especifica TEXT regime especial
aliq_icms / aliq_icmsst REAL alíquotas
modal_bc_icmsst TEXT modalidade base de cálculo (5=pauta)
perc_marg_vl_icmsst REAL MVA
somar_icmsst_nf INT

Value Objects (VO) — Mapeamento Java ↔ SQLite

Classe Java Tabela SQLite Notas
Empresa empresa contém Representante, Config x2, ConfigFTP
Representante representante embutido em Empresa
Cliente cliente implements Serializable — pode ser passado via Intent
Produto produto
Pedido pedido contém List<ItemPedido> — tem lógica de negócio (calcComissao, calcIpi, calcIcmsST)
ItemPedido peditem
FormaPagamento formapag
Pauta pauta
PautaProduto pauta_produto
Municipio municipio
SarConfig sarcfg feature flags
StIcms sticms
Config config conexão PostgreSQL (tipo=1 externa, tipo=2 interna)
ConfigFTP config_ftp
ContaReceber conta_receber read-only (vem do servidor)
Recebimento recebimento read-only
Fotos produto_fotos

Notas Importantes

  • pedido_consulta e peditem_consulta são espelhos read-only dos pedidos do servidor
  • conta_receber / recebimento são read-only — o app só consulta, não cria títulos
  • Produtos têm 3 tabelas de preço (valor1, valor2, valor3) — preco_padrao em sarcfg determina qual usar
  • ICMS-ST é calculado em Pedido.calcIcmsSt() usando a tabela sticms + pauta_produto
  • Comissão é calculada em Pedido.calcComissao() com lógica de rateio de desconto