RF-004 – Emissão de Certidão Negativa
Permite que qualquer cidadão consulte a existência de registro de Contas Julgadas Irregulares no TCE-GO e, em caso negativo, emita uma Certidão Negativa imprimível diretamente pelo navegador. Em caso de pendência, o sistema informa a necessidade de comparecimento presencial. Um fluxo secundário permite validar a autenticidade de certidões previamente emitidas.
Local de Acesso: Portal TCE-GO → Serviços → Emitir Certidão Negativa | Rota: `/certidao`
—
Atores
| Nível | Perfil | Autenticação | Abrangência |
|---|---|---|---|
| Público | Cidadão | Não requer autenticação | Acesso irrestrito — qualquer usuário da internet |
—
Telas
Tela 01 – Formulário de Emissão (estado: search)
| Elemento | Tipo | Obrigatório | Regra |
|---|---|---|---|
| Nome | Texto | Sim | Máximo 200 caracteres |
| CPF/CNPJ | Texto numérico com máscara | Sim | 11 dígitos (CPF) ou 14 dígitos (CNPJ) — validação de dígito verificador |
| Captcha | Widget reCAPTCHA “Não sou um robô” | Sim | Deve ser marcado antes de submeter |
| Botão “Emitir Certidão” | Ação | — | Habilitado somente quando todos os campos obrigatórios são válidos |
| Link “Validar Certidão” | Ação | — | Abre o Modal de Validação |
Tela 03 – Certidão Negativa (estado: negativa)
| Elemento | Tipo | Descrição |
|---|---|---|
| Título | Texto estático | “CERTIDÃO NEGATIVA DE CONTAS JULGADAS IRREGULARES” |
| Subtítulo | Texto estático | “(Válida somente com a apresentação do CPF/CNPJ)” |
| Nome | Texto dinâmico | Nome retornado pela API |
| CPF/CNPJ | Texto dinâmico | CPF/CNPJ retornado pela API |
| Corpo da certidão | Texto estático | Texto institucional conforme modelo TCE-GO |
| Data e hora de emissão | Texto dinâmico | Formato: HH:mm:ss do dia dd/MM/yyyy |
| Validade | Texto dinâmico | Data de emissão + 30 dias |
| Código de controle | Texto dinâmico | Código retornado pela API (ex: 7FF4DBFE7B7DDAFE) |
| Aviso de rasura | Texto estático | “Atenção: qualquer rasura ou emenda invalidará este documento.” |
| Botão “Imprimir Certidão” | Ação | Aciona window.print() — exibe apenas o conteúdo da certidão |
| Botão “Nova Consulta” | Ação | Reseta o formulário e retorna ao estado search |
Tela 04 – Certidão Positiva / Aviso (estado: positiva)
| Elemento | Tipo | Descrição |
|---|---|---|
| Aviso de impossibilidade | Texto dinâmico | Mensagem de pendência conforme modelo TCE-GO |
| Lista de tipos de pendência | Texto estático | Homonímia, contas irregulares, deliberações sob efeito suspensivo, provimento de recurso |
| Botão “Nova Consulta” | Ação | Reseta o formulário e retorna ao estado search |
Tela 05 – Modal de Validação (estado: validacao-modal)
| Elemento | Tipo | Obrigatório | Regra |
|---|---|---|---|
| CPF/CNPJ | Texto numérico com máscara | Sim | CPF (11 dígitos) ou CNPJ (14 dígitos) válido |
| Data de Emissão | Date | Sim | Formato yyyy-MM-dd (input type=“date”) |
| Hora de Emissão | Time | Sim | Formato HH:mm:ss (input type=“time” step=1) |
| Código de Controle | Texto | Sim | Código alfanumérico da certidão a validar |
| Botão “Validar” | Ação | — | Submete os dados para a API de validação |
| Botão “Fechar” | Ação | — | Fecha o modal sem submeter |
Tela 06 – Resultado da Validação (estado: validacao-resultado)
| Elemento | Tipo | Descrição |
|---|---|---|
| Status da validação | Texto dinâmico | “Certidão válida” ou “A certidão pesquisada não é válida” |
| Dados da certidão original | Texto dinâmico | Exibidos apenas quando valida=true: nome, CPF/CNPJ, data/hora de emissão, código, validade |
—
Fluxos
Fluxo 01 – Emissão de Certidão
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | O sistema exibe o formulário de emissão com os campos Nome, CPF/CNPJ e Captcha | — | Tela 01 |
| 02 | O cidadão preenche o campo Nome | RN01 | Tela 01 |
| 03 | O cidadão preenche o campo CPF/CNPJ — o sistema aplica a máscara automaticamente conforme a quantidade de dígitos digitados | RN02, RN03, RN04 | Tela 01 |
| 04 | O cidadão marca o widget reCAPTCHA “Não sou um robô” | RN05 | Tela 01 |
| 05 | O cidadão aciona o botão “Emitir Certidão” | — | Tela 01 |
| 05.1 | Se Nome não preenchido: o sistema bloqueia a submissão e exibe indicação de campo obrigatório | RN01 | Tela 01 |
| 05.2 | Se CPF/CNPJ não preenchido: o sistema bloqueia a submissão e exibe indicação de campo obrigatório | RN02 | Tela 01 |
| 05.3 | Se CPF/CNPJ com dígito verificador inválido: o sistema bloqueia a submissão e exibe mensagem de erro antes de chamar a API | RN03, RN04 | Tela 01 |
| 05.4 | Se Captcha não verificado: o sistema bloqueia a submissão | RN05 | Tela 01 |
| 06 | O sistema exibe o indicador de carregamento e envia requisição POST `/api/certidao/emitir` | RN06 | |
| 07 | A API retorna resposta | — | — |
| 07.1 | Se `ehPositiva = false`: o sistema executa o Fluxo 01A | RN07, RN08, RN09 | Tela 03 |
| 07.2 | Se `ehPositiva = true`: o sistema executa o Fluxo 01B | RN10 | Tela 04 |
| 07.3 | Se a API retornar erro de validação: o sistema exibe as mensagens de erro correspondentes aos campos | — | Tela 01 |
Fluxo 01A – Exibição de Certidão Negativa
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | O sistema exibe a certidão negativa com: nome, CPF/CNPJ, data e hora de emissão, código de controle e data de validade (emissão + 30 dias) | RN08, RN09 | Tela 03 |
| 02 | O sistema exibe o botão “Imprimir Certidão” | RN11 | Tela 03 |
| 03 | O cidadão aciona o botão “Imprimir Certidão”: o sistema chama window.print() exibindo exclusivamente o conteúdo da certidão (sem header, formulário, botões ou footer) | RN11, RN12 | Tela 03 |
| 04 | O cidadão aciona o botão “Nova Consulta”: o sistema reseta todos os campos e retorna ao estado search | — | Tela 01 |
Fluxo 01B – Exibição de Aviso de Pendência
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | O sistema exibe o aviso: “As informações disponíveis sobre o interessado não permitem a emissão de Certidão Negativa via Internet. É necessário o comparecimento ou contato com o Tribunal de Contas do Estado de Goiás na Secretaria Geral para esclarecimento de pendências e/ou obtenção da Certidão pretendida.” | RN10 | Tela 04 |
| 02 | O sistema lista os possíveis tipos de pendência: Problemas de Homonímia; Contas julgadas irregulares; Contas julgadas irregulares, cuja deliberação está sob efeito suspensivo; Contas julgadas irregulares, com posterior provimento de recurso, cujo julgamento tornou-se regular | — | Tela 04 |
| 03 | O sistema não exibe botão de impressão nem emite documento | RN10 | Tela 04 |
| 04 | O cidadão aciona o botão “Nova Consulta”: o sistema reseta todos os campos e retorna ao estado search | — | Tela 01 |
Fluxo 02 – Validação de Certidão Existente
| Passo | Ação | Regra | Tela |
|---|---|---|---|
| 01 | O cidadão aciona o link “Validar Certidão” na Tela 01 | — | Tela 01 |
| 02 | O sistema abre o modal de validação com os campos: CPF/CNPJ, Data de Emissão, Hora de Emissão e Código de Controle | — | Tela 05 |
| 03 | O cidadão preenche todos os campos do modal | RN02, RN03, RN04, RN13 | Tela 05 |
| 04 | O cidadão aciona o botão “Validar” | — | Tela 05 |
| 04.1 | Se qualquer campo obrigatório não preenchido: o sistema bloqueia a submissão | RN13 | Tela 05 |
| 04.2 | Se CPF/CNPJ inválido: o sistema bloqueia a submissão e exibe erro | RN03, RN04 | Tela 05 |
| 05 | O sistema envia requisição POST `/api/certidao/validar` com os dados informados | RN14 | Tela 05 |
| 06 | A API retorna resposta | — | — |
| 06.1 | Se `valida = true`: o sistema exibe os dados originais da certidão (nome, CPF/CNPJ, data/hora de emissão, código de controle, data de validade) | — | Tela 06 |
| 06.2 | Se `valida = false`: o sistema exibe a mensagem: “A certidão pesquisada não é válida” | RN15 | Tela 06 |
| 07 | O cidadão fecha o modal ou retorna ao formulário de emissão | — | Tela 01 |
—
RN – Regras de Negócio
| Regra | Descrição |
|---|---|
| RN01 | O campo Nome é obrigatório e possui limite máximo de 200 caracteres. |
| RN02 | O campo CPF/CNPJ é obrigatório. Deve conter exatamente 11 dígitos (CPF) ou 14 dígitos (CNPJ), excluindo caracteres de formatação. |
| RN03 | O tipo de pessoa é inferido automaticamente pelo sistema a partir da quantidade de dígitos: 11 dígitos = Pessoa Física (FISICA); 14 dígitos = Pessoa Jurídica (JURIDICA). |
| RN04 | O CPF é validado pelo algoritmo de dígito verificador módulo 11. O CNPJ é validado pelo algoritmo com pesos [5,4,3,2,9,8,7,6,5,4,3,2]. Sequências repetidas (ex: 111.111.111-11) são consideradas inválidas. A validação ocorre no frontend antes de chamar a API. |
| RN05 | O campo Captcha é obrigatório. O sistema utiliza componente reCAPTCHA simulado no padrão “Não sou um robô”. A submissão é bloqueada enquanto o captcha não for verificado. |
| RN06 | A requisição de emissão é enviada via POST para `/api/certidao/emitir` com os campos `nome` e `cpfCnpj` (apenas dígitos). O captcha não é enviado ao backend — é verificado apenas no frontend. |
| RN07 | A certidão negativa emitida tem validade de 30 dias a contar da data de emissão. A data de vencimento é calculada e exibida no documento. |
| RN08 | A certidão negativa contém um código de controle alfanumérico único (ex: 7FF4DBFE7B7DDAFE) gerado pelo backend, que permite verificar a autenticidade do documento posteriormente. |
| RN09 | O sistema não aciona a impressão automaticamente. A impressão é iniciada exclusivamente pela ação do cidadão no botão “Imprimir Certidão”. |
| RN10 | Quando `ehPositiva = true`, o sistema não emite certidão e não exibe botão de impressão. Exibe apenas o aviso de comparecimento presencial com a lista de possíveis pendências. |
| RN11 | O layout de impressão via `@media print` deve ocultar: header, formulário, botões de ação e footer. Deve exibir apenas: logo TCE, título, corpo da certidão e rodapé com código de controle. Fonte de impressão: Times New Roman, 14pt, largura máxima 900px centralizada. |
| RN12 | O botão “Nova Consulta” reseta todos os campos do formulário (nome, CPF/CNPJ, captcha) e retorna a interface ao estado `search`, independentemente do estado atual. |
| RN13 | No modal de validação, todos os campos são obrigatórios: CPF/CNPJ, Data de Emissão, Hora de Emissão (formato HH:mm:ss) e Código de Controle. |
| RN14 | A requisição de validação é enviada via POST para `/api/certidao/validar` com os campos: `cpfCnpj`, `dataEmissao` (formato yyyy-MM-dd), `horaEmissao` (formato HH:mm:ss) e `codigo`. A API consulta a view Oracle `VWEB_CERTIDAO` com os filtros correspondentes. |
| RN15 | Quando `valida = false`, o sistema exibe a mensagem: “A certidão pesquisada não é válida”. Nenhum dado adicional é exibido. |




