Catálogo
El Catálogo es la lista única de cosas que vendes: servicios, productos físicos, mano de obra, ítems digitales y bundles (paquetes que combinan varios). Sustituye las listas separadas de "Servicios" y "Productos" — todo vive en una sola tabla y se reutiliza desde Facturas, Cotizaciones, POS y Órdenes.
Cómo usarlo
- Agrega ítems desde Servicios (si tienes solo servicios) o desde Products (si tienes el addon Commerce activo).
- En facturas, cotizaciones y POS el selector de líneas lee directamente del catálogo unificado — no hay que duplicar nada.
- Para crear un paquete (ej. "Experiencia La Manual" = Taller + 10 alpargatas), usa Bundle Editor desde Products.
Tipos de ítem (campo kind)
- service — trabajo facturable sin inventario (consultoría, soporte).
- physical — producto con stock que se descuenta al vender.
- labor — mano de obra ligada a una orden de taller.
- digital — entregable sin inventario (licencias, archivos).
- bundle — paquete que al venderse se descompone automáticamente en sus componentes (descuenta stock de los físicos y registra ejecución de los servicios).
Cómo funcionan los bundles
Cuando se vende un bundle (POS o factura pagada en Commerce):
- El trigger
trg_order_completedlo descompone en sus componentes. - Cada componente físico genera un movimiento en
inventory_movements. - Cada componente service genera una fila en
service_executions(para reportes).
Los componentes y cantidades se editan en Bundle Editor.
Servicios vs Commerce
- Sin addon Commerce: ves Servicios en el sidebar (kind=service).
- Con Commerce activo: Servicios se oculta por defecto y todo se gestiona desde Products con filtros por tipo. Puedes forzar que aparezca con el toggle
showServicesWithCommerceen Configuración.
Permisos
- services:view / create / edit / delete controlan acceso al módulo Servicios.
- commerce:view / create / edit controlan acceso al catálogo extendido (Products, bundles, inventario).
Preguntas frecuentes
¿Si edito un precio en Products, se refleja en Facturas?
Sí. Los formularios de factura/cotización refrescan el catálogo desde la nube al abrirse (Catalog.refreshFromCloud).
¿Los bundles se descomponen también en facturas core?
Hoy solo se descomponen en órdenes de Commerce (POS y Orders). En facturas core es decisión pendiente.
¿Puedo borrar un servicio que ya está en una factura vieja?
Sí — la línea de la factura guarda catalogItemId pero conserva nombre y precio históricos.