fix(subscription): add grace period status while invoice in grace period

This commit is contained in:
Jatin3128
2025-12-23 19:58:45 +05:30
parent 48c53c06ce
commit 489a035637
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

@@ -77,7 +77,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
@@ -229,7 +229,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

@@ -144,17 +144,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()