From 6f03a694b34230313b057885c2fcf73ca8a43afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Capote=20P=C3=A9rez-Andreu?= Date: Tue, 25 Feb 2020 16:28:03 +0000 Subject: [PATCH] Update transaction id even if civicrm_stripe_subscriptions had contribution_recur_id empty --- api/v3/StripeSubscription.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/api/v3/StripeSubscription.php b/api/v3/StripeSubscription.php index 9c0b288..ffcdedf 100644 --- a/api/v3/StripeSubscription.php +++ b/api/v3/StripeSubscription.php @@ -87,7 +87,24 @@ function civicrm_api3_stripe_subscription_updatetransactionids() { throw new CiviCRM_API3_Exception('Table civicrm_stripe_subscriptions is not used in Stripe >=5.2 and does not exist on your install. This API will be removed in a future release.'); } - $sql = "SELECT subscription_id, contribution_recur_id FROM civicrm_stripe_subscriptions"; + $sql = "SELECT + sub.subscription_id, + COALESCE( + sub.contribution_recur_id, + recur.contribution_recur_id + ) AS contribution_recur_id + FROM civicrm_stripe_subscriptions AS sub + JOIN ( + SELECT + MAX(r.id) AS contribution_recur_id, + r.trxn_id + FROM civicrm_contribution_recur AS r + WHERE + r.trxn_id IS NOT NULL + GROUP BY + r.trxn_id + HAVING COUNT(*) = 1 + ) AS recur ON sub.invoice_id = recur.trxn_id"; $dao = CRM_Core_DAO::executeQuery($sql); $counts = [ 'success' => 0, -- GitLab