[14.0][MIG] stock_request

This commit is contained in:
Kitti U
2021-04-19 15:53:25 +07:00
parent 9350f93e62
commit 493757825e
9 changed files with 36 additions and 42 deletions

View File

@@ -4,7 +4,7 @@
{
"name": "Stock Request",
"summary": "Internal request for stock",
"version": "13.0.1.3.1",
"version": "14.0.1.0.0",
"license": "LGPL-3",
"website": "https://github.com/OCA/stock-logistics-warehouse",
"author": "ForgeFlow, Odoo Community Association (OCA)",

View File

@@ -8,7 +8,7 @@ class ProcurementGroup(models.Model):
_inherit = "procurement.group"
@api.model
def run(self, procurements):
def run(self, procurements, raise_user_error=True):
indexes_to_pop = []
new_procs = []
for i, procurement in enumerate(procurements):
@@ -26,4 +26,4 @@ class ProcurementGroup(models.Model):
for index in indexes_to_pop:
procurements.pop(index)
procurements.extend(new_procs)
return super().run(procurements)
return super().run(procurements, raise_user_error=raise_user_error)

View File

@@ -66,3 +66,13 @@ class StockMove(models.Model):
)
)
return super(StockMove, self).copy_data(default)
def _action_cancel(self):
res = super()._action_cancel()
self.mapped("allocation_ids.stock_request_id").check_done()
return res
def _action_done(self, cancel_backorder=False):
res = super()._action_done(cancel_backorder=cancel_backorder)
self.mapped("allocation_ids.stock_request_id").check_done()
return res

View File

@@ -65,6 +65,6 @@ class StockMoveLine(models.Model):
message = self._stock_request_confirm_done_message_content(
message_data
)
request.message_post(body=message, subtype="mail.mt_comment")
request.message_post(body=message, subtype_xmlid="mail.mt_comment")
request.check_done()
return res

View File

@@ -47,13 +47,13 @@ class StockRequest(models.Model):
default="draft",
index=True,
readonly=True,
track_visibility="onchange",
tracking=True,
)
requested_by = fields.Many2one(
"res.users",
"Requested by",
required=True,
track_visibility="onchange",
tracking=True,
default=lambda s: s._get_default_requested_by(),
)
expected_date = fields.Datetime(
@@ -198,8 +198,6 @@ class StockRequest(models.Model):
if request.allocation_ids
else 0
)
if request.qty_cancelled:
request.action_done()
@api.constrains("order_id", "requested_by")
def check_order_requested_by(self):

View File

