From 032823e112d1f2fb406419d74959dedb08da5ca1 Mon Sep 17 00:00:00 2001 From: Uku Taht Date: Mon, 4 Dec 2023 14:31:33 +0200 Subject: [PATCH] Add last_bill_date to new subscriptions (#3588) * Add last_bill_date to new subscriptions * Remove leftover test code Co-authored-by: RobertJoonas <56999674+RobertJoonas@users.noreply.github.com> --------- Co-authored-by: RobertJoonas <56999674+RobertJoonas@users.noreply.github.com> --- lib/plausible/billing/billing.ex | 14 +++++++++++++- test/plausible/billing/billing_test.exs | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/plausible/billing/billing.ex b/lib/plausible/billing/billing.ex index 626b813b5..af4cafe46 100644 --- a/lib/plausible/billing/billing.ex +++ b/lib/plausible/billing/billing.ex @@ -139,8 +139,10 @@ defmodule Plausible.Billing do Map.put(params, "passthrough", user && user.id) end + subscription_params = format_subscription(params) |> add_last_bill_date(params) + %Subscription{} - |> Subscription.changeset(format_subscription(params)) + |> Subscription.changeset(subscription_params) |> Repo.insert!() |> after_subscription_update() end @@ -212,6 +214,16 @@ defmodule Plausible.Billing do } end + defp add_last_bill_date(subscription_params, paddle_params) do + with datetime_str when is_binary(datetime_str) <- paddle_params["event_time"], + {:ok, datetime} <- NaiveDateTime.from_iso8601(datetime_str), + date <- NaiveDateTime.to_date(datetime) do + Map.put(subscription_params, :last_bill_date, date) + else + _ -> subscription_params + end + end + defp present?(""), do: false defp present?(nil), do: false defp present?(_), do: true diff --git a/test/plausible/billing/billing_test.exs b/test/plausible/billing/billing_test.exs index dfc025e57..ce3347bd4 100644 --- a/test/plausible/billing/billing_test.exs +++ b/test/plausible/billing/billing_test.exs @@ -116,6 +116,7 @@ defmodule Plausible.BillingTest do @plan_id_100k "654178" @subscription_created_params %{ + "event_time" => "2019-05-01 01:03:52", "alert_name" => "subscription_created", "passthrough" => "", "email" => "", @@ -153,6 +154,7 @@ defmodule Plausible.BillingTest do subscription = Repo.get_by(Plausible.Billing.Subscription, user_id: user.id) assert subscription.paddle_subscription_id == @subscription_id assert subscription.next_bill_date == ~D[2019-06-01] + assert subscription.last_bill_date == ~D[2019-05-01] assert subscription.next_bill_amount == "6.00" assert subscription.currency_code == "EUR" end @@ -166,6 +168,7 @@ defmodule Plausible.BillingTest do subscription = Repo.get_by(Plausible.Billing.Subscription, user_id: user.id) assert subscription.paddle_subscription_id == @subscription_id assert subscription.next_bill_date == ~D[2019-06-01] + assert subscription.last_bill_date == ~D[2019-05-01] assert subscription.next_bill_amount == "6.00" end