- Daily sync already covers all active tenants with FIEL (no plan filter)
- Incremental sync now runs for all plans EXCEPT:
- 'custom'
- 'mi_empresa'
- 'mi_empresa_plus'
- Renamed getEnterpriseTenantsWithFiel -> getIncrementalTenantsWithFiel
- Updated logs to reflect new eligibility
- Add exportConceptosToExcel function that fetches all filtered
conceptos (limit 10000) and generates Excel
- Export button now works for both CFDIs and Conceptos tabs
- Extra columns in Conceptos Excel (not visible in table):
Nombre Emisor, Nombre Receptor, Descuento, IVA Trasladado,
IVA Retencion, ISR Retencion, Tipo Comprobante, Estatus CFDI
Add Subtotal MXN, Saldo Insoluto, Metodo de Pago, Forma de Pago,
ISR Retencion, IVA Retencion, and Descuento to Excel export.
These columns are not visible in the frontend table but included
in both bulk and single CFDI exports.
- Add Conceptos tab in CFDI page with column filters, sorting, pagination
- Add GET /cfdi/conceptos endpoint with filters and orderBy
- Backfill cfdi_conceptos from legacy XMLs (824k concepts inserted)
- Fix CFDI delete button (bypass subscription check, add alerts)
- Fix export to Excel (fetch all filtered results, limit 10k)
- Fix facturacion page concepto delete bug (immutable updates, unique ids)
- Add Facturapi live key auto-generation and caching
- Fix SAT fechaPagoP parsing
- Add metrics cache support for current year
- Increase DB pool max to 15
- Fix CFDI type errors (ivaTraslado, tipoCambio, id types)
- Fix sidebar navigation type errors (Role vs literal tuples)
- Fix user invite type errors (UserInvite['role'])
- Fix login page PlatformRole type cast
- login(): check platformRoles before membership validation; fallback to first active tenant for superset admins
- refreshTokens(): allow refresh for superset admins even without memberships
- tenantMiddleware: skip tenantPool resolution when tenantId is empty for superset admins
- Add metabase.service.ts for automatic DB registration
- Hook createTenant, addTenantToOwner and deleteTenant to sync with Metabase
- Keep all existing features from latest version