Cargando…

Esto está tardando más de lo esperado.

Planes y cobros del equipo

Cómo los planes, complementos, límites y tarjetas se asocian al equipo, quién puede administrarlos y qué puede hacer un equipo sin plan.

Los planes, los precios por país e intervalo, los complementos, los límites, la página de pago y los formularios de administración funcionan igual que en cualquier producto de Weblabor. Ve Enciende los planes y los cobros y Crea un plan y ponle precio en el sitio de la base para todo eso. Esta guía cubre sólo lo que cambia cuando el cliente es un equipo.

El equipo es el cliente

Paga el equipo, no la persona. Cada equipo tiene su propia suscripción, sus propias tarjetas, sus propias facturas y sus propios complementos. Nada de los cobros se guarda en la persona, así que un miembro que sale del equipo no se lleva nada del plan del equipo.

Dónde lo administra el equipo

Pantalla Qué hace
Mis planes Los planes, con el actual del equipo marcado. Un plan gratuito se contrata al momento; uno de pago abre la página de pago.
Complementos El catálogo de complementos, con los activos del equipo. Cuando el equipo tiene consumo medido, sus saldos se muestran arriba del catálogo.
La página de un complemento Todas las maneras de obtener ese complemento, el botón que lo obtiene y un enlace de regreso al catálogo del equipo.
Facturación El estado de la suscripción, el siguiente pago, las facturas, el enlace para administrar los datos de pago, el saldo a favor del equipo cuando tiene, y el historial de su suscripción.
Métodos de pago Las tarjetas del equipo.
Saldo pendiente Lo que debe el equipo y el botón para liquidarlo. Al equipo se le manda aquí cuando debe dinero.

Ninguna de estas pantallas requiere una suscripción, así que un equipo cuyo plan terminó, o que debe dinero, todavía puede llegar a ellas y pagar. El propietario y los roles con Administrar planes las ven; a los demás se les regresa al dashboard del equipo con un mensaje que les dice que pidan acceso a un administrador del equipo, y el menú ni siquiera les ofrece los enlaces. Para quienes administran planes, el grupo Facturación del menú del equipo muestra Complementos justo después de Mis planes siempre que los complementos estén encendidos y el catálogo del equipo tenga algo que mostrar. Con el catálogo vacío el enlace queda oculto.

Cada una de estas pantallas es del equipo, no de quien la abre. Un miembro que además paga una cuenta personal propia nunca cae en sus propias páginas de cobro desde dentro de un equipo: los complementos, sus páginas y el regreso de la página de pago se quedan en el equipo activo.

La suscripción de un equipo, con su plan actual y su próximo pago

El plan gratuito

Cuando los planes están encendidos, a un equipo sin plan activo se le pone en el plan gratuito sin preguntar: cuando se crea el equipo, cuando termina su suscripción, después una vez al día mientras siga sin una, y cada vez que se abre su dashboard. El plan gratuito es el del país del equipo: el país guardado en el equipo, si no el de su propietario, si no el plan gratuito general. Nunca se adivina por el lugar desde donde se conecta el visitante.

El plan gratuito no está garantizado. Cuando no hay plan gratuito para el país del equipo, cuando el equipo usa más de lo que permite el plan gratuito, o cuando el plan gratuito no se pudo activar, el equipo se queda sin plan, y cada miembro ve un aviso que dice cuál de esas fue. Sólo quien administra el plan del equipo recibe Ir a planes; a los demás se les dice que quien administra el plan tiene que resolverlo.

Un equipo sin plan no recibe nada de uno: cada límite cuenta como cero. No se puede agregar ni invitar a nadie, y no se puede subir ningún archivo. Sus pantallas siguen abiertas, así que sus miembros, roles y archivos siguen al alcance. Cuando tu cuenta se queda sin plan en el sitio de la base explica cada razón y el camino de vuelta.

Límites que se cuentan por equipo

Los límites del plan se definen en el panel de administración. Un producto de equipos cuenta tres de entrada:

Límite, como lo nombra el panel de administración Qué cuenta
users Los miembros del equipo más sus invitaciones pendientes.
activity_logs Las entradas del historial de actividad registradas en el equipo en el mes actual.
Espacio en disco (disk_space) El espacio que ocupan los archivos del equipo, en la unidad de espacio en disco de tu producto. Ve Archivos y espacio del equipo.

El Dashboard del equipo muestra cada límite con lo que el equipo ha usado; ahí el límite users se llama Miembros. En el límite users el botón Crear miembro de la lista de miembros se deshabilita, y el formulario se niega otra vez al guardar.

Vender miembros más allá del plan

Un plan gratuito, un plan de pago con diez miembros incluidos y un complemento Miembro extra cobrado por unidad son tres registros que se crean en el panel de administración:

Registro Dónde Qué poner
Plan gratuito Los planes del panel de administración Sin precio. En Capacidad y límites, users = 1.
Plan de pago Los planes del panel de administración Un precio mensual, digamos $20 USD. En Capacidad y límites, users = 10.
Miembro extra Los complementos del panel de administración Vendido por unidad encendido. En Límites, users = 1. Un precio mensual por unidad, digamos $1 USD.

El límite se llama users, no "miembros", en el panel de administración. Vendido por unidad es lo que hace que la cantidad importe: el equipo elige cuántas quiere, y el precio y los límites se multiplican por ella. Un complemento que se vende por unidad tiene que llevar al menos un límite, que es para lo que está la fila users; no necesita ninguna capacidad, así que deja Capacidad vacía.

