From d2be988e5fb2801345fbe22e5469fd459f8a688a Mon Sep 17 00:00:00 2001 From: Christopher Rogers Date: Mon, 15 Jul 2024 23:59:28 -0700 Subject: [PATCH] Allows subscription quantities of zero on Pricing instances --- lib/recurly/pricing/subscription/calculations.js | 4 +++- lib/recurly/pricing/subscription/index.js | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/recurly/pricing/subscription/calculations.js b/lib/recurly/pricing/subscription/calculations.js index c2dfb271d..b22d02c31 100644 --- a/lib/recurly/pricing/subscription/calculations.js +++ b/lib/recurly/pricing/subscription/calculations.js @@ -272,7 +272,9 @@ export default class Calculations { const plan = this.items.plan; if (!plan) return { amount: 0, setup_fee: 0 }; let price = plan.price[this.items.currency]; - price.amount = price.unit_amount * (plan.quantity || 1); + let quantity = parseInt(plan.quantity, 10); + if (isNaN(quantity)) quantity = 1; + price.amount = price.unit_amount * quantity; return price; } diff --git a/lib/recurly/pricing/subscription/index.js b/lib/recurly/pricing/subscription/index.js index 2acc5937f..3d8026819 100644 --- a/lib/recurly/pricing/subscription/index.js +++ b/lib/recurly/pricing/subscription/index.js @@ -371,8 +371,9 @@ export default class SubscriptionPricing extends Pricing { // options.quantity, plan.quantity, 1 if (plan && plan.quantity) quantity = plan.quantity; - if (options.quantity) quantity = parseInt(options.quantity, 10); - if (!quantity || quantity < 1) quantity = 1; + + if ('quantity' in options) quantity = parseInt(options.quantity, 10); + if (isNaN(quantity) || quantity < 0) quantity = 1; return { currentPlan: plan, quantity, planCode, options, done }; }