diff --git a/database-novo/tmp/import-doc-recibo-profissional.sql b/database-novo/tmp/import-doc-recibo-profissional.sql new file mode 100644 index 0000000..3d86c76 --- /dev/null +++ b/database-novo/tmp/import-doc-recibo-profissional.sql @@ -0,0 +1,143 @@ +-- Importacao da doc Emissao de recibo profissional (Fase 4 #14) +-- Gerado a partir de development/saas-docs/06-recibo-profissional-melissa.json +BEGIN; + +DO $IMPORT$ +DECLARE + v_doc_id uuid; +BEGIN + INSERT INTO public.saas_docs ( + titulo, conteudo, categoria, exibir_no_faq, tipo_acesso, + pagina_path, ordem, ativo, medias + ) VALUES ( + 'Emissão de recibo profissional', + $HTML$

Emissão de recibo profissional

+ +

Quando uma sessão é registrada como paga, o sistema oferece um botão Emitir recibo 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.

+ +

1. Quando o botão aparece

+

O botão Emitir recibo (outlined, ícone PDF) aparece no painel financeiro do evento (AgendaEventoFinanceiroPanel) — dentro do modal de uma sessão — somente quando:

+ +

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 Gerar na aba Documentos pra emitir recibos de casos especiais.

+ +

2. O que o recibo traz preenchido automaticamente

+ + +

3. Registro profissional genérico

+

O sistema suporta qualquer conselho profissional, não só CRP. A formatação é automática a partir do que está cadastrado no Perfil → Registro Profissional:

+ +

No template, a variável {{terapeuta_registro}} sempre traz o registro formatado, independente do conselho. Tem também variáveis individuais: {{terapeuta_registro_tipo}}, {{terapeuta_registro_numero}}, {{terapeuta_registro_uf}} pra uso fino.

+ +

4. Valor por extenso

+

Helper interno (src/utils/valorExtenso.js) converte número pra extenso em pt-BR completo até 999 milhões:

+ +
+ 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"
+ R$ 1.000.000,00 → "um milhão de reais" +
+ +

Pluralização correta (real/reais, centavo/centavos), tratamento de centavos isolados ("R$ 0,X"), milhar com "mil" sem "um", milhão/milhões.

+ +

5. Onde o recibo é salvo

+

Ao clicar Emitir recibo:

+
    +
  1. Sistema busca o template global recibo_pagamento
  2. +
  3. Carrega todas as variáveis (auto-fill descrito acima)
  4. +
  5. Gera o PDF
  6. +
  7. Faz upload pro bucket generated-docs
  8. +
  9. Insere registros em documents e document_generated (com linkage)
  10. +
  11. Dispara download automático no browser
  12. +
  13. Toast "Recibo emitido — PDF baixado e salvo nos documentos do paciente"
  14. +
+

O recibo aparece na aba Documentos do prontuário do paciente sob a categoria Recibo. Pode ser editado in-place, compartilhado ou assinado eletronicamente normalmente.

+ +

6. Quick path vs flow manual

+

São 2 caminhos pra gerar o mesmo PDF:

+ +

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.

+ +

⚠️ Notas pro desenvolvedor

+$HTML$, + 'Financeiro', + true, + 'usuario', + '/melissa/agenda', + 6, + true, + '[{"tipo": "imagem", "url": ""}]'::jsonb + ) + RETURNING id INTO v_doc_id; + + INSERT INTO public.saas_faq_itens (doc_id, pergunta, resposta, ordem, ativo) VALUES + (v_doc_id, 'Como emito um recibo pra uma sessão que recebi o pagamento?', + $FAQ$Abra a sessão no calendário da agenda → no painel Cobrança dentro do modal, com o pagamento já registrado (status Pago), aparece o botão Emitir recibo. Clique uma vez. O sistema gera o PDF, salva nos documentos do paciente e dispara o download automaticamente. Toast confirma a operação.$FAQ$, 0, true), + + (v_doc_id, 'Por que o botão "Emitir recibo" não aparece na minha sessão?', + $FAQ$O botão só aparece quando o financial_record da sessão tem status = pago. Possíveis motivos: (1) você não gerou cobrança ainda — clique em Receber 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 Documentos → Gerar; (4) cobrança foi cancelada — gere uma nova.$FAQ$, 1, true), + + (v_doc_id, 'O valor por extenso vem certo ("cento e cinquenta reais")?', + $FAQ$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.$FAQ$, 2, true), + + (v_doc_id, 'O recibo funciona pra qualquer conselho profissional (CRM, CRFa…)?', + $FAQ$Sim. O template usa a variável {{terapeuta_registro}} 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.$FAQ$, 3, true), + + (v_doc_id, 'Onde o recibo fica salvo depois de emitido?', + $FAQ$Em 2 lugares: (1) baixado automaticamente no seu computador via download do navegador; (2) salvo na aba Documentos do prontuário do paciente, na categoria Recibo da sidebar. Daí você pode reabrir, compartilhar com o paciente, enviar pra assinar, ou editar in-place se precisar ajustar.$FAQ$, 4, true), + + (v_doc_id, 'Posso emitir recibo de algo que não é sessão (consulta avulsa, pacote)?', + $FAQ$Sim, mas pelo fluxo manual: vá na aba Documentos do paciente → botão Gerar → escolha o template "Recibo de Pagamento". 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.$FAQ$, 5, true), + + (v_doc_id, 'Meu CRP/CRM aparece vazio no recibo, o que fazer?', + $FAQ$Cadastre seu registro profissional em Perfil → Registro Profissional. 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 Editar — o sistema vai puxar o registro atualizado.$FAQ$, 6, true), + + (v_doc_id, 'O CNPJ da clínica aparece formatado no recibo?', + $FAQ$Sim, automaticamente. Em Configurações → Negócio (Tenant), 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 {{clinica_cnpj}} que sai formatada.$FAQ$, 7, true), + + (v_doc_id, 'Errei o valor do recibo, posso corrigir sem gerar outro?', + $FAQ$Sim. Vá na aba Documentos do paciente → abra o recibo no preview → clique em Editar. O dialog abre em modo edição com o template do recibo já carregado e os valores anteriores preenchidos. Ajuste o que precisa → Substituir documento. O PDF é regenerado e substitui o anterior, mantendo o mesmo ID e audit trail.$FAQ$, 8, true), + + (v_doc_id, 'Posso enviar o recibo pro paciente assinar?', + $FAQ$Sim. Recibos são documentos como qualquer outro — abra na aba Documentos → preview → botão Assinar 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.$FAQ$, 9, true), + + (v_doc_id, 'Recibo de uma sessão antiga vai com a data de hoje ou a data da sessão?', + $FAQ$As duas. O recibo traz a data da sessão ("Referente ao atendimento de 15/03/2026") e a data atual de emissão ("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.$FAQ$, 10, true), + + (v_doc_id, 'Posso reemitir um recibo que já foi emitido pra mesma sessão?', + $FAQ$Sim, mas com cuidado. Clicar em Emitir recibo de novo gera um novo PDF 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 Documentos → preview → Editar. Se duplicar por engano, exclua o antigo (soft-delete preserva por 5 anos no Lixo).$FAQ$, 11, true); + + RAISE NOTICE 'Doc criada: id=%, faq_itens=12', v_doc_id; +END; +$IMPORT$; + +COMMIT; diff --git a/development/saas-docs/06-recibo-profissional-melissa.json b/development/saas-docs/06-recibo-profissional-melissa.json new file mode 100644 index 0000000..adff310 --- /dev/null +++ b/development/saas-docs/06-recibo-profissional-melissa.json @@ -0,0 +1,87 @@ +{ + "titulo": "Emissão de recibo profissional", + "conteudo": "

Emissão de recibo profissional

\n\n

Quando uma sessão é registrada como paga, o sistema oferece um botão Emitir recibo 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.

\n\n

1. Quando o botão aparece

\n

O botão Emitir recibo (outlined, ícone PDF) aparece no painel financeiro do evento (AgendaEventoFinanceiroPanel) — dentro do modal de uma sessão — somente quando:

\n\n

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 Gerar na aba Documentos pra emitir recibos de casos especiais.

\n\n

2. O que o recibo traz preenchido automaticamente

\n\n\n

3. Registro profissional genérico

\n

O sistema suporta qualquer conselho profissional, não só CRP. A formatação é automática a partir do que está cadastrado no Perfil → Registro Profissional:

\n\n

No template, a variável {{terapeuta_registro}} sempre traz o registro formatado, independente do conselho. Tem também variáveis individuais: {{terapeuta_registro_tipo}}, {{terapeuta_registro_numero}}, {{terapeuta_registro_uf}} pra uso fino.

\n\n

4. Valor por extenso

\n

Helper interno (src/utils/valorExtenso.js) converte número pra extenso em pt-BR completo até 999 milhões:

\n\n
\n R$ 1,00 → \"um real\"
\n R$ 150,00 → \"cento e cinquenta reais\"
\n R$ 1.234,56 → \"mil duzentos e trinta e quatro reais e cinquenta e seis centavos\"
\n R$ 0,50 → \"cinquenta centavos\"
\n R$ 1.000.000,00 → \"um milhão de reais\"\n
\n\n

Pluralização correta (real/reais, centavo/centavos), tratamento de centavos isolados (\"R$ 0,X\"), milhar com \"mil\" sem \"um\", milhão/milhões.

\n\n

5. Onde o recibo é salvo

\n

Ao clicar Emitir recibo:

\n
    \n
  1. Sistema busca o template global recibo_pagamento
  2. \n
  3. Carrega todas as variáveis (auto-fill descrito acima)
  4. \n
  5. Gera o PDF
  6. \n
  7. Faz upload pro bucket generated-docs
  8. \n
  9. Insere registros em documents e document_generated (com linkage)
  10. \n
  11. Dispara download automático no browser
  12. \n
  13. Toast \"Recibo emitido — PDF baixado e salvo nos documentos do paciente\"
  14. \n
\n

O recibo aparece na aba Documentos do prontuário do paciente sob a categoria Recibo. Pode ser editado in-place, compartilhado ou assinado eletronicamente normalmente.

\n\n

6. Quick path vs flow manual

\n

São 2 caminhos pra gerar o mesmo PDF:

\n\n

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.

\n\n

⚠️ Notas pro desenvolvedor

\n", + "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 Cobrança dentro do modal, com o pagamento já registrado (status Pago), aparece o botão Emitir recibo. 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 status = pago. Possíveis motivos: (1) você não gerou cobrança ainda — clique em Receber 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 Documentos → Gerar; (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": "Sim. O template usa a variável {{terapeuta_registro}} 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 2 lugares: (1) baixado automaticamente no seu computador via download do navegador; (2) salvo na aba Documentos do prontuário do paciente, na categoria Recibo 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 fluxo manual: vá na aba Documentos do paciente → botão Gerar → escolha o template \"Recibo de Pagamento\". 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 Perfil → Registro Profissional. 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 Editar — 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 Configurações → Negócio (Tenant), 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 {{clinica_cnpj}} que sai formatada.", + "ordem": 7, + "ativo": true + }, + { + "pergunta": "Errei o valor do recibo, posso corrigir sem gerar outro?", + "resposta": "Sim. Vá na aba Documentos do paciente → abra o recibo no preview → clique em Editar. O dialog abre em modo edição com o template do recibo já carregado e os valores anteriores preenchidos. Ajuste o que precisa → Substituir documento. 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 Assinar 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": "As duas. O recibo traz a data da sessão (\"Referente ao atendimento de 15/03/2026\") e a data atual de emissão (\"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 Emitir recibo de novo gera um novo PDF 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 Documentos → preview → Editar. Se duplicar por engano, exclua o antigo (soft-delete preserva por 5 anos no Lixo).", + "ordem": 11, + "ativo": true + } + ] +}