diff --git a/erpnext/__version__.py b/erpnext/__version__.py index 52fde385e9..e893b1fc0d 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.6.0' +__version__ = '4.6.1' diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py index 7280322a68..f0890dd439 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py @@ -14,9 +14,6 @@ class AccountsSettings(Document): frappe.db.set_default("auto_accounting_for_stock", self.auto_accounting_for_stock) if cint(self.auto_accounting_for_stock): - if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")): - frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings")) - # set default perpetual account in company for company in frappe.db.sql("select name from tabCompany"): frappe.get_doc("Company", company[0]).save() diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 66d5792e2d..cf57658342 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -277,6 +277,9 @@ class BuyingController(StockController): "qty": -1 * required_qty, "serial_no": rm.serial_no }) + if not item_rate: + from erpnext.controllers.stock_controller import get_valuation_rate + item_rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse) rm.rate = item_rate or bom_item.rate else: rm.rate = bom_item.rate diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index ad553d8c83..a72a3d09fb 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -30,7 +30,7 @@ class StockController(AccountsController): def get_gl_entries(self, warehouse_account=None, default_expense_account=None, default_cost_center=None, allow_negative_stock=False): - block_negative_stock(allow_negative_stock) + # block_negative_stock(allow_negative_stock) if not warehouse_account: warehouse_account = get_warehouse_account() @@ -319,4 +319,7 @@ def get_valuation_rate(item_code, warehouse): if not valuation_rate: valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate") + if not valuation_rate: + frappe.throw(_("Purchase rate for item: {0} not found, which is required to book accounting entry. Please mention item price against a buying price list.").format(item_code)) + return valuation_rate diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 6c91c390ff..b095984dda 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.6.0" +app_version = "4.6.1" error_report_email = "support@erpnext.com" diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index fc35222bb0..ed4257fd9b 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -287,7 +287,7 @@ class PurchaseReceipt(BuyingController): from erpnext.accounts.general_ledger import process_gl_map from erpnext.controllers.stock_controller import block_negative_stock - block_negative_stock(allow_negative_stock) + # block_negative_stock(allow_negative_stock) stock_rbnb = self.get_company_default("stock_received_but_not_billed") expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index a2614d7f79..2956170010 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -269,7 +269,7 @@ def get_moving_average_values(qty_after_transaction, sle, valuation_rate): elif not valuation_rate: valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse) - return abs(valuation_rate) + return abs(flt(valuation_rate)) def get_fifo_values(qty_after_transaction, sle, stock_queue): incoming_rate = flt(sle.incoming_rate) diff --git a/setup.py b/setup.py index c6d1f84b4f..204d833b93 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.6.0" +version = "4.6.1" with open("requirements.txt", "r") as f: install_requires = f.readlines()