PedidoVenda
CRUD de Pedido de Venda (cabeçalho SC5 + itens
SC6) via wrapper MATA410 (MsExecAuto).
Reescrito em rev1 (16/05/2026) para o padrão da biblioteca:
1 pedido por chamada, C5_NUM no path, sub-rotas
INCLUIR/ALTERAR/EXCLUIR, e GETs alinhados ao mesmo formato
do WsSCJ (Orçamento).
C5_MSBLQL). O bloqueio relevante mora em SA1
(cliente, via U_C980Blq) e SB1 (produto). Validação acontece no
wrapper U_MT410Exc — tentativa de incluir com cliente ou produto
bloqueado retorna 422 com a mensagem do MsExecAuto.
Vinculação com o ERP
Convenções
Envelope canônico. Toda resposta usa
{ success: bool, message: string, data: object|string }.
Erros têm success=false + message com causa;
sucessos retornam o C5_NUM em data.C5_NUM.
Chave no path. Todas as operações de mutação usam
{numero} como path-param (6 chars, padding via
PadR). Diferente do rev0 antigo que usava
C5_EXTERNO como chave externa — aquele schema foi
descontinuado.
Datas em ISO. C5_EMISSAO e
C6_ENTREG aceitam tanto AAAAMMDD
quanto YYYY-MM-DD — conversão interna usa
SToD(StrTran(v,"-","")).
Alteração de item via LINPOS. No PUT, o item
informa LINPOS com o C6_ITEM alvo;
opcionalmente AUTDELETA="S" marca exclusão da linha.
Itens sem LINPOS são tratados como novos.
Whitelist de campos. Cabeçalho aceita apenas
C5_TIPO, C5_CLIENTE, C5_LOJACLI, C5_LOJAENT, C5_CONDPAG,
C5_VEND1, C5_TRANSP, C5_TPFRETE, C5_EMISSAO, C5_OBS, C5_XORIG,
C5_IDEXT. Itens aceitam C6_PRODUTO, C6_QTDVEN,
C6_PRCVEN, C6_PRUNIT, C6_VALOR, C6_TES, C6_LOCAL, C6_OPER,
C6_ENTREG. Campos fora dessa lista são ignorados.
Pedido de Venda — mutação
Inclusão / alteração / exclusão via MATA410.Descrição
Inclui um pedido de venda em SC5/SC6.
{numero} deve ser único — duplicidade retorna
409. Cliente em SA1 e produto(s) em
SB1 são validados antes da chamada ao MATA410;
falhas viram 422 com a mensagem do GetAutoGRLog.
Path parameter
C5_NUM. Padding com espaço à
direita até TamSX3('C5_NUM')[1].
Cenário
Request body
{ cabecalho: {...}, itens: [...] }. Schema
em PedidoPayload.
SA1.
"01" quando omitido.
SE4).
YYYY-MM-DD ou AAAAMMDD.
SB1).
MATA410 busca da
tabela de preços.
SF4). Quando omitido, MATA410 resolve via
matriz de TES da venda.
POST https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/INCLUIR/000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json { "cabecalho": { "C5_CLIENTE": "000001" }, "itens": [ { "C6_PRODUTO": "P0001", "C6_QTDVEN": 10 } ] }
POST https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/INCLUIR/000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json { "cabecalho": { "C5_TIPO": "N", "C5_CLIENTE": "000001", "C5_LOJACLI": "01", "C5_CONDPAG": "001", "C5_EMISSAO": "2026-05-17", "C5_XORIG": "API_TESTE" }, "itens": [ { "C6_PRODUTO": "P0001", "C6_QTDVEN": 5, "C6_PRCVEN": 120.00, "C6_TES": "501", "C6_LOCAL": "01" }, { "C6_PRODUTO": "P0002", "C6_QTDVEN": 2, "C6_PRCVEN": 350.00, "C6_TES": "501" } ] }
Respostas
data.C5_NUM retorna o número informado no path.MATA410 (TES não encontrado, condição inválida, regra de bloqueio).Descrição
Alteração de pedido existente. Diferente do POST, cabecalho
e itens são opcionais — quando omitidos, mantêm o valor
atual. Itens são endereçados via LINPOS (= C6_ITEM).
Itens sem LINPOS entram como novos. AUTDELETA="S"
em conjunto com LINPOS exclui a linha.
Path parameter
Cenário
Request body
C6_ITEM do item alvo.
"S" exclui o item do pedido.
PUT https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/ALTERAR/000001 { "cabecalho": { "C5_OBS": "Pedido revisado", "C5_CONDPAG": "002" } }
PUT https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/ALTERAR/000001 { "itens": [ { "LINPOS": "01", "C6_QTDVEN": 20 }, { "LINPOS": "02", "AUTDELETA": "S" } ] }
Respostas
Descrição
Exclui o pedido. O endpoint reconstrói o array de itens mínimo
(C6_ITEM + C6_PRODUTO) a partir do SC6
e passa para MATA410 op=5. Liberações em uso ou
pedidos com NF emitida ficam barrados pelo MATA410 → 422.
Cenário
Exemplo
DELETE https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/EXCLUIR/000001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs…
Respostas
Consulta
Consulta por número, listagem paginada e typeahead.Descrição
Devolve cabeçalho e itens em
data.{cabecalho,itens}. 404 quando o número não existe.
Cenário
Exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/000001
{
"success": true,
"data": {
"cabecalho": {
"C5_NUM": "000001",
"C5_CLIENTE": "000001",
"C5_LOJACLI": "01",
"C5_EMISSAO": "20260517"
},
"itens": [
{ "C6_ITEM": "01", "C6_PRODUTO": "P0001", "C6_QTDVEN": 10 }
]
}
}
Descrição
Itera SC5 em ordem do índice 1
(C5_FILIAL+C5_NUM) com filtros opcionais
num, cliente, loja e
emissao. Paginação via page/pageSize.
Query parameters
C5_NUM.C5_CLIENTE.C5_LOJACLI.AAAAMMDD — match exato.Cenário
Exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/_list?cliente=000001&page=1&pageSize=25
Descrição
Busca via TCGenQry em
SC5 com C5_NUM LIKE <q>% (helper
U_RestSug). Mínimo 2 caracteres em q;
limite default 10 (max 25).
Query parameters
C5_NUM.Cenário
Exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsPedidoVenda/_search?q=0000&limit=5
Schemas
Componentes do contrato OpenAPICAMPOS_CAB_ALLOW em WSSC5.prw."N"=normal (default).AAAAMMDD. Default = data do servidor.CAMPOS_ITEM_ALLOW.C6_ITEM do item alvo de alteração/exclusão."S" exclui a linha (combinar com LINPOS).AAAAMMDD.true.{ C5_NUM: "000001" } em POST, ou { cabecalho, itens } em GET).success=false.false.MATA410, traz o GetAutoGRLog com linhas separadas por /.Cenários
Combinações testáveis dos endpoints — alinhadas 1-pra-1 comexamples: do YAML.
LINPOS + opcional AUTDELETA.Pendências conhecidas (rev2)
Rateio AGG não suportado. Pedidos que precisam de
rateio múltiplo por centro de custo precisam usar a tela MATA410 do ERP.
Adicionar suporte exige extensão do aCab com array
aRateio — não escopado nesta revisão.
Grade SC6 não suportada. Produtos com grade
(variação/tamanho) não podem ser incluídos por este endpoint —
MATA410 espera estrutura especial em aCab[?][SC9] que
não está mapeada.
Smoke test E2E pendente. Validação automática
requer fixtures estáveis de SA1, SB1,
SE4 e SF4 no ambiente. Hoje a validação
roda manual via Postman a partir do openapi.yaml.
Ver README.md do endpoint.
Bloqueio TOTVS SC5/SC6 ausente. A tabela SC5 não
tem C5_MSBLQL nesta base. O bloqueio efetivo herda de
SA1 (cliente) e SB1 (produto) via U_C980Blq no
wrapper U_MT410Exc.