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.
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 | 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.