diff --git a/src/features/agenda/components/AgendaStatusChangeConfirmDialog.vue b/src/features/agenda/components/AgendaStatusChangeConfirmDialog.vue index de3d31a..fd273ab 100644 --- a/src/features/agenda/components/AgendaStatusChangeConfirmDialog.vue +++ b/src/features/agenda/components/AgendaStatusChangeConfirmDialog.vue @@ -72,8 +72,16 @@ watch( consumeSaldo.value = !!props.regraExcecao?.default_consume_on_miss; applyFine.value = _calcInitialFineApply(); fineAmount.value = _calcInitialFineAmount(); - markPaid.value = true; - paymentMethod.value = 'pix'; + // Default markPaid: + // - Avulsa realizada (showRegistrarPagto): default false (manter pendente) + // - Pacote saldo realizada (showCobrancaPacote): default false (gerar pendente) + // Em ambos casos o user precisa selecionar ativamente "Sim, já recebi" + // pra registrar paid — evita marcar paid sem querer. + markPaid.value = false; + // paymentMethod default depende do contexto. Inicia 'pending' (que cai + // no select de "Como vai cobrar?" quando markPaid=false). Quando user + // troca pra "Sim, já recebi", precisa escolher PIX/Dinheiro/etc. + paymentMethod.value = 'pending'; generatePackageCharge.value = true; } ); @@ -138,12 +146,13 @@ const paymentMethodOptions = [ { value: 'deposito', label: 'Depósito' }, { value: 'cartao_maquininha', label: 'Cartão (maquininha)' } ]; -const paymentMethodOptionsCobranca = [ - { value: 'link', label: 'Enviar link de pagamento (Asaas)' }, - { value: 'pix', label: 'Já recebi — PIX' }, - { value: 'dinheiro', label: 'Já recebi — Dinheiro' }, - { value: 'deposito', label: 'Já recebi — Depósito' }, - { value: 'cartao_maquininha', label: 'Já recebi — Cartão (maquininha)' } +// Opções pra "Como vai cobrar?" quando markPaid=false (sessão pendente +// no pacote saldo). 'pending' = só registra como pendente, terapeuta +// cobra depois pelo /financeiro. 'link' = gera link Asaas e marca +// payment_method='asaas' no record (pós-confirm o handler updata). +const paymentMethodOptionsPending = [ + { value: 'pending', label: 'Apenas registrar como pendente' }, + { value: 'link', label: 'Enviar link de pagamento (Asaas)' } ]; const regraResumo = computed(() => { @@ -204,11 +213,16 @@ const fineDefaultReason = computed(() => { // ─── Actions ─────────────────────────────────────────────────────────── function onConfirm() { + // markPaid agora é considerado em DOIS contextos: + // 1. Avulsa pendente (showRegistrarPagto): paciente já pagou a cobrança? + // 2. Pacote saldo realizado (showCobrancaPacote): já recebeu o valor da sessão? + // Em ambos casos: markPaid=true → record vira paid; false → fica pending. + const considerMarkPaid = showRegistrarPagto.value || (showCobrancaPacote.value && generatePackageCharge.value); emit('confirm', { consumeSaldo: showSaldoBlock.value ? consumeSaldo.value : false, applyFine: showFineBlock.value ? applyFine.value : false, fineAmount: showFineBlock.value && applyFine.value ? Number(fineAmount.value) || 0 : 0, - markPaid: showRegistrarPagto.value ? markPaid.value : false, + markPaid: considerMarkPaid ? markPaid.value : false, paymentMethod: paymentMethod.value, generatePackageCharge: showCobrancaPacote.value ? generatePackageCharge.value : false }); @@ -338,11 +352,35 @@ function onCancel() { -
- + +
+ + +
+ +
+