@carlonicora/nestjs-neo4jsonapi 8.10.2 → 8.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/agents/community.detector/services/community.detector.service.d.ts +33 -1
  2. package/dist/agents/community.detector/services/community.detector.service.d.ts.map +1 -1
  3. package/dist/agents/community.detector/services/community.detector.service.js +126 -36
  4. package/dist/agents/community.detector/services/community.detector.service.js.map +1 -1
  5. package/dist/agents/community.summariser/cron/community.summariser.cron.d.ts +20 -3
  6. package/dist/agents/community.summariser/cron/community.summariser.cron.d.ts.map +1 -1
  7. package/dist/agents/community.summariser/cron/community.summariser.cron.js +35 -4
  8. package/dist/agents/community.summariser/cron/community.summariser.cron.js.map +1 -1
  9. package/dist/agents/community.summariser/helpers/community-scope-filter.d.ts +19 -0
  10. package/dist/agents/community.summariser/helpers/community-scope-filter.d.ts.map +1 -0
  11. package/dist/agents/community.summariser/helpers/community-scope-filter.js +27 -0
  12. package/dist/agents/community.summariser/helpers/community-scope-filter.js.map +1 -0
  13. package/dist/agents/community.summariser/processors/community.summariser.processor.d.ts +11 -2
  14. package/dist/agents/community.summariser/processors/community.summariser.processor.d.ts.map +1 -1
  15. package/dist/agents/community.summariser/processors/community.summariser.processor.js +24 -2
  16. package/dist/agents/community.summariser/processors/community.summariser.processor.js.map +1 -1
  17. package/dist/common/enums/ai.status.d.ts +7 -1
  18. package/dist/common/enums/ai.status.d.ts.map +1 -1
  19. package/dist/common/enums/ai.status.js +6 -0
  20. package/dist/common/enums/ai.status.js.map +1 -1
  21. package/dist/common/tokens.d.ts +12 -0
  22. package/dist/common/tokens.d.ts.map +1 -1
  23. package/dist/common/tokens.js +3 -1
  24. package/dist/common/tokens.js.map +1 -1
  25. package/dist/foundations/assistant/index.d.ts +1 -0
  26. package/dist/foundations/assistant/index.d.ts.map +1 -1
  27. package/dist/foundations/assistant/index.js +3 -1
  28. package/dist/foundations/assistant/index.js.map +1 -1
  29. package/dist/foundations/assistant/services/assistant.service.d.ts +13 -0
  30. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
  31. package/dist/foundations/assistant/services/assistant.service.js +12 -0
  32. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  33. package/dist/foundations/chunk/chunk.module.d.ts.map +1 -1
  34. package/dist/foundations/chunk/chunk.module.js +3 -1
  35. package/dist/foundations/chunk/chunk.module.js.map +1 -1
  36. package/dist/foundations/chunk/index.d.ts +1 -0
  37. package/dist/foundations/chunk/index.d.ts.map +1 -1
  38. package/dist/foundations/chunk/index.js +3 -1
  39. package/dist/foundations/chunk/index.js.map +1 -1
  40. package/dist/foundations/chunk/processors/chunk.processor.d.ts.map +1 -1
  41. package/dist/foundations/chunk/processors/chunk.processor.js +1 -0
  42. package/dist/foundations/chunk/processors/chunk.processor.js.map +1 -1
  43. package/dist/foundations/chunk/repositories/chunk-status.repository.d.ts +44 -0
  44. package/dist/foundations/chunk/repositories/chunk-status.repository.d.ts.map +1 -0
  45. package/dist/foundations/chunk/repositories/chunk-status.repository.js +76 -0
  46. package/dist/foundations/chunk/repositories/chunk-status.repository.js.map +1 -0
  47. package/dist/foundations/chunk/services/chunk.service.d.ts +32 -0
  48. package/dist/foundations/chunk/services/chunk.service.d.ts.map +1 -1
  49. package/dist/foundations/chunk/services/chunk.service.js +40 -2
  50. package/dist/foundations/chunk/services/chunk.service.js.map +1 -1
  51. package/dist/foundations/community/repositories/community.repository.d.ts +21 -0
  52. package/dist/foundations/community/repositories/community.repository.d.ts.map +1 -1
  53. package/dist/foundations/community/repositories/community.repository.js +51 -0
  54. package/dist/foundations/community/repositories/community.repository.js.map +1 -1
  55. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.d.ts +8 -3
  56. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.d.ts.map +1 -1
  57. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.js +35 -29
  58. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.js.map +1 -1
  59. package/dist/foundations/stripe-price/entities/stripe-price.map.d.ts.map +1 -1
  60. package/dist/foundations/stripe-price/entities/stripe-price.map.js +2 -1
  61. package/dist/foundations/stripe-price/entities/stripe-price.map.js.map +1 -1
  62. package/dist/foundations/stripe-product/repositories/stripe-product.repository.d.ts +2 -1
  63. package/dist/foundations/stripe-product/repositories/stripe-product.repository.d.ts.map +1 -1
  64. package/dist/foundations/stripe-product/repositories/stripe-product.repository.js +4 -1
  65. package/dist/foundations/stripe-product/repositories/stripe-product.repository.js.map +1 -1
  66. package/dist/foundations/stripe-subscription/services/feature-sync.service.d.ts +17 -0
  67. package/dist/foundations/stripe-subscription/services/feature-sync.service.d.ts.map +1 -1
  68. package/dist/foundations/stripe-subscription/services/feature-sync.service.js +95 -17
  69. package/dist/foundations/stripe-subscription/services/feature-sync.service.js.map +1 -1
  70. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts +3 -18
  71. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts.map +1 -1
  72. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js +20 -5
  73. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js.map +1 -1
  74. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts +6 -1
  75. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts.map +1 -1
  76. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js +10 -3
  77. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js.map +1 -1
  78. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.d.ts +1 -1
  79. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.js +1 -1
  80. package/dist/foundations/stripe-webhook/controllers/stripe-webhook.controller.d.ts.map +1 -1
  81. package/dist/foundations/stripe-webhook/controllers/stripe-webhook.controller.js +2 -0
  82. package/dist/foundations/stripe-webhook/controllers/stripe-webhook.controller.js.map +1 -1
  83. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts +1 -0
  84. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts.map +1 -1
  85. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js +31 -9
  86. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js.map +1 -1
  87. package/package.json +1 -1
