mirror of
https://github.com/bringout/oca-ocb-mrp.git
synced 2026-04-20 21:32:00 +02:00
Initial commit: Mrp packages
This commit is contained in:
commit
50d736b3bd
739 changed files with 538193 additions and 0 deletions
118
odoo-bringout-oca-ocb-mrp/mrp/tests/test_cancel_mo.py
Normal file
118
odoo-bringout-oca-ocb-mrp/mrp/tests/test_cancel_mo.py
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo.tests import Form
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from odoo.fields import Datetime as Dt
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.addons.mrp.tests.common import TestMrpCommon
|
||||
|
||||
|
||||
class TestMrpCancelMO(TestMrpCommon):
|
||||
|
||||
def test_cancel_mo_without_routing_1(self):
|
||||
""" Cancel a Manufacturing Order with no routing, no production.
|
||||
"""
|
||||
# Create MO
|
||||
manufacturing_order = self.generate_mo()[0]
|
||||
# Do nothing, cancel it
|
||||
manufacturing_order.action_cancel()
|
||||
# Check the MO and its moves are cancelled
|
||||
self.assertEqual(manufacturing_order.state, 'cancel', "MO should be in cancel state.")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[0].state, 'cancel',
|
||||
"Cancelled MO raw moves must be cancelled as well.")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[1].state, 'cancel',
|
||||
"Cancelled MO raw moves must be cancelled as well.")
|
||||
self.assertEqual(manufacturing_order.move_finished_ids.state, 'cancel',
|
||||
"Cancelled MO finished move must be cancelled as well.")
|
||||
|
||||
def test_cancel_mo_without_routing_2(self):
|
||||
""" Cancel a Manufacturing Order with no routing but some productions.
|
||||
"""
|
||||
# Create MO
|
||||
manufacturing_order = self.generate_mo()[0]
|
||||
# Produce some quantity
|
||||
mo_form = Form(manufacturing_order)
|
||||
mo_form.qty_producing = 2
|
||||
manufacturing_order = mo_form.save()
|
||||
# Cancel it
|
||||
manufacturing_order.action_cancel()
|
||||
# Check it's cancelled
|
||||
self.assertEqual(manufacturing_order.state, 'cancel', "MO should be in cancel state.")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[0].state, 'cancel',
|
||||
"Cancelled MO raw moves must be cancelled as well.")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[1].state, 'cancel',
|
||||
"Cancelled MO raw moves must be cancelled as well.")
|
||||
self.assertEqual(manufacturing_order.move_finished_ids.state, 'cancel',
|
||||
"Cancelled MO finished move must be cancelled as well.")
|
||||
|
||||
def test_cancel_mo_without_routing_3(self):
|
||||
""" Cancel a Manufacturing Order with no routing but some productions
|
||||
after post inventory.
|
||||
"""
|
||||
# Create MO
|
||||
manufacturing_order = self.generate_mo(consumption='strict')[0]
|
||||
# Produce some quantity (not all to avoid to done the MO when post inventory)
|
||||
mo_form = Form(manufacturing_order)
|
||||
mo_form.qty_producing = 2
|
||||
manufacturing_order = mo_form.save()
|
||||
# Post Inventory
|
||||
manufacturing_order._post_inventory()
|
||||
# Cancel the MO
|
||||
manufacturing_order.action_cancel()
|
||||
# Check MO is marked as done and its SML are done or cancelled
|
||||
self.assertEqual(manufacturing_order.state, 'done', "MO should be in done state.")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[0].state, 'done',
|
||||
"Due to 'post_inventory', some move raw must stay in done state")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[1].state, 'done',
|
||||
"Due to 'post_inventory', some move raw must stay in done state")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[2].state, 'cancel',
|
||||
"The other move raw are cancelled like their MO.")
|
||||
self.assertEqual(manufacturing_order.move_raw_ids[3].state, 'cancel',
|
||||
"The other move raw are cancelled like their MO.")
|
||||
self.assertEqual(manufacturing_order.move_finished_ids[0].state, 'done',
|
||||
"Due to 'post_inventory', a move finished must stay in done state")
|
||||
self.assertEqual(manufacturing_order.move_finished_ids[1].state, 'cancel',
|
||||
"The other move finished is cancelled like its MO.")
|
||||
|
||||
def test_unlink_mo(self):
|
||||
""" Try to unlink a Manufacturing Order, and check it's possible or not
|
||||
depending of the MO state (must be in cancel state to be unlinked, but
|
||||
the unlink method will try to cancel MO before unlink them).
|
||||
"""
|
||||
# Case #1: Create MO, do nothing and try to unlink it (can be deleted)
|
||||
manufacturing_order = self.generate_mo()[0]
|
||||
self.assertEqual(manufacturing_order.exists().state, 'confirmed')
|
||||
manufacturing_order.unlink()
|
||||
# Check the MO is deleted.
|
||||
self.assertEqual(manufacturing_order.exists().state, False)
|
||||
|
||||
# Case #2: Create MO, make and post some production, then try to unlink
|
||||
# it (cannot be deleted)
|
||||
manufacturing_order = self.generate_mo()[0]
|
||||
# Produce some quantity (not all to avoid to done the MO when post inventory)
|
||||
mo_form = Form(manufacturing_order)
|
||||
mo_form.qty_producing = 2
|
||||
manufacturing_order = mo_form.save()
|
||||
# Post Inventory
|
||||
manufacturing_order._post_inventory()
|
||||
# Unlink the MO must raises an UserError since it cannot be really cancelled
|
||||
self.assertEqual(manufacturing_order.exists().state, 'progress')
|
||||
with self.assertRaises(UserError):
|
||||
manufacturing_order.unlink()
|
||||
|
||||
def test_cancel_mo_without_component(self):
|
||||
product_form = Form(self.env['product.product'])
|
||||
product_form.name = "SuperProduct"
|
||||
product = product_form.save()
|
||||
|
||||
mo_form = Form(self.env['mrp.production'])
|
||||
mo_form.product_id = product
|
||||
mo = mo_form.save()
|
||||
|
||||
mo.action_confirm()
|
||||
mo.action_cancel()
|
||||
|
||||
self.assertEqual(mo.move_finished_ids.state, 'cancel')
|
||||
self.assertEqual(mo.state, 'cancel')
|
||||
Loading…
Add table
Add a link
Reference in a new issue