ChequesTitulos
CRUD de cheques sobre títulos em aberto e cheques avulsos
(tabela SEU) via wrapper U_FN390Exc sobre
MsExecAuto FINA390. Padrão WSSE2 rev3: single-cheque por request,
payload plano, GET dispatcher único, _list com
orderBy/cursor, _byid?tipo=recno.
O modo da operação é selecionado pelo campo oper no body:
2 = cheque sobre título (requer faixa de vencimento),
3 = avulso (default).
SEU também é usada pelo endpoint irmão MovimentoCaixinha (movimento de caixinha). Este endpoint exibe e edita apenas registros com perfil de cheque (banco/agência/conta/cheque preenchidos). Como a chave natural da SEU para cheques não está detalhada na TDN, PUT/DELETE/GET usam recno no path.Endpoint OAuth2
Sem credenciais? Você pode pegar o token rodando ./src/scripts/get-token.sh na biblioteca.
Vinculação com o ERP
Convenções
Identificador externo — RecNo. Diferente de SE2/SA6, a chave
natural da SEU para cheques não foi detalhada na TDN. Logo, PUT/DELETE/GET por
path usam o recno físico (inteiro positivo). A criação devolve o
recno no data da resposta — o consumer persiste
esse valor para operações subsequentes.
Cheque sobre título (oper=2) × Cheque avulso (oper=3).
O modo da operação é selecionado pelo campo oper no body. Quando
omitido, o servidor escolhe 2 se AUTVENCINI/AUTVENCFIM
vierem preenchidos; 3 caso contrário. oper=2 aplica o
cheque sobre títulos em aberto cuja data de vencimento cai na faixa
AUTVENCINI..AUTVENCFIM.
AUTCHEQUE vence o body quando vem no path. O endpoint expõe
POST /INCLUIR/{cheque} para forçar o número do cheque
(ex. talão pré-impresso). Quando o path traz {cheque}, o
AUTCHEQUE do body é ignorado — path domina. Para deixar o
servidor gerar via SX5 do banco, use POST /INCLUIR
sem {cheque}.
Whitelist AUT* (FINA390). A interface oficial da rotina
automática usa prefixo AUT*: AUTBANCO,
AUTAGENCIA, AUTCONTA, AUTCHEQUE,
AUTVENCINI, AUTVENCFIM, AUTVALOR,
AUTFORN, AUTBENEF, AUTNATUREZA. Campos
fora do whitelist são silenciosamente ignorados.
PUT reexecuta o wrapper FINA390. Como a rotina não expõe
operação de "alteração" explícita, o PUT reaplica nOper=2/3 com os
campos do body sobre o cheque posicionado por RecNo. Campos
omitidos no body herdam o valor atual do registro (para AUTCHEQUE
a herança é automática — ver código do fProcPut).
DELETE faz DbDelete físico. Diferente do soft-delete TOTVS
(D_E_L_E_T_='*') que mantém slot do índice ocupado, este endpoint
remove o registro fisicamente via RecLock + DbDelete.
Útil para limpar cheques de teste sem precisar de purga DBA.
Datas de vencimento (oper=2). AUTVENCINI e
AUTVENCFIM aceitam string YYYYMMDD (8 dígitos, sem
separadores). A conversão interna usa SToD(AllTrim(valor)). Para
oper=3, essas chaves são ignoradas.
Paginação. /_list usa page/pageSize
(default 50, máx 500) em modo natural (RecNo asc) ou
orderBy=recno com cursor para sync incremental keyset.
Cheques sobre Títulos (SEU)
CRUD por RecNo — sobre título (oper=2) ou avulso (oper=3)Descrição
Inclui um novo cheque via FINA390. O oper no body
escolhe explicitamente o modo:
oper: 2— cheque sobre título (requerAUTVENCINI+AUTVENCFIM).oper: 3— cheque avulso (default).
Sem oper no body, o servidor infere 2 quando as
datas vierem preenchidas; 3 caso contrário. Quando
AUTCHEQUE está vazio no body, FINA390 gera o número
via SX5 do banco.
Request body
AUT* (interface oficial da FINA390).
Schema em ChequePayload.
POST https://erpapi.jetme.com.br/api/99/01/WsChequesTit/INCLUIR Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "oper": 2, "AUTBANCO": "237", "AUTAGENCIA": "33901", "AUTCONTA": "125008", "AUTVENCINI": "20260101", "AUTVENCFIM": "20261231", "AUTVALOR": 5000.00, "AUTFORN": "000001", "AUTBENEF": "_TEST_FORNEC SOBRE", "AUTNATUREZA": "201" }
POST https://erpapi.jetme.com.br/api/99/01/WsChequesTit/INCLUIR Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "AUTBANCO": "237", "AUTAGENCIA": "33901", "AUTCONTA": "125008", "AUTVALOR": 1500.00, "AUTFORN": "000001", "AUTBENEF": "_TEST_FORNEC AVULSO", "AUTNATUREZA": "201" }
Respostas
oper fora de {2,3}. Tier: validation-error.FINA390 — banco inexistente, fornecedor bloqueado, natureza inválida, valor inválido, faixa de vencimento sem títulos elegíveis. Mensagem em message. Tier: business-error.Descrição
Variante do POST em que o cliente impõe o número do cheque
via path. Útil para integrações que precisam preservar a numeração de talão
pré-impresso ou alinhar com sistema legado. O AUTCHEQUE do body
é ignorado — path domina.
Path parameter
AUTCHEQUE do body).Request body
AUTCHEQUE do body é ignorado — path vence. Demais campos
do whitelist AUT* são respeitados.
POST https://erpapi.jetme.com.br/api/99/01/WsChequesTit/INCLUIR/100001 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "AUTBANCO": "237", "AUTAGENCIA": "33901", "AUTCONTA": "125008", "AUTVALOR": 750.00, "AUTFORN": "000001", "AUTBENEF": "_TEST_FORNEC PATH", "AUTNATUREZA": "201" }
Respostas
data.cheque reflete o valor do path.FINA390 (mesmas causas do POST sem cheque).Descrição
Como FINA390 não expõe operação de "alteração" explícita, o PUT
reaplica a rotina (nOper=2/3) sobre o cheque já
posicionado pelo RecNo. Campos omitidos no body herdam o valor
atual do registro (notadamente AUTCHEQUE é puxado automaticamente
do EU_CHEQUE da SEU corrente). Use para ajustar valor,
beneficiário ou natureza.
Path parameter
Request body
AUTVALOR, AUTBENEF,
AUTNATUREZA tipicamente).
PUT https://erpapi.jetme.com.br/api/99/01/WsChequesTit/ALTERAR/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "AUTVALOR": 1799.99, "AUTBENEF": "_TEST_FORNEC ALTERADO" }
Respostas
CrudResponse.oper fora de {2,3}. Tier: validation-error.FINA390. Tier: business-error.Descrição
Exclui o cheque via RecLock("SEU", .F.) + DbDelete
direto sobre o registro posicionado pelo RecNo. Diferente do
soft-delete TOTVS, é físico — o slot do índice é liberado
imediatamente.
Atenção: como a tabela SEU é compartilhada com
MovimentoCaixinha, o consumer deve validar o
EU_TIPO antes de excluir — o endpoint não diferencia.
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
DELETE https://erpapi.jetme.com.br/api/99/01/WsChequesTit/EXCLUIR/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
Descrição
Retorna o cheque posicionado pelo RecNo (path). Aplica
whitelist de CAMPOS_GET + ids técnicos.
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsChequesTit/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Cheque }.Descrição
Busca por id técnico explicitamente nomeado — útil quando o consumer
quer reconfirmar via msuid (UPDDISTR de MVC) ou redundar a
busca por recno com semântica de query parameter.
Query parameters
recnomsuidtipo=recno, string para tipo=msuid.Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsChequesTit/_byid?tipo=recno&valor=12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Cheque }.tipo/valor ausentes, tipo fora do enum.msuid requer campo EU_MSUID no dicionário.Listagem
Paginação por filtros (banco/agência/conta/cheque)Descrição
Lista cheques com filtros por banco, agencia,
conta, cheque em dois modos:
orderBy=natural(default) — varre por RecNo ascendente; paginação porpage/pageSize.orderBy=recno— mesma ordem física, mas com paginação por keyset (cursor/nextCursor). Indicado para sync incremental.
Query parameters
xFilial("SEU").CAMPOS_GET.1, mínimo 1).50, máx 500).naturalrecnoRecNo() < since.orderBy=recno, retoma após este RecNo (vindo de nextCursor).Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsChequesTit/_list?page=1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de Cheque), orderBy, pageSize, count, opcionalmente page ou nextCursor.fields com campo fora do whitelist, pageSize > 500).Schemas
Definições canônicas — campos com origemSX3 rastreável
EU_MSUID.AUT* são a interface oficial da
rotina automática. oper opcional escolhe explicitamente o modo
(2=cheque sobre título, 3=avulso); na ausência, o servidor infere
2 quando AUTVENCINI ou AUTVENCFIM
vierem preenchidos.
23{cheque} sobrescreve quando presente. Quando vazio, FINA390 gera via SX5 do banco.YYYYMMDD. Apenas para oper=2.YYYYMMDD. Apenas para oper=2.data nas respostas de POST/PUT.
Acrescenta ids técnicos quando disponíveis.
EU_TIPO resolvido pelo FINA390 (discrimina sobre título × avulso).EU_MSUID.data traz
ChequeRef em POST/PUT, string vazia em DELETE.
true em sucesso.message traz a
mensagem do NomeAutoLog do FINA390.
false em erros.Cenários
Catálogo de combinações reconhecidas pelos métodos. Tier semântico no slug.oper=2. Requer faixa de vencimento
AUTVENCINI..AUTVENCFIM — FINA390 aplica o cheque sobre
títulos abertos do fornecedor cujos vencimentos caem na faixa. Útil para
quitar múltiplos títulos com um único cheque.
Quando usar: pagamento programado em lote por fornecedor, dentro de uma janela de vencimentos definida.
oper=3 (default quando não há datas no body). Sem
amarração com título específico — cheque emitido como movimento
independente.
Quando usar: pagamento avulso, antecipação, despesa de caixa que não corresponde a título lançado.
AUTCHEQUE do body.
Quando usar: integrações que precisam manter numeração de origem (cheque físico, sistema legado).
nOper=2/3 com os novos valores. Campos omitidos no body herdam
o registro corrente.
Quando usar: ajustar valor, beneficiário, natureza após emissão inicial.
RecLock + DbDelete físico sobre o cheque posicionado.
Sem soft-delete — o registro é removido fisicamente, libera
o slot do índice e da numeração.
Atenção: a tabela SEU é compartilhada com
MovimentoCaixinha — o consumer deve validar
EU_TIPO antes de excluir.
DbGoTo pelo RecNo no índice físico (ordem 0). Retorna envelope
{ success, data: Cheque }.
tipo=recno&valor=N). Útil para clients que preferem query
string — ou para futura busca por msuid quando UPDDISTR
de MVC subir EU_MSUID.
orderBy=natural + page/pageSize.
Varredura física da SEU com filtros por banco/agência/conta/cheque. Para sync
incremental, alterne para orderBy=recno&cursor=<nextCursor>.
Pendências conhecidas (rev1)
Tabela SEU compartilhada com MovimentoCaixinha. O endpoint
não filtra registros por EU_TIPO no _list — o
consumer pode receber linhas que pertencem ao endpoint
MovimentoCaixinha. Pior: PUT/DELETE por
RecNo não verificam tipo, podendo modificar registro de caixinha por engano.
Roadmap: adicionar filtro WHERE EU_TIPO IN (...cheque) no
_list e validação pré-operação em PUT/DELETE.
Chave natural da SEU não detalhada na TDN. Por isso o endpoint
usa recno em todos os paths de CRUD (PUT/DELETE/GET). Quando a
chave natural for documentada, considerar migrar para um path mais semântico
(ex. banco-agencia-conta-cheque).
Bloqueio MSBLQL/MSBLQD não aplicável. A tabela
SEU não expõe os campos administrativos de bloqueio — o que
conta é o estado do fornecedor (SA2.A2_MSBLQL) e do
banco (não bloqueável neste modelo). O FINA390 enforça
bloqueios indiretos.
PUT reaplica nOper — pode duplicar efeitos. Como o
endpoint reexecuta FINA390 com nOper=2/3 em vez de
uma operação de "alteração" propriamente dita, há risco de
side-effects acumulativos em alguns ambientes (lançamentos
contábeis duplicados, baixas reaplicadas). Validar comportamento em ambiente
de homologação antes de habilitar PUT em produção.
DELETE não-FINA390. A exclusão é via
RecLock + DbDelete direto. Isso evita as restrições internas que
o FINA390 colocaria, mas não dispara hooks/triggers que
pudessem estornar lançamentos contábeis derivados. Aceitável para limpeza
de smoke tests; em produção, considerar fluxo manual para garantir consistência.
Sem filtro por status / data no _list. A
listagem não expõe filtro por EU_STATUS nem por data de emissão.
Consumer aplica filtro pós-resposta. Próxima revisão considera adicionar
query params dedicados.