diff --git a/erpnext/accounts/doctype/subscriptions/subscriptions.py b/erpnext/accounts/doctype/subscriptions/subscriptions.py
index 23bb05d..2fd2fd6 100644
--- a/erpnext/accounts/doctype/subscriptions/subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/subscriptions.py
@@ -3,10 +3,11 @@
 # For license information, please see license.txt
 
 from __future__ import unicode_literals
+
 import frappe
-from frappe.model.document import Document
-from frappe.utils.data import now, nowdate, getdate, cint, add_days, date_diff, get_last_day, get_first_day, add_to_date
 from frappe import _
+from frappe.model.document import Document
+from frappe.utils.data import nowdate, getdate, cint, add_days, date_diff, get_last_day, add_to_date
 
 
 class Subscriptions(Document):
@@ -67,7 +68,8 @@
 		"""
 		return self.get_billing_cycle_data()
 
-	def validate_plans_billing_cycle(self, billing_cycle_data):
+	@staticmethod
+	def validate_plans_billing_cycle(billing_cycle_data):
 		"""
 		Makes sure that all `Subscription Plan` in the `Subscription` have the
 		same billing interval
@@ -112,7 +114,7 @@
 			elif interval == 'Month':
 				data['months'] = interval_count
 			elif interval == 'Year':
-				data['years'] == interval_count
+				data['years'] = interval_count
 			# todo: test week
 			elif interval == 'Week':
 				data['days'] = interval_count * 7 - 1
@@ -154,7 +156,8 @@
 		"""
 		return not self.period_has_passed(self.trial_period_end) and self.is_new_subscription()
 
-	def period_has_passed(self, end_date):
+	@staticmethod
+	def period_has_passed(end_date):
 		"""
 		Returns true if the given `end_date` has passed
 		"""
@@ -198,7 +201,7 @@
 				doc = frappe.get_doc('Sales Invoice', current.invoice)
 				return doc
 			else:
-				frappe.throw(_('Invoice {0} no longer exists'.format(invoice.invoice)))
+				frappe.throw(_('Invoice {0} no longer exists'.format(current.invoice)))
 
 	def is_new_subscription(self):
 		"""
@@ -282,7 +285,8 @@
 
 		return invoice
 
-	def get_customer(self, subscriber_name):
+	@staticmethod
+	def get_customer(subscriber_name):
 		"""
 		Returns the `Customer` linked to the `Subscriber`
 		"""
@@ -302,7 +306,7 @@
 			)
 
 		elif plan_items:
