Integração SAP Business One
6 espelhos somente-leitura (sap_*) · sync por ETL · chave composta (item, sysnumber) em OBTN/OBTQ
Itens (OITM)
0
PA · Mt · EB cadastrados
Ordens (OWOR)
0
+ 0 linhas WOR1
Lotes (OBTN)
0
+ 0 saldos OBTQ
Último sync
—
sem registro em etl_log
Espelhos e relacionamentos (validados por anti-join nos dados reais)
sap_oitm0 linhasestado_atual.json → produtos
PK itemcode
Itens: Mt/EB/PA/VD + tipo_item
sap_oitw0 linhasprodutos × depósitos (8)
PK itemcode + whscode
OnHand/comprometido/solicitado por depósito
sap_owor0 linhasestado_atual.json → bateladas
PK docentry
Cabeçalho OP + status P/R/C/L
sap_wor10 linhasbateladas → componentes
PK docentry + linenum
Componentes: planejada/baixada/separada
sap_obtn0 linhasprodutos → lotes gerados
PK itemcode + sysnumber
Lotes: fab/validade/status · PK composta
sap_obtq0 linhaslotes × depósitos PA+EP
PK item+sys+depósito
Saldo por depósito · FK composta → OBTN
Bug corrigido por construção: vw_estoque_validade (refined) junta OBTN↔OBTQ só por nr_sysnumber
sysnumber tem só 29 valores distintos para 981 lotes — cruzava lote de um item com outro. No DDL: PK/FK composta (id_codigo_item, nr_sysnumber)
OWOR.cd_status: L=619 · R=8 · C=5 (significado pendente de negócio) · WOR1.cd_status_linha: 100% P (vestigial?)