Regras de Negócio
1) Modelos/Dados envolvidos
1.1 PedidoDistribuicaoDocumentosModel (ViewModel de pedido)
Arquivo: App.Domain/Models/Pedido/PedidoDistribuicaoDocumentosModel.cs
Campos diretamente ligados a certidão (região “Pedido Certidão”):
| Campo | Tipo | Onde está | Valores/Regra observada |
|---|---|---|---|
DescricaoQuesito | string | L115 | Texto livre (usado quando tipo “por quesito”) |
CertidaoEspecificaAto | bool | L116 | Flag booleana |
TipoDocumentoCertidao | int? | L117 | 1 = RTD - Publicidade; 2 = RTD - Conservação; 3 = RCPJ (vide TipoDocumentoCertidaoNome) |
TipoCertidao | int? | L118 | 1 = Inteiro Teor; 2 = Resumida; 3 = Por quesito; 4 = Negativa; 5 = Busca de nome (vide TipoCertidaoNome) |
TipoDocumentoCertidaoNome | string (get) | L121–140 | Mapeia TipoDocumentoCertidao: 1→“RTD - Publicidade”, 2→“RTD - Conservação”, 3→“RCPJ” |
TipoCertidaoNome | string (get) | L143–166 | Mapeia TipoCertidao: 1→“Inteiro Teor”, 2→“Resumida”, 3→“Por quesito”, 4→“Negativa”, 5→“Busca de nome” |
Endereco | Endereco | L168 | Objeto de endereço |
CartorioIndicadoId | int? | L196 | Vínculo com cartório indicado |
CertidaoImpressaAssinada | bool | L198 | Estado de conclusão (assinado/impressa) |
Trechos relevantes:
TipoDocumentoCertidaoNome→ mapeamento: L121–140.TipoCertidaoNome→ mapeamento: L143–166.
1.2 PedidoViewModel
Arquivo: App.Domain/Models/Pedido/PedidoViewModel.cs
Campo que reforça o estado de conclusão de certidão:
| Campo | Tipo | Onde está | Observação |
|---|---|---|---|
CertidaoImpressaAssinada | bool | L348 | Usado também na camada de apresentação |
1.3 ModeloCertidao (Entidade)
Arquivo: App.Domain/Entities/ModeloCertidao.cs
| Campo | Tipo | Onde está | Observação |
|---|---|---|---|
ModeloCertidaoId | int | L11 | PK |
PessoaId / Pessoa | int? / Pessoa | L12–13 | Dono/escopo do modelo (pode ser nulo para modelo público) |
Titulo | string | L14 | Nome do modelo |
Html | string | L15 | Template HTML do modelo |
QuillJson | string | L16 | Template em Quill JSON |
AlteradoUserId | string | L17 | Auditoria |
DataCadastro / DataAlterado | DateTime? | L18–19 | Auditoria |
Copia | bool | L20 | Indica se é cópia |
1.4 TipoCertidaoModel (Lista de tipos)
Arquivo: App.Domain/Models/TipoCertidaoModel.cs
- Método
ToList()instancia os tipos disponíveis: Inteiro Teor (1), Resumida (2), Por quesito (3), Negativa (4), Busca de nome (5).
2) UI/Views e campos do formulário
2.1 Formulário de pedido (KO/Knockout)
Arquivo: App.Web/Areas/ProtocoloComarca/Views/Pedidos/_pedidoCertidao.cshtml
Elementos relevantes:
- Título condicional de seção “Certidão”: L7
- “Tipo da Certidao” (UI) com radios RTD/RCPJ vinculados a
tipoCertidao(KO): L394–402
<label class="control-label col-sm-4">Tipo da Certidao</label> <!-- L394 -->
<input type="radio" name="tipoCertidao" id="tipoCertidaoRTD" value="RTD" data-bind="checked: $root.tipoCertidao"> RTD <!-- L398 -->
<input type="radio" name="tipoCertidao" id="tipoCertidaoRCPJ" value="RCPJ" data-bind="checked: $root.tipoCertidao"> RCPJ <!-- L402 -->
Observação: o campo
tipoCertidaoda UI (RTD/RCPJ) não é o mesmo queTipoCertidao(1..5 Inteiro Teor/Resumida/…) noPedidoDistribuicaoDocumentosModel.
2.2 Modal de seleção/edição de modelo
Arquivo: App.Web/Areas/ProtocoloComarca/Views/Pedidos/_pedidoCertidaoModal.cshtml
- Título: “Modelo de Certidão”: L4–5
- Lista e seleção (
ModeloCertidaoIdviadata-id): L17–21 - Editor com
#editorHtmlModeloe campos de metadados do modelo: L52–162
2.3 Detalhes do pedido (exibiç ão)
Arquivo: App.Web/Areas/ProtocoloComarca/Views/Pedidos/Detalhes.cshtml
- Exibição do Tipo do documento (derivado de
TipoDocumentoCertidaoNome): L117 e L353 - Exibição de Tipo de certidão (derivado de
TipoCertidaoNome): L121 e L356
3) Regras/Validações observadas
Somente o que está explícito no código.
3.1 Mapeamentos de tipos (back-end)
-
Tipo do documento (serviço) —
RTD/RCPJ-
Model:
PedidoDistribuicaoDocumentosModel.TipoDocumentoCertidao→ mapeado para nome: L121–140- 1 → “RTD - Publicidade”
- 2 → “RTD - Conservação”
- 3 → “RCPJ”
-
-
Formato da certidão
-
Model:
PedidoDistribuicaoDocumentosModel.TipoCertidao→ nome: L143–166- 1 → “Inteiro Teor”, 2 → “Resumida”, 3 → “Por quesito”, 4 → “Negativa”, 5 → “Busca de nome”
-
Também refletido em
TipoCertidaoModel.ToList()(arquivo:App.Domain/Models/TipoCertidaoModel.cs, métodoToList()).
-
3.2 Persistência/Metadados do “Tipo” (RTD vs RCPJ)
Arquivo: App.Business/Services/PedidoService.cs
Durante a criação do pedido de Distribuição de Documentos, o serviço grava um metadado “Tipo” com valor "RCPJ" ou "RTD" de acordo com condições:
-
Snippet (linhas aproximadas): L3383–3400
-
Quando certas condições (ligadas a
ServicoEnum.AutenticacaoLivros,TipoDocumento,TipoDocumentoCertidao) se verificam, grava:PedidoMetadadaEnum.Tipo = "RCPJ"(L3392)- do contrário, grava
"RTD"(L3396 e L3400)
-
A filtragem por tipo também aparece em consultas do repositório: Arquivo:
App.DataAccess/Repositories/PedidoRepository.cs— L2648–2695 Trechos comquery += ... (v.Tipo='RTD' ...)e... (v.Tipo='RCPJ' ...)mostram que as consultas diferenciam pedidos por esse metadado persistido.
3.3 Estados de conclusão: Certidão impressa e assinada
-
Model/ViewModel:
PedidoDistribuicaoDocumentosModel.CertidaoImpressaAssinada(L198)PedidoViewModel.CertidaoImpressaAssinada(L348)
-
Frontend (Knockout): Arquivo:
App.Web/Areas/ProtocoloComarca/Scripts/Pedidos/detalhes.js- Observable:
self.certidaoImpressaAssinada = ko.observable();(L74) - Validação de envio: bloqueia envio se cartório não marcar a certidão como impressa/assinada (toastr): L2781–2785
- Envio ao back-end: POST para
api/pedido/entregacom{ Id, CodigoRastreio, CertidaoImpressaAssinada }: L2791–2803
- Observable:
Nota de rastreabilidade: o JS chama
api/pedido/entrega(detalhes.js L2799). NoApp.Web/Controllers/API/PedidoController.csmapeamos vários endpoints comRoutePrefix("api/pedido"), comoentregaeletronica(L52), mas não localizamos[Route("entrega")]nesse arquivo. A rota “entrega” pode estar em outro controller API (não encontrado pela busca) ou ter sido renomeada. Fato verificado: chamada existe no JS; endpoint não localizado (sinalizar para ajuste/validação).
3.4 Seleção/Criação de Modelo de Certidão
-
API:
App.Web/Controllers/API/ModeloCertidaoController.cs-
[RoutePrefix("api/modelocertidao")](L21) -
Endpoints:
- GET
api/modelocertidao/get(L31) - GET
api/modelocertidao/list(L44) - POST
api/modelocertidao/post(L57) - POST
api/modelocertidao/delete(L72)
- GET
-
-
Persistência/uso do modelo durante geração: Arquivo:
App.Business/Services/PedidoService.cs- Resolução e gravação de
ModeloCertidao(criar/atualizar/clonar) durante fluxo de geração de folha de registro: L6995–7025 - Ex.: obtém/atualiza via
modeloCertidaoRepository(L6995–7017; L7022–7025).
- Resolução e gravação de
-
UI: modal permite selecionar existente ou criar novo (
_pedidoCertidaoModal.cshtmlL17–21 e L52–162).
3.5 Validação externa (configurada)
-
Configuração:
App.Web/appSettings.sample.config- Chave
CDT_wsCertidaoUrl→"…/ValidarCertidao"(L115) - Fato: existe URL de validação de certidão; a chamada concreta (handler/código de client HTTP) não está neste arquivo — apenas a config.
- Chave
4) Regras derivadas do Frontend (observadas no JS/Views)
São comportamentos explícitos na UI/JS; não extrapolo além do que aparece.
-
Envio de pedido (payload parcial mostrado) Arquivo:
App.Web/Areas/ProtocoloComarca/Scripts/Pedidos/detalhes.js- O JSON de envio inclui
TipoCertidao: self.tipoCertidao()(ondeself.tipoCertidaovem dos radios RTD/RCPJ do formulário): L762–767 - Isso confirma que o “Tipo da Certidão (UI)” alimenta o back-end com “RTD” ou “RCPJ”.
- O JSON de envio inclui
-
Bloqueio de entrega sem assinatura
- Mensagem
toastr.warningquandocertidaoImpressaAssinadanão marcada (cartório): L2781–2785.
- Mensagem
5) Tabelas-resumo (valores aceitos no código)
5.1 Tipo do documento (serviço) — PedidoDistribuicaoDocumentosModel.TipoDocumentoCertidao
Fonte: PedidoDistribuicaoDocumentosModel.cs L121–140
| Valor | Nome |
|---|---|
| 1 | RTD - Publicidade |
| 2 | RTD - Conservação |
| 3 | RCPJ |
5.2 Formato da certidão — PedidoDistribuicaoDocumentosModel.TipoCertidao
Fontes: PedidoDistribuicaoDocumentosModel.cs L143–166 e TipoCertidaoModel.cs (ToList())
| Valor | Nome |
|---|---|
| 1 | Inteiro Teor |
| 2 | Resumida |
| 3 | Por quesito |
| 4 | Negativa |
| 5 | Busca de nome |
5.3 Classificação de serviço (metadado persistido) — "RTD"/"RCPJ"
Fontes: PedidoService.cs ~L3383–3400 (gravação do metadado "Tipo"), PedidoRepository.cs L2648–2695 (filtros por v.Tipo)
| Chave | Onde aparece | Observação |
|---|---|---|
PedidoMetadadaEnum.Tipo = "RCPJ" | PedidoService.cs L3392 | Condições específicas (envolvendo TipoDocumento, TipoDocumentoCertidao, ServicoEnum.AutenticacaoLivros) |
PedidoMetadadaEnum.Tipo = "RTD" | PedidoService.cs L3396 e L3400 | Demais cenários |
Filtros por v.Tipo='RTD'/'RCPJ' | PedidoRepository.cs L2648–2695 | Usado em consultas/pesquisas |
6) Encadeamento mínimo do fluxo
- Usuário escolhe classificação de serviço (UI: RTD/RCPJ) →
_pedidoCertidao.cshtmlL394–402 → enviado comoTipoCertidaono payload do JS (detalhes.js L762–767). - Back-end determina/persistirá metadado
"Tipo"como"RTD"ou"RCPJ"baseado nas regras dePedidoService(~L3383–3400) e usa isso em consultas (PedidoRepository.csL2648–2695). - Usuário (ou cartório) seleciona/edita Modelo de Certidão (UI modal e API
api/modelocertidao/*) — vide ModeloCertidaoController (rotas L31, L44, L57, L72). - Conclusão depende de
CertidaoImpressaAssinada(marcada pelo cartório em UI; bloqueio explícito no JS: L2781–2785; envio: L2791–2803). - Existe config de validação externa
CDT_wsCertidaoUrl(appSettings.sample.config L115); o código que consome essa chave não está no mesmo arquivo (apenas referência de URL).