4.9 KiB
4.9 KiB
Migracao do Frontend: /pedidos/condvenda-7/:numped7
O que mudou
Antes, a API retornava uma lista achatada de itens:
PedidoCondVenda7RowDto[]
Agora, a API retorna uma lista de grupos logisticos:
PedidoCondVenda7GroupDto[]
Cada grupo ja vem separado no backend pela chave:
numped|tipoentrega|dtentrega|codfilialretira
Regra para o frontend
- Nao agrupar por conta propria.
- Nao usar
hashcomo chave de separacao. - Nao inferir
tipoentregapelo primeiro item de uma lista mista. - Gerar 1 etiqueta por grupo retornado pela API.
Novo formato de resposta
type PedidoCondVenda7RowDto = {
numped: number
cgc: string
razaosocial: string
dtemissao: string
codfilial: number
filialvenda: string
codfilialretira: number
filialretira: string
data: string
numcar: number
codcli: number
cliente: string
codusur: number
vendedor: string
vlfrete: number
valor: number
tipoentrega: string
dtentrega: string | null
codprod: number
descricao: string
qt: number
hash: string
}
type PedidoCondVenda7GroupDto = {
groupKey: string
numped: number
tipoentrega: string
dtentrega: string | null
codfilialretira: number
filialretira: string
cgc: string
razaosocial: string
dtemissao: string
codfilial: number
filialvenda: string
data: string
numcar: number
codcli: number
cliente: string
codusur: number
vendedor: string
vlfrete: number
valor: number
hash: string
items: PedidoCondVenda7RowDto[]
}
Exemplo de resposta
[
{
"groupKey": "157073710|RETIRA POSTERIOR|2026-03-11T00:00:00.000Z|4",
"numped": 157073710,
"tipoentrega": "RETIRA POSTERIOR",
"dtentrega": "2026-03-11T00:00:00.000Z",
"codfilialretira": 4,
"filialretira": "JURUNENSE BR",
"cgc": "13772792000407",
"razaosocial": "JURUNENSE HOME CENTER LTDA",
"dtemissao": "2026-03-17T18:58:51.000Z",
"codfilial": 4,
"filialvenda": "JURUNENSE BR",
"data": "2026-03-04T00:00:00.000Z",
"numcar": 0,
"codcli": 247485,
"cliente": "SORAIA CRISTINA SILVA DA COSTA",
"codusur": 157,
"vendedor": "BR - LOURIVAL EDVALDO COSTA FERREIRA",
"vlfrete": 0,
"valor": 827.83,
"hash": "4368D18F69C36357A1FD52271EF58861",
"items": [
{
"numped": 157073710,
"tipoentrega": "RETIRA POSTERIOR",
"codprod": 12586,
"descricao": "ARG COZ E BANHEIROS 20KG QUARTZ",
"qt": 7,
"hash": "4368D18F69C36357A1FD52271EF58861"
}
]
},
{
"groupKey": "157073714|ENTREGA|2026-03-11T00:00:00.000Z|12",
"numped": 157073714,
"tipoentrega": "ENTREGA",
"dtentrega": "2026-03-11T00:00:00.000Z",
"codfilialretira": 12,
"filialretira": "JURUNENSE DISTRITO",
"cgc": "13772792001217",
"razaosocial": "JURUNENSE HOME CENTER LTDA",
"dtemissao": "2026-03-17T18:58:51.000Z",
"codfilial": 12,
"filialvenda": "JURUNENSE DISTRITO",
"data": "2026-03-04T00:00:00.000Z",
"numcar": 8899569,
"codcli": 247485,
"cliente": "SORAIA CRISTINA SILVA DA COSTA",
"codusur": 157,
"vendedor": "BR - LOURIVAL EDVALDO COSTA FERREIRA",
"vlfrete": 0,
"valor": 0,
"hash": "4368D18F69C36357A1FD52271EF58861",
"items": [
{
"numped": 157073714,
"tipoentrega": "ENTREGA",
"codprod": 54001,
"descricao": "CER 66X66RT MILANO BG GR 2,18M",
"qt": 4,
"hash": "4368D18F69C36357A1FD52271EF58861"
},
{
"numped": 157073714,
"tipoentrega": "ENTREGA",
"codprod": 54067,
"descricao": "CER 45X45 BEGE 45 2,00M",
"qt": 14,
"hash": "4368D18F69C36357A1FD52271EF58861"
}
]
}
]
O que mudar no frontend
1. Tipagem
Trocar o tipo esperado da resposta:
const data: PedidoCondVenda7RowDto[] = await response.json()
por:
const groups: PedidoCondVenda7GroupDto[] = await response.json()
2. Renderizacao
Antes:
renderLabel(data)
Agora:
groups.forEach((group) => {
renderLabel(group)
})
3. Cabecalho da etiqueta
Os dados do cabecalho devem vir do grupo:
group.numped
group.tipoentrega
group.dtentrega
group.cliente
group.filialretira
group.vendedor
group.hash
group.valor
4. Itens da etiqueta
A tabela de produtos deve vir de:
group.items
Exemplo:
group.items.map((item) => ({
codprod: item.codprod,
descricao: item.descricao,
qt: item.qt,
}))
Erro antigo que nao pode voltar
Se existir algo assim:
const firstItem = data[0]
const tipoEntrega = firstItem.tipoentrega
isso precisa sair se data representar mais de um pedido misturado.
Agora o correto e:
const tipoEntrega = group.tipoentrega
const items = group.items
Resumo operacional
- 1 grupo retornado = 1 etiqueta
- cabecalho vem do grupo
- produtos vem de
group.items - separacao ja vem pronta do backend