Pular para o conteúdo principal

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”):

CampoTipoOnde estáValores/Regra observada
DescricaoQuesitostringL115Texto livre (usado quando tipo “por quesito”)
CertidaoEspecificaAtoboolL116Flag booleana
TipoDocumentoCertidaoint?L1171 = RTD - Publicidade; 2 = RTD - Conservação; 3 = RCPJ (vide TipoDocumentoCertidaoNome)
TipoCertidaoint?L1181 = Inteiro Teor; 2 = Resumida; 3 = Por quesito; 4 = Negativa; 5 = Busca de nome (vide TipoCertidaoNome)
TipoDocumentoCertidaoNomestring (get)L121–140Mapeia TipoDocumentoCertidao: 1→“RTD - Publicidade”, 2→“RTD - Conservação”, 3→“RCPJ”
TipoCertidaoNomestring (get)L143–166Mapeia TipoCertidao: 1→“Inteiro Teor”, 2→“Resumida”, 3→“Por quesito”, 4→“Negativa”, 5→“Busca de nome”
EnderecoEnderecoL168Objeto de endereço
CartorioIndicadoIdint?L196Vínculo com cartório indicado
CertidaoImpressaAssinadaboolL198Estado 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:

CampoTipoOnde estáObservação
CertidaoImpressaAssinadaboolL348Usado também na camada de apresentação

1.3 ModeloCertidao (Entidade)

Arquivo: App.Domain/Entities/ModeloCertidao.cs

CampoTipoOnde estáObservação
ModeloCertidaoIdintL11PK
PessoaId / Pessoaint? / PessoaL12–13Dono/escopo do modelo (pode ser nulo para modelo público)
TitulostringL14Nome do modelo
HtmlstringL15Template HTML do modelo
QuillJsonstringL16Template em Quill JSON
AlteradoUserIdstringL17Auditoria
DataCadastro / DataAlteradoDateTime?L18–19Auditoria
CopiaboolL20Indica 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 tipoCertidao da UI (RTD/RCPJ) não é o mesmo que TipoCertidao (1..5 Inteiro Teor/Resumida/…) no PedidoDistribuicaoDocumentosModel.


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 (ModeloCertidaoId via data-id): L17–21
  • Editor com #editorHtmlModelo e 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étodo ToList()).

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.csL2648–2695 Trechos com query += ... (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/entrega com { Id, CodigoRastreio, CertidaoImpressaAssinada }: L2791–2803

Nota de rastreabilidade: o JS chama api/pedido/entrega (detalhes.js L2799). No App.Web/Controllers/API/PedidoController.cs mapeamos vários endpoints com RoutePrefix("api/pedido"), como entregaeletronica (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)
  • 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).
  • UI: modal permite selecionar existente ou criar novo (_pedidoCertidaoModal.cshtml L17–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.

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() (onde self.tipoCertidao vem 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”.
  • Bloqueio de entrega sem assinatura

    • Mensagem toastr.warning quando certidaoImpressaAssinada não marcada (cartório): L2781–2785.

5) Tabelas-resumo (valores aceitos no código)

5.1 Tipo do documento (serviço)PedidoDistribuicaoDocumentosModel.TipoDocumentoCertidao

Fonte: PedidoDistribuicaoDocumentosModel.cs L121–140

ValorNome
1RTD - Publicidade
2RTD - Conservação
3RCPJ

5.2 Formato da certidãoPedidoDistribuicaoDocumentosModel.TipoCertidao

Fontes: PedidoDistribuicaoDocumentosModel.cs L143–166 e TipoCertidaoModel.cs (ToList())

ValorNome
1Inteiro Teor
2Resumida
3Por quesito
4Negativa
5Busca 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)

ChaveOnde apareceObservação
PedidoMetadadaEnum.Tipo = "RCPJ"PedidoService.cs L3392Condições específicas (envolvendo TipoDocumento, TipoDocumentoCertidao, ServicoEnum.AutenticacaoLivros)
PedidoMetadadaEnum.Tipo = "RTD"PedidoService.cs L3396 e L3400Demais cenários
Filtros por v.Tipo='RTD'/'RCPJ'PedidoRepository.cs L2648–2695Usado em consultas/pesquisas

6) Encadeamento mínimo do fluxo

  1. Usuário escolhe classificação de serviço (UI: RTD/RCPJ) → _pedidoCertidao.cshtml L394–402 → enviado como TipoCertidao no payload do JS (detalhes.js L762–767).
  2. Back-end determina/persistirá metadado "Tipo" como "RTD" ou "RCPJ" baseado nas regras de PedidoService (~L3383–3400) e usa isso em consultas (PedidoRepository.cs L2648–2695).
  3. Usuário (ou cartório) seleciona/edita Modelo de Certidão (UI modal e API api/modelocertidao/*) — vide ModeloCertidaoController (rotas L31, L44, L57, L72).
  4. Conclusão depende de CertidaoImpressaAssinada (marcada pelo cartório em UI; bloqueio explícito no JS: L2781–2785; envio: L2791–2803).
  5. 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).