From 2912d48579d189f6b14339e2dd12bc5df812061c Mon Sep 17 00:00:00 2001 From: Lauryn Menard Date: Tue, 27 May 2025 16:33:25 +0200 Subject: [PATCH] corporate: Rename CustomerPlan.invoice_overdue_email_sent field. Renames invoice_overdue_email_sent to stale_audit_log_data_email_sent to better reflect the email and state that field is tracking for the CustomerPlan. --- corporate/lib/stripe.py | 18 +++++++++--------- ..._customerplan_invoice_overdue_email_sent.py | 17 +++++++++++++++++ corporate/models/plans.py | 6 +++--- corporate/tests/test_stripe.py | 8 ++++---- 4 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 corporate/migrations/0046_rename_customerplan_invoice_overdue_email_sent.py diff --git a/corporate/lib/stripe.py b/corporate/lib/stripe.py index 84195f89f8..afeb36308a 100644 --- a/corporate/lib/stripe.py +++ b/corporate/lib/stripe.py @@ -3353,11 +3353,11 @@ class BillingSession(ABC): plan.invoicing_status = CustomerPlan.INVOICING_STATUS_DONE plan.next_invoice_date = next_invoice_date(plan) - plan.invoice_overdue_email_sent = False + plan.stale_audit_log_data_email_sent = False plan.save( update_fields=[ "next_invoice_date", - "invoice_overdue_email_sent", + "stale_audit_log_data_email_sent", "invoicing_status", ] ) @@ -5456,7 +5456,7 @@ def maybe_send_fixed_price_plan_renewal_reminder_email( plan.save(update_fields=["reminder_to_review_plan_email_sent"]) -def maybe_send_invoice_overdue_email( +def maybe_send_stale_audit_log_data_email( plan: CustomerPlan, billing_session: BillingSession, next_invoice_date: datetime, @@ -5478,8 +5478,8 @@ def maybe_send_invoice_overdue_email( from_address=FromAddress.tokenized_no_reply_address(), context=context, ) - plan.invoice_overdue_email_sent = True - plan.save(update_fields=["invoice_overdue_email_sent"]) + plan.stale_audit_log_data_email_sent = True + plan.save(update_fields=["stale_audit_log_data_email_sent"]) return if next_invoice_date - last_audit_log_update < timedelta(days=1): # nocoverage @@ -5500,8 +5500,8 @@ def maybe_send_invoice_overdue_email( from_address=FromAddress.tokenized_no_reply_address(), context=context, ) - plan.invoice_overdue_email_sent = True - plan.save(update_fields=["invoice_overdue_email_sent"]) + plan.stale_audit_log_data_email_sent = True + plan.save(update_fields=["stale_audit_log_data_email_sent"]) def check_remote_server_audit_log_data( @@ -5517,8 +5517,8 @@ def check_remote_server_audit_log_data( next_invoice_date = plan.next_invoice_date last_audit_log_update = remote_server.last_audit_log_update if last_audit_log_update is None or next_invoice_date > last_audit_log_update: - if not plan.invoice_overdue_email_sent: - maybe_send_invoice_overdue_email( + if not plan.stale_audit_log_data_email_sent: + maybe_send_stale_audit_log_data_email( plan, billing_session, next_invoice_date, last_audit_log_update ) diff --git a/corporate/migrations/0046_rename_customerplan_invoice_overdue_email_sent.py b/corporate/migrations/0046_rename_customerplan_invoice_overdue_email_sent.py new file mode 100644 index 0000000000..96cdcdc7b7 --- /dev/null +++ b/corporate/migrations/0046_rename_customerplan_invoice_overdue_email_sent.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.8 on 2025-05-27 14:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("corporate", "0045_zulipsponsorshiprequest_plan_to_use_zulip"), + ] + + operations = [ + migrations.RenameField( + model_name="customerplan", + old_name="invoice_overdue_email_sent", + new_name="stale_audit_log_data_email_sent", + ), + ] diff --git a/corporate/models/plans.py b/corporate/models/plans.py index 415682e0de..229c571650 100644 --- a/corporate/models/plans.py +++ b/corporate/models/plans.py @@ -110,10 +110,10 @@ class CustomerPlan(AbstractCustomerPlan): # next_invoice_date. next_invoice_date = models.DateTimeField(db_index=True, null=True) - # Flag to track if an email has been sent to Zulip team for - # invoice overdue by >= one day. Helps to send an email only once + # Flag to track if an email has been sent to Zulip team for delay + # of invoicing by >= one day. Helps to send an email only once # and not every time when cron run. - invoice_overdue_email_sent = models.BooleanField(default=False) + stale_audit_log_data_email_sent = models.BooleanField(default=False) # Flag to track if an email has been sent to Zulip team to # review the pricing, 60 days before the end date. Helps to send diff --git a/corporate/tests/test_stripe.py b/corporate/tests/test_stripe.py index 1f143a1ce7..1560ee8dd1 100644 --- a/corporate/tests/test_stripe.py +++ b/corporate/tests/test_stripe.py @@ -8724,7 +8724,7 @@ class TestRemoteRealmBillingFlow(StripeTestCase, RemoteRealmBillingTestCase): invoice_plans_as_needed(self.next_month) plan.refresh_from_db() self.assertEqual(plan.next_invoice_date, self.next_month) - self.assertTrue(plan.invoice_overdue_email_sent) + self.assertTrue(plan.stale_audit_log_data_email_sent) from django.core.mail import outbox @@ -8762,7 +8762,7 @@ class TestRemoteRealmBillingFlow(StripeTestCase, RemoteRealmBillingTestCase): invoice_plans_as_needed(self.next_month) plan.refresh_from_db() self.assertEqual(plan.next_invoice_date, add_months(self.next_month, 1)) - self.assertFalse(plan.invoice_overdue_email_sent) + self.assertFalse(plan.stale_audit_log_data_email_sent) assert customer.stripe_customer_id [invoice0, invoice1] = iter(stripe.Invoice.list(customer=customer.stripe_customer_id)) @@ -10265,7 +10265,7 @@ class TestRemoteServerBillingFlow(StripeTestCase, RemoteServerTestCase): invoice_plans_as_needed(self.next_month) plan.refresh_from_db() self.assertEqual(plan.next_invoice_date, self.next_month) - self.assertTrue(plan.invoice_overdue_email_sent) + self.assertTrue(plan.stale_audit_log_data_email_sent) from django.core.mail import outbox @@ -10303,7 +10303,7 @@ class TestRemoteServerBillingFlow(StripeTestCase, RemoteServerTestCase): invoice_plans_as_needed(self.next_month) plan.refresh_from_db() self.assertEqual(plan.next_invoice_date, add_months(self.next_month, 1)) - self.assertFalse(plan.invoice_overdue_email_sent) + self.assertFalse(plan.stale_audit_log_data_email_sent) assert customer.stripe_customer_id [invoice0, invoice1] = iter(stripe.Invoice.list(customer=customer.stripe_customer_id))