diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index a99ec70..a6ef494 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -12,7 +12,6 @@
 
 	refresh: function(frm) {
 		erpnext.toggle_naming_series();
-		// frm.cscript.voucher_type(frm.doc);
 		
 		if(frm.doc.docstatus==1) {
 			frm.add_custom_button(__('Ledger'), function() {
@@ -121,37 +120,82 @@
 			}
 		});
 	},
+
 	voucher_type: function(frm){
 		frm.toggle_reqd("cheque_no", frm.doc.voucher_type=="Bank Entry");
 		frm.toggle_reqd("cheque_date", frm.doc.voucher_type=="Bank Entry");
-	},
-	from_template: function(frm){
-		var update_jv_details = function(doc, r) {
-			frappe.model.clear_table(frm.doc, "accounts");
-			$.each(r, function(i, d) {
-				var row = frappe.model.add_child(doc, "Journal Entry Account", "accounts");
-				row.account = d.account;
-				row.balance = d.balance;
-			});
-			refresh_field("accounts");
+
+		if(!frm.doc.company) return;
+		if(frm.)
+
+		if((!(frm.doc.accounts || []).length) || ((frm.doc.accounts || []).length==1 && !frm.doc.accounts[0].account)) {
+			if(in_list(["Bank Entry", "Cash Entry"], frm.doc.voucher_type)) {
+				return frappe.call({
+					type: "GET",
+					method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_default_bank_cash_account",
+					args: {
+						"account_type": (frm.doc.voucher_type=="Bank Entry" ?
+							"Bank" : (frm.doc.voucher_type=="Cash Entry" ? "Cash" : null)),
+						"company": frm.doc.company
+					},
+					callback: function(r) {
+						if(r.message) {
+							// If default company bank account not set
+							if(!$.isEmptyObject(r.message)){
+								update_jv_details(frm.doc, [r.message]);
+							}
+						}
+					}
+				})
+			} 
+			else if(frm.doc.voucher_type=="Opening Entry") {
+				return frappe.call({
+					type:"GET",
+					method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_opening_accounts",
+					args: {
+						"company": frm.doc.company
+					},
+					callback: function(r) {
+						frappe.model.clear_table(frm.doc, "accounts");
+						if(r.message) {
+							update_jv_details(frm.doc, r.message);
+						}
+						cur_frm.set_value("is_opening", "Yes")
+					}
+				})
+			}
 		}
-		
+	},
+
+	from_template: function(frm){
 		if (frm.doc.from_template){
 			frappe.db.get_doc("Journal Entry Template", frm.doc.from_template)
-			.then((doc) => {
-				frm.set_value("company",doc.company);
-				frm.set_value("voucher_type", doc.voucher_type);
-				frm.set_value("naming_series", doc.je_naming_series);
-				frm.set_value("is_opening", doc.is_opening);
-				update_jv_details(frm.doc, doc.accounts);
-			})
-			.catch((err)=>{
-				console.log(err);
-			})
+				.then((doc) => {
+					frappe.model.clear_table(frm.doc, "accounts");
+					frm.set_value({
+						"company": doc.company,
+						"voucher_type": doc.voucher_type,
+						"naming_series": doc.naming_series,
+						"is_opening": doc.is_opening
+					})
+					update_jv_details(frm.doc, doc.accounts);
+				})
+				.catch((err)=>{
+					console.log(err);
+				})	
 		}
 	}
 });
 
