Added is_perpetual_inventory_enabled method
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index f026b6a..4479bf9 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -38,10 +38,7 @@
def set_perpetual_inventory(enable=1, company=None):
if not company:
- company = get_default_company()
-
- if frappe.flags.in_test:
- company = "_Test Company"
+ company = "_Test Company" if frappe.flags.in_test else get_default_company()
company = frappe.get_doc("Company", company)
company.enable_perpetual_inventory = enable
@@ -57,4 +54,23 @@
return " - ".join(parts)
+def is_perpetual_inventory_enabled(company):
+ if not company:
+ company = "_Test Company" if frappe.flags.in_test else get_default_company()
+ if not hasattr(frappe.local, 'enable_perpetual_inventory'):
+ perpetual_inventory = get_company_wise_perptual_inventory()
+ frappe.local.enable_perpetual_inventory = perpetual_inventory
+
+ if not frappe.local.enable_perpetual_inventory.get(company):
+ is_enabled = frappe.db.get_value("Company", company, "enable_perpetual_inventory") or 0
+ frappe.local.enable_perpetual_inventory.setdefault(company, is_enabled)
+
+ return frappe.local.enable_perpetual_inventory.get(company)
+
+def get_company_wise_perptual_inventory():
+ company_dict = {}
+ for data in frappe.get_all('Company', fields = ["name", "enable_perpetual_inventory"]):
+ company_dict[data.name] = data.enable_perpetual_inventory
+
+ return company_dict
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js
index 0927e81..03d84e9 100755
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.js
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js
@@ -39,7 +39,7 @@
toggle_display_account_head: function(frm) {
frm.toggle_display('expense_account',
- frappe.get_doc(":Company", frm.doc.company).enable_perpetual_inventory);
+ erpnext.is_perpetual_inventory_enabled(frm.doc.company));
}
})
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index b391127..00d5249 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -164,7 +164,7 @@
frappe.msgprint(_("Item Code required at Row No {0}").format(d.idx), raise_exception=True)
def set_expense_account(self, for_validate=False):
- auto_accounting_for_stock = frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')
+ auto_accounting_for_stock = erpnext.is_perpetual_inventory_enabled(self.company)
if auto_accounting_for_stock:
stock_not_billed_account = self.get_company_default("stock_received_but_not_billed")
@@ -335,7 +335,7 @@
delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
def get_gl_entries(self, warehouse_account=None):
- self.auto_accounting_for_stock = frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')
+ self.auto_accounting_for_stock = erpnext.is_perpetual_inventory_enabled(self.company)
self.stock_received_but_not_billed = self.get_company_default("stock_received_but_not_billed")
self.expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation")
self.negative_expense_to_be_booked = 0.0
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 8094e99..8bbd6c5 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import unittest
-import frappe
+import frappe, erpnext
import frappe.model
from frappe.utils import cint, flt, today, nowdate
import frappe.defaults
@@ -28,7 +28,7 @@
def test_gl_entries_without_perpetual_inventory(self):
wrapper = frappe.copy_doc(test_records[0])
set_perpetual_inventory(0, wrapper.company)
- self.assertTrue(not cint(frappe.db.get_value('Company', wrapper.company, 'enable_perpetual_inventory')))
+ self.assertTrue(not cint(erpnext.is_perpetual_inventory_enabled(wrapper.company)))
wrapper.insert()
wrapper.submit()
wrapper.load_from_db()
@@ -53,7 +53,7 @@
def test_gl_entries_with_perpetual_inventory(self):
pi = frappe.copy_doc(test_records[1])
set_perpetual_inventory(1, pi.company)
- self.assertTrue(cint(frappe.db.get_value('Company', pi.company, 'enable_perpetual_inventory')), 1)
+ self.assertTrue(cint(erpnext.is_perpetual_inventory_enabled(pi.company)), 1)
pi.insert()
pi.submit()
@@ -85,7 +85,7 @@
def test_gl_entries_with_perpetual_inventory_against_pr(self):
pr = frappe.copy_doc(pr_test_records[0])
set_perpetual_inventory(1, pr.company)
- self.assertTrue(cint(frappe.db.get_value('Company', pr.company, 'enable_perpetual_inventory')), 1)
+ self.assertTrue(cint(erpnext.is_perpetual_inventory_enabled(pr.company)), 1)
pr.submit()
pi = frappe.copy_doc(test_records[1])
@@ -132,7 +132,7 @@
def test_gl_entries_with_aia_for_non_stock_items(self):
pi = frappe.copy_doc(test_records[1])
set_perpetual_inventory(1, pi.company)
- self.assertTrue(cint(frappe.db.get_value('Company', pi.company, 'enable_perpetual_inventory')), 1)
+ self.assertTrue(cint(erpnext.is_perpetual_inventory_enabled(pi.company)), 1)
pi.get("items")[0].item_code = "_Test Non Stock Item"
pi.get("items")[0].expense_account = "_Test Account Cost for Goods Sold - _TC"
pi.get("taxes").pop(0)
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 595b7bf..10bd3a0 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -492,7 +492,7 @@
// expense account
frm.fields_dict['items'].grid.get_field('expense_account').get_query = function(doc) {
- if (frappe.get_doc(":Company", doc.company).enable_perpetual_inventory) {
+ if (erpnext.is_perpetual_inventory_enabled(doc.company)) {
return {
filters: {
'report_type': 'Profit and Loss',
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index b7aca8f..85c5079 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
import frappe.defaults
from frappe.utils import cint, flt
from frappe import _, msgprint, throw
@@ -559,7 +559,7 @@
throw(_("Delivery Note {0} is not submitted").format(d.delivery_note))
def make_gl_entries(self, gl_entries=None, repost_future_gle=True, from_repost=False):
- auto_accounting_for_stock = frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')
+ auto_accounting_for_stock = erpnext.is_perpetual_inventory_enabled(self.company)
if not self.grand_total:
return
@@ -675,7 +675,7 @@
# expense account gl entries
if cint(self.update_stock) and \
- frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory'):
+ erpnext.is_perpetual_inventory_enabled(self.company):
gl_entries += super(SalesInvoice, self).get_gl_entries()
def make_pos_gl_entries(self, gl_entries):
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index a5f7ad2..ceae61c 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
from frappe.utils import flt, cstr, cint
from frappe import _
from frappe.model.meta import get_field_precision
@@ -101,7 +101,7 @@
gle.submit()
def validate_account_for_perpetual_inventory(gl_map):
- if cint(frappe.db.get_value("Company", gl_map[0].company, 'enable_perpetual_inventory')) \
+ if cint(erpnext.is_perpetual_inventory_enabled(gl_map[0].company)) \
and gl_map[0].voucher_type=="Journal Entry":
aii_accounts = [d[0] for d in frappe.db.sql("""select name from tabAccount
where account_type = 'Stock' and is_group=0""")]
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index b3c2f8c..605881c 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
from frappe.utils import cint, flt, cstr
from frappe import msgprint, _
import frappe.defaults
@@ -21,7 +21,7 @@
if self.docstatus == 2:
delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
- if cint(frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')):
+ if cint(erpnext.is_perpetual_inventory_enabled(self.company)):
warehouse_account = get_warehouse_account_map()
if self.docstatus==1:
diff --git a/erpnext/patches/v7_0/create_warehouse_nestedset.py b/erpnext/patches/v7_0/create_warehouse_nestedset.py
index 964df1f..06766b9 100644
--- a/erpnext/patches/v7_0/create_warehouse_nestedset.py
+++ b/erpnext/patches/v7_0/create_warehouse_nestedset.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
from frappe import _
from frappe.utils import cint
from frappe.utils.nestedset import rebuild_tree
@@ -51,7 +51,7 @@
def make_warehouse_nestedset(company=None):
validate_parent_account_for_warehouse(company)
stock_account_group = get_stock_account_group(company.name)
- enable_perpetual_inventory = cint(frappe.db.get_value("Company", company, 'enable_perpetual_inventory')) or 0
+ enable_perpetual_inventory = cint(erpnext.is_perpetual_inventory_enabled(company)) or 0
if not stock_account_group and enable_perpetual_inventory:
return
@@ -73,7 +73,7 @@
if not company:
return
- if cint(frappe.db.get_value("Company", company, 'enable_perpetual_inventory')):
+ if cint(erpnext.is_perpetual_inventory_enabled(company)):
parent_account = frappe.db.sql("""select name from tabAccount
where account_type='Stock' and company=%s and is_group=1
and (warehouse is null or warehouse = '')""", company.name)
diff --git a/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py b/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py
index 5a98ab1..d0e816a 100644
--- a/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py
+++ b/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py
@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
def execute():
frappe.reload_doctype("Account")
@@ -10,7 +10,7 @@
warehouses = frappe.db.sql_list("""select name, company from tabAccount
where account_type = 'Stock' and is_group = 0
and (warehouse is null or warehouse = '')""", as_dict)
- warehouses = [d.name for d in warehouses if frappe.db.get_value('Company', d.company, 'enable_perpetual_inventory')]
+ warehouses = [d.name for d in warehouses if erpnext.is_perpetual_inventory_enabled(d.company)]
if len(warehouses) > 0:
warehouses = set_warehouse_for_stock_account(warehouses)
if not warehouses:
diff --git a/erpnext/patches/v8_0/move_perpetual_inventory_setting.py b/erpnext/patches/v8_0/move_perpetual_inventory_setting.py
index 3010b4d..594a15c 100644
--- a/erpnext/patches/v8_0/move_perpetual_inventory_setting.py
+++ b/erpnext/patches/v8_0/move_perpetual_inventory_setting.py
@@ -7,4 +7,7 @@
def execute():
frappe.reload_doctype('Company')
enabled = frappe.db.get_single_value("Accounts Settings", "auto_accounting_for_stock") or 0
- frappe.db.sql("""update tabCompany set enable_perpetual_inventory = {0}""".format(enabled))
\ No newline at end of file
+ for data in frappe.get_all('Company', fields = ["name"]):
+ doc = frappe.get_doc('Company', data.name)
+ doc.enable_perpetual_inventory = enabled
+ doc.save(ignore_permissions=True)
\ No newline at end of file
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 9650862..eaf064b 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -31,6 +31,12 @@
}
},
+ is_perpetual_inventory_enabled: function(company) {
+ if(company) {
+ return frappe.get_doc(":Company", company).enable_perpetual_inventory
+ }
+ },
+
setup_serial_no: function() {
var grid_row = cur_frm.open_grid_row();
if(!grid_row || !grid_row.grid_form.fields_dict.serial_no ||
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index a179959..b333e87 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -33,6 +33,7 @@
self.validate_default_accounts()
self.validate_currency()
self.validate_coa_input()
+ self.validate_perpetual_inventory()
def validate_abbr(self):
if not self.abbr:
@@ -139,6 +140,17 @@
if not self.chart_of_accounts:
self.chart_of_accounts = "Standard"
+ def validate_perpetual_inventory(self):
+ if not self.get("__islocal"):
+ if cint(self.enable_perpetual_inventory) == 1 and not self.default_inventory_account:
+ frappe.msgprint(_("Warning: Set default inventory account for perpetual inventory"), alert=True)
+
+ enable_perpetual_inventory = frappe.db.get_value('Company', self.name, 'enable_perpetual_inventory')
+ if enable_perpetual_inventory != self.enable_perpetual_inventory:
+ if hasattr(frappe.local, 'enable_perpetual_inventory') and \
+ self.name in frappe.local.enable_perpetual_inventory:
+ del frappe.local.enable_perpetual_inventory[self.name]
+
def set_default_accounts(self):
self._set_default_account("default_cash_account", "Cash")
self._set_default_account("default_bank_account", "Bank")
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 35658c6..de47fde 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -40,7 +40,7 @@
frm.set_query('expense_account', 'items', function(doc, cdt, cdn) {
- if (frappe.get_doc(":Company", doc.company).enable_perpetual_inventory) {
+ if (erpnext.is_perpetual_inventory_enabled(doc.company)) {
return {
filters: {
"report_type": "Profit and Loss",
@@ -52,7 +52,7 @@
});
frm.set_query('cost_center', 'items', function(doc, cdt, cdn) {
- if (frappe.get_doc(":Company", doc.company).enable_perpetual_inventory) {
+ if (erpnext.is_perpetual_inventory_enabled(doc.company)) {
return {
filters: {
'company': doc.company,
@@ -141,7 +141,7 @@
if (doc.docstatus==1) {
this.show_stock_ledger();
- if (frappe.get_doc(":Company", doc.company).enable_perpetual_inventory) {
+ if (erpnext.is_perpetual_inventory_enabled(doc.company)) {
this.show_general_ledger();
}
if (this.frm.has_perm("submit") && doc.status !== "Closed") {
@@ -238,7 +238,7 @@
unhide_account_head: function(frm) {
// unhide expense_account and cost_center if perpetual inventory is enabled in the company
- var aii_enabled = frappe.get_doc(":Company", frm.doc.company).enable_perpetual_inventory
+ var aii_enabled = erpnext.is_perpetual_inventory_enabled(frm.doc.company)
frm.fields_dict["items"].grid.set_column_disp(["expense_account", "cost_center"], aii_enabled);
}
})
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index fc92486..a38b222 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -46,7 +46,7 @@
},
toggle_display_account_head: function(frm) {
- var enabled = frappe.get_doc(":Company", frm.doc.company).enable_perpetual_inventory
+ var enabled = erpnext.is_perpetual_inventory_enabled(frm.doc.company)
frm.fields_dict["items"].grid.set_column_disp(["cost_center"], enabled);
}
});
@@ -62,7 +62,7 @@
this._super();
if(this.frm.doc.docstatus===1) {
this.show_stock_ledger();
- if (frappe.get_doc(":Company", doc.company).enable_perpetual_inventory) {
+ if (erpnext.is_perpetual_inventory_enabled(doc.company)) {
this.show_general_ledger();
}
}
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index fe157e0..d8cd271 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import unittest
-import frappe
+import frappe, erpnext
import frappe.defaults
from frappe.utils import cint, flt, cstr, today
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
@@ -53,7 +53,7 @@
def test_purchase_receipt_gl_entry(self):
pr = frappe.copy_doc(test_records[0])
set_perpetual_inventory(1, pr.company)
- self.assertEqual(cint(frappe.db.get_value("Company", pr.company, 'enable_perpetual_inventory')), 1)
+ self.assertEqual(cint(erpnext.is_perpetual_inventory_enabled(pr.company)), 1)
pr.insert()
pr.submit()
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index f1dbeea..74ac589 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -104,7 +104,7 @@
});
},
toggle_display_account_head: function(frm) {
- var enabled = frappe.get_doc(":Company", frm.doc.company).enable_perpetual_inventory;
+ var enabled = erpnext.is_perpetual_inventory_enabled(frm.doc.company);
frm.fields_dict["items"].grid.set_column_disp(["cost_center", "expense_account"], enabled);
}
})
@@ -222,12 +222,12 @@
};
});
- if(me.frm.doc.company && frappe.get_doc(":Company", me.frm.doc.company).enable_perpetual_inventory) {
+ 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.fields_dict.items.grid.get_field('expense_account').get_query = function() {
- if (frappe.get_doc(":Company", me.frm.doc.company).enable_perpetual_inventory) {
+ if (erpnext.is_perpetual_inventory_enabled(me.frm.doc.company)) {
return {
filters: {
"company": me.frm.doc.company,
@@ -265,7 +265,7 @@
this.toggle_related_fields(this.frm.doc);
this.toggle_enable_bom();
this.show_stock_ledger();
- if (this.frm.doc.docstatus===1 && frappe.get_doc(":Company", this.frm.doc.company).enable_perpetual_inventory) {
+ if (this.frm.doc.docstatus===1 && erpnext.is_perpetual_inventory_enabled(this.frm.doc.company)) {
this.show_general_ledger();
}
erpnext.hide_company();
@@ -283,7 +283,7 @@
set_default_account: function(callback) {
var me = this;
- if(this.frm.doc.company && frappe.get_doc(":Company", this.frm.doc.company).enable_perpetual_inventory) {
+ if(this.frm.doc.company && erpnext.is_perpetual_inventory_enabled(this.frm.doc.company)) {
return this.frm.call({
method: "erpnext.accounts.utils.get_company_default",
args: {
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
index 2a6ef7b..a86dea7 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
@@ -113,7 +113,7 @@
},
toggle_display_account_head: function(frm) {
frm.toggle_display(['expense_account', 'cost_center'],
- frappe.get_doc(":Company", frm.doc.company).enable_perpetual_inventory);
+ erpnext.is_perpetual_inventory_enabled(frm.doc.company));
}
});
@@ -144,7 +144,7 @@
set_default_expense_account: function() {
var me = this;
if(this.frm.doc.company) {
- if (frappe.get_doc(":Company", this.frm.doc.company).enable_perpetual_inventory && !this.frm.doc.expense_account) {
+ 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: {
@@ -166,12 +166,12 @@
this.setup_posting_date_time_check();
- if (me.frm.doc.company && frappe.get_doc(":Company", me.frm.doc.company).enable_perpetual_inventory) {
+ 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() {
- if(frappe.get_doc(":Company", me.frm.doc.company).enable_perpetual_inventory) {
+ if(erpnext.is_perpetual_inventory_enabled(me.frm.doc.company)) {
return {
"filters": {
'company': me.frm.doc.company,
@@ -181,7 +181,7 @@
}
}
this.frm.fields_dict["cost_center"].get_query = function() {
- if(frappe.get_doc(":Company", me.frm.doc.company).enable_perpetual_inventory) {
+ if(erpnext.is_perpetual_inventory_enabled(me.frm.doc.company)) {
return {
"filters": {
'company': me.frm.doc.company,
@@ -195,7 +195,7 @@
refresh: function() {
if(this.frm.doc.docstatus==1) {
this.show_stock_ledger();
- if (frappe.get_doc(":Company", this.frm.doc.company).enable_perpetual_inventory) {
+ if (erpnext.is_perpetual_inventory_enabled(this.frm.doc.company)) {
this.show_general_ledger();
}
}
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 093bd3b..9c42529 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
import frappe.defaults
from frappe import msgprint, _
from frappe.utils import cstr, flt, cint
@@ -231,7 +231,7 @@
self.expense_account, self.cost_center)
def validate_expense_account(self):
- if not cint(frappe.db.get_value("Company", self.company, 'enable_perpetual_inventory')):
+ if not cint(erpnext.is_perpetual_inventory_enabled(self.company)):
return
if not self.expense_account:
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 07be658..711f064 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -454,7 +454,7 @@
dict(item_code=item_code, buying=1, currency=currency), 'price_list_rate')
if not allow_zero_rate and not valuation_rate \
- and cint(frappe.db.get_value("Company", company, "enable_perpetual_inventory")):
+ and cint(erpnext.is_perpetual_inventory_enabled(company)):
frappe.local.message_log = []
frappe.throw(_("Valuation rate not found for the Item {0}, which is required to do accounting entries for {1} {2}. If the item is transacting as a sample item in the {1}, please mention that in the {1} Item table. Otherwise, please create an incoming stock transaction for the item or mention valuation rate in the Item record, and then try submiting/cancelling this entry").format(item_code, voucher_type, voucher_no))