Files
HoruxDespachos/docs/plans/2026-04-26-rebrand-planes-despacho.md
2026-04-27 22:09:36 -06:00

4.4 KiB
Raw Permalink Blame History

Rebrand de planes despacho (2026-04-26)

Reestructura del catálogo de planes de Horux Despachos: nuevos precios, nuevos límites, nuevos planes para empresas individuales y unificación de la regla de overage por contribuyente extra.

1. Catálogo nuevo

Plan (codename) Display Precio anual MXN RFCs CFDIs/contrib. Timbres/mes Servidor backup Features extra
mi_empresa Mi Empresa $6,960 (= $580/mes × 12) 1 1,000,000 50 No
mi_empresa_plus Mi Empresa + $10,800 (= $900/mes × 12) 1 1,000,000 50 No API + Lolita IA
business_control Business Control $25,850 IVA inc. 100 1,000,000 0 API
business_cloud Enterprise (display) $43,000 IVA inc. 100 3,000,000 0 API
  • business_cloud mantiene el codename interno por backward compat con suscripciones vigentes; solo cambia el name display a "Enterprise".
  • Todos los planes despacho se cobran anual vía MP preapproval. El monto mensual ($580/$900) es solo descripción comercial — el cobro es uno por año.

2. Overage por contribuyente extra

  • Antes: solo business_cloud, incluía 3 RFCs base, $45/mes a partir del 4°.
  • Ahora: aplica a business_control y business_cloud, ambos incluyen 100 RFCs base, $45/mes a partir del 101°.
  • Mi Empresa / Mi Empresa+ tienen límite duro de 1 RFC (no permiten overage).

Implementación:

  • addon.service.ts — constante renombrada BUSINESS_CLOUD_INCLUDED_RFCS = 3DESPACHO_INCLUDED_RFCS = 100. La función adjustBusinessCloudOverage se renombró a adjustDespachoOverage y ahora valida con permiteOverage(plan) (helper en @horux/shared) en vez de comparar literal contra 'business_cloud'.
  • contribuyente.controller.ts — actualizado import y dos callsites (create y deactivate).
  • seed.tsnombre del catálogo contribuyente_extra_business_cloud ahora es genérico: "Contribuyente adicional (RFC extra)". El codename se mantiene para no migrar subscription_addons existentes.

3. Validación de planes en backend

  • subscription.controller.tsVALID_PLANS extendido con mi_empresa y mi_empresa_plus. DESPACHO_ONLY_ANNUAL también los incluye (catálogo solo expone tarifa anual; pedir monthly regresa 400 antes de llegar al servicio).
  • subscription.service.ts — type alias Plan extendido con los dos nuevos literales para que scheduleChange, subscribe, initiateUpgrade y applyPendingChanges los acepten como destinos válidos.
  • getPlanPrice(plan, frequency) lee DESPACHO_PLAN_PRICES[plan] (catálogo estático en @horux/shared) — mi_empresa y mi_empresa_plus ya estaban ahí desde el cambio del catálogo (ver packages/shared/src/constants/despacho-plans.ts).

4. UI (estado previo a esta sesión, ya implementado)

  • /configuracion/planes-despacho muestra 4 cards en grid lg:grid-cols-4.
  • Business Control marcado como "Más popular".
  • Cada Card usa flex flex-col + mt-auto en el botón para alinear botones al margen inferior aunque las listas de features tengan distinto largo.
  • Solo se listan features incluidas (eliminadas las filas "Sin..." para no ensuciar la vista con negaciones).
  • Botón único "Contratar" (sin la variante "(terminar prueba)").

5. Migraciones / deploy

No requiere migración de schema. El enum Prisma Plan ya incluyó mi_empresa y mi_empresa_plus en migración 20260426073942_add_mi_empresa_plan. El catálogo de addon se actualiza vía pnpm db:seed (upsert por codename).

6. Pendientes (decisión del owner)

  • Mi Empresa monthly vs annual billing: hoy se cobra anual. Si se quiere preapproval mensual, hay que separar mi_empresa del set DESPACHO_ONLY_ANNUAL y agregar precio mensual al catálogo.
  • Mi Empresa overage: actualmente bloqueado en 1 RFC. Si se quiere permitir +RFC con cobro automático, agregar mi_empresa a permiteOverage() y definir un threshold/precio independiente.
  • Enterprise timbres: el plan no incluye timbres. Si en algún momento se quiere paquete fijo incluido, agregar timbresIncluidosMes > 0 en DESPACHO_PLANS.business_cloud.
  • getMyPlan en despacho.controller.ts sigue mapeando solo a business_control/business_cloud por dbMode. Si se extiende a tenants Mi Empresa, hay que revisar esa lógica (hoy reporta business_cloud para cualquier tenant MANAGED no-trial).