Files
agenciapsilmno/development/saas-docs/06-recibo-profissional-melissa.json
T
Leonardo 34412c6883 saas-docs: doc da Emissao de recibo profissional (Fase 4 #14)
Doc 06 cobrindo o quick path de emissao de recibo:
- Quando o botao aparece (AgendaEventoFinanceiroPanel com record
  status=paid)
- O que vem auto-preenchido (paciente, sessao, valor, forma pgto,
  terapeuta+registro formatado, clinica+CNPJ, data)
- Registro profissional generico — CRP/CRM/CRFa/CREFITO/CRESS/CRN/
  Outro (variavel terapeuta_registro auto-formata)
- Valor por extenso (helper valorExtenso.js, ate 999 milhoes)
- Onde fica salvo (download + aba Documentos categoria 'Recibo')
- Quick path emitirReciboParaSessao() vs flow manual de Gerar
- Notas dev: service, helper, mapping, migration do template,
  localizacao do botao

12 FAQs cobrindo casos comuns: emitir recibo de sessao paga, por
que botao nao aparece, valor por extenso correto, suporte multi-
conselho, onde salva, recibo avulso, CRP vazio, CNPJ formatado,
corrigir valor, enviar pra assinar, data sessao vs emissao,
reemitir.

categoria='Financeiro', pagina_path='/melissa/agenda', ordem=6.
SQL import em database-novo/tmp/import-doc-recibo-profissional.sql.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 19:31:55 -03:00

88 lines
13 KiB
JSON

{
"titulo": "Emissão de recibo profissional",
"conteudo": "<h2>Emissão de recibo profissional</h2>\n\n<p>Quando uma sessão é registrada como <strong>paga</strong>, o sistema oferece um botão <em>Emitir recibo</em> que gera um PDF profissional pré-preenchido com todos os dados do paciente, terapeuta, clínica e da sessão — sem precisar passar pelo fluxo \"Gerar a partir de template\" manual.</p>\n\n<h3>1. Quando o botão aparece</h3>\n<p>O botão <strong>Emitir recibo</strong> (outlined, ícone PDF) aparece no <em>painel financeiro do evento</em> (<code>AgendaEventoFinanceiroPanel</code>) — dentro do modal de uma sessão — somente quando:</p>\n<ul>\n <li>A sessão tem um <strong>financial_record vinculado</strong> (foi gerada cobrança via \"Receber\")</li>\n <li>O status do record é <strong><code>paid</code></strong> (pagamento já registrado)</li>\n</ul>\n<p>Em sessões de pacote (status='contrato'), sem cobrança gerada, pendente, ou cancelada — o botão não aparece. Use o fluxo manual de <em>Gerar</em> na aba Documentos pra emitir recibos de casos especiais.</p>\n\n<h3>2. O que o recibo traz preenchido automaticamente</h3>\n<ul>\n <li><strong>Paciente:</strong> nome, CPF, RG (do cadastro do paciente)</li>\n <li><strong>Sessão:</strong> data e hora, modalidade</li>\n <li><strong>Valor:</strong> número (R$ 150,00) <strong>e por extenso</strong> (\"cento e cinquenta reais\")</li>\n <li><strong>Forma de pagamento:</strong> PIX, dinheiro, cartão, maquininha, etc — vindo do financial_record</li>\n <li><strong>Terapeuta:</strong> nome completo + registro profissional formatado (\"CRP 12345/SP\")</li>\n <li><strong>Clínica:</strong> nome, endereço, telefone, CNPJ formatado</li>\n <li><strong>Data atual:</strong> em formato curto (22/05/2026) e por extenso (\"22 de maio de 2026\")</li>\n</ul>\n\n<h3>3. Registro profissional genérico</h3>\n<p>O sistema suporta <strong>qualquer conselho profissional</strong>, não só CRP. A formatação é automática a partir do que está cadastrado no <em>Perfil → Registro Profissional</em>:</p>\n<ul>\n <li><strong>CRP</strong> 12345/SP (psicologia)</li>\n <li><strong>CRM</strong> 67890/RJ (medicina)</li>\n <li><strong>CRFa</strong> 11111/MG (fonoaudiologia)</li>\n <li><strong>CREFITO</strong> 22222/SP (fisioterapia)</li>\n <li><strong>CRESS</strong> 33333/RS (serviço social)</li>\n <li><strong>CRN</strong> 44444/SP (nutrição)</li>\n <li>Ou personalizado via tipo \"Outro\" + nome livre</li>\n</ul>\n<p>No template, a variável <code>{{terapeuta_registro}}</code> sempre traz o registro formatado, independente do conselho. Tem também variáveis individuais: <code>{{terapeuta_registro_tipo}}</code>, <code>{{terapeuta_registro_numero}}</code>, <code>{{terapeuta_registro_uf}}</code> pra uso fino.</p>\n\n<h3>4. Valor por extenso</h3>\n<p>Helper interno (<code>src/utils/valorExtenso.js</code>) converte número pra extenso em pt-BR completo até 999 milhões:</p>\n\n<div style=\"background: rgba(99,102,241,0.06); border: 1px solid rgba(99,102,241,0.2); border-radius: 10px; padding: 12px 14px; margin: 12px 0; font-family: 'IBM Plex Mono', monospace; font-size: 0.82rem;\">\n <strong>R$ 1,00</strong> → \"um real\"<br>\n <strong>R$ 150,00</strong> → \"cento e cinquenta reais\"<br>\n <strong>R$ 1.234,56</strong> → \"mil duzentos e trinta e quatro reais e cinquenta e seis centavos\"<br>\n <strong>R$ 0,50</strong> → \"cinquenta centavos\"<br>\n <strong>R$ 1.000.000,00</strong> → \"um milhão de reais\"\n</div>\n\n<p>Pluralização correta (real/reais, centavo/centavos), tratamento de centavos isolados (\"R$ 0,X\"), milhar com \"mil\" sem \"um\", milhão/milhões.</p>\n\n<h3>5. Onde o recibo é salvo</h3>\n<p>Ao clicar <strong>Emitir recibo</strong>:</p>\n<ol>\n <li>Sistema busca o template global <code>recibo_pagamento</code></li>\n <li>Carrega todas as variáveis (auto-fill descrito acima)</li>\n <li>Gera o PDF</li>\n <li>Faz upload pro bucket <code>generated-docs</code></li>\n <li>Insere registros em <code>documents</code> e <code>document_generated</code> (com linkage)</li>\n <li>Dispara <strong>download</strong> automático no browser</li>\n <li>Toast \"Recibo emitido — PDF baixado e salvo nos documentos do paciente\"</li>\n</ol>\n<p>O recibo aparece na aba <em>Documentos</em> do prontuário do paciente sob a categoria <strong>Recibo</strong>. Pode ser <a href=\"#\">editado in-place</a>, <a href=\"#\">compartilhado</a> ou <a href=\"#\">assinado eletronicamente</a> normalmente.</p>\n\n<h3>6. Quick path vs flow manual</h3>\n<p>São <strong>2 caminhos</strong> pra gerar o mesmo PDF:</p>\n<ul>\n <li><strong>Quick path</strong> (este): clica num botão e pronto. Recibo da sessão paga, valor exato do record, forma de pagamento idem.</li>\n <li><strong>Flow manual</strong>: aba Documentos → Gerar → escolhe template \"Recibo de Pagamento\" → edita valores manualmente → preview → salva.</li>\n</ul>\n<p>Use o quick path no fluxo normal. Use o manual quando precisar emitir recibo de algo que não está vinculado a sessão (consulta avulsa) ou quando precisar ajustar valores.</p>\n\n<h3>⚠️ Notas pro desenvolvedor</h3>\n<ul>\n <li><strong>Service:</strong> <code>emitirReciboParaSessao(eventoId, { patientId?, valor?, formaPagamento? })</code> em <code>DocumentGenerate.service.js</code>. Quick path one-call: busca template, carrega vars, gera, salva, download.</li>\n <li><strong>Helper extenso:</strong> <code>src/utils/valorExtenso.js</code> — pt-BR até 999 milhões. Atenção: zero retorna \"zero reais\", inputs inválidos retornam string vazia.</li>\n <li><strong>Mapeamento:</strong> <code>TEMPLATE_TYPE_TO_DOC_TYPE['recibo_pagamento'] = 'recibo'</code> garante que o doc gerado vai pra categoria certa na sidebar.</li>\n <li><strong>Template:</strong> migration <code>20260521000008_recibo_uses_terapeuta_registro.sql</code> trocou <code>\"Psicólogo(a) - CRP {{terapeuta_crp}}\"</code> por <code>{{terapeuta_registro}}</code> no template global. Universal pra qualquer conselho.</li>\n <li><strong>Botão UI:</strong> <code>AgendaEventoFinanceiroPanel.vue</code> linha ~320, branch <code>v-else-if=\"record.status === 'paid'\"</code>.</li>\n</ul>",
"categoria": "Financeiro",
"exibir_no_faq": true,
"tipo_acesso": "usuario",
"pagina_path": "/melissa/agenda",
"ordem": 6,
"ativo": true,
"medias": [
{ "tipo": "imagem", "url": "" }
],
"_faq_itens": [
{
"pergunta": "Como emito um recibo pra uma sessão que recebi o pagamento?",
"resposta": "Abra a sessão no calendário da agenda → no painel <em>Cobrança</em> dentro do modal, com o pagamento já registrado (status <strong>Pago</strong>), aparece o botão <strong>Emitir recibo</strong>. Clique uma vez. O sistema gera o PDF, salva nos documentos do paciente e dispara o download automaticamente. Toast confirma a operação.",
"ordem": 0,
"ativo": true
},
{
"pergunta": "Por que o botão \"Emitir recibo\" não aparece na minha sessão?",
"resposta": "O botão só aparece quando o financial_record da sessão tem <strong>status = pago</strong>. Possíveis motivos: (1) você não gerou cobrança ainda — clique em <em>Receber</em> pra registrar o pagamento primeiro; (2) cobrança está pendente — registre o recebimento; (3) sessão é de pacote (status='contrato') — pacotes não emitem recibo por sessão, use o fluxo manual em <em>Documentos → Gerar</em>; (4) cobrança foi cancelada — gere uma nova.",
"ordem": 1,
"ativo": true
},
{
"pergunta": "O valor por extenso vem certo (\"cento e cinquenta reais\")?",
"resposta": "Sim, com gramática pt-BR correta até 999 milhões. Exemplos: R$ 1,00 → \"um real\", R$ 150,00 → \"cento e cinquenta reais\", R$ 1.234,56 → \"mil duzentos e trinta e quatro reais e cinquenta e seis centavos\", R$ 0,50 → \"cinquenta centavos\". Pluralização real/reais e centavo/centavos automática.",
"ordem": 2,
"ativo": true
},
{
"pergunta": "O recibo funciona pra qualquer conselho profissional (CRM, CRFa…)?",
"resposta": "<strong>Sim.</strong> O template usa a variável <code>{{terapeuta_registro}}</code> que se adapta ao tipo de registro cadastrado no seu Perfil. Funciona pra CRP (psicologia), CRM (medicina), CRFa (fonoaudiologia), CREFITO (fisioterapia), CRESS (serviço social), CRN (nutrição), e qualquer outro conselho — incluindo \"Outro\" com nome livre. A formatação genérica fica tipo \"CRP 12345/SP\", \"CRM 67890/RJ\", etc.",
"ordem": 3,
"ativo": true
},
{
"pergunta": "Onde o recibo fica salvo depois de emitido?",
"resposta": "Em <strong>2 lugares</strong>: (1) baixado automaticamente no seu computador via download do navegador; (2) salvo na aba <em>Documentos</em> do prontuário do paciente, na categoria <strong>Recibo</strong> da sidebar. Daí você pode reabrir, compartilhar com o paciente, enviar pra assinar, ou editar in-place se precisar ajustar.",
"ordem": 4,
"ativo": true
},
{
"pergunta": "Posso emitir recibo de algo que não é sessão (consulta avulsa, pacote)?",
"resposta": "Sim, mas pelo <strong>fluxo manual</strong>: vá na aba <em>Documentos</em> do paciente → botão <strong>Gerar</strong> → escolha o template <em>\"Recibo de Pagamento\"</em>. Você preenche os valores na mão (valor, forma de pagamento, descrição) já que não vem de uma sessão específica. O resto (CRP, paciente, clínica) auto-completa igual.",
"ordem": 5,
"ativo": true
},
{
"pergunta": "Meu CRP/CRM aparece vazio no recibo, o que fazer?",
"resposta": "Cadastre seu registro profissional em <strong>Perfil → Registro Profissional</strong>. Selecione o tipo (CRP/CRM/CRFa/…/Outro), número e UF. Salve. Próximos recibos gerados já trazem formatado. Pra atualizar recibos antigos, abra o doc na aba Documentos do paciente e use <em>Editar</em> — o sistema vai puxar o registro atualizado.",
"ordem": 6,
"ativo": true
},
{
"pergunta": "O CNPJ da clínica aparece formatado no recibo?",
"resposta": "Sim, automaticamente. Em <strong>Configurações → Negócio (Tenant)</strong>, cadastre o CPF ou CNPJ no campo unificado. O sistema detecta pela quantidade de dígitos: 11 dígitos formata como CPF (XXX.XXX.XXX-XX), 14 como CNPJ (XX.XXX.XXX/XXXX-XX). O recibo usa a variável <code>{{clinica_cnpj}}</code> que sai formatada.",
"ordem": 7,
"ativo": true
},
{
"pergunta": "Errei o valor do recibo, posso corrigir sem gerar outro?",
"resposta": "Sim. Vá na aba <em>Documentos</em> do paciente → abra o recibo no preview → clique em <strong>Editar</strong>. O dialog abre em modo edição com o template do recibo já carregado e os valores anteriores preenchidos. Ajuste o que precisa → <em>Substituir documento</em>. O PDF é regenerado e substitui o anterior, mantendo o mesmo ID e audit trail.",
"ordem": 8,
"ativo": true
},
{
"pergunta": "Posso enviar o recibo pro paciente assinar?",
"resposta": "Sim. Recibos são documentos como qualquer outro — abra na aba Documentos → preview → botão <strong>Assinar</strong> na sidebar. Gera link público temporário, paciente abre sem login, marca aceite LGPD, assina. Útil pra recibos de valores altos ou contratos de pacote onde você quer registro formal da concordância.",
"ordem": 9,
"ativo": true
},
{
"pergunta": "Recibo de uma sessão antiga vai com a data de hoje ou a data da sessão?",
"resposta": "<strong>As duas</strong>. O recibo traz a <em>data da sessão</em> (\"Referente ao atendimento de 15/03/2026\") e a <em>data atual de emissão</em> (\"São Carlos, 22 de maio de 2026\") no rodapé. Importante pra fiscal — a data de emissão indica quando o documento foi formalmente criado, mesmo que a sessão tenha sido meses atrás.",
"ordem": 10,
"ativo": true
},
{
"pergunta": "Posso reemitir um recibo que já foi emitido pra mesma sessão?",
"resposta": "Sim, mas com cuidado. Clicar em <strong>Emitir recibo</strong> de novo gera um <strong>novo PDF</strong> e salva como novo documento na aba — você fica com 2 recibos da mesma sessão. Pra apenas atualizar (sem duplicar), edite o existente em <em>Documentos → preview → Editar</em>. Se duplicar por engano, exclua o antigo (soft-delete preserva por 5 anos no Lixo).",
"ordem": 11,
"ativo": true
}
]
}