[IMP] Solve landed costs bug + invoice_state in account_anglo_saxon.yml

This commit is contained in:
Josse Colpaert 2014-09-11 16:02:44 +02:00
parent aabebbbc6c
commit df655f00a3
6 changed files with 22 additions and 21 deletions

View File

@ -198,8 +198,8 @@
product_uom_qty: 1.0
product_uom: product.product_uom_unit
location_dest_id: stock.stock_location_customers
invoice_state: 2binvoiced
move_type: direct
invoice_state: 2binvoiced
picking_type_id: stock.picking_type_out
-
I need to check the availability of the product, So I make my picking order for processing later.

View File

@ -200,7 +200,7 @@
product_id: product_fifo_anglo_saxon
product_uom_qty: 1.0
location_dest_id: stock.stock_location_customers
invoice_state: 2binvoiced
invoice_state: 2binvoiced
move_type: direct
picking_type_id: stock.picking_type_out
-

View File

@ -277,6 +277,7 @@ class mrp_bom(osv.osv):
@return: result: List of dictionaries containing product details.
result2: List of dictionaries containing Work Center details.
"""
uom_obj = self.pool.get("product.uom")
routing_obj = self.pool.get('mrp.routing')
all_prod = [] + (previous_products or [])
master_bom = master_bom or bom
@ -319,7 +320,6 @@ class mrp_bom(osv.osv):
if bom_line_id.product_id.id in all_prod:
raise osv.except_osv(_('Invalid Action!'), _('BoM "%s" contains a BoM line with a product recursion: "%s".') % (master_bom.name,bom_line_id.product_id.name_get()[0][1]))
all_prod.append(bom_line_id.product_id.id)
quantity = _factor(bom_line_id.product_qty * factor, bom_line_id.product_efficiency, bom_line_id.product_rounding)
bom_id = self._bom_find(cr, uid, bom_line_id.product_uom.id, product_id=bom_line_id.product_id.id, properties=properties, context=context)
@ -331,12 +331,16 @@ class mrp_bom(osv.osv):
'product_id': bom_line_id.product_id.id,
'product_qty': quantity,
'product_uom': bom_line_id.product_uom.id,
'product_uos_qty': bom_line_id.product_uos and bom_line_id.product_uos_qty * factor or False,
'product_uos_qty': bom_line_id.product_uos and _factor(bom_line_id.product_uos_qty * factor, bom_line_id.product_efficiency, bom_line_id.product_rounding) or False,
'product_uos': bom_line_id.product_uos and bom_line_id.product_uos.id or False,
})
elif bom_id:
all_prod.append(bom_line_id.product_id.id)
bom2 = self.browse(cr, uid, bom_id, context=context)
res = self._bom_explode(cr, uid, bom2, bom_line_id.product_id, quantity,
# We need to convert to units/UoM of chosen BoM
factor2 = uom_obj._compute_qty(cr, uid, bom_line_id.product_uom.id, quantity, bom2.product_uom.id)
quantity2 = factor2 / bom2.product_qty
res = self._bom_explode(cr, uid, bom2, bom_line_id.product_id, quantity2,
properties=properties, level=level + 10, previous_products=all_prod, master_bom=master_bom, context=context)
result = result + res[0]
result2 = result2 + res[1]

View File

@ -67,12 +67,13 @@ class StockMove(osv.osv):
move_obj = self.pool.get('stock.move')
prod_obj = self.pool.get("product.product")
proc_obj = self.pool.get("procurement.order")
uom_obj = self.pool.get("product.uom")
to_explode_again_ids = []
processed_ids = []
bis = self._check_phantom_bom(cr, uid, move, context=context)
if bis:
factor = move.product_qty
bom_point = bom_obj.browse(cr, SUPERUSER_ID, bis[0], context=context)
factor = uom_obj._compute_qty(cr, SUPERUSER_ID, move.product_uom.id, move.product_uom_qty, bom_point.product_uom.id) / bom_point.product_qty
res = bom_obj._bom_explode(cr, SUPERUSER_ID, bom_point, move.product_id, factor, [], context=context)
state = 'confirmed'
@ -91,7 +92,7 @@ class StockMove(osv.osv):
'state': state,
'name': line['name'],
'procurement_id': move.procurement_id.id,
'split_from': move.id, #Needed in order to keep purchase connection, but will be removed by unlink
'split_from': move.id, #Needed in order to keep sale connection, but will be removed by unlink
}
mid = move_obj.copy(cr, uid, move.id, default=valdef, context=context)
to_explode_again_ids.append(mid)

View File

@ -13,7 +13,7 @@
product_uom_qty: 3.0
product_uom: product.product_uom_unit
location_dest_id: stock.stock_location_customers
invoice_state: 2binvoiced
invoice_state: 2binvoiced
move_type: direct
picking_type_id: stock.picking_type_out
-

View File

@ -184,21 +184,17 @@ class stock_landed_cost(osv.osv):
total_weight = 0.0
total_volume = 0.0
total_line = 0.0
for line in cost.cost_lines:
vals = self.get_valuation_lines(cr, uid, [cost.id], picking_ids=picking_ids, context=context)
for v in vals:
vals = self.get_valuation_lines(cr, uid, [cost.id], picking_ids=picking_ids, context=context)
for v in vals:
for line in cost.cost_lines:
v.update({'cost_id': cost.id, 'cost_line_id': line.id})
self.pool.get('stock.valuation.adjustment.lines').create(cr, uid, v, context=context)
if line.split_method == 'by_quantity':
total_qty += v.get('quantity', 0.0)
elif line.split_method == 'by_current_cost_price':
total_cost += v.get('former_cost', 0.0)
elif line.split_method == 'by_weight':
total_weight += v.get('weight', 0.0)
elif line.split_method == 'by_volume':
total_volume += v.get('volume', 0.0)
else:
total_line += 1
total_qty += v.get('quantity', 0.0)
total_cost += v.get('former_cost', 0.0)
total_weight += v.get('weight', 0.0)
total_volume += v.get('volume', 0.0)
total_line += 1
for line in cost.cost_lines:
for valuation in cost.valuation_adjustment_lines:
value = 0.0