@@ -141,10 +141,15 @@ let StripeInvoiceRepository = class StripeInvoiceRepository {
141
141
  return this.neo4j.readOne(query);
142
142
  }
143
143
  /**
144
- * Create a new invoice
144
+ * Create a new invoice, or update it when it already exists
145
145
  *
146
- * Creates an Invoice node with BELONGS_TO relationship to BillingCustomer
147
- * and optional FOR_SUBSCRIPTION relationship to Subscription.
146
+ * MERGEs the Invoice node on stripeInvoiceId with BELONGS_TO relationship to
147
+ * BillingCustomer and optional FOR_SUBSCRIPTION relationship to Subscription.
148
+ * Stripe sends invoice.created, invoice.finalized and invoice.paid for one
149
+ * invoice within milliseconds and the worker processes them in parallel: a
150
+ * find-then-CREATE lets two of them both create it, and the uniqueness
151
+ * constraint fails the second. On a match the changing fields are updated, as
152
+ * updateByStripeInvoiceId does.
148
153
  *
149
154
  * @param params - Creation parameters
150
155
  * @param params.stripeCustomerId - Stripe customer ID to link to
@@ -199,37 +204,38 @@ let StripeInvoiceRepository = class StripeInvoiceRepository {
199
204
  ? `MATCH (${stripe_subscription_meta_1.stripeSubscriptionMeta.nodeName}:${stripe_subscription_meta_1.stripeSubscriptionMeta.labelName} {id: $subscriptionId})`
200
205
  : "";
201
206
  const subscriptionRelation = params.subscriptionId
202
- ? `CREATE (${stripe_invoice_meta_1.stripeInvoiceMeta.nodeName})-[:FOR_SUBSCRIPTION]->(${stripe_subscription_meta_1.stripeSubscriptionMeta.nodeName})`
207
+ ? `MERGE (${stripe_invoice_meta_1.stripeInvoiceMeta.nodeName})-[:FOR_SUBSCRIPTION]->(${stripe_subscription_meta_1.stripeSubscriptionMeta.nodeName})`
203
208
  : "";
209
+ const invoice = stripe_invoice_meta_1.stripeInvoiceMeta.nodeName;
204
210
  query.query = `
205
211
  MATCH (${stripe_customer_meta_1.stripeCustomerMeta.nodeName}:${stripe_customer_meta_1.stripeCustomerMeta.labelName} {id: $stripeCustomerId})
206
212
  ${subscriptionMatch}
207
- CREATE (${stripe_invoice_meta_1.stripeInvoiceMeta.nodeName}:${stripe_invoice_meta_1.stripeInvoiceMeta.labelName} {
208
- id: $id,
209
- stripeInvoiceId: $stripeInvoiceId,
210
- stripeInvoiceNumber: $stripeInvoiceNumber,
211
- stripeHostedInvoiceUrl: $stripeHostedInvoiceUrl,
212
- stripePdfUrl: $stripePdfUrl,
213
- status: $status,
214
- currency: $currency,
215
- amountDue: $amountDue,
216
- amountPaid: $amountPaid,
217
- amountRemaining: $amountRemaining,
218
- subtotal: $subtotal,
219
- total: $total,
220
- tax: $tax,
221
- periodStart: datetime($periodStart),
222
- periodEnd: datetime($periodEnd),
223
- dueDate: CASE WHEN $dueDate IS NOT NULL THEN datetime($dueDate) ELSE null END,
224
- paidAt: CASE WHEN $paidAt IS NOT NULL THEN datetime($paidAt) ELSE null END,
225
- attemptCount: $attemptCount,
226
- attempted: $attempted,
227
- createdAt: datetime(),
228
- updatedAt: datetime()
229
- })
230
- CREATE (${stripe_invoice_meta_1.stripeInvoiceMeta.nodeName})-[:BELONGS_TO]->(${stripe_customer_meta_1.stripeCustomerMeta.nodeName})
213
+ MERGE (${invoice}:${stripe_invoice_meta_1.stripeInvoiceMeta.labelName} {stripeInvoiceId: $stripeInvoiceId})
214
+ ON CREATE SET
215
+ ${invoice}.id = $id,
216
+ ${invoice}.currency = $currency,
217
+ ${invoice}.subtotal = $subtotal,
218
+ ${invoice}.total = $total,
219
+ ${invoice}.tax = $tax,
220
+ ${invoice}.periodStart = datetime($periodStart),
221
+ ${invoice}.periodEnd = datetime($periodEnd),
222
+ ${invoice}.dueDate = CASE WHEN $dueDate IS NOT NULL THEN datetime($dueDate) ELSE null END,
223
+ ${invoice}.createdAt = datetime()
224
+ SET
225
+ ${invoice}.stripeInvoiceNumber = $stripeInvoiceNumber,
226
+ ${invoice}.stripeHostedInvoiceUrl = $stripeHostedInvoiceUrl,
227
+ ${invoice}.stripePdfUrl = $stripePdfUrl,
228
+ ${invoice}.status = $status,
229
+ ${invoice}.amountDue = $amountDue,
230
+ ${invoice}.amountPaid = $amountPaid,
231
+ ${invoice}.amountRemaining = $amountRemaining,
232
+ ${invoice}.paidAt = CASE WHEN $paidAt IS NOT NULL THEN datetime($paidAt) ELSE null END,
233
+ ${invoice}.attemptCount = $attemptCount,
234
+ ${invoice}.attempted = $attempted,
235
+ ${invoice}.updatedAt = datetime()
236
+ MERGE (${invoice})-[:BELONGS_TO]->(${stripe_customer_meta_1.stripeCustomerMeta.nodeName})
231
237
  ${subscriptionRelation}
232
- RETURN ${stripe_invoice_meta_1.stripeInvoiceMeta.nodeName}
238
+ RETURN ${invoice}
233
239
  `;
234
240
  return this.neo4j.writeOne(query);
235
241
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-invoice.repository.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-invoice/repositories/stripe-invoice.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripe-invoice.repository.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-invoice/repositories/stripe-invoice.repository.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-price.map.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-price/entities/stripe-price.map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,eAAO,MAAM,cAAc,GAAI,QAAQ;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,KAAG,WAqBjG,CAAC"}
1
+ {"version":3,"file":"stripe-price.map.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-price/entities/stripe-price.map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,eAAO,MAAM,cAAc,GAAI,QAAQ;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,KAAG,WAsBjG,CAAC"}
@@ -18,7 +18,8 @@ const mapStripePrice = (params) => {
18
18
  metadata: params.data.metadata,
19
19
  description: params.data.description,
20
20
  features: params.data.features,
21
- token: params.data.token ? Number(params.data.token) : undefined,
21
+ // 0 is a real allowance (a plan without AI credits), not "not configured"
22
+ token: params.data.token !== undefined && params.data.token !== null ? Number(params.data.token) : undefined,
22
23
  isTrial: params.data.isTrial === true,
23
24
  stripeProduct: undefined,
24
25
  feature: [], // Initialize relationship array (naming follows Company pattern)
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-price.map.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-price/entities/stripe-price.map.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAItD,MAAM,cAAc,GAAG,CAAC,MAAgE,EAAe,EAAE;IAC9G,OAAO;QACL,GAAG,IAAA,kBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;QACxC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI;QACnC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/E,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAChC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB;QAChD,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS;QACnH,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB;QAClD,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAChC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;QACpC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAChE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI;QACrC,aAAa,EAAE,SAAS;QACxB,OAAO,EAAE,EAAE,EAAE,iEAAiE;KAC/E,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,cAAc,kBAqBzB"}
1
+ {"version":3,"file":"stripe-price.map.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-price/entities/stripe-price.map.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAItD,MAAM,cAAc,GAAG,CAAC,MAAgE,EAAe,EAAE;IAC9G,OAAO;QACL,GAAG,IAAA,kBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;QACxC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI;QACnC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/E,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAChC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB;QAChD,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS;QACnH,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB;QAClD,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAChC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;QACpC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,0EAA0E;QAC1E,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5G,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI;QACrC,aAAa,EAAE,SAAS;QACxB,OAAO,EAAE,EAAE,EAAE,iEAAiE;KAC/E,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,cAAc,kBAsBzB"}
@@ -39,7 +39,8 @@ export declare class StripeProductRepository implements OnModuleInit {
39
39
  * Find all products
40
40
  *
41
41
  * @param params - Optional query parameters
42
- * @param params.active - Optional filter by active status
42
+ * @param params.active - Optional filter by active status. `true` also keeps only
43
+ * the active prices of each product: an archived price is not on sale.
43
44
  * @returns Array of products ordered by name
44
45
  */
