From d43422c18e76c445ced198d2ecd457633c6db806 Mon Sep 17 00:00:00 2001 From: tundebabzy Date: Sat, 3 Mar 2018 07:37:59 +0100 Subject: [PATCH] enhancement: ensure subscription is cancelled before attempting to restart --- .../accounts/doctype/subscriptions/subscriptions.py | 13 ++++++++----- .../doctype/subscriptions/test_subscriptions.py | 10 ++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/erpnext/accounts/doctype/subscriptions/subscriptions.py b/erpnext/accounts/doctype/subscriptions/subscriptions.py index ed1d3534a2..6264972a98 100644 --- a/erpnext/accounts/doctype/subscriptions/subscriptions.py +++ b/erpnext/accounts/doctype/subscriptions/subscriptions.py @@ -410,11 +410,14 @@ class Subscriptions(Document): subscription and the `Subscription` will lose all the history of generated invoices it has. """ - self.status = 'Active' - self.db_set('start', nowdate()) - self.update_subscription_period(nowdate()) - self.invoices = [] - self.save() + if self.status == 'Canceled': + self.status = 'Active' + self.db_set('start', nowdate()) + self.update_subscription_period(nowdate()) + self.invoices = [] + self.save() + else: + frappe.throw(_('You cannot restart a Subscription that is not cancelled.')) def process_all(): diff --git a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py index ad1eb2113b..4452e631fb 100644 --- a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py +++ b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py @@ -447,3 +447,13 @@ class TestSubscriptions(unittest.TestCase): settings.cancel_after_grace = default_grace_period_action settings.save() subscription.delete() + + def test_restart_active_subscription(self): + subscription = frappe.new_doc('Subscriptions') + subscription.subscriber = '_Test Customer' + subscription.append('plans', {'plan': '_Test Plan Name'}) + subscription.save() + + self.assertRaises(frappe.ValidationError, subscription.restart_subscription) + + subscription.delete()