+var update_jv_details = function(doc, r) {
+	$.each(r, function(i, d) {
+		var row = frappe.model.add_child(doc, "Journal Entry Account", "accounts");
+		row.account = d.account;
+		row.balance = d.balance;
+	});
+	refresh_field("accounts");
+}
+
 erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({
 	onload: function() {
 		this.load_defaults();
@@ -404,56 +448,6 @@
 		cur_frm.pformat.print_heading = __("Journal Entry");
 }
 
-// cur_frm.cscript.voucher_type = function(doc, cdt, cdn) {
-// 	cur_frm.set_df_property("cheque_no", "reqd", doc.voucher_type=="Bank Entry");
-// 	cur_frm.set_df_property("cheque_date", "reqd", doc.voucher_type=="Bank Entry");
-
-// 	if(!doc.company) return;
-
-// 	var update_jv_details = function(doc, r) {
-// 		$.each(r, function(i, d) {
-// 			var row = frappe.model.add_child(doc, "Journal Entry Account", "accounts");
-// 			row.account = d.account;
-// 			row.balance = d.balance;
-// 		});
-// 		refresh_field("accounts");
-// 	}
-
-// 	if((!(doc.accounts || []).length) || ((doc.accounts || []).length==1 && !doc.accounts[0].account)) {
-// 		if(in_list(["Bank Entry", "Cash Entry"], doc.voucher_type)) {
-// 			return frappe.call({
-// 				type: "GET",
-// 				method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_default_bank_cash_account",
-// 				args: {
-// 					"account_type": (doc.voucher_type=="Bank Entry" ?
-// 						"Bank" : (doc.voucher_type=="Cash Entry" ? "Cash" : null)),
-// 					"company": doc.company
-// 				},
-// 				callback: function(r) {
-// 					if(r.message) {
-// 						update_jv_details(doc, [r.message]);
-// 					}
-// 				}
-// 			})
-// 		} else if(doc.voucher_type=="Opening Entry") {
-// 			return frappe.call({
-// 				type:"GET",
-// 				method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_opening_accounts",
-// 				args: {
-// 					"company": doc.company
-// 				},
-// 				callback: function(r) {
-// 					frappe.model.clear_table(doc, "accounts");
-// 					if(r.message) {
-// 						update_jv_details(doc, r.message);
-// 					}
-// 					cur_frm.set_value("is_opening", "Yes")
-// 				}
-// 			})
-// 		}
-// 	}
-// }
-
 frappe.ui.form.on("Journal Entry Account", {
 	party: function(frm, cdt, cdn) {
 		var d = frappe.get_doc(cdt, cdn);
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.json b/erpnext/accounts/doctype/journal_entry/journal_entry.json
index b943452..2335109 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.json
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.json
@@ -491,14 +491,17 @@
    "fieldname": "from_template",
    "fieldtype": "Link",
    "label": "From Template",
-   "options": "Journal Entry Template"
+   "no_copy": 1,
+   "options": "Journal Entry Template",
+   "print_hide": 1,
+   "report_hide": 1
   }
  ],
  "icon": "fa fa-file-text",
  "idx": 176,
  "is_submittable": 1,
  "links": [],
- "modified": "2020-04-25 02:02:04.017198",
+ "modified": "2020-04-26 04:48:31.753820",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Journal Entry",
diff --git a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js
index 153392d..3dc66aa 100644
--- a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js
+++ b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js
@@ -2,23 +2,26 @@
 // For license information, please see license.txt
 
 frappe.ui.form.on("Journal Entry Template", {
-	// refresh: function(frm) {
-
-	// }
 	setup: function(frm) {
-		frm.set_query("account" ,"accounts", () => {
-				return {
-					filters: {
-						"company": frm.doc.company==undefined ? null: frm.doc.company,
-					}
+		frappe.model.set_default_values(frm.doc);
+		frm.set_query("account" ,"accounts", function(){
+			return {
+				filters: {
+					"company": frm.doc.company,
 				}
+			}
 		});
-	},
-	onload_post_render: function(frm){
-		// frm.get_field("accounts").grid.set_multiple_add("account");
-	},
-	all_accounts: function(frm) {
-		frm.trigger("clear_child");
+		frappe.call({
+			type: "GET",
+			method: "erpnext.accounts.doctype.journal_entry_template.journal_entry_template.get_naming_series",
+			callback: function(r){
+				if(r.message){
+					frm.set_df_property("naming_series", "options", r.message.split("\n"));
+					frm.set_value("naming_series", r.message.split("\n")[0]);
+					frm.refresh_field("naming_series");
+				}
+			}
+		});
 	},
 	voucher_type: function(frm) {
 		var add_accounts = function(doc, r) {
@@ -28,14 +31,13 @@
 			});
 			refresh_field("accounts");
 		}
+	
+		if(!frm.doc.company) return;
+	
 		frm.trigger("clear_child");
 		switch(frm.doc.voucher_type){
 			case "Opening Entry":
-				if(frm.doc.company == undefined){
-					frappe.throw("Please select Company!");
-				}
 				frm.set_value("is_opening", "Yes");
-				
 				frappe.call({
 					type:"GET",
 					method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_opening_accounts",
@@ -61,10 +63,13 @@
 					},
 					callback: function(r) {
 						if(r.message) {
-							add_accounts(frm.doc, [r.message]);
+							// If default company bank account not set
+							if(!$.isEmptyObject(r.message)){
+								add_accounts(frm.doc, [r.message]);
+							}
 						}
 					}
-				})
+				});
 				break;
 			default:
 				frm.trigger("clear_child");
@@ -72,6 +77,6 @@
 	},
 	clear_child: function(frm){
 		frappe.model.clear_table(frm.doc, "accounts");
-		refresh_field("accounts");
+		frm.refresh_field("accounts");
 	}
-});
+});
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json
index a16503e..3f6cb02 100644
--- a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json
+++ b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json
@@ -1,18 +1,21 @@
 {
  "actions": [],
- "autoname": "naming_series:",
+ "autoname": "field:template_title",
  "creation": "2020-04-09 01:32:51.332301",
  "doctype": "DocType",
+ "document_type": "Document",
  "editable_grid": 1,
  "engine": "InnoDB",
  "field_order": [
   "section_break_1",
-  "voucher_type",
-  "company",
-  "column_break_3",
-  "je_naming_series",
-  "is_opening",
+  "template_title",
   "section_break_2",
+  "company",
+  "voucher_type",
+  "column_break_3",
+  "naming_series",
+  "is_opening",
+  "section_break_3",
   "accounts"
  ],
  "fields": [
@@ -32,8 +35,10 @@
    "fieldname": "company",
    "fieldtype": "Link",
    "in_list_view": 1,
+   "in_standard_filter": 1,
    "label": "Company",
    "options": "Company",
+   "remember_last_selected_value": 1,
    "reqd": 1
   },
   {
@@ -41,12 +46,6 @@
    "fieldtype": "Column Break"
   },
   {
-   "default": "ACC-JV-.YYYY.-",
-   "fieldname": "je_naming_series",
-   "fieldtype": "Data",
-   "label": "Naming Series"
-  },
-  {
    "default": "No",
    "fieldname": "is_opening",
    "fieldtype": "Select",
@@ -61,11 +60,31 @@
    "fieldname": "accounts",
    "fieldtype": "Table",
    "label": "Accounting Entries",
-   "options": "JE Template Account"
+   "options": "Journal Entry Template Account"
+  },
+  {
+   "fieldname": "naming_series",
+   "fieldtype": "Select",
+   "label": "Series",
+   "no_copy": 1,
+   "print_hide": 1,
+   "reqd": 1,
+   "set_only_once": 1
+  },
+  {
+   "fieldname": "template_title",
+   "fieldtype": "Data",
+   "label": "Template Title",
+   "reqd": 1,
+   "unique": 1
+  },
+  {
+   "fieldname": "section_break_3",
+   "fieldtype": "Section Break"
   }
  ],
  "links": [],