-			prorate_factor = self.get_proration_factor(self.current_invoice_end, self.current_invoice_start)
+			prorate_factor = get_prorata_factor(self.current_invoice_end, self.current_invoice_start)
 
 			item_names = frappe.db.sql(
 				'select item as item_code, cost * %s as rate from `tabSubscription Plan` where name in %s',
@@ -311,13 +315,6 @@
 
 		return item_names
 
-	def get_proration_factor(self, period_end, period_start):
-		diff = date_diff(nowdate(), period_start) + 1
-		plan_days = date_diff(period_end, period_start) + 1
-		prorate_factor = diff/plan_days
-
-		return prorate_factor
-
 	def process(self):
 		"""
 		To be called by task periodically. It checks the subscription and takes appropriate action
@@ -379,7 +376,8 @@
 			else:
 				self.set_status_grace_period()
 
-	def is_not_outstanding(self, invoice):
+	@staticmethod
+	def is_not_outstanding(invoice):
 		"""
 		Return `True` if the given invoice is paid
 		"""
@@ -394,7 +392,6 @@
 			return False
 		else:
 			return not self.is_not_outstanding(current_invoice)
-		return True
 
 	def cancel_subscription(self):
 		"""
@@ -457,6 +454,14 @@
 			frappe.db.commit()
 
 
+def get_prorata_factor(period_end, period_start):
+	diff = date_diff(nowdate(), period_start) + 1
+	plan_days = date_diff(period_end, period_start) + 1
+	prorate_factor = diff/plan_days
+
+	return prorate_factor
+
+
 @frappe.whitelist()
 def cancel_subscription(name):
 	"""
diff --git a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
index b2975d7..627ebdd 100644
--- a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
@@ -3,10 +3,11 @@
 # See license.txt
 from __future__ import unicode_literals
 
-import frappe
 import unittest
-from frappe.utils.data import nowdate, add_days, get_last_day, cint, getdate, add_to_date, get_datetime_str, add_months, date_diff
-from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
+
+import frappe
+from erpnext.accounts.doctype.subscriptions.subscriptions import get_prorata_factor
+from frappe.utils.data import nowdate, add_days, add_to_date, add_months, date_diff
 
 
 class TestSubscriptions(unittest.TestCase):
@@ -156,7 +157,7 @@
 		subscription.append('plans', {'plan': '_Test Plan Name'})
 		subscription.start = '2018-01-01'
 		subscription.insert()
-		subscription.process()	# generate first invoice
+		subscription.process()		# generate first invoice
 
 		self.assertEqual(subscription.status, 'Past Due Date')
 
@@ -179,7 +180,7 @@
 		subscription.append('plans', {'plan': '_Test Plan Name'})
 		subscription.start = '2018-01-01'
 		subscription.insert()
-		subscription.process()	# generate first invoice
+		subscription.process()		# generate first invoice
 
 		self.assertEqual(subscription.status, 'Past Due Date')
 
@@ -198,13 +199,13 @@
 		subscription.days_until_due = 10
 		subscription.start = add_months(nowdate(), -1)
 		subscription.insert()
-		subscription.process()	# generate first invoice
+		subscription.process()		# generate first invoice
 		self.assertEqual(len(subscription.invoices), 1)
 		self.assertEqual(subscription.status, 'Active')
 
 		subscription.delete()
 
-	def test_subcription_is_past_due_doesnt_change_within_grace_period(self):
+	def test_subscription_is_past_due_doesnt_change_within_grace_period(self):
 		settings = frappe.get_single('Subscription Settings')
 		grace_period = settings.grace_period
 		settings.grace_period = 1000
@@ -215,7 +216,7 @@
 		subscription.append('plans', {'plan': '_Test Plan Name'})
 		subscription.start = '2018-01-01'
 		subscription.insert()
-		subscription.process()	# generate first invoice
+		subscription.process()		# generate first invoice
 
 		self.assertEqual(subscription.status, 'Past Due Date')
 
@@ -238,20 +239,20 @@
 		subscription.subscriber = '_Test Customer'
 		subscription.append('plans', {'plan': '_Test Plan Name'})
 		subscription.save()
-		subscription.process()	# no changes expected
+		subscription.process()		# no changes expected
 
 		self.assertEqual(subscription.status, 'Active')
 		self.assertEqual(subscription.current_invoice_start, nowdate())
 		self.assertEqual(subscription.current_invoice_end, add_to_date(nowdate(), months=1, days=-1))
 		self.assertEqual(len(subscription.invoices), 0)
 		
-		subscription.process()	# no changes expected still
+		subscription.process()		# no changes expected still
 		self.assertEqual(subscription.status, 'Active')
 		self.assertEqual(subscription.current_invoice_start, nowdate())
 		self.assertEqual(subscription.current_invoice_end, add_to_date(nowdate(), months=1, days=-1))
 		self.assertEqual(len(subscription.invoices), 0)
 
-		subscription.process()	# no changes expected yet still
+		subscription.process()		# no changes expected yet still
 		self.assertEqual(subscription.status, 'Active')
 		self.assertEqual(subscription.current_invoice_start, nowdate())
 		self.assertEqual(subscription.current_invoice_end, add_to_date(nowdate(), months=1, days=-1))
@@ -259,7 +260,7 @@
 
 		subscription.delete()
 
-	def test_subcription_cancelation(self):
+	def test_subscription_cancelation(self):
 		subscription = frappe.new_doc('Subscriptions')
 		subscription.subscriber = '_Test Customer'
 		subscription.append('plans', {'plan': '_Test Plan Name'})
@@ -270,7 +271,7 @@
 
 		subscription.delete()
 
-	def test_subscription_cancelation_invoices(self):
+	def test_subscription_cancellation_invoices(self):
 		subscription = frappe.new_doc('Subscriptions')
 		subscription.subscriber = '_Test Customer'
 		subscription.append('plans', {'plan': '_Test Plan Name'})
@@ -288,16 +289,15 @@
 		prorate_factor = diff/plan_days
 
 		self.assertEqual(
-			subscription.get_proration_factor(
-				subscription.current_invoice_end, 
-				subscription.current_invoice_start
-			), prorate_factor)
+			get_prorata_factor(subscription.current_invoice_end, subscription.current_invoice_start),
+			prorate_factor
+		)
 		self.assertEqual(invoice.grand_total, prorate_factor * 900)
 		self.assertEqual(subscription.status, 'Canceled')
 
 		subscription.delete()
 
-	def test_subscription_cancellation_invoices_with_proration_false(self):
+	def test_subscription_cancellation_invoices_with_prorata_false(self):
 		settings = frappe.get_single('Subscription Settings')
 		to_prorate = settings.prorate
 		settings.prorate = 0
@@ -317,7 +317,7 @@
 
 		subscription.delete()
 
-	def test_subscription_cancellation_invoices_with_proration_true(self):
+	def test_subscription_cancellation_invoices_with_prorata_true(self):
 		settings = frappe.get_single('Subscription Settings')
 		to_prorate = settings.prorate
 		settings.prorate = 1
@@ -341,7 +341,7 @@
 
 		subscription.delete()
 
-	def test_subcription_cancelation_and_process(self):
+	def test_subcription_cancellation_and_process(self):
 		settings = frappe.get_single('Subscription Settings')
 		default_grace_period_action = settings.cancel_after_grace
 		settings.cancel_after_grace = 1
@@ -386,7 +386,7 @@
 		subscription.append('plans', {'plan': '_Test Plan Name'})
 		subscription.start = '2018-01-01'
 		subscription.insert()
-		subscription.process()	# generate first invoice
+		subscription.process()		# generate first invoice
 
 		self.assertEqual(subscription.status, 'Past Due Date')
 
@@ -423,7 +423,7 @@
 		subscription.append('plans', {'plan': '_Test Plan Name'})
 		subscription.start = '2018-01-01'
 		subscription.insert()
-		subscription.process()	# generate first invoice
+		subscription.process()		# generate first invoice
 
 		self.assertEqual(subscription.status, 'Past Due Date')
 
