diff --git a/erpnext/__version__.py b/erpnext/__version__.py index a6040f0cd7..823132d757 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.21.0' +__version__ = '4.21.1' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 99aaff095a..80135293c9 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.21.0" +app_version = "4.21.1" error_report_email = "support@erpnext.com" diff --git a/erpnext/public/js/transaction.js b/erpnext/public/js/transaction.js index 6d38b46b78..e1e78a3c01 100644 --- a/erpnext/public/js/transaction.js +++ b/erpnext/public/js/transaction.js @@ -404,23 +404,27 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({ _set_values_for_item_list: function(children) { var me = this; var price_list_rate_changed = false; - $.each(children, function(i, d) { + for(var i=0, l=children.length; i 0: @@ -288,14 +289,16 @@ class PurchaseReceipt(BuyingController): if d.item_code in stock_items and flt(d.valuation_rate) and flt(d.qty): if warehouse_account.get(d.warehouse): + val_rate_db_precision = 6 if cint(self.precision("valuation_rate")) <= 6 else 9 + # warehouse account gl_entries.append(self.get_gl_dict({ "account": warehouse_account[d.warehouse], "against": stock_rbnb, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), - "debit": flt(flt(d.valuation_rate) * flt(d.qty) * flt(d.conversion_factor), - self.precision("valuation_rate", d)) + "debit": flt(flt(d.valuation_rate, val_rate_db_precision) * flt(d.qty) * flt(d.conversion_factor), + self.precision("base_amount", d)) })) # stock received but not billed @@ -329,6 +332,24 @@ class PurchaseReceipt(BuyingController): "credit": flt(d.rm_supp_cost) })) + # divisional loss adjustment + if not self.get("other_charges"): + sle_valuation_amount = flt(flt(d.valuation_rate, val_rate_db_precision) * flt(d.qty) * flt(d.conversion_factor), + self.precision("base_amount", d)) + + distributed_amount = flt(flt(d.base_amount, self.precision("base_amount", d))) + \ + flt(d.landed_cost_voucher_amount) + flt(d.rm_supp_cost) + + divisional_loss = flt(distributed_amount - sle_valuation_amount, self.precision("base_amount", d)) + if divisional_loss: + gl_entries.append(self.get_gl_dict({ + "account": stock_rbnb, + "against": warehouse_account[d.warehouse], + "cost_center": d.cost_center, + "remarks": self.get("remarks") or _("Accounting Entry for Stock"), + "debit": divisional_loss + })) + elif d.warehouse not in warehouse_with_no_account or \ d.rejected_warehouse not in warehouse_with_no_account: warehouse_with_no_account.append(d.warehouse) diff --git a/setup.py b/setup.py index aa408de53f..d87fb6257e 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.21.0" +version = "4.21.1" with open("requirements.txt", "r") as f: install_requires = f.readlines()