[ADD] stock_landed_costs : Added the logic to compute landed costs.

bzr revid: mdi@tinyerp.com-20140410052146-die56ht7xv0ezooy
This commit is contained in:
DJ Patel 2014-04-10 10:51:46 +05:30
parent babb4debb3
commit 62341f2e7e
1 changed files with 38 additions and 0 deletions

View File

@ -93,6 +93,44 @@ class stock_landed_cost(osv.osv):
return True
def compute_landed_cost(self, cr, uid, ids, context=None):
line_obj = self.pool.get('stock.valuation.adjustment.lines')
for cost in self.browse(cr, uid, ids, context=None):
total_qty = 0.0
total_cost = 0.0
total_line = 0.0
for line in cost.valuation_adjustment_lines:
total_qty += line.quantity
total_cost += line.former_cost
total_line += 1
for cost in self.browse(cr, uid, ids, context=None):
dict = {}
for line in cost.cost_lines:
for valuation in cost.valuation_adjustment_lines:
if line.split_method in ('by_quantity', 'by_weight', 'by_volume'):
per_unit = (line.price_unit / total_qty)
value = valuation.quantity * per_unit
if valuation.id not in dict:
dict.setdefault(valuation.id, value)
else:
dict[valuation.id] += value
elif line.split_method == 'equal':
per_unit = (line.price_unit / total_line)
if valuation.id not in dict:
dict.setdefault(valuation.id, per_unit)
else:
dict[valuation.id] += per_unit
elif line.split_method == 'by_current_cost_price':
per_unit = (total_cost / line.price_unit)
value = valuation.former_cost * per_unit
if valuation.id not in dict:
dict.setdefault(valuation.id, value)
else:
dict[valuation.id] += value
for key, value in dict.items():
line_obj.write(cr, uid, key, {'additional_landed_cost': value}, context=context)
return True
class stock_landed_cost_lines(osv.osv):