85 lines
3.9 KiB
YAML
85 lines
3.9 KiB
YAML
-
|
|
Set a product as using fifo price
|
|
-
|
|
!record {model: product.product, id: product_fiforet_icecream}:
|
|
default_code: FIFO
|
|
name: FIFO Ice Cream
|
|
type: product
|
|
categ_id: product.product_category_1
|
|
uom_id: product.product_uom_kgm
|
|
uom_po_id: product.product_uom_kgm
|
|
procure_method: make_to_stock
|
|
cost_method: real
|
|
valuation: real_time
|
|
property_stock_account_input: account.o_expense
|
|
property_stock_account_output: account.o_income
|
|
description: FIFO Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
|
|
-
|
|
I create a draft Purchase Order for first in move for 10 kg at 50 euro
|
|
-
|
|
!record {model: purchase.order, id: purchase_order_fiforet1}:
|
|
partner_id: base.res_partner_3
|
|
location_id: stock.stock_location_stock
|
|
pricelist_id: 1
|
|
order_line:
|
|
- product_id: product_fiforet_icecream
|
|
product_qty: 10.0
|
|
product_uom: product.product_uom_categ_kgm
|
|
price_unit: 50.0
|
|
name: 'FIFO Ice Cream'
|
|
-
|
|
I create a draft Purchase Order for second shipment for 30 kg at 80 euro
|
|
-
|
|
!record {model: purchase.order, id: purchase_order_fiforet2}:
|
|
partner_id: base.res_partner_3
|
|
location_id: stock.stock_location_stock
|
|
pricelist_id: 1
|
|
order_line:
|
|
- product_id: product_fiforet_icecream
|
|
product_qty: 30.0
|
|
product_uom: product.product_uom_categ_kgm
|
|
price_unit: 80.0
|
|
name: 'FIFO Ice Cream'
|
|
-
|
|
I confirm the first purchase order
|
|
-
|
|
!workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fiforet1}
|
|
-
|
|
Process the reception of purchase order 1
|
|
-
|
|
!python {model: stock.partial.picking}: |
|
|
pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fiforet1")).picking_ids
|
|
partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
|
|
self.do_partial(cr, uid, [partial_id])
|
|
-
|
|
Check the standard price of the product (fifo icecream)
|
|
-
|
|
!python {model: product.product}: |
|
|
assert self.browse(cr, uid, ref("product_fiforet_icecream")).standard_price == 0.0, 'Standard price should not have changed!'
|
|
-
|
|
I confirm the second purchase order
|
|
-
|
|
!workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fiforet2}
|
|
-
|
|
Process the reception of purchase order 2
|
|
-
|
|
!python {model: stock.partial.picking}: |
|
|
pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fiforet2")).picking_ids
|
|
partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
|
|
self.do_partial(cr, uid, [partial_id])
|
|
-
|
|
Return the goods of purchase order 2
|
|
-
|
|
!python {model: stock.return.picking}: |
|
|
pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fiforet2")).picking_ids
|
|
return_id = self.create(cr, uid, {}, context={'active_model':'stock.picking', 'active_id': pick_ids[0].id})
|
|
res = self.create_returns(cr, uid, [return_id], context={'active_id': pick_ids[0].id})
|
|
return_move_id = self.pool.get("stock.move").search(cr, uid, [('move_returned_from','=', pick_ids[0].move_lines[0].id)])
|
|
movepick_obj = self.pool.get("stock.partial.move")
|
|
movepick_id = movepick_obj.create(cr, uid, {}, context={'active_model': 'stock.move', 'active_ids': return_move_id})
|
|
movepick_obj.do_partial(cr, uid, [movepick_id])
|
|
-
|
|
Check the standard price of the product (fifo return icecream) changed to 70.0
|
|
-
|
|
!python {model: product.product}: |
|
|
assert self.browse(cr, uid, ref("product_fiforet_icecream")).standard_price == 70.0, 'Standard price should have changed to 70.0!' |