adds test cases and fix resulting bugs
diff --git a/erpnext/accounts/doctype/subscriptions/subscriptions.py b/erpnext/accounts/doctype/subscriptions/subscriptions.py
index d2bda3d..6b6fc5f 100644
--- a/erpnext/accounts/doctype/subscriptions/subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/subscriptions.py
@@ -28,7 +28,10 @@
 			self.current_invoice_start = self.trial_period_start
 
 	def set_current_invoice_end(self):
-		self.current_invoice_end = get_last_day(self.current_invoice_start)
+		if self.is_trialling():
+			self.current_invoice_end = self.trial_period_end
+		else:
+			self.current_invoice_end = get_last_day(self.current_invoice_start)
 
 	def before_save(self):
 		self.set_status()
diff --git a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
index 27f67e4..65c9423 100644
--- a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
@@ -5,6 +5,57 @@
 
 import frappe
 import unittest
+from frappe.utils.data import nowdate, add_days, get_last_day
+
 
 class TestSubscriptions(unittest.TestCase):
-	pass
+	def create_plan(self):
+		if not frappe.db.exists('Subscription Plan', '_Test Plan Name'):
+			plan = frappe.new_doc('Subscription Plan')
+			plan.plan_name = '_Test Plan Name'
+			plan.item = '_Test Non Stock Item'
+			plan.cost = 999.99
+			plan.billing_interval = 'Month'
+			plan.billing_interval_count = 1
+			plan.insert()
+
+	def create_subscriber(self):
+		if not frappe.db.exists('Subscriber', '_Test Customer'):
+			subscriber = frappe.new_doc('Subscriber')
+			subscriber.subscriber_name = '_Test Customer'
+			subscriber.customer = '_Test Customer'
+			subscriber.insert()
+
+	def setUp(self):
+		self.create_plan()
+		self.create_subscriber()
+
+	def test_create_subscription_with_trial_with_correct_period(self):
+		subscription = frappe.new_doc('Subscriptions')
+		subscription.subscriber = '_Test Customer'
+		subscription.trial_period_start = nowdate()
+		subscription.trial_period_end = add_days(nowdate(), 30)
+		subscription.append('plans', {'plan': '_Test Plan Name'})
+		subscription.save()
+
+		self.assertEqual(subscription.trial_period_start, nowdate())
+		self.assertEqual(subscription.trial_period_end, add_days(nowdate(), 30))
+		self.assertEqual(subscription.trial_period_start, subscription.current_invoice_start)
+		self.assertEqual(subscription.trial_period_end, subscription.current_invoice_end)
+		self.assertEqual(subscription.invoices, [])
+
+		subscription.delete()
+
+	def test_create_subscription_without_trial_with_correct_period(self):
+		subscription = frappe.new_doc('Subscriptions')
+		subscription.subscriber = '_Test Customer'
+		subscription.append('plans', {'plan': '_Test Plan Name'})
+		subscription.save()
+
+		self.assertEqual(subscription.trial_period_start, None)
+		self.assertEqual(subscription.trial_period_end, None)
+		self.assertEqual(subscription.current_invoice_start, nowdate())
+		self.assertEqual(subscription.current_invoice_end, get_last_day(nowdate()))
+		self.assertEqual(len(subscription.invoices), 1)
+
+		subscription.delete()
\ No newline at end of file