Merge pull request #51294 from Jatin3128/subscription-grace-status

fix(subscription): add grace period status while invoice in grace period
This commit is contained in:
ruthra kumar
2026-01-07 17:10:17 +05:30
committed by GitHub
3 changed files with 11 additions and 10 deletions

View File

@@ -51,7 +51,7 @@
"fieldtype": "Select",
"label": "Status",
"no_copy": 1,
"options": "\nTrialing\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted",
"options": "\nTrialing\nActive\nGrace Period\nCancelled\nUnpaid\nCompleted",
"read_only": 1
},
{
@@ -267,7 +267,7 @@
"link_fieldname": "subscription"
}
],
"modified": "2024-03-27 13:10:47.578120",
"modified": "2025-12-23 19:42:52.036034",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Subscription",
@@ -311,8 +311,9 @@
"write": 1
}
],
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -76,7 +76,7 @@ class Subscription(Document):
purchase_tax_template: DF.Link | None
sales_tax_template: DF.Link | None
start_date: DF.Date | None
status: DF.Literal["", "Trialing", "Active", "Past Due Date", "Cancelled", "Unpaid", "Completed"]
status: DF.Literal["", "Trialing", "Active", "Grace Period", "Cancelled", "Unpaid", "Completed"]
submit_invoice: DF.Check
trial_period_end: DF.Date | None
trial_period_start: DF.Date | None
@@ -232,7 +232,7 @@ class Subscription(Document):
self.status = self.get_status_for_past_grace_period()
self.cancelation_date = getdate(posting_date) if self.status == "Cancelled" else None
elif self.current_invoice_is_past_due() and not self.is_past_grace_period():
self.status = "Past Due Date"
self.status = "Grace Period"
elif not self.has_outstanding_invoice():
self.status = "Active"

View File

@@ -145,17 +145,17 @@ class TestSubscription(IntegrationTestCase):
subscription = create_subscription(start_date=add_days(nowdate(), -1000))
subscription.process(posting_date=subscription.current_invoice_end) # generate first invoice
self.assertEqual(subscription.status, "Past Due Date")
self.assertEqual(subscription.status, "Grace Period")
subscription.process()
# Grace period is 1000 days so status should remain as Past Due Date
self.assertEqual(subscription.status, "Past Due Date")
# Grace period is 1000 days so status should remain as Grace Period
self.assertEqual(subscription.status, "Grace Period")
subscription.process()
self.assertEqual(subscription.status, "Past Due Date")
self.assertEqual(subscription.status, "Grace Period")
subscription.process()
self.assertEqual(subscription.status, "Past Due Date")
self.assertEqual(subscription.status, "Grace Period")
settings.grace_period = grace_period
settings.save()