diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 1e8ad0ee677..aae6c4f199f 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '11.1.65' +__version__ = '11.1.66' def get_default_company(user=None): '''Get default company for user''' diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 372d5412bb8..4d6e22e1915 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -1114,8 +1114,22 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name): else: child_item.rate = flt(d.get("rate")) if flt(child_item.price_list_rate): - child_item.discount_percentage = flt((1 - flt(child_item.rate) / flt(child_item.price_list_rate)) * 100.0, \ - child_item.precision("discount_percentage")) + if flt(child_item.rate) > flt(child_item.price_list_rate): + # if rate is greater than price_list_rate, set margin + # or set discount + child_item.discount_percentage = 0 + child_item.margin_type = "Amount" + child_item.margin_rate_or_amount = flt(child_item.rate - child_item.price_list_rate, + child_item.precision("margin_rate_or_amount")) + child_item.rate_with_margin = child_item.rate + else: + child_item.discount_percentage = flt((1 - flt(child_item.rate) / flt(child_item.price_list_rate)) * 100.0, + child_item.precision("discount_percentage")) + child_item.discount_amount = flt( + child_item.price_list_rate) - flt(child_item.rate) + child_item.margin_type = "" + child_item.margin_rate_or_amount = 0 + child_item.rate_with_margin = 0 child_item.flags.ignore_validate_update_after_submit = True child_item.save() diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index abac43570e4..8b406f27f38 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -306,8 +306,9 @@ class SellingController(StockController): if flt(d.conversion_factor)==0.0: d.conversion_factor = get_conversion_factor(d.item_code, d.uom).get("conversion_factor") or 1.0 return_rate = 0 - if cint(self.is_return) and self.return_against and self.docstatus==1: - return_rate = self.get_incoming_rate_for_sales_return(d.item_code, self.return_against) + if cint(self.is_return) and self.docstatus==1: + return_rate = self.get_incoming_rate_for_sales_return(d.item_code, + d.warehouse, self.return_against) # On cancellation or if return entry submission, make stock ledger entry for # target warehouse first, to update serial no values properly diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 0c7629defb8..4a468205276 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -299,7 +299,7 @@ class StockController(AccountsController): return serialized_items - def get_incoming_rate_for_sales_return(self, item_code, against_document): + def get_incoming_rate_for_sales_return(self, item_code, warehouse, against_document): incoming_rate = 0.0 if against_document and item_code: incoming_rate = frappe.db.sql("""select abs(stock_value_difference / actual_qty) @@ -308,6 +308,9 @@ class StockController(AccountsController): and item_code = %s limit 1""", (self.doctype, against_document, item_code)) incoming_rate = incoming_rate[0][0] if incoming_rate else 0.0 + else: + incoming_rate = get_valuation_rate(item_code, warehouse, + self.doctype, against_document, company=self.company, currency=self.currency) return incoming_rate diff --git a/erpnext/regional/italy/e-invoice.xml b/erpnext/regional/italy/e-invoice.xml index 0a5bb296a5f..049a7eba61a 100644 --- a/erpnext/regional/italy/e-invoice.xml +++ b/erpnext/regional/italy/e-invoice.xml @@ -19,7 +19,7 @@ {%- endmacro %} {%- macro render_discount_or_margin(item) -%} -{%- if item.discount_percentage > 0.0 or item.margin_type %} +{%- if (item.discount_percentage and item.discount_percentage > 0.0) or item.margin_type %} {%- if item.discount_percentage > 0.0 %} SC