Added is_perpetual_inventory_enabled method

This commit is contained in:
Rohit Waghchaure
2017-06-19 12:54:59 +05:30
parent 65ccb42f95
commit e9ff1914fc
20 changed files with 85 additions and 48 deletions

View File

@@ -38,10 +38,7 @@ def get_company_currency(company):
def set_perpetual_inventory(enable=1, company=None): def set_perpetual_inventory(enable=1, company=None):
if not company: if not company:
company = get_default_company() company = "_Test Company" if frappe.flags.in_test else get_default_company()
if frappe.flags.in_test:
company = "_Test Company"
company = frappe.get_doc("Company", company) company = frappe.get_doc("Company", company)
company.enable_perpetual_inventory = enable company.enable_perpetual_inventory = enable
@@ -57,4 +54,23 @@ def encode_company_abbr(name, company):
return " - ".join(parts) 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

View File

@@ -39,7 +39,7 @@ frappe.ui.form.on('POS Profile', {
toggle_display_account_head: function(frm) { toggle_display_account_head: function(frm) {
frm.toggle_display('expense_account', frm.toggle_display('expense_account',
frappe.get_doc(":Company", frm.doc.company).enable_perpetual_inventory); erpnext.is_perpetual_inventory_enabled(frm.doc.company));
} }
}) })

View File

@@ -164,7 +164,7 @@ class PurchaseInvoice(BuyingController):
frappe.msgprint(_("Item Code required at Row No {0}").format(d.idx), raise_exception=True) frappe.msgprint(_("Item Code required at Row No {0}").format(d.idx), raise_exception=True)
def set_expense_account(self, for_validate=False): 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: if auto_accounting_for_stock:
stock_not_billed_account = self.get_company_default("stock_received_but_not_billed") stock_not_billed_account = self.get_company_default("stock_received_but_not_billed")
@@ -335,7 +335,7 @@ class PurchaseInvoice(BuyingController):
delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name) delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
def get_gl_entries(self, warehouse_account=None): 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.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.expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation")
self.negative_expense_to_be_booked = 0.0 self.negative_expense_to_be_booked = 0.0

View File

@@ -4,7 +4,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import unittest import unittest
import frappe import frappe, erpnext
import frappe.model import frappe.model
from frappe.utils import cint, flt, today, nowdate from frappe.utils import cint, flt, today, nowdate
import frappe.defaults import frappe.defaults
@@ -28,7 +28,7 @@ class TestPurchaseInvoice(unittest.TestCase):
def test_gl_entries_without_perpetual_inventory(self): def test_gl_entries_without_perpetual_inventory(self):
wrapper = frappe.copy_doc(test_records[0]) wrapper = frappe.copy_doc(test_records[0])
set_perpetual_inventory(0, wrapper.company) 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.insert()
wrapper.submit() wrapper.submit()
wrapper.load_from_db() wrapper.load_from_db()
@@ -53,7 +53,7 @@ class TestPurchaseInvoice(unittest.TestCase):
def test_gl_entries_with_perpetual_inventory(self): def test_gl_entries_with_perpetual_inventory(self):
pi = frappe.copy_doc(test_records[1]) pi = frappe.copy_doc(test_records[1])
set_perpetual_inventory(1, pi.company) 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.insert()
pi.submit() pi.submit()
@@ -85,7 +85,7 @@ class TestPurchaseInvoice(unittest.TestCase):
def test_gl_entries_with_perpetual_inventory_against_pr(self): def test_gl_entries_with_perpetual_inventory_against_pr(self):
pr = frappe.copy_doc(pr_test_records[0]) pr = frappe.copy_doc(pr_test_records[0])
set_perpetual_inventory(1, pr.company) 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() pr.submit()
pi = frappe.copy_doc(test_records[1]) pi = frappe.copy_doc(test_records[1])
@@ -132,7 +132,7 @@ class TestPurchaseInvoice(unittest.TestCase):
def test_gl_entries_with_aia_for_non_stock_items(self): def test_gl_entries_with_aia_for_non_stock_items(self):
pi = frappe.copy_doc(test_records[1]) pi = frappe.copy_doc(test_records[1])
set_perpetual_inventory(1, pi.company) 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].item_code = "_Test Non Stock Item"
pi.get("items")[0].expense_account = "_Test Account Cost for Goods Sold - _TC" pi.get("items")[0].expense_account = "_Test Account Cost for Goods Sold - _TC"
pi.get("taxes").pop(0) pi.get("taxes").pop(0)

