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>
This commit is contained in:
Uku Taht 2023-12-04 14:31:33 +02:00 committed by GitHub
parent 44d71c8c0e
commit 032823e112
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -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

View File

@ -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