@@ -48,13 +48,13 @@ class StockRequestOrder(models.Model):
default="draft",
index=True,
readonly=True,
track_visibility="onchange",
tracking=True,
)
requested_by = fields.Many2one(
"res.users",
"Requested by",
required=True,
track_visibility="onchange",
tracking=True,
default=lambda s: s._get_default_requested_by(),
)
warehouse_id = fields.Many2one(

View File

@@ -10,3 +10,4 @@
* Steve Campbell <scampbell@opensourceintegrators.com>
* Héctor Villarreal <hector.villarreal@forgeflow.com>
* Kitti U. <kittiu@ecosoft.co.th>

View File

@@ -2,7 +2,7 @@
<odoo>
<record model="ir.module.category" id="module_category_stock_request">
<field name="name">Stock Request</field>
<field name="parent_id" ref="base.module_category_operations_inventory" />
<field name="parent_id" ref="base.module_category_inventory_inventory" />
<field name="sequence">10</field>
</record>
<record id="group_stock_request_user" model="res.groups">

View File

@@ -131,6 +131,10 @@ class TestStockRequest(common.TransactionCase):
}
)
self.env["ir.config_parameter"].sudo().set_param(
"stock.no_auto_scheduler", "True"
)
def _create_user(self, name, group_ids, company_ids):
return (
self.env["res.users"]
@@ -543,24 +547,6 @@ class TestStockRequestBase(TestStockRequest):
with self.assertRaises(exceptions.ValidationError):
self.stock_request.with_user(self.stock_request_user).create(vals)
def test_stock_request_validations_02(self):
vals = {
"product_id": self.product.id,
"product_uom_id": self.product.uom_id.id,
"product_uom_qty": 5.0,
"company_id": self.main_company.id,
"warehouse_id": self.warehouse.id,
"location_id": self.warehouse.lot_stock_id.id,
}
stock_request = self.stock_request.with_user(self.stock_request_user).create(
vals
)
# With no route found, should raise an error
with self.assertRaises(exceptions.UserError):
stock_request.with_user(self.stock_request_manager).action_confirm()
def test_create_request_01(self):
expected_date = fields.Datetime.now()
vals = {
@@ -617,7 +603,7 @@ class TestStockRequestBase(TestStockRequest):
self.assertEqual(picking.origin, order.name)
packout1 = picking.move_line_ids[0]
packout1.qty_done = 5
picking.with_user(self.stock_request_manager).action_done()
picking.with_user(self.stock_request_manager)._action_done()
self.assertEqual(stock_request.qty_in_progress, 0.0)
self.assertEqual(stock_request.qty_done, stock_request.product_uom_qty)
self.assertEqual(order.state, "done")
@@ -662,7 +648,7 @@ class TestStockRequestBase(TestStockRequest):
picking.with_user(self.stock_request_manager).action_assign()
packout1 = picking.move_line_ids[0]
packout1.qty_done = 1
picking.with_user(self.stock_request_manager).action_done()
picking.with_user(self.stock_request_manager)._action_done()
self.assertEqual(stock_request.qty_in_progress, 0.0)
self.assertEqual(stock_request.qty_done, stock_request.product_uom_qty)
self.assertEqual(stock_request.state, "done")
@@ -715,9 +701,9 @@ class TestStockRequestBase(TestStockRequest):
self.assertEqual(stock_request_2.qty_cancelled, 0)
packout1 = picking.move_line_ids[0]
packout1.qty_done = 4
self.env["stock.backorder.confirmation"].create(
{"pick_ids": [(4, picking.id)]}
).process_cancel_backorder()
self.env["stock.backorder.confirmation"].with_context(
button_validate_picking_ids=[picking.id]
).create({"pick_ids": [(4, picking.id)]}).process_cancel_backorder()
self.assertEqual(stock_request_1.qty_in_progress, 0)
self.assertEqual(stock_request_1.qty_done, 4)
self.assertEqual(stock_request_1.qty_cancelled, 0)
@@ -944,7 +930,7 @@ class TestStockRequestBase(TestStockRequest):
# the action from the products, so test that they get a friendlier
# error message.
self.stock_request_user.groups_id -= self.stock_request_user_group
with self.assertRaisesRegexp(
with self.assertRaisesRegex(
exceptions.UserError,
"Unfortunately it seems you do not have the necessary rights "
"for creating stock requests. Please contact your "
@@ -1085,9 +1071,9 @@ class TestStockRequestBase(TestStockRequest):
self.assertNotEqual(sr1.state, "done")
self.assertNotEqual(sr2.state, "done")
self.assertNotEqual(sr3.state, "done")
self.env["stock.backorder.confirmation"].create(
{"pick_ids": [(4, picking.id)]}
).process()
self.env["stock.backorder.confirmation"].with_context(
button_validate_picking_ids=[picking.id]
).create({"pick_ids": [(4, picking.id)]}).process()
sr1.refresh()
sr2.refresh()
sr3.refresh()
@@ -1104,10 +1090,9 @@ class TestStockRequestBase(TestStockRequest):
line.quantity_done = 4
line = picking.move_lines.filtered(lambda r: r.product_id == product2)
line.quantity_done = 1
self.env["stock.backorder.confirmation"].create(
{"pick_ids": [(4, picking.id)]}
).process_cancel_backorder()
self.env["stock.backorder.confirmation"].with_context(
button_validate_picking_ids=[picking.id]
).create({"pick_ids": [(4, picking.id)]}).process_cancel_backorder()
sr1.refresh()
sr2.refresh()
sr3.refresh()