View File

@@ -492,7 +492,7 @@ frappe.ui.form.on('Sales Invoice', {
// expense account // expense account
frm.fields_dict['items'].grid.get_field('expense_account').get_query = function(doc) { 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 { return {
filters: { filters: {
'report_type': 'Profit and Loss', 'report_type': 'Profit and Loss',

View File

@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe, erpnext
import frappe.defaults import frappe.defaults
from frappe.utils import cint, flt from frappe.utils import cint, flt
from frappe import _, msgprint, throw from frappe import _, msgprint, throw
@@ -559,7 +559,7 @@ class SalesInvoice(SellingController):
throw(_("Delivery Note {0} is not submitted").format(d.delivery_note)) 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): 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: if not self.grand_total:
return return
@@ -675,7 +675,7 @@ class SalesInvoice(SellingController):
# expense account gl entries # expense account gl entries
if cint(self.update_stock) and \ 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() gl_entries += super(SalesInvoice, self).get_gl_entries()
def make_pos_gl_entries(self, gl_entries): def make_pos_gl_entries(self, gl_entries):

View File

@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe, erpnext
from frappe.utils import flt, cstr, cint from frappe.utils import flt, cstr, cint
from frappe import _ from frappe import _
from frappe.model.meta import get_field_precision from frappe.model.meta import get_field_precision
@@ -101,7 +101,7 @@ def make_entry(args, adv_adj, update_outstanding, from_repost=False):
gle.submit() gle.submit()
def validate_account_for_perpetual_inventory(gl_map): 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": and gl_map[0].voucher_type=="Journal Entry":
aii_accounts = [d[0] for d in frappe.db.sql("""select name from tabAccount aii_accounts = [d[0] for d in frappe.db.sql("""select name from tabAccount
where account_type = 'Stock' and is_group=0""")] where account_type = 'Stock' and is_group=0""")]

View File

@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe, erpnext
from frappe.utils import cint, flt, cstr from frappe.utils import cint, flt, cstr
from frappe import msgprint, _ from frappe import msgprint, _
import frappe.defaults import frappe.defaults
@@ -21,7 +21,7 @@ class StockController(AccountsController):
if self.docstatus == 2: if self.docstatus == 2:
delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name) 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() warehouse_account = get_warehouse_account_map()
if self.docstatus==1: if self.docstatus==1:

View File

@@ -1,6 +1,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe, erpnext
from frappe import _ from frappe import _
from frappe.utils import cint from frappe.utils import cint
from frappe.utils.nestedset import rebuild_tree from frappe.utils.nestedset import rebuild_tree
@@ -51,7 +51,7 @@ def check_is_warehouse_associated_with_company():
def make_warehouse_nestedset(company=None): def make_warehouse_nestedset(company=None):
validate_parent_account_for_warehouse(company) validate_parent_account_for_warehouse(company)
stock_account_group = get_stock_account_group(company.name) 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: if not stock_account_group and enable_perpetual_inventory:
return return
@@ -73,7 +73,7 @@ def validate_parent_account_for_warehouse(company=None):
if not company: if not company:
return 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 parent_account = frappe.db.sql("""select name from tabAccount
where account_type='Stock' and company=%s and is_group=1 where account_type='Stock' and company=%s and is_group=1
and (warehouse is null or warehouse = '')""", company.name) and (warehouse is null or warehouse = '')""", company.name)

View File

@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe, erpnext
def execute(): def execute():
frappe.reload_doctype("Account") frappe.reload_doctype("Account")
@@ -10,7 +10,7 @@ def execute():
warehouses = frappe.db.sql_list("""select name, company from tabAccount warehouses = frappe.db.sql_list("""select name, company from tabAccount
where account_type = 'Stock' and is_group = 0 where account_type = 'Stock' and is_group = 0
and (warehouse is null or warehouse = '')""", as_dict) 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: if len(warehouses) > 0:
warehouses = set_warehouse_for_stock_account(warehouses) warehouses = set_warehouse_for_stock_account(warehouses)
if not warehouses: if not warehouses:

View File

@@ -7,4 +7,7 @@ import frappe
def execute(): def execute():
frappe.reload_doctype('Company') frappe.reload_doctype('Company')
enabled = frappe.db.get_single_value("Accounts Settings", "auto_accounting_for_stock") or 0 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)) 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)

View File

@@ -31,6 +31,12 @@ $.extend(erpnext, {
} }
}, },
is_perpetual_inventory_enabled: function(company) {
if(company) {
return frappe.get_doc(":Company", company).enable_perpetual_inventory
}
},
setup_serial_no: function() { setup_serial_no: function() {
var grid_row = cur_frm.open_grid_row(); var grid_row = cur_frm.open_grid_row();
if(!grid_row || !grid_row.grid_form.fields_dict.serial_no || if(!grid_row || !grid_row.grid_form.fields_dict.serial_no ||

View File

@@ -33,6 +33,7 @@ class Company(Document):
self.validate_default_accounts() self.validate_default_accounts()
self.validate_currency() self.validate_currency()
self.validate_coa_input() self.validate_coa_input()
self.validate_perpetual_inventory()
def validate_abbr(self): def validate_abbr(self):
if not self.abbr: if not self.abbr:
@@ -139,6 +140,17 @@ class Company(Document):
if not self.chart_of_accounts: if not self.chart_of_accounts:
self.chart_of_accounts = "Standard" 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): def set_default_accounts(self):
self._set_default_account("default_cash_account", "Cash") self._set_default_account("default_cash_account", "Cash")
self._set_default_account("default_bank_account", "Bank") self._set_default_account("default_bank_account", "Bank")

View File

@@ -40,7 +40,7 @@ frappe.ui.form.on("Delivery Note", {
frm.set_query('expense_account', 'items', function(doc, cdt, cdn) { 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 { return {
filters: { filters: {
"report_type": "Profit and Loss", "report_type": "Profit and Loss",
@@ -52,7 +52,7 @@ frappe.ui.form.on("Delivery Note", {
}); });
frm.set_query('cost_center', 'items', function(doc, cdt, cdn) { 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 { return {
filters: { filters: {
'company': doc.company, 'company': doc.company,
@@ -141,7 +141,7 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend(
if (doc.docstatus==1) { if (doc.docstatus==1) {
this.show_stock_ledger(); 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(); this.show_general_ledger();
} }
if (this.frm.has_perm("submit") && doc.status !== "Closed") { if (this.frm.has_perm("submit") && doc.status !== "Closed") {
@@ -238,7 +238,7 @@ frappe.ui.form.on('Delivery Note', {
unhide_account_head: function(frm) { unhide_account_head: function(frm) {
// unhide expense_account and cost_center if perpetual inventory is enabled in the company // 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); frm.fields_dict["items"].grid.set_column_disp(["expense_account", "cost_center"], aii_enabled);
} }
}) })

View File

@@ -46,7 +46,7 @@ frappe.ui.form.on("Purchase Receipt", {
}, },
toggle_display_account_head: function(frm) { 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); frm.fields_dict["items"].grid.set_column_disp(["cost_center"], enabled);
} }
}); });
@@ -62,7 +62,7 @@ erpnext.stock.PurchaseReceiptController = erpnext.buying.BuyingController.extend
this._super(); this._super();
if(this.frm.doc.docstatus===1) { if(this.frm.doc.docstatus===1) {
this.show_stock_ledger(); 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(); this.show_general_ledger();
} }
} }

View File

@@ -4,7 +4,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import unittest import unittest
import frappe import frappe, erpnext
import frappe.defaults import frappe.defaults
from frappe.utils import cint, flt, cstr, today from frappe.utils import cint, flt, cstr, today
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
@@ -53,7 +53,7 @@ class TestPurchaseReceipt(unittest.TestCase):
def test_purchase_receipt_gl_entry(self): def test_purchase_receipt_gl_entry(self):
pr = frappe.copy_doc(test_records[0]) pr = frappe.copy_doc(test_records[0])
set_perpetual_inventory(1, pr.company) 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.insert()
pr.submit() pr.submit()

View File

@@ -104,7 +104,7 @@ frappe.ui.form.on('Stock Entry', {
}); });
}, },
toggle_display_account_head: function(frm) { 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); frm.fields_dict["items"].grid.set_column_disp(["cost_center", "expense_account"], enabled);
} }
}) })
@@ -222,12 +222,12 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
}; };
}); });
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", "stock_adjustment_account", "expense_account");
} }
this.frm.fields_dict.items.grid.get_field('expense_account').get_query = function() { 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 { return {
filters: { filters: {
"company": me.frm.doc.company, "company": me.frm.doc.company,
@@ -265,7 +265,7 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
this.toggle_related_fields(this.frm.doc); this.toggle_related_fields(this.frm.doc);
this.toggle_enable_bom(); this.toggle_enable_bom();
this.show_stock_ledger(); 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(); this.show_general_ledger();
} }
erpnext.hide_company(); erpnext.hide_company();
@@ -283,7 +283,7 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
set_default_account: function(callback) { set_default_account: function(callback) {
var me = this; 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({ return this.frm.call({
method: "erpnext.accounts.utils.get_company_default", method: "erpnext.accounts.utils.get_company_default",
args: { args: {

View File

@@ -113,7 +113,7 @@ frappe.ui.form.on("Stock Reconciliation", {
}, },
toggle_display_account_head: function(frm) { toggle_display_account_head: function(frm) {
frm.toggle_display(['expense_account', 'cost_center'], 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 @@ erpnext.stock.StockReconciliation = erpnext.stock.StockController.extend({
set_default_expense_account: function() { set_default_expense_account: function() {
var me = this; var me = this;
if(this.frm.doc.company) { 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({ return this.frm.call({
method: "erpnext.accounts.utils.get_company_default", method: "erpnext.accounts.utils.get_company_default",
args: { args: {
@@ -166,12 +166,12 @@ erpnext.stock.StockReconciliation = erpnext.stock.StockController.extend({
this.setup_posting_date_time_check(); 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", "stock_adjustment_account", "expense_account");
this.frm.add_fetch("company", "cost_center", "cost_center"); this.frm.add_fetch("company", "cost_center", "cost_center");
} }
this.frm.fields_dict["expense_account"].get_query = function() { 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 { return {
"filters": { "filters": {
'company': me.frm.doc.company, 'company': me.frm.doc.company,
@@ -181,7 +181,7 @@ erpnext.stock.StockReconciliation = erpnext.stock.StockController.extend({
} }
} }
this.frm.fields_dict["cost_center"].get_query = function() { 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 { return {
"filters": { "filters": {
'company': me.frm.doc.company, 'company': me.frm.doc.company,
@@ -195,7 +195,7 @@ erpnext.stock.StockReconciliation = erpnext.stock.StockController.extend({
refresh: function() { refresh: function() {
if(this.frm.doc.docstatus==1) { if(this.frm.doc.docstatus==1) {
this.show_stock_ledger(); 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(); this.show_general_ledger();
} }
} }

View File

@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe, erpnext
import frappe.defaults import frappe.defaults
from frappe import msgprint, _ from frappe import msgprint, _
from frappe.utils import cstr, flt, cint from frappe.utils import cstr, flt, cint
@@ -231,7 +231,7 @@ class StockReconciliation(StockController):
self.expense_account, self.cost_center) self.expense_account, self.cost_center)
def validate_expense_account(self): 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 return
if not self.expense_account: if not self.expense_account:

View File

@@ -454,7 +454,7 @@ def get_valuation_rate(item_code, warehouse, voucher_type, voucher_no,
dict(item_code=item_code, buying=1, currency=currency), 'price_list_rate') dict(item_code=item_code, buying=1, currency=currency), 'price_list_rate')
if not allow_zero_rate and not valuation_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.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)) 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))