diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js index a99ec70fd73..a6ef4942fbd 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js @@ -12,7 +12,6 @@ frappe.ui.form.on("Journal Entry", { 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 @@ frappe.ui.form.on("Journal Entry", { } }); }, + 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.cscript.select_print_heading = function(doc,cdt,cdn){ 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 b943452a704..2335109847c 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 153392dedce..3dc66aaa584 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, } + } + }); + 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"); + } + } }); - }, - onload_post_render: function(frm){ - // frm.get_field("accounts").grid.set_multiple_add("account"); - }, - all_accounts: function(frm) { - frm.trigger("clear_child"); }, voucher_type: function(frm) { var add_accounts = function(doc, r) { @@ -28,14 +31,13 @@ frappe.ui.form.on("Journal Entry Template", { }); 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 @@ frappe.ui.form.on("Journal Entry Template", { }, 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 @@ frappe.ui.form.on("Journal Entry Template", { }, 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 a16503e893c..3f6cb026aa6 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,20 +35,16 @@ "fieldname": "company", "fieldtype": "Link", "in_list_view": 1, + "in_standard_filter": 1, "label": "Company", "options": "Company", + "remember_last_selected_value": 1, "reqd": 1 }, { "fieldname": "column_break_3", "fieldtype": "Column Break" }, - { - "default": "ACC-JV-.YYYY.-", - "fieldname": "je_naming_series", - "fieldtype": "Data", - "label": "Naming Series" - }, { "default": "No", "fieldname": "is_opening", @@ -61,28 +60,36 @@ "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", "owner": "Administrator", "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "share": 1, - "write": 1 - }, { "create": 1, "delete": 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 d576832c3bd..e0b9cbc9193 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 8352995face..445ad9f2386 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