[refactor] account.js to new style (#9787)
* [fix] conference site update
* [test] run all js tests
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index 8a9a439..ed7e39a 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";
+ }
- cur_frm.add_custom_button(__('Non-Group to Group'),
- function () { cur_frm.cscript.convert_to_group(); }, 'fa fa-retweet', 'btn-default')
+ 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.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 0000000..6d7709b
--- /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()
+ ]);
+});