odoo/addons/sale_mrp/test/cancellation_propagated.yml

93 lines
4.1 KiB
YAML

-
I first create a warehouse with pick-pack-ship and reception in 2 step
-
!record {model: stock.warehouse, id: wh_pps}:
name: WareHouse PickPackShip
code: whpps
reception_steps: 'two_steps'
delivery_steps: 'pick_pack_ship'
manufacture_to_resupply: True
-
Next I create a new product in this warehouse
-
!record {model: product.product, id: product_manu}:
name: "My MTO Product"
type: product
uom_id: product.product_uom_unit
uom_po_id: product.product_uom_unit
-
I create a bom (service and product) for this product
-
!record {model: mrp.bom, id: mrp_bom_test1}:
company_id: base.main_company
name: BOM In test
product_id: product_manu
product_qty: 1.0
type: normal
bom_lines:
- company_id: base.main_company
name: GrapWorks Software
product_id: product.product_product_44
product_qty: 1.0
-
Set routes on product to be MTO
-
!python {model: product.product}: |
route_warehouse0_manufacture = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).manufacture_pull_id.route_id.id
route_warehouse0_mto = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).mto_pull_id.route_id.id
self.write(cr, uid, ref('product_manu'),{ 'route_ids': [(6,0,[route_warehouse0_mto,route_warehouse0_manufacture])]}, context=context)
-
Create a sales order with route_id manufacture.
-
!record {model: sale.order, id: sale_order_product_manu}:
partner_id: base.res_partner_3
note: Create Sales order
warehouse_id: wh_pps
order_line:
- product_id: product_manu
product_uom_qty: 5.00
-
!python {model: sale.order.line}: |
route_warehouse0_buy = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).manufacture_pull_id.route_id.id
order = self.pool.get('sale.order').browse(cr, uid, ref('sale_order_product_manu'))
line_ids = [x.id for x in order.order_line]
self.write(cr, uid, line_ids, {'route_id': route_warehouse0_buy})
-
Confirm sales order
-
!workflow {model: sale.order, action: order_confirm, ref: sale_order_product_manu}
-
Check the propagation when we cancel the main procurement
* Retrieve related procurements and check that there are all running
* Check that Purchase order is well created
* Cancel the main procurement
* Check that all procurements related and the purchase order are well cancelled
-
!python {model: procurement.order}: |
# Retrieve related procu
so = self.pool.get('sale.order').browse(cr, uid, ref('sale_order_product_manu'))
procu_ids = self.search(cr,uid,[('group_id.name','=',so.name)])
assert len(procu_ids)>0, 'None procu found for so %s (%d)' %(so.name,so.id)
# Check that all procurement are running
for procu in self.browse(cr,uid,procu_ids,context=context):
assert procu.state == u'running', 'Procu %d should be running and is in state : %s!' %(procu.id,procu.state)
# Check that one or more Production Order
procor_ids = [proc.production_id for proc in self.browse(cr, uid, procu_ids) if proc.production_id]
assert len(procor_ids) > 0, 'No production Order found !'
# Cancel the main procurement
main_procu_id = self.search(cr,uid,[('origin','=',so.name)])
assert len(main_procu_id) == 1, 'Main procurement not identified !'
self.cancel(cr,uid,main_procu_id,context=context)
assert self.browse(cr,uid,main_procu_id[0]).state == u'cancel', 'Main procurement is not cancelled !!!'
# Check that all procurements related is cancelled
for procu in self.browse(cr,uid,procu_ids,context=context):
assert procu.state == u'cancel', 'Procu %d should be cancelled and is in state : %s!' %(procu.id,procu.state)
# Check that the production order is cancelled
for po in self.pool.get('mrp.production').browse(cr,uid,[prodor.id for prodor in procor_ids],context=context):
assert po.state == u'cancel', 'Production Order %d should be cancelled and is in state : %s!' %(prodor.id, procor.state)