From 28acaeb3456e31351e3dd32c0ba6d886c70a7442 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 3 Jan 2014 11:16:16 +0530 Subject: [PATCH 1/2] Fixes in valuation rate calculation in purchase receipt --- controllers/buying_controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index 4aa08d6c55..f014f72ee5 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -184,7 +184,7 @@ class BuyingController(StockController): for item in self.doclist.get({"parentfield": parentfield}): - if item.item_code and item.qty and item.item_code in stock_items: + if item.item_code and item.qty and stock_items_amount and item.item_code in stock_items: item.item_tax_amount = flt(flt(item.amount) * total_valuation_amount \ / stock_items_amount, self.precision("item_tax_amount", item)) From a4db83a934eb4fefd356ae6f55d88f97e3d45af9 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 3 Jan 2014 12:13:18 +0530 Subject: [PATCH 2/2] Fixes in valuation rate calculation in purchase receipt --- .../purchase_invoice/purchase_invoice.py | 12 ------------ accounts/utils.py | 2 ++ controllers/buying_controller.py | 17 +++++++++++------ 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py index 404627af25..0b8ad46dd0 100644 --- a/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -350,7 +350,6 @@ class DocType(BuyingController): # item gl entries stock_item_and_auto_accounting_for_stock = False stock_items = self.get_stock_items() - # rounding_diff = 0.0 for item in self.doclist.get({"parentfield": "entries"}): if auto_accounting_for_stock and item.item_code in stock_items: if flt(item.valuation_rate): @@ -361,11 +360,6 @@ class DocType(BuyingController): valuation_amt = item.amount + item.item_tax_amount + item.rm_supp_cost - # rounding_diff += (flt(item.amount, self.precision("amount", item)) + - # flt(item.item_tax_amount, self.precision("item_tax_amount", item)) + - # flt(item.rm_supp_cost, self.precision("rm_supp_cost", item)) - - # valuation_amt) - gl_entries.append( self.get_gl_dict({ "account": item.expense_head, @@ -392,12 +386,6 @@ class DocType(BuyingController): # this will balance out valuation amount included in cost of goods sold expenses_included_in_valuation = \ self.get_company_default("expenses_included_in_valuation") - - # if rounding_diff: - # import operator - # cost_center_with_max_value = max(valuation_tax.iteritems(), - # key=operator.itemgetter(1))[0] - # valuation_tax[cost_center_with_max_value] -= flt(rounding_diff) for cost_center, amount in valuation_tax.items(): gl_entries.append( diff --git a/accounts/utils.py b/accounts/utils.py index 8971c80f99..a5fb390e9f 100644 --- a/accounts/utils.py +++ b/accounts/utils.py @@ -31,6 +31,8 @@ def get_fiscal_years(date=None, fiscal_year=None, label="Date", verbose=1): if not fy: error_msg = """%s %s not in any Fiscal Year""" % (label, formatdate(date)) + error_msg = """{msg}: {date}""".format(msg=_("Fiscal Year does not exist for date"), + date=formatdate(date)) if verbose: webnotes.msgprint(error_msg) raise FiscalYearError, error_msg diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index f014f72ee5..3c6981d6cb 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -174,9 +174,11 @@ class BuyingController(StockController): """ stock_items = self.get_stock_items() - stock_items_amount = sum([flt(d.amount) for d in - self.doclist.get({"parentfield": parentfield}) - if d.item_code and d.item_code in stock_items]) + stock_items_qty, stock_items_amount = 0, 0 + for d in self.doclist.get({"parentfield": parentfield}): + if d.item_code and d.item_code in stock_items: + stock_items_qty += flt(d.qty) + stock_items_amount += flt(d.amount) total_valuation_amount = sum([flt(d.tax_amount) for d in self.doclist.get({"parentfield": "purchase_tax_details"}) @@ -184,9 +186,12 @@ class BuyingController(StockController): for item in self.doclist.get({"parentfield": parentfield}): - if item.item_code and item.qty and stock_items_amount and item.item_code in stock_items: - item.item_tax_amount = flt(flt(item.amount) * total_valuation_amount \ - / stock_items_amount, self.precision("item_tax_amount", item)) + if item.item_code and item.qty and item.item_code in stock_items: + item_proportion = flt(item.amount) / stock_items_amount if stock_items_amount \ + else flt(item.qty) / stock_items_qty + + item.item_tax_amount = flt(item_proportion * total_valuation_amount, + self.precision("item_tax_amount", item)) self.round_floats_in(item)