sets Subscription doc status in `before_save`
diff --git a/erpnext/accounts/doctype/subscriptions/subscriptions.py b/erpnext/accounts/doctype/subscriptions/subscriptions.py
index 353e83d..98f1548 100644
--- a/erpnext/accounts/doctype/subscriptions/subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/subscriptions.py
@@ -27,3 +27,18 @@
 
 	def set_current_invoice_end(self):
 		self.current_invoice_end = get_last_day(self.current_invoice_start)
+
+	def before_save(self):
+		self.set_status()
+
+	def set_status(self):
+		if self.is_trialling():
+			self.status = 'Trialling'
+		elif self.status == 'Past Due' and self.is_past_grace_period():
+			self.status = 'Canceled' if cint(SUBSCRIPTION_SETTINGS.cancel_after_grace) else 'Unpaid'
+		elif self.current_invoice_is_past_due():
+			self.status = 'Past Due'
+		elif self.is_new_subscription():
+			self.status = 'Active'
+			# todo: then generate new invoice
+