MovimentoCaixinha (SEU)
CRUD de movimentos de caixinha (tabela SEU)
via rotina automática FINA560 (MsExecAuto).
Cobre despesa (saída direta da caixinha),
adiantamento (que depois exige prestação de contas),
prestação de contas do adiantamento e
exclusão. A tabela SEU é
compartilhada com o endpoint irmão
WsChequesTit (cheques sobre títulos) — o filtro
visual deste _list considera apenas registros com
EU_CAIXA preenchido (perfil caixinha).
CX1) deve estar cadastrada no SIGAFIN antes de qualquer POST — o FINA560 valida a existência e bloqueia inclusão se a caixinha não existir.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).
Vinculação com o ERP
Convenções
Acesso individual é recno. A chave SEU é
composta por filial+EU_NUM+EU_CAIXA+EU_TIPO — expor isso
em URL legível é incomum. Toda operação individual (PUT, DELETE, GET por
chave) usa recno como path param, ou
?tipo=recno&valor=N no _byid. O
recno é devolvido em data.recno no POST.
Despesa × Adiantamento. O mesmo POST serve os dois
perfis — o que muda é EU_TIPO:
"00" = despesa (saída direta, fecha
quando gravada) e "01" = adiantamento
(gera obrigação de prestação posterior via PUT
/PRESTACAO/{recno}).
Whitelist por operação. POST aceita o cadastro
completo (MovimentoPayload);
PUT aceita apenas 5 campos editáveis:
EU_HISTOR, EU_VALOR, EU_BENEF,
EU_NATUREZA, EU_VLMOED2
(MovimentoPayloadPut).
Campo fora do whitelist é silenciosamente ignorado pelo
MsExecAuto.
SEU compartilhada com cheques. O _list
aplica filtro implícito por EU_CAIXA != "" para excluir os
registros de cheques (que vivem em WsChequesTit). Ao
integrar, lembre-se de que um recno da SEU pode ser
cheque OU caixinha — verifique o campo antes de operar.
Formato de datas. Campos EU_DTDIGT,
EU_DTEMIS aceitam string YYYYMMDD (8
dígitos, sem separadores) no payload. Saída do GET serializa via
U_RestMnt.
Paginação e delta-sync. O /_list aceita
page/pageSize (default 50, máx
500) com orderBy=natural default. Para sync
incremental, alterne para orderBy=recno + cursor.
since filtra RecNo() < since.
Limitação atual do PUT (rev1). A prestação de contas
(nOper=4) está implementada como wrapper simples sobre
o cabeçalho da SEU. O array auxiliar com itens da prestação
(aArray2) ainda não é tratado — alguns ambientes
podem exigir e o MVC rejeitar a prestação. Plano de evolução em
src/lib/FIN/FN560EXC.prw.
MovimentoCaixinha
CRUD por RecNo — despesa, adiantamento, prestação e exclusãoEU_TIPO=00 ou adiantamento EU_TIPO=01)
Descrição
Inclui um movimento de caixinha via FINA560 em modo
3 (MODEL_OPERATION_INSERT). O tipo do
movimento é definido pelo campo EU_TIPO do payload:
"00"— despesa: saída direta da caixinha (fecha quando gravada)."01"— adiantamento: gera obrigação de prestação posterior via PUT/PRESTACAO/{recno}.
Retorna data.recno — guardar para
operações subsequentes (prestação, exclusão, consulta).
Whitelist completa: ver MovimentoPayload.
Request body
MovimentoPayload.
00 = despesa; 01 = adiantamento.POST https://erpapi.jetme.com.br/api/99/01/WsCaixinha/INCLUIR Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "EU_NUM": "0000000099", "EU_CAIXA": "CX1", "EU_TIPO": "00", "EU_HISTOR": "_TEST_ SMOKE DESPESA CAIXINHA", "EU_NRCOMP": "TST-SMOKE", "EU_VALOR": 250.00, "EU_BENEF": "_TEST_FORNEC CAIXINHA", "EU_DTDIGT": "20260516", "EU_DTEMIS": "20260516", "EU_FORNECE": "000001", "EU_LOJA": "01", "EU_NATUREZA": "201", "EU_MOEDA": 1 }
Respostas
CrudResponse com data = MovimentoRef incluindo recno — guardar para operações subsequentes.EU_TIPO fora de [00,01], campos obrigatórios vazios. Tier: validation-error.FINA560 — caixinha não cadastrada, fornecedor inexistente/bloqueado, natureza inválida, número duplicado. Tier: business-error.FINA560 nOper=4)
Descrição
Altera campos do movimento via FINA560 em modo
4 (MODEL_OPERATION_UPDATE) — tipicamente
a prestação de contas de um adiantamento (EU_TIPO=01).
Escopo de negócio reduzido: apenas 5 campos
entram no array do MsExecAuto:
EU_HISTOR— histórico/descriçãoEU_VALOR— valor do movimentoEU_BENEF— beneficiárioEU_NATUREZA— natureza financeiraEU_VLMOED2— valor em moeda 2
Campos fora do whitelist são silenciosamente ignorados pelo MsExecAuto.
aArray2 (itens da prestação). Alguns ambientes podem
exigir e o MVC rejeitar — ver
src/lib/FIN/FN560EXC.prw.
Path parameter
Request body
MovimentoPayloadPut.
PUT https://erpapi.jetme.com.br/api/99/01/WsCaixinha/PRESTACAO/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Content-Type: application/json Accept: application/json { "EU_HISTOR": "_TEST_ PRESTACAO CONCLUIDA", "EU_VALOR": 450.00 }
Respostas
CrudResponse.recno ausente/inválido, body ausente, JSON malformado. Tier: validation-error.recno. Tier: not-found.FINA560 — movimento de despesa (sem prestação), prestação já efetuada, natureza inválida, ambiente exige aArray2. Tier: business-error.FINA560 nOper=5)
Descrição
Exclui o movimento via FINA560 em modo 5
(MODEL_OPERATION_DELETE). O endpoint posiciona a
SEU via DbGoTo(recno) antes do wrapper.
Pré-requisitos:
- Movimento sem prestação efetuada (no caso de adiantamento).
- Sem vínculo contábil/bancário pendente.
Soft-delete TOTVS: marca D_E_L_E_T_='*'.
Path parameter
Cenario
Exemplo da requisicao (cenario ativo)
DELETE https://erpapi.jetme.com.br/api/99/01/WsCaixinha/EXCLUIR/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
recno ausente/inválido. Tier: validation-error.Descrição
Retorna o movimento posicionado pelo recno. Aplica
whitelist CAMPOS_GET sobre o cabeçalho da SEU.
Path parameter
_list).Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsCaixinha/12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
{ success: true, data: Movimento }.recno não numérico.Descrição
Busca o movimento por id técnico — alternativa programática
quando o consumer prefere usar query string em vez de path param.
Equivalente funcional ao GET /WsCaixinha/{recno} quando
tipo=recno; ou busca por EU_MSUID quando
tipo=msuid.
Query parameters
recnomsuidtipo=recno; string GUID para tipo=msuid.Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsCaixinha/_byid?tipo=recno&valor=12345 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
tipo/valor ausentes ou fora do enum.msuid requer EU_MSUID no dicionário.Listagem
Paginação por filtros + delta-syncDescrição
Lista movimentos da caixinha (filtra implicitamente
apenas registros com EU_CAIXA preenchido, excluindo cheques).
Filtros opcionais por filial, numero
(EU_NUM), caixa, tipo:
orderBy=natural(default) — paginação por offset (page/pageSize).orderBy=recno— paginação por keyset comcursor/nextCursor; indicado para sync incremental.
Query parameters
xFilial("SEU").0001CAMPOS_GET.1). Só faz sentido com orderBy=natural.50, máx 500).natural.naturalrecnoorderBy=natural, descarta RecNo() < since.orderBy=recno, retoma após este RecNo.Cenario
Exemplo da requisicao (cenario ativo)
GET https://erpapi.jetme.com.br/api/99/01/WsCaixinha/_list?caixa=CX1&pageSize=50 Authorization: Bearer eyJhbGciOiJIUzI1NiIs… Accept: application/json
Respostas
data (array de Movimento), orderBy, pageSize, count, opcionalmente page ou nextCursor.Schemas
Definições canônicas — campos com origemSX3 rastreável
/{recno}, /_list,
/_byid). Cabeçalho da SEU + ids técnicos.
00=despesa, 01=adiantamento.YYYYMMDD).EU_MSUID.POST para FINA560 nOper=3.
Chave composta de negócio: EU_NUM+EU_CAIXA+EU_TIPO
(filial vem do contexto do request).
00=despesa, 01=adiantamento.0001YYYYMMDD.PUT (CAMPOS_ALLOW_PUT).
Apenas 5 campos editáveis para prestação — campo fora desta lista
é silenciosamente ignorado pelo MsExecAuto.
data nas respostas
de POST/PUT. Acrescenta ids técnicos.
EU_MSUID.data traz
MovimentoRef em POST/PUT, string vazia em DELETE.
true em sucesso.message traz a
mensagem do NomeAutoLog do FINA560.
false em erros.Cenários
Catálogo de combinações reconhecidas. Tier semântico no slug; endpoint notype-pill.
EU_TIPO=00) ou adiantamento
(EU_TIPO=01) na caixinha. FINA560 modo 3.
Quando usar: registrar saída de caixinha (despesa fecha quando gravada; adiantamento aguarda prestação).
EU_HISTOR,
EU_VALOR, EU_BENEF, EU_NATUREZA,
EU_VLMOED2) via FINA560 nOper=4.
Limitação: rev1 não trata
aArray2
(itens da prestação). Em ambientes que exigem array de itens, o MVC
pode rejeitar.
D_E_L_E_T_='*') via FINA560 nOper=5.
Endpoint posiciona SEU via DbGoTo(recno) antes do wrapper.
Bloqueio: 422 quando há prestação já efetuada ou vínculo contábil/bancário pendente.
DbGoTo(recno). Devolve cabeçalho
da SEU + ids técnicos.
EU_CAIXA != ""
para separar dos cheques). Default orderBy=natural +
page/pageSize. Delta-sync via
orderBy=recno + cursor.
GET /{recno} em forma de query string
(?tipo=recno&valor=N). Alternativa quando o consumer
prefere query params sobre path params. Aceita também
tipo=msuid quando EU_MSUID está no dicionário.
Pendências conhecidas (rev1)
PUT sem suporte a aArray2. O wrapper
U_FN560Exc para nOper=4 ainda não trata o
array auxiliar com itens da prestação. Em bases customizadas que
exigem itens detalhados (com partição de valores), o MVC pode rejeitar
a prestação. Plano de evolução em src/lib/FIN/FN560EXC.prw
(TODO interno).
Caixinha CX1 precisa estar cadastrada. O smoke test e
a fixture base usam EU_CAIXA="CX1"; sem esse cadastro na
base alvo o POST retorna 422. Em ambientes novos, criar a caixinha
CX1 via SIGAFIN antes de rodar testes.
SEU compartilhada com cheques. O endpoint
WsChequesTit também grava em SEU — um
recno da SEU pode ser caixinha OU cheque. A integração
deve verificar EU_CAIXA antes de operar (vazio = cheque;
preenchido = caixinha). O _list aplica esse filtro
implicitamente; _byid e {recno} não.
Bloqueio MSBLQL/MSBLQD não aplicado. A SEU não expõe
MSBLQL/MSBLQD; o bloqueio relevante está na caixinha (cadastro próprio
do SIGAFIN) e no fornecedor (SA2) e é enforced pelo próprio
FINA560. Não há contrato adicional a aplicar no endpoint.
Padronização de tipos pendente. O domínio de
EU_TIPO em algumas bases customizadas vai além de
00/01 (ex.: 02 = devolução).
A whitelist atual não bloqueia outros valores no
payload — chega ao FINA560, que aceita ou rejeita
conforme parametrização. Validação de domínio (fValDom)
pode ser adicionada em rev futura se necessário.