Cuando el producto vende sólo a equipos, los formularios de administración de planes, complementos y medidores no muestran el campo Contexto, y el complemento llega al catálogo del equipo tal cual. Ese campo aparece sólo cuando el producto vende a personas y a equipos, como describe la última sección de esta guía, y ahí eliges Equipo.

Una vez que existen los tres registros, un equipo en el plan de pago con cuatro unidades de Miembro extra tiene catorce lugares. Agregar a un decimoquinto miembro, o invitarlo, se rechaza con "Has alcanzado el número máximo de miembros permitido por tu suscripción". El equipo lo supera comprando más unidades desde Complementos o pasándose a un plan más grande, y los lugares nuevos cuentan desde ese momento. Una invitación pendiente ocupa un lugar igual que un miembro activo, y quien creó el equipo ya ocupa uno, que es la razón por la que un equipo en el plan gratuito de este ejemplo no puede invitar a nadie hasta que compre una unidad.

Vender por unidad funciona igual en todos lados, y está documentado en Vende complementos, en "Por unidad y por escalones".

Complementos y capacidades

Un complemento enciende una capacidad para el equipo: una función que el equipo puede usar en cuanto compra el complemento, o en cuanto su plan lo incluye. El administrador elige la capacidad en el formulario del complemento, de la lista que declara tu producto. Una capacidad comprada de por vida sigue encendida aunque el plan deje de incluir el complemento.

Desde el panel de administración

Equipos, en el panel de administración, muestra cada equipo con su plan y deja que un administrador encienda o apague un complemento para él, le fije un límite propio, le acuerde un precio menor, le abone saldo o lea el historial de su suscripción, desde los mismos paneles que se usan para las personas. Ve Equipos en el panel de administración.

Vender a personas y a equipos

Un producto puede vender a personas y a equipos al mismo tiempo. Entonces las páginas de cobro de la persona regresan a su cuenta, las del equipo se quedan para el equipo, y cada plan, complemento y medidor declara en su formulario de administración, bajo Contexto, si es para usuarios (Usuario), para equipos (Equipo) o para ambos (Ambos).

Para desarrolladores

  • El adaptador de equipos es packages/billing-team, junto a packages/billing-core de la base. La base le cobra a un User; este adaptador le cobra a un Team, con su propia fila BillingAccount, su cliente de Stripe, su suscripción y sus derechos.

    BILLING_TEAM_ENABLED=true
    BILLING_USER_ENABLED=false
    

    BILLING_TEAM_ENABLED registra el adaptador de equipos. BILLING_USER_ENABLED registra junto a él el adaptador de usuarios de la base, que sólo quieres cuando tu producto vende a personas y a equipos; tal como viene está apagado, así que /account/plans y las demás páginas de cobro de la cuenta no existen. FEATURE_PLANS_ENABLED y FEATURE_ADDONS_ENABLED siguen encendiendo o apagando los planes y los complementos para todos. El campo Contexto de los formularios de planes, complementos y medidores se dibuja sólo cuando hay dos o más adaptadores de cobro registrados (BillingManager::contextOptions() no devuelve nada en otro caso), así que aparece en los tres formularios cuando el adaptador de usuarios se registra junto al del equipo, y en ninguno con el adaptador de equipos solo.

  • Las pantallas del equipo son /team/plans, /team/add-ons, /team/add-ons/{addon}, /team/billing, /team/payment-methods y /team/debt, detrás de manage plans en el guard team. El enlace Complementos se muestra cuando el catálogo tiene un complemento vendido en el país del equipo o con precio para todos los países, o un medidor.

  • El plan gratuito se aplica cuando se crea el equipo (TeamObserver::created() llama a Team::returnToFreePlan()), cuando termina la suscripción, con una revisión diaria, y cuando se abre /team.

  • Lo que cuenta cada límite está en app/Classes/TeamPlanLimits.php, la versión del equipo de PlanLimits de la base; el panel lista los nombres de sus métodos tal como están escritos. Agrega un método público por cada límite que necesite tu producto (users, activity_logs y disk_space vienen incluidos), con la clave como nombre y el equipo actual como argumento opcional, y una variante Daily cuando lo quieras en las gráficas de uso:

    public function projects(?object $owner = null)
    {
        $team = $owner ?? team();
        return $team ? $team->projects()->count() : 0;
    }
    

    team()->reachedLimit('users') responde si el equipo está en el límite; la lista de miembros lo llama para deshabilitar Crear miembro, y el formulario para agregar miembros lo llama otra vez antes de guardar.

  • Las capacidades que puede comprar un equipo son métodos públicos de app/Classes/TeamPlanFeatures.php, la versión del equipo de PlanFeatures de la base; el nombre del método es la clave que elige el administrador, y el método responde si la capacidad está liberada en código. La clase viene vacía, así que declara una antes de crear un complemento para equipos:

    public function advancedReports()
    {
        return true;
    }
    

    Revísala con team()->hasFeature('advancedReports'), un sinónimo permanente de team()->hasAddOn(): la misma llave, la misma respuesta desde las mismas fuentes. Teams agrega el mismo sinónimo en el usuario, así que $user->hasFeature() le pregunta igual al plan propio de una persona, y ninguno de los dos nombres lee la caché features. Una política no la llama: declara protected $requiredFeature en la política y App\Policies\BasePolicy revisa por sí misma los derechos del equipo para esa clave, antes de que corra cualquiera de los métodos propios de la política. Un visitante sin equipo actual es rechazado ahí: sin equipo no hay derechos que leer. La columna features del equipo es un caché que la cuenta de cobro mantiene al día; la decisión siempre es de los derechos de la cuenta.

  • El recurso de equipos del panel es /admin/teams.

Volver