diff --git a/src/features/agenda/components/AgendaEventDialog.vue b/src/features/agenda/components/AgendaEventDialog.vue index 3d4dbbf..d937f6b 100644 --- a/src/features/agenda/components/AgendaEventDialog.vue +++ b/src/features/agenda/components/AgendaEventDialog.vue @@ -193,13 +193,27 @@ const { resetForm } = _composer; -// Lock de tipo: quando lockType=true (callsite no contexto de Sessao do -// paciente, ex: MelissaPaciente), pula o step 1 e vai direto pro form. -// Watch immediate cobre tanto open quanto re-open com novo eventRow. +// Lock de tipo: quando lockType=true (ex: MelissaPaciente), simula o +// click no card "Sessão" do step 1. Chama selectCommitment com o +// commitment native_key='session' — isso seta form.commitment_id + +// extra_fields + step.value=2. Sem isso, pular pro step 2 sem +// commitment_id deixaria isSessionEvent=false e esconderia jornada, +// billing (particular/convenio/gratuito) e frequencia. +// +// Re-roda quando commitmentOptions popula tarde (caso usual: dialog +// abre antes do tenant load terminar). Idempotente: so chama se ainda +// nao tem commitment_id ou step != 2. watch( - () => [props.lockType, props.modelValue], + [() => props.lockType, () => props.modelValue, () => props.commitmentOptions], ([locked, open]) => { - if (locked && open) step.value = 2; + if (!locked || !open) return; + const sessao = commitmentCards.value.find((c) => c.native_key === 'session'); + if (!sessao) return; + if (!form.value.commitment_id || form.value.commitment_id !== sessao.id) { + selectCommitment(sessao); + } else if (step.value !== 2) { + step.value = 2; + } }, { immediate: true } );