diff --git a/erpnext/demo/user/hr.py b/erpnext/demo/user/hr.py
index b801686..db2d167 100644
--- a/erpnext/demo/user/hr.py
+++ b/erpnext/demo/user/hr.py
@@ -19,29 +19,25 @@
 
 	# payroll entry
 	if not frappe.db.sql('select name from `tabSalary Slip` where month(adddate(start_date, interval 1 month))=month(curdate())'):
-		# process payroll for previous month
-		payroll_entry = frappe.new_doc("Payroll Entry")
-		payroll_entry.company = frappe.flags.company
-		payroll_entry.payroll_frequency = 'Monthly'
-
-		# select a posting date from the previous month
-		payroll_entry.posting_date = get_last_day(getdate(frappe.flags.current_date) - datetime.timedelta(days=10))
-		payroll_entry.payment_account = frappe.get_value('Account', {'account_type': 'Cash', 'company': erpnext.get_default_company(),'is_group':0}, "name")
-
-		payroll_entry.set_start_end_dates()
-
 		# based on frequency
+		payroll_entry = get_payroll_entry()
 		payroll_entry.salary_slip_based_on_timesheet = 0
+		payroll_entry.save()
 		payroll_entry.create_salary_slips()
 		payroll_entry.submit_salary_slips()
 		payroll_entry.make_accrual_jv_entry()
+		payroll_entry.submit()
 		# payroll_entry.make_journal_entry(reference_date=frappe.flags.current_date,
 		# 	reference_number=random_string(10))
 
+		# based on timesheet
+		payroll_entry = get_payroll_entry()
 		payroll_entry.salary_slip_based_on_timesheet = 1
+		payroll_entry.save()
 		payroll_entry.create_salary_slips()
 		payroll_entry.submit_salary_slips()
 		payroll_entry.make_accrual_jv_entry()
+		payroll_entry.submit()
 		# payroll_entry.make_journal_entry(reference_date=frappe.flags.current_date,
 		# 	reference_number=random_string(10))
 
@@ -72,6 +68,19 @@
 				je.flags.ignore_permissions = 1
 				je.submit()
 
+def get_payroll_entry():
+	# process payroll for previous month
+	payroll_entry = frappe.new_doc("Payroll Entry")
+	payroll_entry.company = frappe.flags.company
+	payroll_entry.payroll_frequency = 'Monthly'
+
+	# select a posting date from the previous month
+	payroll_entry.posting_date = get_last_day(getdate(frappe.flags.current_date) - datetime.timedelta(days=10))
+	payroll_entry.payment_account = frappe.get_value('Account', {'account_type': 'Cash', 'company': erpnext.get_default_company(),'is_group':0}, "name")
+
+	payroll_entry.set_start_end_dates()
+	return payroll_entry
+
 def get_expenses():
 	expenses = []
 	expese_types = frappe.db.sql("""select ect.name, eca.default_account from `tabExpense Claim Type` ect,
@@ -114,7 +123,7 @@
 def make_timesheet_records():
 	employees = get_timesheet_based_salary_slip_employee()
 	for e in employees:
-		ts = make_timesheet(e.employee, simulate = True, billable = 1, activity_type=get_random("Activity Type"))
+		ts = make_timesheet(e.employee, simulate = True, billable = 1, activity_type=get_random("Activity Type"), company=frappe.flags.company)
 		frappe.db.commit()
 
 		rand = random.random()
diff --git a/erpnext/demo/user/purchase.py b/erpnext/demo/user/purchase.py
index ad99de9..a9a603c 100644
--- a/erpnext/demo/user/purchase.py
+++ b/erpnext/demo/user/purchase.py
@@ -122,7 +122,7 @@
 			rfq.append("suppliers", { "supplier": supplier })
 
 def make_subcontract():
-	from erpnext.buying.doctype.purchase_order.purchase_order import make_stock_entry
+	from erpnext.buying.doctype.purchase_order.purchase_order import make_rm_stock_entry
 	item_code = get_random("Item", {"is_sub_contracted_item": 1})
 	if item_code:
 		# make sub-contract PO
@@ -150,7 +150,7 @@
 		make_material_request(po.items[0].item_code, po.items[0].qty)
 
 		# transfer material for sub-contract
-		stock_entry = frappe.get_doc(make_stock_entry(po.name, po.items[0].item_code))
+		stock_entry = frappe.get_doc(make_rm_stock_entry(po.name, po.items[0].item_code))
 		stock_entry.from_warehouse = "Stores - WPL"
 		stock_entry.to_warehouse = "Supplier - WPL"
 		stock_entry.insert()
