agenda: pacientes arquivados/inativos visiveis e bloqueados no picker
AgendaEventDialogV2.filteredPatients agora mostra TODOS os pacientes (antes filtrava status='Ativo' silenciosamente), ordenados Ativo > Inativo > Arquivado. Items nao-Ativo vem com Tag colorida + disabled + tooltip explicativo — UX clara: o paciente aparece (user nao "perde" no search) mas nao da pra agendar. selectPaciente bloqueia non-Ativo (defesa em camadas: template ja marca disabled, mas se alguem chamar a funcao programaticamente por cache stale etc, a regra continua valendo). Copia status pro form pra canSave aplicar getPatientAgendaPermissions corretamente. 3 specs novas em useAgendaEventPickerBilling.spec cobrem o bloqueio + copia do status. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -286,9 +286,18 @@ export function useAgendaEventPickerBilling({
|
||||
|
||||
function selectPaciente(p) {
|
||||
if (!p?.id) return;
|
||||
// Bloqueia clique em paciente arquivado/inativo — defesa em camadas:
|
||||
// o template do picker ja marca esses items como disabled, mas se
|
||||
// alguem chamar selectPaciente programaticamente (cache stale, etc),
|
||||
// a regra precisa valer.
|
||||
if (p.status && p.status !== 'Ativo') return;
|
||||
composer.form.value.paciente_id = p.id;
|
||||
composer.form.value.paciente_nome = p.nome || '';
|
||||
composer.form.value.paciente_avatar = p.avatar_url || '';
|
||||
// Sem isso, form.paciente_status fica '' e canSave nao consegue
|
||||
// aplicar getPatientAgendaPermissions — qualquer falha do filtro
|
||||
// acima vira sessao criavel com paciente fora do escopo.
|
||||
composer.form.value.paciente_status = p.status || '';
|
||||
pacientePickerOpen.value = false;
|
||||
}
|
||||
|
||||
@@ -296,6 +305,7 @@ export function useAgendaEventPickerBilling({
|
||||
composer.form.value.paciente_id = null;
|
||||
composer.form.value.paciente_nome = '';
|
||||
composer.form.value.paciente_avatar = '';
|
||||
composer.form.value.paciente_status = '';
|
||||
actions.samePatientConflict.value = null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user