Valuation related charges should only go to stock items

This commit is contained in:
Nabin Hait 2014-01-02 16:30:16 +05:30
parent 424b4a4b36
commit a1ffacaf0b
2 changed files with 22 additions and 19 deletions

View File

@ -231,9 +231,6 @@ class AccountsController(TransactionBase):
# tax_amount represents the amount of tax for the current step # tax_amount represents the amount of tax for the current step
current_tax_amount = self.get_current_tax_amount(item, tax, item_tax_map) current_tax_amount = self.get_current_tax_amount(item, tax, item_tax_map)
if hasattr(self, "set_item_tax_amount"):
self.set_item_tax_amount(item, tax, current_tax_amount)
# case when net total is 0 but there is an actual type charge # case when net total is 0 but there is an actual type charge
# in this case add the actual amount to tax.tax_amount # in this case add the actual amount to tax.tax_amount
# and tax.grand_total_for_current_item for the first such iteration # and tax.grand_total_for_current_item for the first such iteration

View File

@ -164,29 +164,35 @@ class BuyingController(StockController):
for item in self.item_doclist: for item in self.item_doclist:
del item.fields["item_tax_amount"] del item.fields["item_tax_amount"]
def set_item_tax_amount(self, item, tax, current_tax_amount): # update valuation rate
def update_valuation_rate(self, parentfield):
""" """
item_tax_amount is the total tax amount applied on that item item_tax_amount is the total tax amount applied on that item
stored for valuation stored for valuation
TODO: rename item_tax_amount to valuation_tax_amount TODO: rename item_tax_amount to valuation_tax_amount
""" """
if tax.category in ["Valuation", "Valuation and Total"] and \ stock_items = self.get_stock_items()
self.meta.get_field("item_tax_amount", parentfield=self.fname):
item.item_tax_amount += flt(current_tax_amount, self.precision("item_tax_amount", item)) 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])
total_valuation_amount = sum([flt(d.tax_amount) for d in
self.doclist.get({"parentfield": "purchase_tax_details"})
if d.category in ["Valuation", "Valuation and Total"]])
# update valuation rate
def update_valuation_rate(self, parentfield):
for item in self.doclist.get({"parentfield": parentfield}): for item in self.doclist.get({"parentfield": parentfield}):
item.conversion_factor = item.conversion_factor or flt(webnotes.conn.get_value( if item.item_code and item.qty and item.item_code in stock_items:
"UOM Conversion Detail", {"parent": item.item_code, "uom": item.uom}, item.item_tax_amount = flt(flt(item.amount) * total_valuation_amount \
"conversion_factor")) or 1 / stock_items_amount, self.precision("item_tax_amount", item))
if item.item_code and item.qty:
self.round_floats_in(item) self.round_floats_in(item)
# if no item code, which is sometimes the case in purchase invoice, item.conversion_factor = item.conversion_factor or flt(webnotes.conn.get_value(
# then it is not possible to track valuation against it "UOM Conversion Detail", {"parent": item.item_code, "uom": item.uom},
"conversion_factor")) or 1
qty_in_stock_uom = flt(item.qty * item.conversion_factor) qty_in_stock_uom = flt(item.qty * item.conversion_factor)
item.valuation_rate = ((item.amount + item.item_tax_amount + item.rm_supp_cost) item.valuation_rate = ((item.amount + item.item_tax_amount + item.rm_supp_cost)
/ qty_in_stock_uom) / qty_in_stock_uom)