mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
[14.0][MIG] stock_request
This commit is contained in:
@@ -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)",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -10,3 +10,4 @@
|
||||
* Steve Campbell <scampbell@opensourceintegrators.com>
|
||||
|
||||
* Héctor Villarreal <hector.villarreal@forgeflow.com>
|
||||
* Kitti U. <kittiu@ecosoft.co.th>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user