feat(orders): detalhe completo de pedidos ERP com produtos e pagamento

- Endpoint GET /orders/erp/:idPedido para pedidos do histórico ERP
  (endpoint estático antes de /:id com ParseUUIDPipe, sem conflito)
- JOIN vw_peditens_erp + vw_produtos: itens com codigo + descricao do produto
- forma_pagamento direto da vw_pedidos_erp (ex: "28/35/42 DIAS")
- Retorna PedidoDetail completo: totais, ipi, icmsst, comissao, obs
- Frontend: useOrderDetail detecta 'erp-*' → chama /orders/erp/{id}
- OrderDetailPage: Cond. Pagamento nas Descriptions; oculta botões
  Transmitir/Aprovar/Recusar para pedidos ERP (read-only)
- PedidoItemSchema.id relaxado de uuid() para string() (ERP usa '{id}-{ordem}')
- PedidoDetailSchema: campo formaPagamento opcional adicionado

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-30 21:49:53 +00:00
parent a3c68f9f05
commit 6fbf8bfb8e
5 changed files with 148 additions and 4 deletions

View File

@@ -31,7 +31,7 @@ export const SITUA_LABEL: Record<number, string> = {
// ─── PedidoItem ───────────────────────────────────────────────────────────────
export const PedidoItemSchema = z.object({
id: z.string().uuid(),
id: z.string(), // UUID para pedidos SAR; '{idPedido}-{ordem}' para ERP
idProduto: z.number().int(),
codProduto: z.string().nullable(),
descProduto: z.string().nullable(),
@@ -87,6 +87,7 @@ export const PedidoDetailSchema = PedidoSummarySchema.extend({
acrescimo: z.string(),
comissao: z.string(),
pedFlex: z.string(),
formaPagamento: z.string().nullable().optional(),
aprovadoPor: z.number().int().nullable(),
aprovadoEm: z.iso.datetime().nullable(),
motivoRecusa: z.string().nullable(),