ApontamentoProducao
Executa Apontamento de Produção (rotina automática MATA250,
modo 3) sobre uma Ordem de Produção (SC2) e consulta os
movimentos resultantes na SD3. Substitui a User Function
legada U_GAIZ250. Operação irreversível
pelo próprio MATA250 — só expõe POST (executar) e GETs
read-only; não há PUT nem DELETE.
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
Ação irreversível. POST aciona o
MATA250, que grava movimento na SD3,
atualiza saldos em SB2/SBF e incrementa
SC2.C2_QUJE. Não há endpoint de estorno aqui — para
desfazer é necessária rotina dedicada (a identificar). Tratar como
qualquer integração que altera estoque + produção: revisar payload
antes de chamar e não rodar em PROD sem aprovação.
Identificador do documento. O D3_DOC
gerado pelo MATA250 é o identificador externo. A consulta
GET /WsApontamentoProducao/{doc} usa o índice 2 da SD3
(D3_FILIAL+D3_DOC+D3_COD+…) e retorna todas as linhas do
documento. Para buscar uma linha específica use
/_byid?tipo=recno|msuid&valor=….
Quantidade default = pendente. Quando
qtd é omitido (ou 0), o endpoint aponta toda
a quantidade pendente (C2_QUANT - C2_QUJE). Se informado,
qtd precisa ser menor ou igual à pendente — fora disso
retorna 422 com motivo explícito.
Resolução do tipo de movimento (TM). O
D3_TM é decidido em três níveis (primeiro não-vazio
vence): payload tipoMovimento → header HTTP
X-TipoMovimento → parâmetro de ambiente
GAIZ_MIAP (default "010"). O TM precisa
existir cadastrado (SF5) e ser compatível com
apontamento de produção.
Paginação e ordenação em /_list.
orderBy=chave (default) usa page/pageSize
agrupando por D3_DOC distintos. orderBy=recno
usa cursor/nextCursor sobre RecNo
da SD3 — útil para delta-sync incremental.
Colisão de alias com Desmontagem. O fonte se chama
WSSD3P.prw (P = Produção) para não colidir com
WSSD3 (Desmontagem), que também consome a
SD3. O WSRESTFUL e o path REST permanecem
em linguagem de negócio: WsApontamentoProducao e
/WsApontamentoProducao.
ApontamentoProducao
Execução do MATA250 e consulta da SD3 resultanteDescrição
Aponta produção de uma OP existente em SC2 via
MATA250 modo 3 (inclusão). O endpoint valida o
payload (op, emissao; qtd
opcional), confere se a OP está aberta e sem empenhos pendentes
em SD4, monta o array do MsExecAuto e dispara
via U_MT250Exc.
- Sempre cria — não há update; pode ser chamado várias vezes na mesma OP até
C2_QUJE = C2_QUANT. - Quando bem-sucedido, retorna a chave técnica do movimento gerado:
doc(D3_DOC) erecno(RecNoda SD3). - O TM efetivo aparece em
data.tipoMovimentona resposta.
Header opcional
GAIZ_MIAP mas perde para o campo tipoMovimento no payload).Request body
ApontamentoPayload.
POST https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "op": "TST00001001001", "emissao": "20991231", "qtd": 1.0 }
POST https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "op": "TST00001001001", "emissao": "20991231", "qtd": 5.0, "tipoMovimento": "010" }
POST https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "emissao": "20991231", "qtd": 1.0 }
POST https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "op": "ZZZZZZZZZZZZZZ", "emissao": "20991231", "qtd": 1.0 }
Respostas
ExecResponse com data.doc, data.recno, data.tipoMovimento, data.quant.op, emissao). Tier: validation-error.qtd maior que pendente, ou rejeição do MsExecAuto do MATA250 (TM inválido, sem saldo SB2/SBF, etc). Tier: business-error.Begin Sequence / Recover Using).Descrição
Retorna todas as linhas da SD3 com
D3_DOC igual ao informado, dentro da filial
corrente (xFilial("SD3")). Usa o índice 2
(D3_FILIAL+D3_DOC+D3_COD+…) e ignora linhas de
outras filiais.
Path parameter
D3_DOC). Padding interno via TamSX3("D3_DOC").Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao/000001234 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data.filial, data.doc, data.count e data.linhas[] (array de Linha).doc ausente. Tier: validation-error.Descrição
Lista documentos distintos de apontamento aplicando filtros
opcionais (filial, doc, op,
produto, emissao). Dois modos:
orderBy=chave(default) — agrupa porD3_DOC, paginação porpage/pageSize.orderBy=recno— varre porRecNo, retorna linhas comnextCursorpara delta-sync.
Query parameters
xFilial("SD3")).YYYYMMDD. Pattern: ^\d{8}$.1, mínimo 1). Válida em orderBy=chave.50, máx 500).chave.chaverecnoRecNo abaixo deste valor). Use com orderBy=recno.nextCursor da página anterior (continuação por RecNo).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao/_list?op=TST00001001001&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao/_list?orderBy=recno&since=0&pageSize=200 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao/_list?produto=PA0001&emissao=20991231 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data[] (array de ListItem), orderBy, page, pageSize, count, opcionalmente nextCursor (modo recno).orderBy inválido, emissao fora do pattern, pageSize > 500).Descrição
Busca uma linha específica da SD3 por
identificador técnico. Útil quando o consumidor persistiu o
recno (ou msuid) retornado no POST e
quer reconfirmar o registro sem reconstruir o documento. Aplica
filtro de filial.
Query parameters
recnomsuidtipo=recno; string quando tipo=msuid).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao/_byid?tipo=recno&valor=1234 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsApontamentoProducao/_byid?tipo=msuid&valor=9f7a3e2c4b8d1a0e Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Linha }.tipo ausente / fora do enum, ou valor ausente / não-inteiro para tipo=recno.msuid requer D3_MSUID no dicionário do ambiente (campo opcional).Schemas
Definições canônicas — campos com origemSX3 rastreável
POST. Campos validados antes de qualquer toque
em SC2/SD4.
SC2. Padding interno via TamSX3("D3_OP").YYYYMMDD. Pattern: ^\d{8}$; precisa representar data válida.0 = toda a pendente (C2_QUANT - C2_QUJE). Se informado, precisa ser ≤ pendente.X-TipoMovimento e sobre o parâmetro GAIZ_MIAP.POST. data traz
as chaves técnicas geradas pelo MATA250.
true em respostas de sucesso."Apontamento realizado com sucesso.").GET /{doc}.RecNo da linha SD3 gerada — usar como id técnico em /_byid?tipo=recno.SD3 retornada pelo GET /{doc}
e pelo GET /_byid. Campos efetivamente serializados vêm
de CAMPOS_GET_LIN + ids técnicos opcionais
(CAMPOS_TEC_OPC) detectados pelo U_RestCamposOpc.
YYYYMMDD).RecNo da SD3).GET /_list. Nomes em
camelCase (sem prefixo D3_) — mantém o
shape estável para o consumidor enquanto o dicionário SX3 pode
variar entre ambientes.
YYYYMMDD).RecNo).data pode trazer o
log interno do MsExecAuto do MATA250 quando o erro
vier do wrapper U_MT250Exc.
false em erros.NomeAutoLog).