fixed test cases
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 7a4ccd6..adaae4f 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -39,6 +39,9 @@
def set_perpetual_inventory(enable=1, company=None):
if not company:
company = get_default_company()
+
+ if frappe.flags.in_test:
+ company = "_Test Company"
company = frappe.get_doc("Company", company)
company.enable_perpetual_inventory = enable
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 8a7bbe7..b391127 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 = self.get_company_default("enable_perpetual_inventory")
+ auto_accounting_for_stock = frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')
if auto_accounting_for_stock:
stock_not_billed_account = self.get_company_default("stock_received_but_not_billed")
@@ -335,9 +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 = \
- cint(self.get_company_default("enable_perpetual_inventory"))
-
+ self.auto_accounting_for_stock = frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')
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 cf0ec57..8094e99 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -25,11 +25,10 @@
def tearDown(self):
unlink_payment_on_cancel_of_invoice(0)
- def test_gl_entries_without_auto_accounting_for_stock(self):
- set_perpetual_inventory(0)
- self.assertTrue(not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")))
-
+ 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')))
wrapper.insert()
wrapper.submit()
wrapper.load_from_db()
@@ -51,17 +50,16 @@
for d in gl_entries:
self.assertEqual([d.debit, d.credit], expected_gl_entries.get(d.account))
- def test_gl_entries_with_auto_accounting_for_stock(self):
- set_perpetual_inventory(1)
- self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
-
+ 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)
pi.insert()
pi.submit()
self.check_gle_for_pi(pi.name)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, pi.company)
def test_payment_entry_unlink_against_purchase_invoice(self):
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
@@ -84,11 +82,10 @@
self.assertRaises(frappe.LinkExistsError, pi_doc.cancel)
- def test_gl_entries_with_auto_accounting_for_stock_against_pr(self):
- set_perpetual_inventory(1)
- self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
-
+ 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)
pr.submit()
pi = frappe.copy_doc(test_records[1])
@@ -99,7 +96,7 @@
self.check_gle_for_pi(pi.name)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, pr.company)
def check_gle_for_pi(self, pi):
gl_entries = frappe.db.sql("""select account, debit, credit
@@ -133,10 +130,9 @@
self.assertRaises(frappe.CannotChangeConstantError, pi.save)
def test_gl_entries_with_aia_for_non_stock_items(self):
- set_perpetual_inventory()
- self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
-
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)
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)
@@ -159,7 +155,7 @@
self.assertEquals(expected_values[i][0], gle.account)
self.assertEquals(expected_values[i][1], gle.debit)
self.assertEquals(expected_values[i][2], gle.credit)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, pi.company)
def test_purchase_invoice_calculation(self):
pi = frappe.copy_doc(test_records[0])
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 20d58b9..b7aca8f 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -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):
- self.auto_accounting_for_stock = self.get_company_default("enable_perpetual_inventory")
+ auto_accounting_for_stock = frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')
if not self.grand_total:
return
@@ -582,11 +582,11 @@
self.doctype, self.return_against if cint(self.is_return) else self.name)
if repost_future_gle and cint(self.update_stock) \
- and cint(self.auto_accounting_for_stock):
+ and cint(auto_accounting_for_stock):
items, warehouses = self.get_items_and_warehouses()
update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items)
elif self.docstatus == 2 and cint(self.update_stock) \
- and cint(self.auto_accounting_for_stock):
+ and cint(auto_accounting_for_stock):
from erpnext.accounts.general_ledger import delete_gl_entries
delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
@@ -674,8 +674,8 @@
)
# expense account gl entries
- if cint(self.auto_accounting_for_stock) \
- and cint(self.update_stock):
+ if cint(self.update_stock) and \
+ frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory'):
gl_entries += super(SalesInvoice, self).get_gl_entries()
def make_pos_gl_entries(self, gl_entries):
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index cb05ac8..2e044cc 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -488,8 +488,8 @@
self.assertEquals(frappe.db.get_value("Sales Invoice", w.name, "outstanding_amount"), 561.8)
def test_sales_invoice_gl_entry_without_perpetual_inventory(self):
- set_perpetual_inventory(0)
si = frappe.copy_doc(test_records[1])
+ set_perpetual_inventory(0, si.company)
si.insert()
si.submit()
@@ -617,6 +617,7 @@
self.assertEquals(expected_gl_entries[i][2], gle.credit)
si.cancel()
+ frappe.delete_doc('Sales Invoice', si.name)
gle = frappe.db.sql("""select * from `tabGL Entry`
where voucher_type='Sales Invoice' and voucher_no=%s""", si.name)
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index f8df04d..b3c2f8c 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -21,7 +21,7 @@
if self.docstatus == 2:
delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
- if cint(self.get_company_default("enable_perpetual_inventory")):
+ if cint(frappe.db.get_value('Company', self.company, 'enable_perpetual_inventory')):
warehouse_account = get_warehouse_account_map()
if self.docstatus==1:
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 0f3099f..751d527 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -47,9 +47,8 @@
self.assertRaises(frappe.ValidationError, frappe.get_doc(si).insert)
def test_delivery_note_no_gl_entry(self):
- set_perpetual_inventory(0)
- self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 0)
-
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(0, company)
make_stock_entry(target="_Test Warehouse - _TC", qty=5, basic_rate=100)
stock_queue = json.loads(get_previous_sle({
@@ -68,8 +67,9 @@
self.assertFalse(get_gl_entries("Delivery Note", dn.name))
def test_delivery_note_gl_entry(self):
- set_perpetual_inventory()
- self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
+
set_valuation_method("_Test Item", "FIFO")
make_stock_entry(target="_Test Warehouse - _TC", qty=5, basic_rate=100)
@@ -115,10 +115,11 @@
dn.cancel()
self.assertFalse(get_gl_entries("Delivery Note", dn.name))
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, company)
def test_delivery_note_gl_entry_packing_item(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=10, basic_rate=100)
make_stock_entry(item_code="_Test Item Home Desktop 100",
@@ -156,7 +157,7 @@
dn.cancel()
self.assertFalse(get_gl_entries("Delivery Note", dn.name))
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, company)
def test_serialized(self):
se = make_serialized_item()
@@ -196,7 +197,8 @@
self.assertEquals(cstr(serial_no.get(field)), value)
def test_sales_return_for_non_bundled_items(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, basic_rate=100)
@@ -230,10 +232,11 @@
self.assertEquals(gle_warehouse_amount, stock_value_difference)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, company)
def test_return_single_item_from_bundled_items(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
@@ -270,10 +273,11 @@
self.assertEquals(gle_warehouse_amount, stock_value_difference)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, company)
def test_return_entire_bundled_items(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
create_stock_reconciliation(item_code="_Test Item",
target="_Test Warehouse - _TC", qty=50, rate=100)
@@ -312,7 +316,7 @@
self.assertEquals(gle_warehouse_amount, 1400)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, company)
def test_return_for_serialized_items(self):
se = make_serialized_item()
@@ -350,7 +354,8 @@
})
def test_delivery_of_bundled_items_to_target_warehouse(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
set_valuation_method("_Test Item", "FIFO")
set_valuation_method("_Test Item Home Desktop 100", "FIFO")
@@ -418,7 +423,7 @@
for i, gle in enumerate(gl_entries):
self.assertEquals([gle.debit, gle.credit], expected_values.get(gle.account))
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, company)
def test_closed_delivery_note(self):
from erpnext.stock.doctype.delivery_note.delivery_note import update_delivery_note_status
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index c3a2137..1531f40 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -5,13 +5,13 @@
# For license information, please see license.txt
from __future__ import unicode_literals
-import frappe, unittest
+import frappe, unittest, erpnext
from frappe.utils import flt
from erpnext.stock.doctype.material_request.material_request import raise_production_orders
class TestMaterialRequest(unittest.TestCase):
def setUp(self):
- frappe.defaults.set_global_default("auto_accounting_for_stock", 0)
+ erpnext.set_perpetual_inventory(0)
def test_make_purchase_order(self):
from erpnext.stock.doctype.material_request.material_request import make_purchase_order
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 4ea0add..fe157e0 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -30,7 +30,8 @@
self.assertRaises(frappe.ValidationError, frappe.get_doc(pi).submit)
def test_purchase_receipt_no_gl_entry(self):
- set_perpetual_inventory(0)
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(0, company)
existing_bin_stock_value = frappe.db.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse - _TC"}, "stock_value")
@@ -50,9 +51,9 @@
self.assertFalse(get_gl_entries("Purchase Receipt", pr.name))
def test_purchase_receipt_gl_entry(self):
- set_perpetual_inventory()
- self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
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)
pr.insert()
pr.submit()
@@ -84,7 +85,7 @@
pr.cancel()
self.assertFalse(get_gl_entries("Purchase Receipt", pr.name))
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, pr.company)
def test_subcontracting(self):
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 2451a9b..8670f73 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -123,7 +123,8 @@
self.assertTrue(item_code in items)
def test_material_receipt_gl_entry(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
mr = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
qty=50, basic_rate=100, expense_account="Stock Adjustment - _TC")
@@ -148,7 +149,8 @@
where voucher_type='Stock Entry' and voucher_no=%s""", mr.name))
def test_material_issue_gl_entry(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
qty=50, basic_rate=100, expense_account="Stock Adjustment - _TC")
@@ -179,7 +181,8 @@
where voucher_type='Stock Entry' and voucher_no=%s""", mi.name))
def test_material_transfer_gl_entry(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
create_stock_reconciliation(qty=100, rate=100)
@@ -217,7 +220,8 @@
where voucher_type='Stock Entry' and voucher_no=%s""", mtn.name))
def test_repack_no_change_in_valuation(self):
- set_perpetual_inventory(0)
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(0, company)
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, basic_rate=100)
make_stock_entry(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
@@ -238,10 +242,11 @@
order by account desc""", repack.name, as_dict=1)
self.assertFalse(gl_entries)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, repack.company)
def test_repack_with_additional_costs(self):
- set_perpetual_inventory()
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company')
+ set_perpetual_inventory(1, company)
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, basic_rate=100)
repack = frappe.copy_doc(test_records[3])
@@ -278,7 +283,7 @@
["Expenses Included In Valuation - _TC", 0.0, 1200.0]
])
)
- set_perpetual_inventory(0)
+ set_perpetual_inventory(0, repack.company)
def check_stock_ledger_entries(self, voucher_type, voucher_no, expected_sle):
expected_sle.sort(key=lambda x: x[0])
@@ -452,7 +457,8 @@
self.assertFalse(frappe.db.get_value("Serial No", serial_no, "warehouse"))
def test_warehouse_company_validation(self):
- set_perpetual_inventory(0)
+ company = frappe.db.get_value('Warehouse', '_Test Warehouse 2 - _TC1', 'company')
+ set_perpetual_inventory(0, company)
frappe.get_doc("User", "test2@example.com")\
.add_roles("Sales User", "Sales Manager", "Stock User", "Stock Manager")
frappe.set_user("test2@example.com")
@@ -465,8 +471,6 @@
# permission tests
def test_warehouse_user(self):
- set_perpetual_inventory(0)
-
for role in ("Stock User", "Sales User"):
set_user_permission_doctypes(doctype="Stock Entry", role=role,
apply_user_permissions=1, user_permission_doctypes=["Warehouse"])
@@ -483,6 +487,7 @@
frappe.set_user("test@example.com")
st1 = frappe.copy_doc(test_records[0])
st1.company = "_Test Company 1"
+ set_perpetual_inventory(0, st1.company)
st1.get("items")[0].t_warehouse="_Test Warehouse 2 - _TC1"
self.assertRaises(frappe.PermissionError, st1.insert)
@@ -490,6 +495,8 @@
st1 = frappe.copy_doc(test_records[0])
st1.company = "_Test Company 1"
st1.get("items")[0].t_warehouse="_Test Warehouse 2 - _TC1"
+ st1.get("items")[0].expense_account = "Stock Adjustment - _TC1"
+ st1.get("items")[0].cost_center = "Main - _TC1"
st1.insert()
st1.submit()