- "modified": "2020-04-25 02:14:35.185062",
+ "modified": "2020-04-26 04:29:03.347852",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Journal Entry Template",
@@ -79,18 +98,6 @@
    "print": 1,
    "read": 1,
    "report": 1,
-   "role": "System Manager",
-   "share": 1,
-   "write": 1
-  },
-  {
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "export": 1,
-   "print": 1,
-   "read": 1,
-   "report": 1,
    "role": "Accounts User",
    "share": 1,
    "write": 1
@@ -106,9 +113,20 @@
    "role": "Accounts Manager",
    "share": 1,
    "write": 1
+  },
+  {
+   "email": 1,
+   "export": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Auditor",
+   "share": 1
   }
  ],
+ "search_fields": "voucher_type, company",
  "sort_field": "modified",
  "sort_order": "DESC",
+ "title_field": "template_title",
  "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.py b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.py
index d576832..e0b9cbc 100644
--- a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.py
+++ b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.py
@@ -5,9 +5,10 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
-from erpnext.accounts.utils import get_balance_on
 
 class JournalEntryTemplate(Document):
-	def autoname(self):
-		self.name = self.voucher_type + ' - ' + frappe.get_value('Company', self.company, 'abbr')
+	pass
 
+@frappe.whitelist()
+def get_naming_series():
+	return frappe.get_meta("Journal Entry").get_field("naming_series").options
diff --git a/erpnext/projects/doctype/project_template/project_template.json b/erpnext/projects/doctype/project_template/project_template.json
index 8352995..445ad9f 100644
--- a/erpnext/projects/doctype/project_template/project_template.json
+++ b/erpnext/projects/doctype/project_template/project_template.json
@@ -1,130 +1,52 @@
 {
- "allow_copy": 0,
- "allow_events_in_timeline": 0,
- "allow_guest_to_view": 0,
- "allow_import": 0,
- "allow_rename": 0,
+ "actions": [],
  "autoname": "Prompt",
- "beta": 0,
  "creation": "2019-02-18 17:23:11.708371",
- "custom": 0,
- "docstatus": 0,
  "doctype": "DocType",
- "document_type": "",
  "editable_grid": 1,
  "engine": "InnoDB",
+ "field_order": [
+  "project_type",
+  "tasks"
+ ],
  "fields": [
   {
-   "allow_bulk_edit": 0,
-   "allow_in_quick_entry": 0,
-   "allow_on_submit": 0,
-   "bold": 0,
-   "collapsible": 0,
-   "columns": 0,
    "fieldname": "project_type",
    "fieldtype": "Link",
-   "hidden": 0,
-   "ignore_user_permissions": 0,
-   "ignore_xss_filter": 0,
-   "in_filter": 0,
-   "in_global_search": 0,
    "in_list_view": 1,
-   "in_standard_filter": 0,
    "label": "Project Type",
-   "length": 0,
-   "no_copy": 0,
-   "options": "Project Type",
-   "permlevel": 0,
-   "precision": "",
-   "print_hide": 0,
-   "print_hide_if_no_value": 0,
-   "read_only": 0,
-   "remember_last_selected_value": 0,
-   "report_hide": 0,
-   "reqd": 0,
-   "search_index": 0,
-   "set_only_once": 0,
-   "translatable": 0,
-   "unique": 0
+   "options": "Project Type"
   },
   {
-   "allow_bulk_edit": 0,
-   "allow_in_quick_entry": 0,
-   "allow_on_submit": 0,
-   "bold": 0,
-   "collapsible": 0,
-   "columns": 0,
    "fieldname": "tasks",
    "fieldtype": "Table",
-   "hidden": 0,
-   "ignore_user_permissions": 0,
-   "ignore_xss_filter": 0,
-   "in_filter": 0,
-   "in_global_search": 0,
-   "in_list_view": 0,
-   "in_standard_filter": 0,
    "label": "Tasks",
-   "length": 0,
-   "no_copy": 0,
    "options": "Project Template Task",
-   "permlevel": 0,
-   "precision": "",
-   "print_hide": 0,
-   "print_hide_if_no_value": 0,
-   "read_only": 0,
-   "remember_last_selected_value": 0,
-   "report_hide": 0,
-   "reqd": 1,
-   "search_index": 0,
-   "set_only_once": 0,
-   "translatable": 0,
-   "unique": 0
+   "reqd": 1
   }
  ],
- "has_web_view": 0,
- "hide_heading": 0,
- "hide_toolbar": 0,
- "idx": 0,
- "image_view": 0,
- "in_create": 0,
- "is_submittable": 0,
- "issingle": 0,
- "istable": 0,
- "max_attachments": 0,
- "modified": "2019-02-18 18:01:26.519832",
+ "links": [],
+ "modified": "2020-04-26 02:23:53.990322",
  "modified_by": "Administrator",
  "module": "Projects",
  "name": "Project Template",
- "name_case": "",
  "owner": "Administrator",
  "permissions": [
   {
-   "amend": 0,
-   "cancel": 0,
    "create": 1,
    "delete": 1,
    "email": 1,
    "export": 1,
-   "if_owner": 0,
-   "import": 0,
-   "permlevel": 0,
    "print": 1,
    "read": 1,
    "report": 1,
    "role": "System Manager",
-   "set_user_permissions": 0,
    "share": 1,
-   "submit": 0,
    "write": 1
   }
  ],
  "quick_entry": 1,
- "read_only": 0,
- "read_only_onload": 0,
- "show_name_in_global_search": 0,
  "sort_field": "modified",
  "sort_order": "DESC",
- "track_changes": 1,
- "track_seen": 0,
- "track_views": 0
+ "track_changes": 1
 }
\ No newline at end of file
