Duplicar Presupuesto
Exportar contenido
Crea una copia de un presupuesto existente, útil para reutilizar plantillas o hacer versiones.
- Abre el presupuesto que deseas duplicar.
- Clic en el botón “Duplicar” (icono de Copy).
- El sistema crea un nuevo borrador con:
- Mismos datos del cliente
- Mismas líneas (descripción, cantidad, precio, IVA)
- Mismo descuento y retención
- Fecha de emisión: hoy
- Estado: Borrador
- Se abre automáticamente el formulario de edición del duplicado.
Diferencias con el original
Sección titulada «Diferencias con el original»| Campo | Original | Duplicado |
|---|---|---|
| Número | PRES-000042 | (sin asignar, es borrador) |
| Fecha emisión | 01/02/2026 | Fecha actual |
| Estado | Aceptado | Borrador |
| Válido hasta | 28/02/2026 | (vacío, puedes configurarlo) |
¿Cómo sé que lo hice bien?
Sección titulada «¿Cómo sé que lo hice bien?»- Se abre el formulario del nuevo presupuesto.
- Toast de confirmación: “Presupuesto duplicado”.
- El nuevo presupuesto aparece en la lista con estado “Borrador”.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa | Solución |
|---|---|---|
| ”Error al duplicar” | Cliente eliminado | Verifica que el cliente existe |
| ”No se pudo cargar el presupuesto” | ID inválido | Verifica que el presupuesto existe |
Información técnica
Proceso de duplicación:
- Obtener presupuesto original con líneas
- Crear nuevo registro en
quotesconstatus= ‘draft’,issue_date= NOW(), sin número asignado - Crear nuevos registros en
quote_itemscopiando todas las líneas
Queries de diagnóstico:
-- Verificar integridad del duplicadoSELECT q.id, COUNT(qi.id) as lineas_count, SUM(qi.line_total) as suma_lineas, q.subtotal, CASE WHEN COUNT(qi.id) = 0 THEN 'ERROR: Sin líneas' WHEN ABS(SUM(qi.line_total) - q.subtotal) > 0.01 THEN 'ERROR: Descuadre' ELSE 'OK' END as estadoFROM quotes qLEFT JOIN quote_items qi ON qi.quote_id = q.idWHERE q.id = '<new_quote_id>'GROUP BY q.id, q.subtotal;