feat(erp): pedidos e dashboard leem histórico do ERP (vw_pedidos_erp)

- OrdersService.list: substitui sar.pedidos por vw_pedidos_erp — 44k pedidos
  históricos do rep 29 visíveis; sar.pedidos continua sendo a tabela de escrita
  para novos pedidos SAR que serão integrados ao ERP
- DashboardService: atingido/pedidosMes/recentes/inativos todos via vw_pedidos_erp;
  supervisor usa vw_pedidos_erp para pedidosDia
- PedidoSummarySchema: id relaxado de uuid() para string(); adiciona numero,
  statusDescr e fonte ('sar'|'erp')
- orders.ts: corrige bug — apiFetch retorna JSON diretamente, não Response;
  remove res.ok/res.json() incorretos
- OrdersPage: coluna Nº mostra numero do ERP; statusDescr no badge
- DevLogin: atualiza para PAVEI COMERCIO cod 29

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-29 14:30:51 +00:00
parent 2abe5e8697
commit 24408ecd83
6 changed files with 204 additions and 146 deletions

View File

@@ -47,16 +47,19 @@ export type HistoricoPedido = z.infer<typeof HistoricoPedidoSchema>;
// ─── Pedido Summary (lista) ───────────────────────────────────────────────────
export const PedidoSummarySchema = z.object({
id: z.string().uuid(),
id: z.string(), // UUID para pedidos SAR, 'erp-{id}' para histórico ERP
numPedSar: z.string(),
numero: z.number().int().optional(), // número do pedido no ERP
idCliente: z.number().int(),
codVendedor: z.number().int(),
situa: z.number().int(),
statusDescr: z.string().optional(), // descrição legível do status
dtPedido: z.string(),
total: z.string(),
descontoPerc: z.string(),
obs: z.string().nullable(),
createdAt: z.iso.datetime(),
fonte: z.enum(['sar', 'erp']).default('sar'),
});
export type PedidoSummary = z.infer<typeof PedidoSummarySchema>;