45
46
  findAll(params?: {
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-product.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-product/repositories/stripe-product.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIlE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,uBAAwB,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEhD;;;;OAIG;IACG,YAAY;IAUlB;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAsBtE;;;;;;OAMG;IACG,QAAQ,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgBrE;;;;;;OAMG;IACG,qBAAqB,CAAC,MAAM,EAAE;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgB/F;;;;;;;;;;OAUG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC;IA+B1B;;;;;;;;;;OAUG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC1B;;;;;;;;;;;;OAYG;IACG,uBAAuB,CAAC,MAAM,EAAE;QACpC,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC1B;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAcpD"}
1
+ {"version":3,"file":"stripe-product.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-product/repositories/stripe-product.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIlE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,uBAAwB,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEhD;;;;OAIG;IACG,YAAY;IAUlB;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAyBtE;;;;;;OAMG;IACG,QAAQ,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgBrE;;;;;;OAMG;IACG,qBAAqB,CAAC,MAAM,EAAE;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgB/F;;;;;;;;;;OAUG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC;IA+B1B;;;;;;;;;;OAUG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC1B;;;;;;;;;;;;OAYG;IACG,uBAAuB,CAAC,MAAM,EAAE;QACpC,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC1B;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAcpD"}
@@ -62,7 +62,8 @@ let StripeProductRepository = class StripeProductRepository {
62
62
  * Find all products
63
63
  *
64
64
  * @param params - Optional query parameters
65
- * @param params.active - Optional filter by active status
65
+ * @param params.active - Optional filter by active status. `true` also keeps only
66
+ * the active prices of each product: an archived price is not on sale.
66
67
  * @returns Array of products ordered by name
67
68
  */
68
69
  async findAll(params) {
@@ -73,10 +74,12 @@ let StripeProductRepository = class StripeProductRepository {
73
74
  whereParams.push(`${stripe_product_meta_1.stripeProductMeta.nodeName}.active = $active`);
74
75
  }
75
76
  const where = whereParams.length > 0 ? `WHERE ${whereParams.join(" AND ")}` : "";
77
+ const priceWhere = params?.active === true ? `WHERE ${stripe_product_meta_1.stripeProductMeta.nodeName}_${stripe_price_meta_1.stripePriceMeta.nodeName}.active = true` : "";
76
78
  query.query = `
77
79
  MATCH (${stripe_product_meta_1.stripeProductMeta.nodeName}:${stripe_product_meta_1.stripeProductMeta.labelName})
78
80
  ${where}
79
81
  OPTIONAL MATCH (${stripe_product_meta_1.stripeProductMeta.nodeName})<-[:BELONGS_TO]-(${stripe_product_meta_1.stripeProductMeta.nodeName}_${stripe_price_meta_1.stripePriceMeta.nodeName}:${stripe_price_meta_1.stripePriceMeta.labelName})
82
+ ${priceWhere}
80
83
  RETURN ${stripe_product_meta_1.stripeProductMeta.nodeName}, ${stripe_product_meta_1.stripeProductMeta.nodeName}_${stripe_price_meta_1.stripePriceMeta.nodeName}
81
84
  ORDER BY ${stripe_product_meta_1.stripeProductMeta.nodeName}.name
82
85
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-product.repository.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-product/repositories/stripe-product.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripe-product.repository.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-product/repositories/stripe-product.repository.ts"],"names":[],"mappings":"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"}
@@ -29,5 +29,22 @@ export declare class FeatureSyncService {
29
29
  removeFeaturesOnSubscriptionEnd(params: {
30
30
  stripeSubscriptionId: string;
31
31
  }): Promise<FeatureSyncResult>;
32
+ /**
33
+ * Replace price features on company when a subscription changes price (upgrade or downgrade)
34
+ * Adds the new price's features, then removes the previous price's features the new price
35
+ * lacks. SMART REMOVAL: a feature still granted by another active subscription is kept.
36
+ *
37
+ * @param params.stripeSubscriptionId - Stripe subscription ID, already synced to the new price
38
+ * @param params.previousStripePriceId - Stripe price ID the subscription had before the change
39
+ */
40
+ replaceFeaturesOnPlanChange(params: {
41
+ stripeSubscriptionId: string;
42
+ previousStripePriceId: string;
43
+ }): Promise<FeatureSyncResult>;
44
+ /**
45
+ * Collect the feature IDs granted by a customer's active recurring subscriptions,
46
+ * excluding one subscription (the one being ended or changed)
47
+ */
48
+ private findFeatureIdsOfOtherActiveSubscriptions;
32
49
  }
33
50
  //# sourceMappingURL=feature-sync.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-sync.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/services/feature-sync.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAE9F,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,sBAAsB,EAAE,4BAA4B,EACpD,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,qBAAqB,EAC5C,MAAM,EAAE,iBAAiB;IAG5C;;;OAGG;IACG,qBAAqB,CAAC,MAAM,EAAE;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyDjG;;;OAGG;IACG,+BAA+B,CAAC,MAAM,EAAE;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAuF5G"}
1
+ {"version":3,"file":"feature-sync.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/services/feature-sync.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAE9F,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,sBAAsB,EAAE,4BAA4B,EACpD,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,qBAAqB,EAC5C,MAAM,EAAE,iBAAiB;IAG5C;;;OAGG;IACG,qBAAqB,CAAC,MAAM,EAAE;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyDjG;;;OAGG;IACG,+BAA+B,CAAC,MAAM,EAAE;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0E3G;;;;;;;OAOG;IACG,2BAA2B,CAAC,MAAM,EAAE;QACxC,oBAAoB,EAAE,MAAM,CAAC;QAC7B,qBAAqB,EAAE,MAAM,CAAC;KAC/B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4E9B;;;OAGG;YACW,wCAAwC;CAwBvD"}
@@ -106,25 +106,12 @@ let FeatureSyncService = class FeatureSyncService {
106
106
  return { success: false, reason: "Company not found" };
107
107
  }
108
108
  // 5. SMART REMOVAL LOGIC:
109
- // a. Get all OTHER active subscriptions for this company's customer
110
- const otherActiveFeatureIds = new Set();
111
- const allSubscriptions = await this.subscriptionRepository.findActiveByStripeCustomerId({
109
+ // a. Collect features granted by all OTHER active subscriptions of this customer
110
+ const otherActiveFeatureIds = await this.findFeatureIdsOfOtherActiveSubscriptions({
112
111
  stripeCustomerId: subscription.stripeCustomer?.stripeCustomerId ?? "",
112
+ excludeStripeSubscriptionId: params.stripeSubscriptionId,
113
113
  });
114
- // b. Collect features from all those active subscriptions
115
- for (const otherSub of allSubscriptions) {
116
- // Exclude the subscription being cancelled
117
- if (otherSub.stripeSubscriptionId === params.stripeSubscriptionId)
118
- continue;
119
- // Skip non-recurring
120
- if (otherSub.stripePrice?.priceType !== "recurring")
121
- continue;
122
- const otherPrice = await this.stripePriceRepository.findById({
123
- id: otherSub.stripePrice.id,
124
- });
125
- otherPrice?.feature?.forEach((f) => otherActiveFeatureIds.add(f.id));
126
- }
127
- // c. Only remove features NOT in that set
114
+ // b. Only remove features NOT in that set
128
115
  const featuresToRemove = priceFeatureIds.filter((id) => !otherActiveFeatureIds.has(id));
129
116
  if (featuresToRemove.length === 0) {
130
117
  this.logger.debug(`All features for price ${subscription.stripePrice.id} are covered by other active subscriptions - skipping removal`);
@@ -143,6 +130,97 @@ let FeatureSyncService = class FeatureSyncService {
143
130
  featuresRemoved: removedFeatureIds,
144
131
  };
145
132
  }
133
+ /**
134
+ * Replace price features on company when a subscription changes price (upgrade or downgrade)
135
+ * Adds the new price's features, then removes the previous price's features the new price
136
+ * lacks. SMART REMOVAL: a feature still granted by another active subscription is kept.
137
+ *
138
+ * @param params.stripeSubscriptionId - Stripe subscription ID, already synced to the new price
139
+ * @param params.previousStripePriceId - Stripe price ID the subscription had before the change
140
+ */
141
+ async replaceFeaturesOnPlanChange(params) {
142
+ // 1. Find subscription with its (new) price
143
+ const subscription = await this.subscriptionRepository.findByStripeSubscriptionId({
144
+ stripeSubscriptionId: params.stripeSubscriptionId,
145
+ });
146
+ if (!subscription) {
147
+ this.logger.warn(`Subscription ${params.stripeSubscriptionId} not found for plan change feature sync`);
148
+ return { success: false, reason: "Subscription not found" };
149
+ }
150
+ // 2. Skip if not recurring (priceType !== "recurring")
151
+ if (subscription.stripePrice?.priceType !== "recurring") {
152
+ this.logger.debug(`Skipping plan change feature sync for non-recurring price ${subscription.stripePrice?.id}`);
153
+ return { success: true, reason: "Not a recurring subscription" };
154
+ }
155
+ // 3. Get the new and the previous price's features
156
+ const newPrice = await this.stripePriceRepository.findById({
157
+ id: subscription.stripePrice.id,
158
+ });
159
+ const newFeatureIds = newPrice?.feature?.map((f) => f.id) ?? [];
160
+ const previousPrice = await this.stripePriceRepository.findByStripePriceId({
161
+ stripePriceId: params.previousStripePriceId,
162
+ });
163
+ const previousFeatureIds = previousPrice?.feature?.map((f) => f.id) ?? [];
164
+ // 4. Find company
165
+ const company = await this.companyRepository.findByStripeCustomerId({
166
+ stripeCustomerId: subscription.stripeCustomer?.id ?? "",
167
+ });
168
+ if (!company) {
169
+ this.logger.error(`Company not found for subscription ${params.stripeSubscriptionId}`);
170
+ return { success: false, reason: "Company not found" };
171
+ }
172
+ // 5. Add the new price's features - additive
173
+ const addedFeatureIds = newFeatureIds.length > 0
174
+ ? await this.companyRepository.addFeatures({ companyId: company.id, featureIds: newFeatureIds })
175
+ : [];
176
+ // 6. Remove the previous price's features the new price lacks, unless another active subscription grants them
177
+ const candidateFeatureIds = previousFeatureIds.filter((id) => !newFeatureIds.includes(id));
178
+ let removedFeatureIds = [];
179
+ if (candidateFeatureIds.length > 0) {
180
+ const otherActiveFeatureIds = await this.findFeatureIdsOfOtherActiveSubscriptions({
181
+ stripeCustomerId: subscription.stripeCustomer?.stripeCustomerId ?? "",
182
+ excludeStripeSubscriptionId: params.stripeSubscriptionId,
183
+ });
184
+ const featuresToRemove = candidateFeatureIds.filter((id) => !otherActiveFeatureIds.has(id));
185
+ if (featuresToRemove.length > 0) {
186
+ removedFeatureIds = await this.companyRepository.removeFeatures({
187
+ companyId: company.id,
188
+ featureIds: featuresToRemove,
189
+ });
190
+ }
191
+ }
192
+ // 7. Log and return result
193
+ this.logger.log(`Feature sync on plan change: Company ${company.id} - added ${addedFeatureIds.length}, removed ${removedFeatureIds.length} features (${params.previousStripePriceId} -> price ${subscription.stripePrice.id})`);
194
+ return {
195
+ success: true,
196
+ companyId: company.id,
197
+ featuresAdded: addedFeatureIds,
198
+ featuresRemoved: removedFeatureIds,
199
+ };
200
+ }
201
+ /**
202
+ * Collect the feature IDs granted by a customer's active recurring subscriptions,
203
+ * excluding one subscription (the one being ended or changed)
204
+ */
205
+ async findFeatureIdsOfOtherActiveSubscriptions(params) {
206
+ const featureIds = new Set();
207
+ const allSubscriptions = await this.subscriptionRepository.findActiveByStripeCustomerId({
208
+ stripeCustomerId: params.stripeCustomerId,
209
+ });
210
+ for (const otherSub of allSubscriptions) {
211
+ // Exclude the subscription being ended or changed
212
+ if (otherSub.stripeSubscriptionId === params.excludeStripeSubscriptionId)
213
+ continue;
214
+ // Skip non-recurring
215
+ if (otherSub.stripePrice?.priceType !== "recurring")
216
+ continue;
217
+ const otherPrice = await this.stripePriceRepository.findById({
218
+ id: otherSub.stripePrice.id,
219
+ });
220
+ otherPrice?.feature?.forEach((f) => featureIds.add(f.id));
221
+ }
222
+ return featureIds;
223
+ }
146
224
  };
147
225
  exports.FeatureSyncService = FeatureSyncService;
148
226
  exports.FeatureSyncService = FeatureSyncService = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"feature-sync.service.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/services/feature-sync.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-sync.service.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/services/feature-sync.service.ts"],"names":[],"mappings":"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"}
@@ -15,23 +15,6 @@ export interface CreateSubscriptionResult {
15
15
  paymentIntentId: string | null;
16
16
  requiresAction: boolean;
17
17
  }
18
- /**
19
- * StripeSubscriptionAdminService
20
- *
21
- * Manages subscription lifecycle for billing customers, coordinating between Stripe and the local database.
22
- * Provides comprehensive subscription management including creation, cancellation,
23
- * plan changes, and proration previews.
24
- *
25
- * Key Features:
26
- * - Create subscriptions with optional trials and custom quantities
27
- * - Cancel subscriptions (immediately or at period end)
28
- * - Change subscription plans with automatic proration
29
- * - Preview proration amounts before plan changes
30
- * - Sync subscription data from Stripe webhooks
31
- * - Filter subscriptions by status (active, canceled, past_due, etc.)
32
- *
33
- * All operations update both Stripe and the local Neo4j database to maintain consistency.
34
- */
35
18
  export declare class StripeSubscriptionAdminService extends AbstractService<StripeSubscription, typeof StripeSubscriptionDescriptor.relationships> {
36
19
  private readonly subscriptionRepository;
37
20
  private readonly stripeCustomerRepository;
@@ -184,7 +167,9 @@ export declare class StripeSubscriptionAdminService extends AbstractService<Stri
184
167
  /**
185
168
  * Change subscription plan
186
169
  *
187
- * Updates the subscription to a new price with automatic proration.
170
+ * Updates the subscription to a new price. A paid change invoices and charges the
171
+ * prorated difference at once; a trial upgrade ends the trial and charges the full price.
172
+ * A pending cancellation at period end is cleared.
188
173
  *
189
174
  * @param params - Parameters
190
175
  * @param params.id - Subscription ID
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription-admin.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/services/stripe-subscription-admin.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripe-subscription-admin.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/services/stripe-subscription-admin.service.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,15 @@ const subscription_payment_confirmation_1 = require("./subscription-payment-conf
46
46
  *
47
47
  * All operations update both Stripe and the local Neo4j database to maintain consistency.
48
48
  */
49
+ /**
50
+ * Whether an invoice line is a proration. Current Stripe API versions carry the flag
51
+ * under `parent.*_item_details`; older ones put it on the line itself.
52
+ */
53
+ function isProrationLine(line) {
54
+ return (line.parent?.subscription_item_details?.proration ??
55
+ line.parent?.invoice_item_details?.proration ??
56
+ line.proration === true);
57
+ }
49
58
  let StripeSubscriptionAdminService = StripeSubscriptionAdminService_1 = class StripeSubscriptionAdminService extends abstract_service_1.AbstractService {
50
59
  constructor(jsonApiService, subscriptionRepository, clsService, stripeCustomerRepository, stripePriceRepository, stripeSubscriptionApiService, stripeCustomerApiService, stripePaymentService, stripeCouponCodeCheckoutService) {
51
60
  super(jsonApiService, subscriptionRepository, clsService, stripe_subscription_1.StripeSubscriptionDescriptor.model);
@@ -304,7 +313,9 @@ let StripeSubscriptionAdminService = StripeSubscriptionAdminService_1 = class St
304
313
  /**
305
314
  * Change subscription plan
306
315
  *
307
- * Updates the subscription to a new price with automatic proration.
316
+ * Updates the subscription to a new price. A paid change invoices and charges the
317
+ * prorated difference at once; a trial upgrade ends the trial and charges the full price.
318
+ * A pending cancellation at period end is cleared.
308
319
  *
309
320
  * @param params - Parameters
310
321
  * @param params.id - Subscription ID
@@ -363,7 +374,10 @@ let StripeSubscriptionAdminService = StripeSubscriptionAdminService_1 = class St
363
374
  const stripeSubscription = await this.withDiscountSoldOutMapping(automatic, promotionCode, () => this.stripeSubscriptionApiService.updateSubscription({
364
375
  subscriptionId: subscription.stripeSubscriptionId,
365
376
  priceId: newPrice.stripePriceId,
366
- prorationBehavior: isTrialUpgrade ? "none" : "create_prorations",
377
+ // always_invoice charges the difference now; create_prorations would leave it pending until renewal
378
+ prorationBehavior: isTrialUpgrade ? "none" : "always_invoice",
379
+ // Changing plan means staying: a pending cancellation would otherwise end the new plan at period end
380
+ cancelAtPeriodEnd: false,
367
381
  promotionCode,
368
382
  trialEnd: isTrialUpgrade ? "now" : undefined,
369
383
  defaultPaymentMethodId,
@@ -380,10 +394,11 @@ let StripeSubscriptionAdminService = StripeSubscriptionAdminService_1 = class St
380
394
  status: stripeSubscription.status,
381
395
  currentPeriodStart: new Date(subscriptionItem.current_period_start * 1000),
382
396
  currentPeriodEnd: new Date(subscriptionItem.current_period_end * 1000),
397
+ cancelAtPeriodEnd: stripeSubscription.cancel_at_period_end,
383
398
  discount: (0, stripe_subscription_discount_1.discountFromStripeSubscription)(stripeSubscription),
384
399
  });
385
400
  const document = await this.jsonApiService.buildSingle(stripe_subscription_1.StripeSubscriptionDescriptor.model, updatedSubscription);
386
- // A trial upgrade charges at once; a card that asks for 3D Secure leaves the
401
+ // A trial upgrade and a paid change charge at once; a card that asks for 3D Secure leaves the
387
402
  // invoice open. The browser confirms it with the client secret in meta.
388
403
  const confirmation = (0, subscription_payment_confirmation_1.subscriptionPaymentConfirmation)(stripeSubscription);
389
404
  if (!confirmation.requiresAction)
@@ -463,7 +478,7 @@ let StripeSubscriptionAdminService = StripeSubscriptionAdminService_1 = class St
463
478
  // Calculate immediate charge from proration line items only
464
479
  // This represents the net amount charged NOW for the plan change
465
480
  const immediateCharge = prorationPreview.lines.data
466
- .filter((line) => line.proration === true)
481
+ .filter((line) => isProrationLine(line))
467
482
  .reduce((sum, line) => sum + line.amount, 0);
468
483
  return {
469
484
  subtotal: prorationPreview.subtotal,
@@ -476,7 +491,7 @@ let StripeSubscriptionAdminService = StripeSubscriptionAdminService_1 = class St
476
491
  lines: prorationPreview.lines.data.map((line) => ({
477
492
  description: line.description,
478
493
  amount: line.amount,
479
- proration: line.proration,
494
+ proration: isProrationLine(line),
480
495
  period: {
481
496
  start: line.period?.start ? new Date(line.period.start * 1000) : new Date(),
482
497
  end: line.period?.end ? new Date(line.period.end * 1000) : new Date(),