Lançamento Sem Movimento

Marcação "a competência deste cliente não teve movimento" - uma afirmação de uma pessoa, usada como triagem da planilha de competência (Reinf > Lucro). Não é ato fiscal: não gera R-4099 nem altera o estado do período no REINF.

As duas rotas são idempotentes: marcar de novo devolve a marcação existente, e desmarcar o que não existe responde 200 mesmo assim. Dois operadores conferindo a mesma lista é o caso normal, não um erro. Veja Autenticação.

Base path

Todos os endpoints abaixo são montados sob o prefixo:

/api/v1/lancamento-sem-movimento

A URL completa em produção é https://api.contabilidadealcance.com.br/api/v1/lancamento-sem-movimento.

Escopos necessários

EscopoOperações
lancamento_sem_movimento:writePOST /, DELETE /

O escopo é derivado da rota: o prefixo /lancamento-sem-movimento vira o recurso lancamento_sem_movimento (hífen → underscore) e POST/DELETE viram write. Não há rota de leitura neste router.

Endpoints

POST /lancamento-sem-movimento/

Marca a competência de um cliente como sem movimento e registra quem marcou (usuário autenticado). Se a marcação já existe, devolve a existente (200) e preserva a autoria da primeira marcação - inclusive se ela foi feita pelo cliente no Portal.

Parâmetros

Sem parâmetros de rota ou query. Corpo SemMovimentoCreate:

CampoTipoObrigatórioDescrição
id_clienteintsimCliente (> 0).
competenciastrsimMM/YYYY com dígitos ASCII, mês de 01 a 12 e ano entre 2000 e 2100.

Competência fora do formato ou da faixa retorna 422.

Request

{
  "id_cliente": 42,
  "competencia": "09/2026"
}

Response 200 OK

{
  "status": "success",
  "message": "Competencia marcada como sem movimento.",
  "data": {
    "id": 315,
    "id_cliente": 42,
    "competencia": "09/2026",
    "id_usuario_criacao": 7,
    "id_portal_user_criacao": null,
    "data_hora_criacao": "2026-10-14T16:20:05"
  }
}

Escopo: lancamento_sem_movimento:write

DELETE /lancamento-sem-movimento/

Desfaz a marcação do par cliente + competência. Sem marcação para desfazer, responde 200 com removida: false.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
id_clienteintquerysimCliente (> 0).
competenciastrquerysimCompetência MM/YYYY.

Request

DELETE /api/v1/lancamento-sem-movimento/?id_cliente=42&competencia=09/2026

Response 200 OK

{
  "status": "success",
  "message": "Marcacao desfeita.",
  "data": { "removida": true }
}

Quando não havia marcação, a mensagem é "Nao havia marcacao para desfazer." e data.removida é false. Escopo: lancamento_sem_movimento:write

Schemas

SemMovimentoRead

CampoTipoDescrição
idintId da marcação.
id_clienteintCliente.
competenciastrMM/YYYY.
id_usuario_criacaoint | nullAutor, quando marcado pelo escritório (rota interna).
id_portal_user_criacaoint | nullAutor, quando marcado pelo cliente no Portal.
data_hora_criacaodatetime | nullMomento da marcação.

Exatamente um dos dois campos de autoria é preenchido por marcação.

Notas

  • Rota interna sem trava de período: o guard de competência REINF aberta (guard_competencia_reinf_aberta) é usado hoje só pelo Portal do Cliente; estas rotas internas não aplicam essa trava, de propósito - o contador é a autoridade que pode reabrir o período.
  • Validação do DELETE: no DELETE, competencia chega como texto livre na query (sem o validador de formato do POST); um valor que não casa com nenhuma marcação simplesmente retorna removida: false.
  • Precedência no mapa de competência: a marcação é o que a tabela afirma. O cruzamento com os lançamentos (lançamento observado vence a afirmação "sem movimento") acontece no mapa de competência de Lançamento Lucro.