112 lines
3.9 KiB
YAML
112 lines
3.9 KiB
YAML
|
-
|
||
|
Set the company currency as EURO for the sake of repeatibility
|
||
|
-
|
||
|
!python {model: res.company, id: base.main_company}: |
|
||
|
self.write({'currency_id':ref('base.EUR')})
|
||
|
|
||
|
-
|
||
|
Set product category removal strategy as LIFO
|
||
|
-
|
||
|
!record {model: product.category, id: product.product_category_001}:
|
||
|
name : Lifo Category
|
||
|
removal_strategy_id: stock.removal_lifo
|
||
|
-
|
||
|
Set a product as using lifo price
|
||
|
-
|
||
|
!record {model: product.product, id: product_lifo_icecream}:
|
||
|
default_code: LIFO
|
||
|
name: LIFO Ice Cream
|
||
|
type: product
|
||
|
categ_id: product.product_category_001
|
||
|
list_price: 100.0
|
||
|
standard_price: 70.0
|
||
|
uom_id: product.product_uom_kgm
|
||
|
uom_po_id: product.product_uom_kgm
|
||
|
valuation: real_time
|
||
|
cost_method: fifo
|
||
|
property_stock_account_input: o_expense
|
||
|
property_stock_account_output: o_income
|
||
|
description: LIFO 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 pieces at 60 euro
|
||
|
-
|
||
|
!record {model: purchase.order, id: purchase_order_lifo1}:
|
||
|
partner_id: base.res_partner_3
|
||
|
order_line:
|
||
|
- product_id: product_lifo_icecream
|
||
|
product_qty: 10.0
|
||
|
product_uom: product.product_uom_kgm
|
||
|
price_unit: 60.0
|
||
|
name: 'LIFO Ice Cream'
|
||
|
date_planned: !eval time.strftime('%Y-%m-%d')
|
||
|
-
|
||
|
I create a draft Purchase Order for second shipment for 30 pieces at 80 euro
|
||
|
-
|
||
|
!record {model: purchase.order, id: purchase_order_lifo2}:
|
||
|
partner_id: base.res_partner_3
|
||
|
order_line:
|
||
|
- product_id: product_lifo_icecream
|
||
|
product_qty: 30.0
|
||
|
product_uom: product.product_uom_kgm
|
||
|
price_unit: 80.0
|
||
|
name: 'LIFO Ice Cream'
|
||
|
date_planned: !eval time.strftime('%Y-%m-%d')
|
||
|
-
|
||
|
I confirm the first purchase order
|
||
|
-
|
||
|
!python {model: purchase.order, id: purchase_order_lifo1}: |
|
||
|
self.button_confirm()
|
||
|
-
|
||
|
I check the "Approved" status of purchase order 1
|
||
|
-
|
||
|
!assert {model: purchase.order, id: purchase_order_lifo1}:
|
||
|
- state == 'purchase'
|
||
|
-
|
||
|
Process the receipt of purchase order 1
|
||
|
-
|
||
|
!python {model: purchase.order, id: purchase_order_lifo1}: |
|
||
|
self.picking_ids[0].move_lines.quantity_done = self.picking_ids[0].move_lines.product_qty
|
||
|
self.picking_ids[0].button_validate()
|
||
|
-
|
||
|
I confirm the second purchase order
|
||
|
-
|
||
|
!python {model: purchase.order, id: purchase_order_lifo2}: |
|
||
|
self.button_confirm()
|
||
|
-
|
||
|
Process the receipt of purchase order 2
|
||
|
-
|
||
|
!python {model: purchase.order, id: purchase_order_lifo2}: |
|
||
|
self.picking_ids[0].move_lines.quantity_done = self.picking_ids[0].move_lines.product_qty
|
||
|
self.picking_ids[0].button_validate()
|
||
|
-
|
||
|
Let us send some goods
|
||
|
-
|
||
|
!record {model: stock.picking, id: outgoing_lifo_shipment}:
|
||
|
picking_type_id: stock.picking_type_out
|
||
|
-
|
||
|
Picking needs movement from stock
|
||
|
-
|
||
|
!record {model: stock.move, id: outgoing_shipment_lifo_icecream}:
|
||
|
picking_id: outgoing_lifo_shipment
|
||
|
product_id: product_lifo_icecream
|
||
|
product_uom: product.product_uom_kgm
|
||
|
location_id: stock.stock_location_stock
|
||
|
location_dest_id: stock.stock_location_customers
|
||
|
product_uom_qty: 20.0
|
||
|
picking_type_id: stock.picking_type_out
|
||
|
-
|
||
|
I assign this outgoing shipment
|
||
|
-
|
||
|
!python {model: stock.picking, id: outgoing_lifo_shipment}: |
|
||
|
self.action_assign()
|
||
|
self.move_lines.quantity_done = self.move_lines.product_qty
|
||
|
-
|
||
|
Process the delivery of the outgoing shipment
|
||
|
-
|
||
|
!python {model: stock.picking, id: outgoing_lifo_shipment}: |
|
||
|
self.button_validate()
|
||
|
-
|
||
|
Check if the move value correctly reflects the fifo costing method
|
||
|
-
|
||
|
!python {model: stock.picking, id: outgoing_lifo_shipment}: |
|
||
|
assert self.move_lines.value == -1400.0, 'Stock move value should have been 1400 euro'
|