7.4 KiB
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_consultaepeditem_consultasão espelhos read-only dos pedidos do servidorconta_receber/recebimentosão read-only — o app só consulta, não cria títulos- Produtos têm 3 tabelas de preço (
valor1,valor2,valor3) —preco_padraoemsarcfgdetermina qual usar - ICMS-ST é calculado em
Pedido.calcIcmsSt()usando a tabelasticms+pauta_produto - Comissão é calculada em
Pedido.calcComissao()com lógica de rateio de desconto