diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js index 8a9a4398a4..ed7e39af22 100644 --- a/erpnext/accounts/doctype/account/account.js +++ b/erpnext/accounts/doctype/account/account.js @@ -1,94 +1,94 @@ -// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt - -cur_frm.cscript.refresh = function (doc, cdt, cdn) { - if (doc.__islocal) { - frappe.msgprint(__("Please create new account from Chart of Accounts.")); - throw "cannot create"; - } - - cur_frm.toggle_display('account_name', doc.__islocal); - - // hide fields if group - cur_frm.toggle_display(['account_type', 'tax_rate'], cint(doc.is_group) == 0) - - // disable fields - cur_frm.toggle_enable(['account_name', 'is_group', 'company'], false); - - if (cint(doc.is_group) == 0) { - cur_frm.toggle_display('freeze_account', doc.__onload && doc.__onload.can_freeze_account); - } - - // read-only for root accounts - if (!doc.parent_account) { - cur_frm.set_read_only(); - cur_frm.set_intro(__("This is a root account and cannot be edited.")); - } else { - // credit days and type if customer or supplier - cur_frm.set_intro(null); - - cur_frm.cscript.account_type(doc, cdt, cdn); - - // show / hide convert buttons - cur_frm.cscript.add_toolbar_buttons(doc); - } -} - -cur_frm.add_fetch('parent_account', 'report_type', 'report_type'); -cur_frm.add_fetch('parent_account', 'root_type', 'root_type'); - -cur_frm.cscript.account_type = function (doc, cdt, cdn) { - if (doc.is_group == 0) { - cur_frm.toggle_display(['tax_rate'], doc.account_type == 'Tax'); - cur_frm.toggle_display('warehouse', doc.account_type == 'Stock'); - } -} - -cur_frm.cscript.add_toolbar_buttons = function (doc) { - cur_frm.add_custom_button(__('Chart of Accounts'), - function () { frappe.set_route("Tree", "Account"); }); - - if (doc.is_group == 1) { - cur_frm.add_custom_button(__('Group to Non-Group'), - function () { cur_frm.cscript.convert_to_ledger(); }, 'fa fa-retweet', 'btn-default'); - } else if (cint(doc.is_group) == 0) { - cur_frm.add_custom_button(__('Ledger'), function () { - frappe.route_options = { - "account": doc.name, - "from_date": frappe.sys_defaults.year_start_date, - "to_date": frappe.sys_defaults.year_end_date, - "company": doc.company +frappe.ui.form.on('Account', { + setup: function(frm) { + frm.add_fetch('parent_account', 'report_type', 'report_type'); + frm.add_fetch('parent_account', 'root_type', 'root_type'); + }, + onload: function(frm) { + frm.set_query('parent_account', function(doc) { + return { + filters: { + "is_group": 1, + "company": doc.company + } }; - frappe.set_route("query-report", "General Ledger"); }); + }, + refresh: function(frm) { + if (frm.doc.__islocal) { + frappe.msgprint(__("Please create new account from Chart of Accounts.")); + throw "cannot create"; + } + + frm.toggle_display('account_name', frm.doc.__islocal); + + // hide fields if group + frm.toggle_display(['account_type', 'tax_rate'], cint(frm.doc.is_group) == 0); + + // disable fields + frm.toggle_enable(['account_name', 'is_group', 'company'], false); + + if (cint(frm.doc.is_group) == 0) { + frm.toggle_display('freeze_account', frm.doc.__onload + && frm.doc.__onload.can_freeze_account); + } + + // read-only for root accounts + if (!frm.doc.parent_account) { + frm.set_read_only(); + frm.set_intro(__("This is a root account and cannot be edited.")); + } else { + // credit days and type if customer or supplier + frm.set_intro(null); + frm.trigger('account_type'); + + // show / hide convert buttons + frm.trigger('add_toolbar_buttons'); + } + }, + account_type: function (frm) { + if (frm.doc.is_group == 0) { + frm.toggle_display(['tax_rate'], frm.doc.account_type == 'Tax'); + frm.toggle_display('warehouse', frm.doc.account_type == 'Stock'); + } + }, + add_toolbar_buttons: function(frm) { + frm.add_custom_button(__('Chart of Accounts'), + function () { frappe.set_route("Tree", "Account"); }); + + if (frm.doc.is_group == 1) { + frm.add_custom_button(__('Group to Non-Group'), function () { + return frappe.call({ + doc: frm.doc, + method: 'convert_group_to_ledger', + callback: function() { + frm.refresh(); + } + }); + }); + } else if (cint(frm.doc.is_group) == 0) { + cur_frm.add_custom_button(__('Ledger'), function () { + frappe.route_options = { + "account": frm.doc.name, + "from_date": frappe.sys_defaults.year_start_date, + "to_date": frappe.sys_defaults.year_end_date, + "company": frm.doc.company + }; + frappe.set_route("query-report", "General Ledger"); + }); + + frm.add_custom_button(__('Non-Group to Group'), function () { + return frappe.call({ + doc: frm.doc, + method: 'convert_ledger_to_group', + callback: function() { + frm.refresh(); + } + }); + }); + } - cur_frm.add_custom_button(__('Non-Group to Group'), - function () { cur_frm.cscript.convert_to_group(); }, 'fa fa-retweet', 'btn-default') } -} - -cur_frm.cscript.convert_to_ledger = function (doc, cdt, cdn) { - return $c_obj(cur_frm.doc, 'convert_group_to_ledger', '', function (r, rt) { - if (r.message == 1) { - cur_frm.refresh(); - } - }); -} - -cur_frm.cscript.convert_to_group = function (doc, cdt, cdn) { - return $c_obj(cur_frm.doc, 'convert_ledger_to_group', '', function (r, rt) { - if (r.message == 1) { - cur_frm.refresh(); - } - }); -} - -cur_frm.fields_dict['parent_account'].get_query = function (doc) { - return { - filters: { - "is_group": 1, - "company": doc.company - } - } -} +}); \ No newline at end of file diff --git a/erpnext/tests/ui/accounts/test_account.js b/erpnext/tests/ui/accounts/test_account.js new file mode 100644 index 0000000000..6d7709b415 --- /dev/null +++ b/erpnext/tests/ui/accounts/test_account.js @@ -0,0 +1,27 @@ +QUnit.module('accounts'); + +QUnit.test("test account", function(assert) { + assert.expect(4); + let done = assert.async(); + frappe.run_serially([ + () => frappe.set_route('Tree', 'Account'), + () => frappe.tests.click_button('Expand All'), + () => frappe.tests.click_link('Debtors'), + () => frappe.tests.click_button('Edit'), + () => frappe.timeout(1), + () => { + assert.ok(cur_frm.doc.root_type=='Asset'); + assert.ok(cur_frm.doc.report_type=='Balance Sheet'); + assert.ok(cur_frm.doc.account_type=='Receivable'); + }, + () => frappe.tests.click_button('Ledger'), + () => frappe.timeout(1), + () => { + // check if general ledger report shown + assert.deepEqual(frappe.get_route(), ['query-report', 'General Ledger']); + window.history.back(); + return frappe.timeout(1); + }, + () => done() + ]); +});