Gastos
Captura de gastos del negocio: pago a proveedores, honorarios, servicios, suscripciones recurrentes y gastos extraordinarios (mermas, robos, donaciones, obsolescencia).
El form se adapta automáticamente al perfil del tenant:
| Perfil | Qué ves | Para quién |
|---|---|---|
| Local (sin cloud) | Descripción · Monto · Categoría · Pago · Fecha · Notas | Tenants que aún no migraron a Supabase. Sin fiscalidad. |
| Cloud sin Contabilidad | Lo anterior + Adjuntos (URL del comprobante) + Vencimiento | Tenants en cloud sin el addon Contabilidad activo. |
| Cloud + Contabilidad | Tabs General · Fiscal · Entrada/Diario · Adjuntos | Tenants con el addon Contabilidad activo. Es el perfil que usa el contador. |
Cómo usarlo
- Botón + Agregar gasto en el dashboard de Gastos. Abre el modal.
- Tab General (siempre visible): descripción, monto, categoría, método de pago, fecha. Notas opcionales.
- Tab Fiscal (solo cloud+Contabilidad):
- Proveedor: botón "Seleccionar proveedor" abre el ContactPicker filtrado a contactos con
customer_typesincluyeproveedor. Si no eliges proveedor, el gasto se guarda como sintético (creation_source='synthetic_purchase') y aparece en CxP marcado como "Sin proveedor". - NCF / e-NCF + Tipo: requerido para deducir ITBIS (Reglamento ITBIS Art. 47). Sin NCF válido B01/E31, el ITBIS pagado se trata como costo total, no se separa a la cuenta 17010101.
- Montos: subtotal + ITBIS + tasa. La tasa por defecto es 18% pero algunos casos usan 16% o 0% (exento).
- Pago al instante (fast path §11.7): si marcas "Pagar al instante" y eliges método (Efectivo/Banco/POS), el asiento contable colapsa la pierna de CxP (2201) y va directo a la cuenta de caja/banco. Equivale a expense:created + expense_payment en un solo asiento atómico.
- Gasto extraordinario: marca el toggle si el gasto NO es operativo normal sino merma/robo/donación/obsolescencia. Cada tipo pide evidencia distinta (descripción inventario / # denuncia / RNC beneficiario / URL evidencia técnica) por compliance DGII.
- Tab Entrada/Diario (solo cloud+Contabilidad): muestra el asiento contable que se generará al grabar. Solo lectura. Botón Regenerar recalcula con los datos actuales del form. Si falta mapping de cuenta o datos requeridos, una barra amarilla indica que el asiento se guardará como BORRADOR con razón explícita (
missing_account_mapping:expense_created:honorarios, etc.). - Tab Adjuntos (cloud): URL del comprobante físico (PDF/JPG) y fecha de vencimiento.
- Botón Agregar gasto persiste. Botón Cancelar descarta sin residuo (el placeholder sintético se borra de memoria).
Gasto desde e-CF Recibido (read-only)
Cuando abres un gasto cuya creation_source='ecf_reception', los campos fiscales (RNC, NCF, subtotal, ITBIS) aparecen con icono de candado 🔒 y son solo lectura. Estos datos están firmados digitalmente por DGII en el XML del e-CF — no se pueden modificar.
El bloqueo cubre también:
- Pago al instante — un e-CF recibido genera una CxP que se paga desde la vista CxP (Sesión 5, modal Pagar), no desde el booking.
- Gasto extraordinario — un e-CF recibido es un gasto operativo regular; si necesitas registrar una pérdida por merma/robo/donación/obsolescencia que afectó inventario recibido por ese e-CF, hazlo como ajuste de inventario separado (
inventory_adjustmentcon sub_type apropiado).
Para corregir un e-CF que llegó con datos errados, emita Nota de Crédito (E34) al proveedor solicitando corrección o anulación del e-CF original.
Campos importantes
- Proveedor — opcional pero recomendado. Sin proveedor → gasto sintético en CxP. Inline create permite añadir un proveedor nuevo desde el picker (auto-stamp
status='supplier'+customer_types=['proveedor']). - NCF / e-NCF — comprobante fiscal del proveedor. Requerido para deducir ITBIS. El tipo (01 / 11 / 14 / E31 / E32 / E33 / E34) se selecciona aparte para el reporte 606.
- Subtotal vs Monto total — el subtotal es la base gravada; el monto total es subtotal + ITBIS. El asiento usa el subtotal para la cuenta de gasto, el ITBIS va a 17010101 y el total va a CxP (o cuenta de caja en fast pay).
- Tipo extraordinario —
shrinkage(merma),theft(robo, requiere # denuncia),donation(donación, requiere RNC beneficiario y aplica límite 5% Código Tributario Art. 287),obsolescence(obsolescencia, requiere evidencia técnica). - Pagar al instante — toggle que colapsa el asiento de pago en el mismo asiento del gasto. Útil para gastos pagados al contado (efectivo, tarjeta) sin pasar por CxP intermedio.
Permisos
- owner / admin — ver, crear, editar, eliminar cualquier gasto. Acceso a CxP completo.
- accountant — ver, crear, editar gastos. Acceso a CxP. NO puede eliminar gastos posteados (regla de auditoría).
- sales_rep — solo ver gastos del propio scope si la política de tenant lo permite.
- cashier — sin acceso al módulo Gastos.
Los permisos del addon Contabilidad (cuentas.*) gating la tab Fiscal + tab Entrada/Diario. En perfil local o cloud-sin-cuentas, esas tabs no aparecen del todo.
Preguntas frecuentes
¿Por qué el asiento aparece como BORRADOR?
Faltó algo crítico: mapping de cuenta no configurado para esa categoría, NCF sin RNC obligatorio, ó tipo extraordinario sin evidencia. La barra amarilla indica la razón exacta (draft_reason). Configura el dato faltante y regenera, o guarda como borrador y completa después desde la vista CxP → Borradores.
¿Qué pasa si no elijo proveedor?
El gasto se guarda como sintético (creation_source='synthetic_purchase'). Persiste con supplier_contact_id=NULL, supplier_rnc=NULL, ncf=NULL (el constraint DB chk_synthetic_clean bloquea cargar datos DGII falsos). Aparece en CxP con pill rojo "Sin proveedor — gasto sintético". Asígnale proveedor antes del cierre del período.
¿Cómo cambia el asiento si activo "Pagar al instante"?
Sin fast pay (default):
CODE0
Con fast pay (Efectivo):
CODE1
La CxP nunca se crea — el pasivo no existe porque ya pagaste.
¿Por qué el ITBIS no es deducible sin NCF?
Reglamento ITBIS Art. 47: para deducir el ITBIS pagado en compras, el contribuyente debe contar con NCF válido tipo B01/E31 (o E33/E34 asociadas) emitido por proveedor con RNC válido. Sin NCF → el ITBIS pagado es costo (cargo total a la cuenta de gasto), no impuesto a recuperar.