Orcamento
Ciclo completo de orçamento de vendas (cabeçalho SCJ +
itens SCK): inclusão, alteração e exclusão via
MATA415; aprovação (efetivação em pedido SC5/SC6)
e cancelamento via MATA416. O número do orçamento
(CJ_NUM) é gerado pelo Protheus na inclusão via
GetSXENum + ConfirmSX8; o cliente deve passar
"auto" (ou qualquer string) no path da inclusão — o valor
é ignorado.
https://erpapi.jetme.com.br/api/99/01
Empresa 99 · Filial 01
Endpoint OAuth2
Sem credenciais? Você pode pegar o token rodando
./src/scripts/get-token.sh na biblioteca e
colar o access_token aqui no campo de refresh
(ou clique em "Logout" para limpar e voltar ao fake).
Convenções
Identificador externo. Todas as rotas usam
CJ_NUM (chave do orçamento) como path param. Na inclusão
o valor é ignorado — o servidor gera o número via
GetSXENum e devolve em data.numero. Por
convenção, envie "auto". Nas demais rotas
(ALTERAR, EXCLUIR, APROVAR,
CANCELAR, GET /{numero}) o número é
obrigatório e procurado por DbSeek sobre o índice de
chave da SCJ.
Modelo 2 (cabeçalho + itens). O payload de
inclusão / alteração é dividido em cabecalho (objeto
com campos da SCJ) e itens (array com
linhas da SCK). O MsExecAuto do
MATA415 trata as duas tabelas atomicamente — falha em
qualquer item aborta o cabeçalho.
Remoção parcial de itens no PUT. Para excluir
uma linha existente, envie no array itens um objeto com
LINPOS (o CK_ITEM da linha) e
AUTDELETA:"S". Novos itens podem ser adicionados na mesma
chamada — o MATA415 processa adições e deleções juntas.
Aprovar não é reversível sem cuidado.
POST /APROVAR/{numero} efetiva o orçamento gerando
SC5/SC6 (pedido de venda real). O smoke
test do projeto mantém essa rota comentada de propósito.
CANCELAR também exige release ≥ 28/03/2025; ambientes
anteriores devolvem 422.
Whitelist de campos. Cabeçalho aceita
CJ_CLIENTE, CJ_LOJACLI, CJ_LOJAENT,
CJ_CONDPAG, CJ_TIPO, CJ_TIPOCLI,
CJ_TABELA, CJ_VEND1, CJ_TRANSP,
CJ_OBS (CAMPOS_CAB_ALLOW). Itens aceitam
CK_PRODUTO, CK_QTDVEN, CK_PRCVEN,
CK_PRUNIT, CK_VALOR, CK_TES,
CK_LOCAL, CK_OPER, CK_DESC1
(CAMPOS_ITEM_ALLOW). Campos fora do whitelist são
descartados silenciosamente.
Paginação. /_list usa
page (default 1) e pageSize
(default 50, máx 500). O filtro
emissao é data exata no formato AAAAMMDD.
CRUD
Inclusão, alteração, exclusão e consulta por númeroDescrição
Inclui um orçamento novo via MATA415 em modo
3 (MODEL_OPERATION_INSERT). O número
CJ_NUM é gerado pelo Protheus (GetSXENum
+ ConfirmSX8) — o {numero} do path é
ignorado (use "auto"). O servidor devolve a chave
gerada em data.numero.
- Whitelist do cabeçalho: ver
OrcamentoInput. - Whitelist dos itens: ver
OrcamentoItemInput. - Pré-requisitos: cliente em
SA1, condição emSE4, TES emSF4, produto emSB1.
Path parameter
"auto". O CJ_NUM real é gerado e devolvido em data.numero.Request body
cabecalho (campos da SCJ) e itens[]
(pelo menos 1 linha da SCK). Schema completo em
OrcamentoInput.
POST https://erpapi.jetme.com.br/api/99/01/WsSCJ/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "CJ_CLIENTE": "000001", "CJ_LOJACLI": "01", "CJ_LOJAENT": "01", "CJ_CONDPAG": "001" }, "itens": [ { "CK_PRODUTO": "PA001", "CK_QTDVEN": 1, "CK_PRCVEN": 100, "CK_PRUNIT": 100, "CK_VALOR": 100, "CK_TES": "501" } ] }
POST https://erpapi.jetme.com.br/api/99/01/WsSCJ/INCLUIR/auto Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "CJ_CLIENTE": "000001", "CJ_LOJACLI": "01", "CJ_LOJAENT": "01", "CJ_CONDPAG": "001", "CJ_TIPO": "N", "CJ_VEND1": "000001", "CJ_TRANSP": "000001", "CJ_OBS": "Orcamento de teste - smoke realistic" }, "itens": [ { "CK_PRODUTO": "PA001", "CK_QTDVEN": 2, "CK_PRCVEN": 120, "CK_PRUNIT": 120, "CK_VALOR": 240, "CK_TES": "501", "CK_LOCAL": "01" }, { "CK_PRODUTO": "PA002", "CK_QTDVEN": 1, "CK_PRCVEN": 350, "CK_PRUNIT": 350, "CK_VALOR": 350, "CK_TES": "501", "CK_LOCAL": "02", "CK_DESC1": 5 } ] }
Respostas
CrudResponse com data.numero = CJ_NUM gerado.cabecalho/itens ausentes. Tier: validation-error.MATA415 rejeitou (cliente inexistente, TES inválido, produto bloqueado, etc.). data traz o token de erro do NomeAutoLog. Tier: business-error.Descrição
Altera o cabeçalho e/ou os itens do orçamento via
MATA415 em modo 4
(MODEL_OPERATION_UPDATE). Aceita qualquer
subconjunto do whitelist em cabecalho; em
itens, pode adicionar linhas novas (formato
OrcamentoItemInput) e/ou remover linhas
existentes (OrcamentoItemDelete com
LINPOS + AUTDELETA:"S").
Body é opcional — uma chamada sem body apenas valida que o orçamento existe (retorna 200 sem alterar nada).
Path parameter
CJ_NUM do orçamento existente.Request body
OrcamentoAlterInput.
PUT https://erpapi.jetme.com.br/api/99/01/WsSCJ/ALTERAR/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "CJ_OBS": "Alterado via smoke test" } }
PUT https://erpapi.jetme.com.br/api/99/01/WsSCJ/ALTERAR/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "itens": [ { "LINPOS": "0001", "AUTDELETA": "S" }, { "CK_PRODUTO": "PA003", "CK_QTDVEN": 5, "CK_PRCVEN": 80, "CK_PRUNIT": 80, "CK_VALOR": 400, "CK_TES": "501" } ] }
PUT https://erpapi.jetme.com.br/api/99/01/WsSCJ/ALTERAR/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "cabecalho": { "CJ_VEND1": "000002", "CJ_CONDPAG": "002" } }
Respostas
CrudResponse.{numero}. Tier: not-found.MATA415 rejeitou (item inválido, TES inexistente, LINPOS não encontrado, etc.). Tier: business-error.Descrição
Exclui o orçamento via MATA415 em modo
5 (MODEL_OPERATION_DELETE). Remove
cabeçalho e itens atomicamente. Orçamento já aprovado (com
pedido SC5 vinculado) pode ser rejeitado pelo
MsExecAuto — nesse caso use
POST /CANCELAR em vez
de exclusão.
Path parameter
CJ_NUM do orçamento existente.Chamada de exemplo
DELETE https://erpapi.jetme.com.br/api/99/01/WsSCJ/EXCLUIR/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse.{numero} ausente. Tier: validation-error.Descrição
Retorna o orçamento completo: cabecalho (campos
de CAMPOS_CAB_GET) + itens[] (campos de
CAMPOS_ITEM_GET ordenados por CK_ITEM).
Aplica filtro de filial (xFilial("SCJ")).
Path parameter
CJ_NUM exato.Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsSCJ/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: { cabecalho: OrcamentoCabec, itens: OrcamentoItem[] } }.{numero} ausente.Workflow
Aprovação (efetivação em pedido) e cancelamento via MATA416Descrição
Efetiva o orçamento via MATA416 em modo 4,
gerando o pedido de venda (SC5/SC6). Cabeçalho
e itens são reconstruídos pelo wrapper U_MT416EX a partir
do registro SCJ/SCK posicionado — não há body.
Efeito colateral não reversível. Uma vez efetivado, o orçamento gera um pedido real. O smoke test do projeto mantém esta rota comentada de propósito.
Bloqueio SIGAGSP (ADV0066). Em ambientes
com SIGAGSP ativo, a rotina é rejeitada pelo MsExecAuto com
422.
Path parameter
CJ_NUM existente.Chamada de exemplo
POST https://erpapi.jetme.com.br/api/99/01/WsSCJ/APROVAR/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse; data.numero ecoa CJ_NUM. Pedido gerado em SC5/SC6.ADV0066); orçamento já efetivado; estoque indisponível; ou outras regras do MATA416. Tier: business-error.Descrição
Cancela um orçamento existente via MATA416 em modo
6. Sem body — cabeçalho e itens reconstruídos pelo
U_MT416EX a partir do registro posicionado.
Requer release ≥ 28/03/2025. A operação de
cancelamento só existe em fontes MATA415/MATA416
a partir dessa data. Em ambientes anteriores, o
MsExecAuto falha e o endpoint devolve 422 com o log
de lMsErroAuto.
Path parameter
CJ_NUM existente.Chamada de exemplo
POST https://erpapi.jetme.com.br/api/99/01/WsSCJ/CANCELAR/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
CrudResponse.MATA416. Tier: business-error.Listagem
Listagem paginada com filtros por número, cliente e emissãoDescrição
Retorna lista enxuta de orçamentos (campos do schema
OrcamentoLista):
CJ_NUM, CJ_CLIENTE,
CJ_LOJACLI, CJ_EMISSAO. Filtros
opcionais por prefixo de num, cliente/loja e data
exata de emissão.
Query parameters
CJ_NUM.CJ_CLIENTE exato.cliente.AAAAMMDD. Pattern: ^\d{8}$.1, mínimo 1).50, máx 500).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsSCJ/_list?page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsSCJ/_list?cliente=000001&loja=01&emissao=20260507 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
pageSize > 500, emissao fora do pattern).Schemas
Definições canônicas — campos com origemSX3 rastreável
cabecalho (campos da SCJ) e itens (array com pelo menos um OrcamentoItemInput). Whitelist do cabeçalho em CAMPOS_CAB_ALLOW.
CJ_CLIENTE, CJ_LOJACLI, CJ_LOJAENT, CJ_CONDPAG, CJ_TIPO, CJ_TIPOCLI, CJ_TABELA, CJ_VEND1, CJ_TRANSP, CJ_OBS. CJ_CLIENTE + CJ_LOJACLI são obrigatórios.SA1.CJ_LOJACLI).SE4.N=Normal, B=Bonificação).A1_TIPO).OrcamentoItemInput.itens aceita
tanto novas linhas (OrcamentoItemInput)
quanto remoções (OrcamentoItemDelete)
na mesma chamada.
CJ_CLIENTE, CJ_LOJACLI, CJ_CONDPAG, CJ_VEND1, CJ_OBS; demais campos do whitelist completo também são aceitos).OrcamentoItemInput) e/ou remoção (OrcamentoItemDelete).CAMPOS_ITEM_ALLOW.
SB1.CK_QTDVEN × CK_PRCVEN).SF4."01").itens que OrcamentoItemInput.
CK_ITEM existente na linha que será removida."S".SCAMPOS_CAB_GET.
GetSXENum).AAAAMMDD).MATA416).CAMPOS_ITEM_GET; ordenado por CK_ITEM.
0001, 0002…). Usar como LINPOS para remoção no PUT./_list.
AAAAMMDD).data.numero
traz o CJ_NUM gerado (INCLUIR) ou ecoa o existente (demais).
true em respostas de sucesso.numero = CJ_NUM gerado / referenciado.data pode conter o token interno
da causa (log do NomeAutoLog / lMsErroAuto) para
tratamento programático, quando aplicável.
false em erros.MsExecAuto).