Commit Graph

59 Commits

Author SHA1 Message Date
Horux Dev
b3b2838b6d fix(conciliacion): muestra nombre del banco en select en lugar de ID
El SelectValue del proyecto solo muestra el value raw (el ID).
Reemplazado por un span dentro de SelectTrigger que busca
el banco seleccionado por su ID y muestra el nombre + terminacion.
2026-05-13 22:38:50 +00:00
Horux Dev
120ca806b0 fix(conciliacion): montos con 2 decimales (solo en conciliacion)
Creada funcion local formatCurrencyConciliacion con
minimumFractionDigits/maximumFractionDigits = 2.
El resto del sitio mantiene formatCurrency original sin decimales.
2026-05-11 23:07:26 +00:00
Horux Dev
45664b5661 Revert "fix(utils): formatCurrency muestra 2 decimales en vez de 0"
This reverts commit 2da38c5fd7.
2026-05-11 23:06:39 +00:00
Horux Dev
2da38c5fd7 fix(utils): formatCurrency muestra 2 decimales en vez de 0
En conciliacion (y todo el sitio) los montos aparecian sin decimales.
Cambiado minimumFractionDigits y maximumFractionDigits de 0 a 2.
2026-05-11 23:04:28 +00:00
Horux Dev
745bc8385b feat(invitations): flujo de invitacion de clientes por email
Backend:
- Nuevo modelo Prisma ClientInvitation con token unico, expiracion
  y estados (pending/accepted/expired).
- Migracion: 20260511213955_add_client_invitations
- Service client-invitations.service.ts: crear invitacion,
  validar token, registrar desde invitacion (reutiliza logica
  de creacion de tenant + usuario de despacho.service).
- Controller + routes: POST /invitations/client (admin),
  GET /invitations/client/validate/:token (publico),
  POST /invitations/client/register/:token (publico),
  GET /invitations/client (admin).
- Email template client-invitation.ts con link a
  /invitacion/registro/{token}.
- Agregado sendClientInvitation a email.service.

Frontend:
- Pagina /invitacion/registro/[token] para que el invitado
  complete registro (nombre, password, despacho, RFC, perfil).
- Pagina /admin/invitar-cliente para que admin global envie
  invitaciones y vea el historial.
- Hooks useCreateInvitation, useValidateInvitationToken,
  useRegisterFromInvitation, useClientInvitations.
- API client lib/api/client-invitations.ts.

Infra:
- PM2 ecosystem.config.js: usa node --import tsx con
  kill_timeout aumentado a 15s para evitar EADDRINUSE.
- React Query retry=2 con delay exponencial para resiliencia.

Refs: docs/CAMBIOS-2026-05-09.md
2026-05-11 22:03:03 +00:00
Horux Dev
0a63593aab fix(infra): PM2 usa node --import tsx con mayor kill_timeout y retry en React Query
- ecosystem.config.js: cambiado de tsx CLI a  que es
  mas estable. Aumentado kill_timeout de 5s a 15s para evitar
  EADDRINUSE cuando PM2 reinicia el API.

- query-provider.tsx: agregado retry=2 con delay exponencial a las
  queries de React Query para que sean mas resilientes a caidas
  breves del API.

Refs: docs/CAMBIOS-2026-05-09.md
2026-05-11 18:46:08 +00:00
Horux Dev
6dfcbfc05c fix(conciliacion): complementos de pago usan fecha_pago_p y campos faltantes en visor
- conciliacion.service.ts: filtros y ordenamiento ahora usan
  COALESCE(fecha_pago_p, fecha_emision). Los CFDIs tipo P
  (complementos de pago) aparecen en el periodo del pago real,
  no de la emision del CFDI.

- conciliacion.service.ts: agrega fechaPagoP al SELECT y a la
  interfaz ConciliacionCfdi.

- conciliacion/page.tsx: tablas y export Excel usan
  fechaPagoP || fechaEmision para mostrar la fecha.

- cfdi-invoice.tsx: para tipo P con fechaPagoP, muestra
  'Pago: {fecha}' en el encabezado.

- conciliacion.ts: actualiza interfaz ConciliacionCfdi con
  todos los campos que ya devuelve el backend.

Refs: docs/CAMBIOS-2026-05-09.md secciones 7 y 8
2026-05-11 17:31:35 +00:00
Horux Dev
9f11a0ba39 feat: facturación primer pago, fixes SAT/MP, autocompletado RFCs/conceptos
Backend:
- Notificación email al admin cuando llega primer pago aprobado (sin factura auto)
- Endpoints GET /pagos-sin-factura y POST /emitir-factura-pago para admin global
- Fix vinculación org Facturapi Horux 360 (69f23a5a242e0af47a41fa0d)
- Fix webhook MP: validación defensiva de x-signature header
- Fix autocompleto RFCs: eliminado filtro por contribuyenteId
- Fix autocompleto conceptos: eliminado filtro por contribuyenteId
- SAT fixes: anti-bot CSF scraper, request reuse, date range fix, stale job thresholds
- SAT sync request reuse across jobs para evitar agotar cuota diaria
- Typo fix MP_ACCESS_TOKEN en .env
- Trial invitations system backend

Frontend:
- Nueva página /admin/facturas-pendientes con tabla y emisión manual
- Métrica 'Facturas pendientes' en /clientes (clickable)
- Navegación onboarding FIEL/CSD corregida
- Sidebar themes sincronizados
- Fix SAT portal migration scraper (NetIQ)
- Trial invitation acceptance pages
2026-05-09 21:56:42 +00:00
b00b677c54 Initial commit - Horux Despachos NL 2026-05-03 16:47:53 -06:00