diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js index a86dea76839..33427682618 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js @@ -23,6 +23,10 @@ frappe.ui.form.on("Stock Reconciliation", { return erpnext.queries.warehouse(frm.doc); }); } + + if (!frm.doc.expense_account) { + frm.trigger("set_expense_account"); + } }, refresh: function(frm) { @@ -114,6 +118,25 @@ frappe.ui.form.on("Stock Reconciliation", { toggle_display_account_head: function(frm) { frm.toggle_display(['expense_account', 'cost_center'], erpnext.is_perpetual_inventory_enabled(frm.doc.company)); + }, + purpose: function(frm) { + frm.trigger("set_expense_account"); + }, + set_expense_account: function(frm) { + if (frm.doc.company && erpnext.is_perpetual_inventory_enabled(frm.doc.company)) { + return frm.call({ + method: "erpnext.stock.doctype.stock_reconciliation.stock_reconciliation.get_difference_account", + args: { + "purpose": frm.doc.purpose, + "company": frm.doc.company + }, + callback: function(r) { + if (!r.exc) { + frm.set_value("expense_account", r.message); + } + } + }); + } } }); @@ -137,37 +160,12 @@ frappe.ui.form.on("Stock Reconciliation Item", { }); erpnext.stock.StockReconciliation = erpnext.stock.StockController.extend({ - onload: function() { - this.set_default_expense_account(); - }, - - set_default_expense_account: function() { - var me = this; - if(this.frm.doc.company) { - if (erpnext.is_perpetual_inventory_enabled(this.frm.doc.company) && !this.frm.doc.expense_account) { - return this.frm.call({ - method: "erpnext.accounts.utils.get_company_default", - args: { - "fieldname": "stock_adjustment_account", - "company": this.frm.doc.company - }, - callback: function(r) { - if (!r.exc) { - me.frm.set_value("expense_account", r.message); - } - } - }); - } - } - }, - setup: function() { var me = this; this.setup_posting_date_time_check(); if (me.frm.doc.company && erpnext.is_perpetual_inventory_enabled(me.frm.doc.company)) { - this.frm.add_fetch("company", "stock_adjustment_account", "expense_account"); this.frm.add_fetch("company", "cost_center", "cost_center"); } this.frm.fields_dict["expense_account"].get_query = function() { diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json index dc9a3227c1c..421ee77dd1a 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json @@ -42,6 +42,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -72,6 +73,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -80,28 +82,31 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "amended_from", - "fieldtype": "Link", + "default": "Stock Reconciliation", + "fieldname": "purpose", + "fieldtype": "Select", "hidden": 0, - "ignore_user_permissions": 1, + "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Amended From", + "label": "Purpose", "length": 0, - "no_copy": 1, - "options": "Stock Reconciliation", + "no_copy": 0, + "options": "Opening Stock\nStock Reconciliation", "permlevel": 0, - "print_hide": 1, + "precision": "", + "print_hide": 0, "print_hide_if_no_value": 0, - "read_only": 1, + "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -130,6 +135,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -162,6 +168,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -193,6 +200,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -223,6 +231,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -252,6 +261,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -283,6 +293,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -312,6 +323,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -343,6 +355,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -374,6 +387,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -403,6 +417,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -432,6 +447,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -463,6 +479,38 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Amended From", + "length": 0, + "no_copy": 1, + "options": "Stock Reconciliation", + "permlevel": 0, + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -478,7 +526,7 @@ "istable": 0, "max_attachments": 1, "menu_index": 0, - "modified": "2017-08-02 23:54:28.516007", + "modified": "2018-04-26 12:01:25.377081", "modified_by": "Administrator", "module": "Stock", "name": "Stock Reconciliation", @@ -486,7 +534,6 @@ "permissions": [ { "amend": 1, - "apply_user_permissions": 0, "cancel": 1, "create": 1, "delete": 1, diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index 73a7ef3931b..938173deb8f 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -8,6 +8,7 @@ from frappe import msgprint, _ from frappe.utils import cstr, flt, cint from erpnext.stock.stock_ledger import update_entries_after from erpnext.controllers.stock_controller import StockController +from erpnext.accounts.utils import get_company_default from erpnext.stock.utils import get_stock_balance class OpeningEntryAccountError(frappe.ValidationError): pass @@ -304,3 +305,13 @@ def get_stock_balance_for(item_code, warehouse, posting_date, posting_time): 'qty': qty, 'rate': rate } + +@frappe.whitelist() +def get_difference_account(purpose, company): + if purpose == 'Stock Reconciliation': + account = get_company_default(company, "stock_adjustment_account") + else: + account = frappe.db.get_value('Account', {'is_group': 0, + 'company': company, 'account_type': 'Temporary'}, 'name') + + return account \ No newline at end of file