Crear Presupuesto
Exportar contenido
Crea un nuevo presupuesto o factura proforma con los datos del cliente, conceptos e importes.
- Clic en “Nuevo Presupuesto” o “Nueva Proforma” según la pestaña activa.
- Completa los campos de cabecera (ver tabla abajo).
- Clic en ”+ Añadir línea” — añade filas con: descripción, cantidad, precio, IVA.
- Revisa el resumen en el panel derecho — subtotal, IVA, retenciones y total.
- Clic en “Guardar Borrador” — se guarda sin enviar, puedes editarlo después.
Campos de cabecera
Sección titulada «Campos de cabecera»| Campo | Obligatorio | Descripción | Ejemplo |
|---|---|---|---|
| Cliente | Si | El cliente destinatario del presupuesto | Empresa ABC, S.L. |
| Serie | No | Serie de numeración (presupuestos o proformas) | PRES |
| Fecha de emisión | Si | Día del presupuesto (por defecto: hoy) | 15/02/2026 |
| Válido hasta | No | Fecha límite de validez del presupuesto | 28/02/2026 |
| Descuento general | No | Porcentaje sobre el subtotal | 10% |
| Aplicar retención | No | Marca si el cliente requiere IRPF | — |
| % Retención | Condicional | Aparece si marcas retención | 15% |
| Observaciones | No | Texto visible en el PDF | Condiciones especiales |
| Notas internas | No | Texto privado no visible en PDF | Para seguimiento interno |
Campos por línea
Sección titulada «Campos por línea»| Campo | Obligatorio | Regla | Ejemplo |
|---|---|---|---|
| Descripción | Si | Texto libre | Desarrollo web a medida |
| Cantidad | Si | Mínimo 0.01 | 1 |
| Precio unitario | Si | Sin IVA | 1500.00 |
| % Descuento | No | 0–100% | 5 |
| % IVA | Si | 21%, 10%, 4% o 0% | 21 |
Campos calculados
Sección titulada «Campos calculados»Subtotal = Suma de (cantidad x precio)Base imponible = Subtotal - Descuento generalIVA total = Suma del IVA de cada líneaRetención IRPF = Base x % retención (si activo)Total = Base + IVA - Retención¿Cómo sé que lo hice bien?
Sección titulada «¿Cómo sé que lo hice bien?»- El presupuesto aparece en la lista con estado “Borrador” (badge gris).
- Toast de confirmación: “Borrador guardado”.
- Puedes verlo y editarlo las veces que necesites.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa | Solución |
|---|---|---|
| ”Selecciona un cliente” | No elegiste cliente | Clic en “Cliente” y selecciona uno |
| ”Añade al menos un concepto” | Sin líneas de presupuesto | Clic en ”+ Añadir línea" |
| "Fecha de emisión requerida” | Campo vacío | Selecciona una fecha |
| ”Cantidad mínima: 0.01” | Pusiste 0 en cantidad | Cambia a un valor mayor que 0 |
| ”Descripción requerida” | Línea sin texto | Escribe la descripción del concepto |
Información técnica
Validaciones:
| Código | Regla |
|---|---|
| VAL-01 | customer_id NOT NULL |
| VAL-02 | quote_items count >= 1 |
| VAL-03 | quantity >= 0.01 |
| VAL-04 | unit_price >= 0 |
| VAL-05 | tax_rate 0–100 |
| VAL-06 | issue_date NOT NULL |
| VAL-07 | valid_until >= issue_date (si se proporciona) |
Tablas involucradas:
| Tabla | Columnas clave | FK |
|---|---|---|
quotes | id, business_id, customer_id, quote_number, proforma_number, status, is_proforma, valid_until, total_amount | customers, businesses, quote_series, proforma_sequences |
quote_items | id, quote_id, description, quantity, unit_price, tax_rate, line_total | quotes |
quote_series | id, business_id, prefix, current_number, padding | businesses |
proforma_sequences | id, business_id, prefix, current_number, padding | businesses |
Componente principal: QuoteFormSheet.tsx
Hook: useQuoteForm.ts
Queries de diagnóstico:
-- Presupuesto con datos de clienteSELECT q.*, c.name, c.cif_nif, c.emailFROM quotes qLEFT JOIN customers c ON q.customer_id = c.idWHERE q.id = '<quote_id>';
-- Líneas de presupuestoSELECT * FROM quote_itemsWHERE quote_id = '<quote_id>'ORDER BY sort_order;Edge Functions:
whatsapp-create-quote- Crear presupuesto vía WhatsApp