Desmontagem
Executa desmontagem de produto via rotina automatica
MATA242 e consulta os movimentos resultantes na tabela
SD3. Substitui a User Function legada
U_GAIZ242 (_incorporar/Execauto/GAIZ_MATA242.prw)
com endpoint REST + GETs read-only no padrao da biblioteca. A operacao
consome saldo do produto origem (SB1) e gera as linhas
componentes (itens) com rateio uniforme 100 / N do custo.
https://erpapi.jetme.com.br/api/99/01
Empresa 99 · Filial 01
Endpoint OAuth2
Sem credenciais? Voce 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).
Convencoes
Acao irreversivel. Desmontagem e movimento de
estoque irreversivel pelo proprio MATA242: atualiza
saldos SB2/SBF e gera as linhas em
SD3. Para desfazer e necessario rodar uma desmontagem
inversa via MATA240/MATA241. Por isso este
endpoint nao expoe PUT/DELETE — apenas
POST (executar) e GET (consultar).
Bloqueio TOTVS (MSBLQL/MSBLQD).
SD3 e tabela de movimento — sem bloqueio
TOTVS aplicavel. O padrao de bloqueio administrativo
(Onda 6 PADRAO-API-REST) cobre cadastros (SA1,
SA2, SB1, etc); movimentos sao acoes
pontuais sem flag de inativacao. O endpoint valida bloqueio do
produto de entrada (SB1->B1_MSBLQL == "1"
rejeita o item) como guarda de integridade, mas a SD3
em si nao possui D3_MSBLQL/D3_MSBLQD.
Documento (doc). Quando omitido no
payload, o servidor gera o D3_DOC via
GetSXENum("SD3","D3_DOC") com
ConfirmSX8/RollBackSX8. Quando informado, o
cliente assume responsabilidade pela idempotencia — chamadas
consecutivas com o mesmo doc geram dois conjuntos
distintos de linhas em SD3 (MATA242 nao deduplica).
Rateio uniforme. O custo do produto origem e
rateado uniformemente entre os itens:
D3_RATEIO = 100 / N onde N = Len(itens).
Regra herdada do legado GAIZ242; nao ha customizacao por
item nesta versao.
Datas. emissao e
validade sao strings YYYYMMDD (8 digitos,
sem hifens), convertidas internamente via sToD. Datas
fora do padrao retornam 400 antes mesmo de chamar o
MsExecAuto.
Paginacao e delta-sync. /_list usa
page/pageSize (default 50, max
500). Em orderBy=chave o agrupamento e por
documento (um item de resposta = um D3_DOC distinto). Em
orderBy=recno a lista vira linha-a-linha e suporta
delta-sync via since/cursor com
nextCursor.
Desmontagem
Executar (POST) e consultar (GETs)Descricao
Executa a desmontagem do produto origem
(consumo de saldo) e gera as linhas componentes em
SD3 via MATA242 em modo 3
(MODEL_OPERATION_INSERT). Quando doc e
omitido o servidor gera via GetSXENum("SD3","D3_DOC")
com ConfirmSX8; em erro o RollBackSX8
e disparado e a sequencia volta. O rateio do custo entre os
itens e uniforme (100 / N).
- Schema do body:
DesmontagemPayload. - Cada item dentro de
itens[]segueItem. - O resultado nao inclui as linhas geradas — use
GET /WsDesmontagem/{doc}em seguida para listar.
Request body
DesmontagemPayload.
POST https://erpapi.jetme.com.br/api/99/01/WsDesmontagem Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "produto": "PA001", "local": "01", "emissao": "20991231", "qtd": 1.0, "itens": [ { "cod": "MP001", "local": "01", "qtd": 2.0 }, { "cod": "MP002", "local": "01", "qtd": 1.0 } ] }
POST https://erpapi.jetme.com.br/api/99/01/WsDesmontagem Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "produto": "PA001", "local": "01", "doc": "000000123", "emissao": "20991231", "qtd": 1.0, "itens": [ { "cod": "MP001", "local": "01", "qtd": 2.0 }, { "cod": "MP002", "local": "01", "qtd": 1.0 } ] }
POST https://erpapi.jetme.com.br/api/99/01/WsDesmontagem Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "produto": "PA001", "local": "01", "endereco": "PA-01-01", "emissao": "20260513", "qtd": 1.0, "lote": "L00001", "validade": "20271231", "potencia": 100.0, "itens": [ { "cod": "MP001", "local": "01", "qtd": 2.0 }, { "cod": "MP002", "local": "01", "endereco": "MP-02-03", "qtd": 1.0 } ] }
Respostas
ExecResponse com data.doc (gerado ou ecoado), data.linhas (count) e data.auto=true quando o servidor alocou o doc.produto, local, emissao, qtd, itens[]), ou data fora do pattern. Tier: validation-error.MATA242: produto bloqueado, saldo insuficiente em SB2/SBF, TM nao parametrizado, lote/validade incompatives. Tier: business-error.GetSXENum, MsExecAuto sem log). Tier: business-error.Descricao
Retorna todas as linhas SD3 que pertencem ao
documento informado, na filial corrente
(xFilial("SD3")). Usa o indice 2 da SD3
(D3_FILIAL+D3_DOC+D3_COD+…) e itera enquanto
D3_FILIAL+D3_DOC baterem.
Path parameter
D3_DOC do movimento de desmontagem (sem padding; o endpoint aplica PadR internamente conforme TamSX3("D3_DOC")).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsDesmontagem/000000123 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: { filial, doc, count, linhas[] } } — cada item de linhas[] segue Linha.doc ausente. Tier: validation-error.Descricao
Lista movimentos de desmontagem com filtros por
filial, doc, produto e
emissao. Dois modos:
orderBy=chave(default) — agrupa porD3_DOC(uma entrada por documento distinto); paginacao porpage/pageSize.orderBy=recno— lista linha-a-linha em ordem fisica; suporta delta-sync viasince/cursorcomnextCursor.
Query parameters
xFilial("SD3")).YYYYMMDD. Pattern: ^\d{8}$.1, minimo 1). Usado quando orderBy=chave.50, max 500).chave.chaverecnoRecNo minimo). Usado com orderBy=recno.nextCursor da pagina anterior.Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsDesmontagem/_list?produto=MP001&emissao=20991231&page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsDesmontagem/_list?orderBy=recno&since=0&pageSize=200 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data[] (cada item segue ListItem), orderBy, page/pageSize, count e opcionalmente nextCursor.orderBy invalido, emissao fora do pattern).Descricao
Busca uma linha unica de SD3 por id tecnico
— util para integracoes que guardam o RecNo
ou o MS_UID e querem reconfirmar o registro sem
reconstruir a chave logica.
Query parameters
recnomsuidtipo=recno, string quando tipo=msuid).Chamada de exemplo
GET https://erpapi.jetme.com.br/api/99/01/WsDesmontagem/_byid?tipo=recno&valor=1234 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
GET https://erpapi.jetme.com.br/api/99/01/WsDesmontagem/_byid?tipo=msuid&valor=9f7a3e2c4b8d1a0e Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Linha }.tipo/valor ausentes ou fora do enum / formato.msuid requer coluna D3_MSUID nao disponivel no dicionario do ambiente.Schemas
Definicoes canonicas — campos com origemSX3 rastreavel
POST /WsDesmontagem.
cLocOrig).cLocaliza); obrigatorio quando o produto controla enderecamento.cDocumento). Quando omitido o servidor gera via GetSXENum("SD3","D3_DOC").YYYYMMDD. Pattern: ^\d{8}$.nQtdOrig). Deve ser > 0.YYYYMMDD. Pattern: ^\d{8}$.minItems: 1. Schema: Item.itens representa um produto componente
gerado pela desmontagem. O custo do produto origem e rateado
uniformemente (D3_RATEIO = 100 / N).
SB1 e nao estar bloqueado).SD3 retornada pelos GETs
/{doc} e /_byid. Inclui chave logica, dados
do movimento e ids tecnicos opcionais.
100 / N).SF5).YYYYMMDD.MS_UID (quando disponivel no dicionario).msuid./_list. Em orderBy=chave
equivale a um documento distinto (uma linha representativa); em
orderBy=recno equivale a uma linha fisica de
SD3.
YYYYMMDD.nextCursor no delta-sync.POST /WsDesmontagem em caso
de sucesso (201). Nao inclui as linhas geradas — use o GET
por documento em seguida.
true em respostas de sucesso.SD3 (geralmente Len(itens)).true quando o doc foi gerado pelo servidor via GetSXENum; false quando veio do payload.data pode conter o
token interno da causa (ex: mensagem do NomeAutoLog do
MATA242) para tratamento programatico, quando aplicavel.
false em erros.MsExecAuto).