Pestañas activas y de vacío en el directorio de plataforma org
La pestaña Organizaciones de la consola ahora se divide en sub-tabs Active y Vacío. A organización anulada es orgs.is-active = FALSE (establecido por el vacío d...
La tarifa de inicio de una plan, y la oferta en vivo, en el alambre
PlanDto llevaba sólo la tasa recurrente, por lo que cada superficie citando un plan cotizaba un precio el cliente no se cobraría: La cuota de inicio de KamoCRM ...
Un punto final detrás de la propia página del plan del cliente
GET /api/billing/self/plan responde todo /myplan renders: el plan, qué la organización puede realmente utilizar, el catálogo para comparar con los asientos, y s...
Billar la tarifa de arranque en ambas rutas a un plan, y registrar términos negociados
Dos rutas llegan al mismo plan y solo una de ellas iba a cobrar el nuevo cuota de inicio por asiento. Un pedido de venta a través de SubscriptionService, que nu...
Cierra cada barrido de movimiento de dinero, y dirige dos vainas
BillingService corrió una vaina y sus siete barridos programados fueron correctos sólo por ello. Ahí no es ShedLock en ninguna parte de esta plataforma, así que...
Sirviar la oferta de running, y decir si un asiento es realmente PAID para
Añade GET /markets/-id-/promotion. No había manera de que una superficie de compra en la aplicación se hiciera a sabe que una oferta estaba funcionando en todo ...
Bill el mandato de tres años, y cotiza su tasa a la consola
BillingCycles gana TRIENNIAL, expresado a Stripe como tres años en lugar de Treinta y seis meses para que la renovación rastree el aniversario de la inscripción...
Líneas de perserva en el resumen de extensiones
La pestaña de extensiones del servidor telefónico mostraba la figura de toda la organización y nada más, por lo que un servidor KamoPBX vacío mostró "21 extensi...
Rechaza una suscripción a la empresa de autoservición
La empresa está negociada. Esconder el precio es presentación; este es el - frontera. Se rechaza una solicitud de nombre del plan Enterprise a menos que el que ...
Servicio telefónico de facturas por extensión
PricingModel.PER-EXTENSION, su propia clave de cantidad reservada, un alicador, un reconciliador nocturno, una puerta de eliminación y la API de resumen - el ge...
Bill e-mail por buzón, reconciliado cada noche
La cantidad es computarizado en el servidor bajo una clave reservada, un órgano de solicitud no puede llegar, y empujado a través de la ruta de enmienda existen...
Haz de un evento de rayas reproducido un no-operación
Añade BillingWebhookEventClaimService en su propio frijol, con REQUIRES-NEW encendido Cada método, y lo conecta en procesoEvent delante del interruptor de despa...
Publicar la conversión pagada para organizaciones rastreadas
Ambos caminos que estampan BillingSourceType.PAID ahora publican marketing.visitor.pagado, porque enganchar sólo uno pierde silenciosamente la mitad del tráfico...
Decide el acceso de la plataforma con el solucionador compartido
PlatformAdminSólo nombra la plataforma correcta que requiere (por defecto MANAGE-ORGANIZACIONES, que es de lo que se trata la superficie de la plataforma de est...
Llegar la fecha de renovación de la cobertura y las cargas útiles grupales
Ambas superficies informan ahora de la corrientePeriodEnd y cancelanAtPeriodEnd. La fecha es lo que una confirmación de cancelación en realidad necesita decir "...
Un plan por organización, un techo de 25 sesos y una forma de dejar de pagar
El plan es ahora una decisión a nivel de organización y nada más puede anularla. Dejar que un autopago o un gerente de grupo escojan sus propias lecturas como u...
Deje que el plan de un grupo sea cancelado, y deje de pagar dos veces por una persona
Tres huecos en lo que se envió último: Un grupo con un plan nunca podría ser eliminado. suscripción existe correcta, ya que la fila de grupo es lo único que ap...
Hacer que los grupos de facturación funcionen a extremo, y dejar de pagar por cuenta propia por nada
Un grupo ahora puede reunir a la gente, comprar un plan en la propia tarjeta de su gerente, y la mano sus asientos fuera. Nada de eso existía: las únicas operac...
Dile a la gente que su pago fracasó, y aguanta la suscripción
El dunning que no existía. invoice.payment.falleó una fila y devolvió: sin correo electrónico, sin bandera, sin cambio de estado, y Billing.email-serv-url fue c...
Deja que un miembro compre su propio asiento, y cierre un agujero de parámetro corporal
El autopago no tenía ruta dentro de la consola. Todo en la superficie de facturación es en forma de cuenta, ya debes tener una fila de AccountMember antes de lo...
Política de Org y grupos de facturación APIs
Quien dentro de una organización puede pagar a Kamo ahora es responsable y fijamente. Ambos las rutas son org-scoped y, por lo tanto, deliberadamente fuera /api...
Default de la org de objetivo de una nueva suscripción a la que llaman's
Una primera compra no tiene suscripción existente para copiar el objetivo de, y exigirlo incondicionalmente es lo que hizo crear uno de la consola imposible. Un...
Comprar un bloque cuando un org opted-in se agota de la habitación
Corre poco después del barrido nocturno de la instantánea, porque eso es lo que produce el figura de uso que decide en la expansión con el número de ayer compra...
Deja que un cambio de precio de catálogo llegue a Stripe
Los precios de la tira son inmutables y la asignación contiene una fila por (org, tipo, código, Ciclo) detrás de una clave única, por lo que una vez que existió...
Reporta capacidad junto al uso
El panel de almacenamiento reportó bytes almacenados en nada de nada, sin asignación, sin porcentaje, sin dinero, así que un propietario mirando 400 GB no tenía...
Haz que un primer plan sea purchable, y devuelva los precios del plan real
Dos cosas detuvison a una organización que compraba una primera suscripción. Las listas de planes eran accesibles sólo a través de sub.marketId en una suscripc...
Bill por unidad de unidades compradas, no por cuenta de cuentas
Ejeta la nueva cantidad adicional a través de crear y actualizar: un complemento FLAT ahora toma su cantidad de Stripe de lo que realmente compró la suscripción...
Punto en YugabyteDB y use PostgreSQLDialect
CockroachDB ha sido reemplazado por YugabyteDB. Las cuerdas de conexión se mueven desde cucaracha-púrquica-púb:26257 a yb-tserver-service:5433, y el dialecto de...
Lea el uso de imágenes de un pase deduplicado
Sigue el cambio de la biblioteca compartida a un cargo por archivo distinto por organización. Tanto el resumen como el escritor de instantáneas del día se lleva...
Deja que un administrador de plataforma ejecute la instantánea barrer bajo demanda
El barrido es lo que hace que las eliminaciones de períodos y los totales de por vida para el dominios de eliminación dura que responden en absoluto, por lo que...
Reporte lo que una organización está almacenando
La pestaña de estadísticas de cuenta siempre ha dicho "No hay datos de uso disponibles para este período", por cada organización, porque getCurrentUsage() en ka...
Sirviar el directorio org como una página filtrada, ordenada, paginada
GET /orgs toma la página/size/q/sort/dir más siete filtros y devuelve la casa sobre de página con agregados de toda la propiedad. GET /orgs/orgIdá sirve todo el...
Hidratación de página conlocándote en un constante conteo de consultas
Títulos de padres, dominio primario, el plan/mercado detrás del derecho y bandera de catálogo subscription suscripción son cada uno de los dos lotes IN (:ids) e...
Fily row/page DTOs y el repositorio de consulta nativo
PlatformOrgRow lleva las dos facetas por separado: derecho (subs entrantes apuntar al org - lo que gobierna) y facturación (cuentas que el org posee -- no-cero ...
Org directorio SQL con CTE per-facet
Cuentas en retenidas, suscripciones entrantes, miembros, licenciatarios y niños cada uno agregado en su propio CTE antes de estar unido a orgs. Unirse a ellos e...
Solicitud de directorio de org validada y apretada
Abraza las pinzas de tamaño a [1,100] y una especie no reconocida cae de nuevo al título, por lo que un URL editada a mano no puede solicitar toda la finca ni l...
Modo de derecho derivado a través de un solucionador compartido y determinista
TrialAdminService eligió su suscripción de prueba con findFirst() a lista desordenada, por lo que un org que sosteniendo tanto un juicio pendiente como un juici...
Exponar el juicioExpireEn el resumen de plataforma org para los juicios de administración UI
Plataforma-admin aplica/extiende/status final de prueba . DTO trialExpiresAt
El barrido programado vuelve las pruebas vencidas a Gratis con caché-busto
Comaja de uso de la señal electrónica . Compra de autoservida de consumo
4 metros: - EsignMeterSubmissionService (Ejed daily): agrega API-orgin EsignUsageRecords per org-periodo; primero 40/período incluido, el resto presentado c...
Gestión de la Organización.isPlatformProduct de la Plataforma . Orgs
PlatformAccountSummary expone isPlatformProduct . hasSubscriptionMarket; nuevo PUT ************* (plataforma-admin cerrada) pone la bandera e invalida los derec...
Reescribe BillingService alrededor de BillingGroups
Elimina el nivel de org **************** controladores, servicios y DTO. Introduce: - BillingGroupControllermontes grupos, miembros, suscripciones, licencias, ...
Añadir Controlador PlatformAdmin , servicio para subvenciones del plan de compensación
- PlatformAdminController at /api/billing/plataforma (nivel de clase .PlatformAdminOnly) - GET /orgs, GET /orgs/EorgId. - POST /orgs/orgIdá/grants, PATCH-DE...
Ejecutar el ajuste de las entradas de pago del equipo en la creación de clientes de Stripe
Bumps kamo-shared-biblioteca dependencia a 1.5.0 para que BillingService pueda resolver el nuevo AppliedModelforcementService, y alambres de equipo-miembro vs o...
BillingService inicial - Factración integrada por Stripe para KamoCRM
Servicio completo de arranque de primavera para gestionar la facturación de KamoCRM vía Stripe: - Cliente de Stripe, Suscripción, PagoMethod, Gestión del ciclo...
Como lo que ves enviaste?
Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.