Detalle del presupuesto
Vista completa de un presupuesto: cabecera con datos del paciente, columna principal con las líneas y totales, y columna lateral con acciones, info y la tarjeta de cobros que aporta el módulo de pagos. Desde aquí se mueve el presupuesto por todo su flujo borrador → enviado → aceptado y se firma, factura o renegocia.
De un vistazo
- Layout en dos columnas. Izquierda: líneas del presupuesto con ítem del catálogo, diente, superficies, cantidad, descuento e IVA. Derecha (de arriba abajo): tarjeta de cobros (slot
budget.detail.sidebarrellenado porpayments), totales (subtotal, descuento, IVA, total), info (número, versión, validez, creador, plan asociado). - Estado del presupuesto — chip de color en la cabecera. Las acciones disponibles dependen del estado.
- Versionado. Cada renegociación crea una versión nueva enlazada con
parent_budget_id; el historial se ve desde Historial de versiones. - Firma y PDF. Un presupuesto aceptado guarda la firma (BudgetSignature) y un PDF firmado con su SHA-256 como sello anti-manipulación. Hay dos descargas: PDF sin firmar y PDF firmado.
- Crear factura. Si el presupuesto está aceptado y aún tiene ítems sin facturar, aparece el botón Crear factura que lleva a
/invoices/from-budget/{id}.
Editar líneas
Requiere
budget.writey que el presupuesto esté endraft.
- Pulsa Editar sobre la línea o Añadir ítem abajo de la tabla.
- Cambia ítem del catálogo, diente, superficies, cantidad, descuento o IVA. Los totales se recalculan al guardar.
- Al guardar se publica un
budget.updatedlógico interno (no evento aún), pero el invariante de totales se reescribe en el backend.
Enviar al paciente
Requiere
budget.write.
- Pulsa Enviar al paciente. El presupuesto pasa a
sent, se genera un código público y se envía el correo. - Se publica
budget.sentpara que módulos de comunicación puedan complementar el envío. - La barra lateral muestra entonces la tarjeta del enlace público con el código de verificación.
Aceptar o rechazar
Requiere
budget.writepara aceptar online,budget.accept_in_clinicpara aceptación firmada en tablet.
- Aceptar (online) — usado cuando el paciente acepta por el enlace público. La aceptación crea una
BudgetSignaturey un PDF firmado. Publicabudget.accepted. - Aceptar en clínica — botón solo visible con permiso. Abre el modal de firma en tablet (firma dibujada). Mismo resultado que la aceptación online.
- Rechazar — registra motivo y publica
budget.rejected.
Renegociar
Requiere
budget.renegotiate.
- Pulsa Renegociar. Crea una nueva versión enlazada con la actual; la antigua queda como histórica.
- Edita ítems y guarda. Publica
budget.renegotiated.
Reenviar (nueva versión de un presupuesto finalizado)
Requiere
budget.write. Solo visible con el presupuesto en estado rechazado, caducado o cancelado.
- Pulsa Reenviar. Se crea un borrador nuevo (versión +1) con las mismas líneas y un enlace público nuevo, y la pantalla navega a él.
- El plan de tratamiento vinculado pasa automáticamente a la nueva versión (evento
budget.superseded); su estado no cambia. - Edita el borrador si hace falta y envíalo al paciente. Si el plan estaba cerrado por rechazo del paciente y el paciente acepta esta nueva versión, el plan se reactiva solo a En curso.
Permisos
| Lo que ves / puedes hacer | Permiso |
|---|---|
| Ver detalle, líneas, historial de versiones, descargar PDF | budget.read |
| Editar líneas, enviar, aceptar online, rechazar, cancelar, duplicar, reenviar | budget.write |
| Aceptar firmando en clínica | budget.accept_in_clinic |
| Renegociar (crear nueva versión) | budget.renegotiate |
| Borrar | budget.admin |
Resolución de problemas
- No veo el botón Crear factura. El presupuesto no está aceptado (estado válido:
accepted), o ya hay una factura no cancelada, o todos los ítems se facturaron ya (invoiced_quantity == quantity). - No puedo editar líneas. El presupuesto ya no está en
draft. Para cambiar precios o cantidades de un presupuesto enviado/aceptado debes renegociar (requierebudget.renegotiate). - No aparece la tarjeta de cobros. El módulo
paymentsno está instalado. La columna lateral muestra solo totales e info. - El PDF firmado da 404. El presupuesto no está aceptado todavía. El PDF firmado solo existe a partir del estado
accepted. - Una acción ha fallado. El aviso de error muestra el motivo que devuelve el servidor, no un mensaje genérico. Los habituales son Cannot send empty budget (añade al menos una línea), Patient has no email address (rellénalo en la ficha del paciente, o desmarca Enviar por email y márcalo como entregado en mano) y Cannot send budget from status 'sent' (ya se había enviado — recarga la página).