FastPresupuesto
FastPresupuesto
Plugin para crear presupuestos rápidos sin seleccionar un cliente real en el formulario, manteniendo compatibilidad con la lógica interna de FacturaScripts.
Para Usuarios
Qué hace
- Añade un botón Nuevo presupuesto rápido en
ListPresupuestoCliente. - Abre un modal para introducir:
- Nombre
- Teléfono
- Crea un
PresupuestoClientedirectamente y abre su edición.
Flujo funcional
- Entras en Ventas > Presupuestos.
- Pulsas Nuevo presupuesto rápido.
- Rellenas nombre, teléfono y email.
- Se crea el presupuesto y se abre en edición.
Restricción importante
- El plugin usa un cliente técnico (
FASTPRES) para cumplir requisitos internos del ERP. - Si un documento con ese cliente se intenta cerrar en estado no editable (caso factura), se bloquea y se pide asignar cliente real.
Qué verás en el presupuesto
Cuando el cliente del documento es FASTPRES, en cabecera aparecen inputs destacados (borde rojo) para:
- Nombre
- Teléfono
Para Técnicos
Objetivo técnico
Permitir creación rápida con datos de contacto, sin romper:
SalesDocument::getSubject()Calculator::apply()- flujo estándar de guardado/estados
Estrategia
En vez de dejar codcliente vacío (incompatible con cálculos y validaciones), se usa un cliente técnico fijo:
Init::TECHNICAL_CUSTOMER_CODE = FASTPRES
Implementación por archivos
Init.php
- Registra extensiones de:
Extension\Controller\ListPresupuestoClienteExtension\Model\PresupuestoClienteExtension\Model\FacturaCliente
- Registra
SalesHeaderHTMLMod. - En
update()crea el cliente técnico si no existe.
Extension/Controller/ListPresupuestoCliente.php
- Añade botón/modal de alta rápida.
- Acción
create-fast-presupuesto:- Valida token.
- Valida nombre obligatorio.
- Valida formato email.
- Crea presupuesto con cliente técnico.
- Guarda contacto en campos custom y en campos espejo del documento.
Extension/Model/PresupuestoCliente.php
testBefore()para presupuesto rápido:- sanea datos.
- valida nombre y email.
- sincroniza campos espejo.
Mod/SalesHeaderHTMLMod.php
- Solo actúa si
modelClassName() === PresupuestoClientey clienteFASTPRES. - Renderiza inputs custom (nombre/teléfono/email) en cabecera.
- Aplica cambios y sincroniza espejo al guardar.
Extension/Model/FacturaCliente.php
- Bloquea guardado en estado no editable si el cliente sigue siendo
FASTPRES.
Table/presupuestoscli.xml
Añade columnas propias del plugin:
contacto_telefono(varchar(20))contacto_email(varchar(150))
Mapeo de datos
Campos de trabajo (plugin)
nombreclientecontacto_telefonocontacto_email
Campos espejo (documento estándar)
Para que salga correctamente en el PDF estándar sin tocar Core:
direccion<=contacto_emailprovincia<=contacto_telefono
PDFDocument imprime nombrecliente y bloque de dirección (direccion, provincia, etc.), por eso se usa este espejo.
Traducciones
- Archivo:
Translation/es_ES.json - Constantes PHP:
Lib/TransKeys.php - En XML se usan directamente keys de traducción.
Calidad de código
El plugin incluye configuración local:
phpstannivel 5 + strict rulesphp-cs-fixer- scripts en
composer.json
Comandos (desde Plugins/FastPresupuesto):
composer run phpstancomposer run cs:checkcomposer run cs:fix
Notas de mantenimiento
- Si cambia la plantilla PDF base del ERP, revisar el mapeo espejo.
- Si en el futuro se quiere mostrar teléfono/email de forma nativa en PDF, hacerlo vía extensión PDF en plugin, no tocando Core.