From e1b2ae573909b9abfae9ad0fc716822d6f88c66f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 9 May 2013 16:56:19 +0530 Subject: [PATCH 1/3] [fixes] float precision for pur invoice --- accounts/doctype/purchase_invoice/purchase_invoice.py | 8 +++++--- controllers/buying_controller.py | 10 +++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py index 50d5d43d80..c53b6d94fc 100644 --- a/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -464,15 +464,17 @@ class DocType(BuyingController): # if auto inventory accounting enabled and stock item, # then do stock related gl entries # expense will be booked in sales invoice - stock_item_and_auto_inventory_accounting = True + valuation_amt = (flt(item.amount, self.precision.item.amount) + + flt(item.item_tax_amount, self.precision.item.item_tax_amount) + + flt(item.rm_supp_cost, self.precision.item.rm_supp_cost)) + gl_entries.append( self.get_gl_dict({ "account": stock_account, "against": self.doc.credit_to, - "debit": flt(item.valuation_rate) * flt(item.conversion_factor) \ - * flt(item.qty), + "debit": valuation_amt, "remarks": self.doc.remarks or "Accounting Entry for Stock" }) ) diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index 9e181bc8fe..28d2db646b 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -367,9 +367,13 @@ class BuyingController(StockController): if d.item_code and d.qty: # if no item code, which is sometimes the case in purchase invoice, # then it is not possible to track valuation against it - d.valuation_rate = (flt(d.purchase_rate or d.rate) - + (flt(d.item_tax_amount) + flt(d.rm_supp_cost)) / flt(d.qty) - ) / flt(d.conversion_factor) + d.valuation_rate = flt((flt(d.purchase_rate, self.precision.item.purchase_rate) or + flt(d.rate, self.precision.item.rate) + + (flt(d.item_tax_amount, self.precision.item.item_tax_amount) + + flt(d.rm_supp_cost, self.precision.item.rm_supp_cost)) / + flt(d.qty, self.precision.item.qty)) / + flt(d.conversion_factor, self.precision.item.conversion_factor), + self.precision.item.valuation_rate) else: d.valuation_rate = 0.0 From e762b264b130431d582a0c8b13639400204ac3ef Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 10 May 2013 11:11:46 +0530 Subject: [PATCH 2/3] [fixes] bom autoname --- manufacturing/doctype/bom/bom.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/manufacturing/doctype/bom/bom.py b/manufacturing/doctype/bom/bom.py index 5f42f4da5d..5a1d47fd4e 100644 --- a/manufacturing/doctype/bom/bom.py +++ b/manufacturing/doctype/bom/bom.py @@ -34,7 +34,8 @@ class DocType: last_name = sql("""select max(name) from `tabBOM` where name like "BOM/%s/%%" """ % cstr(self.doc.item).replace('"', '\\"')) if last_name: - idx = cint(cstr(last_name[0][0]).split('/')[-1]) + 1 + idx = cint(cstr(last_name[0][0]).split('/')[-1].split('-')[0]) + 1 + else: idx = 1 self.doc.name = 'BOM/' + self.doc.item + ('/%.3i' % idx) From 1252729e1cfcc41c5df3d4fc13741f7d804da9f0 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 10 May 2013 13:38:23 +0530 Subject: [PATCH 3/3] [sales invoice] [fix] bug fix in setting pos values on save --- accounts/doctype/sales_invoice/sales_invoice.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py index b643007add..d18b967dfa 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -191,11 +191,11 @@ class DocType(SellingController): self.doc.fields[fieldname] = pos.get(fieldname) # set pos values in items - for doc in self.doclist.get({"parentfield": "entries"}): - if doc.fields.get('item_code'): - for fieldname, val in self.apply_pos_settings(doc.fields).items(): - if (not for_validate) or (for_validate and not self.doc.fields.get(fieldname)): - doc.fields[fieldname] = val + for item in self.doclist.get({"parentfield": "entries"}): + if item.fields.get('item_code'): + for fieldname, val in self.apply_pos_settings(item.fields).items(): + if (not for_validate) or (for_validate and not item.fields.get(fieldname)): + item.fields[fieldname] = val # fetch terms if self.doc.tc_name and not self.doc.terms: