mirror of
https://github.com/ForgeFlow/stock-rma.git
synced 2025-01-21 12:57:49 +02:00
[IMP] rma: default warehouse and routes in rma operation
This commit is contained in:
@@ -12,7 +12,7 @@ class RmaOperation(models.Model):
|
|||||||
def _default_warehouse_id(self):
|
def _default_warehouse_id(self):
|
||||||
company_id = self.env.user.company_id.id
|
company_id = self.env.user.company_id.id
|
||||||
warehouse = self.env["stock.warehouse"].search(
|
warehouse = self.env["stock.warehouse"].search(
|
||||||
[("company_id", "=", company_id)], limit=1
|
[("company_id", "=", company_id)], order="sequence asc", limit=1
|
||||||
)
|
)
|
||||||
return warehouse
|
return warehouse
|
||||||
|
|
||||||
@@ -24,13 +24,33 @@ class RmaOperation(models.Model):
|
|||||||
def _default_supplier_location_id(self):
|
def _default_supplier_location_id(self):
|
||||||
return self.env.ref("stock.stock_location_suppliers") or False
|
return self.env.ref("stock.stock_location_suppliers") or False
|
||||||
|
|
||||||
@api.model
|
@api.onchange("in_warehouse_id")
|
||||||
def _default_routes(self):
|
def onchange_warehouse_id(self):
|
||||||
op_type = self.env.context.get("default_type")
|
op_type = self.env.context.get("default_type")
|
||||||
if op_type == "customer":
|
if op_type == "customer":
|
||||||
return self.env.ref("rma.route_rma_customer")
|
warehouse = self.in_warehouse_id
|
||||||
|
if not warehouse or not warehouse.rma_customer_pull_id:
|
||||||
|
return
|
||||||
|
self.in_route_id = warehouse.rma_customer_pull_id
|
||||||
|
self.out_route_id = warehouse.rma_customer_pull_id
|
||||||
elif op_type == "supplier":
|
elif op_type == "supplier":
|
||||||
return self.env.ref("rma.route_rma_supplier")
|
warehouse = self.out_warehouse_id
|
||||||
|
if not warehouse or not warehouse.rma_supplier_pull_id:
|
||||||
|
return
|
||||||
|
self.in_route_id = warehouse.rma_supplier_pull_id
|
||||||
|
self.out_route_id = warehouse.rma_supplier_pull_id
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _default_routes(self):
|
||||||
|
company_id = self.env.user.company_id.id
|
||||||
|
warehouse = self.env["stock.warehouse"].search(
|
||||||
|
[("company_id", "=", company_id)], limit=1
|
||||||
|
)
|
||||||
|
op_type = self.env.context.get("default_type")
|
||||||
|
if op_type == "customer":
|
||||||
|
return warehouse.rma_customer_pull_id.id
|
||||||
|
elif op_type == "supplier":
|
||||||
|
return warehouse.rma_supplier_pull_id.id
|
||||||
|
|
||||||
name = fields.Char("Description", required=True)
|
name = fields.Char("Description", required=True)
|
||||||
code = fields.Char(required=True)
|
code = fields.Char(required=True)
|
||||||
|
|||||||
@@ -24,11 +24,14 @@ class RmaOrderLine(models.Model):
|
|||||||
@api.model
|
@api.model
|
||||||
def _default_warehouse_id(self):
|
def _default_warehouse_id(self):
|
||||||
rma_id = self.env.context.get("default_rma_id", False)
|
rma_id = self.env.context.get("default_rma_id", False)
|
||||||
warehouse = self.env["stock.warehouse"]
|
company_id = self.env.user.company_id.id
|
||||||
|
warehouse = self.env["stock.warehouse"].search(
|
||||||
|
[("company_id", "=", company_id)], order="sequence asc", limit=1
|
||||||
|
)
|
||||||
if rma_id:
|
if rma_id:
|
||||||
rma = self.env["rma.order"].browse(rma_id)
|
rma = self.env["rma.order"].browse(rma_id)
|
||||||
warehouse = self.env["stock.warehouse"].search(
|
warehouse = self.env["stock.warehouse"].search(
|
||||||
[("company_id", "=", rma.company_id.id)], limit=1
|
[("company_id", "=", rma.company_id.id)], order="sequence asc", limit=1
|
||||||
)
|
)
|
||||||
return warehouse
|
return warehouse
|
||||||
|
|
||||||
|
|||||||
@@ -90,8 +90,8 @@ class StockWarehouse(models.Model):
|
|||||||
if r_type:
|
if r_type:
|
||||||
r_type.active = False
|
r_type.active = False
|
||||||
# Unlink rules:
|
# Unlink rules:
|
||||||
self.mapped("rma_customer_pull_id").unlink()
|
self.mapped("rma_customer_pull_id").active = False
|
||||||
self.mapped("rma_supplier_pull_id").unlink()
|
self.mapped("rma_supplier_pull_id").active = False
|
||||||
return super(StockWarehouse, self).write(vals)
|
return super(StockWarehouse, self).write(vals)
|
||||||
|
|
||||||
def _create_rma_picking_types(self):
|
def _create_rma_picking_types(self):
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ class TestRma(common.TransactionCase):
|
|||||||
cls.rma_cust_replace_op_id = cls.env.ref("rma.rma_operation_customer_replace")
|
cls.rma_cust_replace_op_id = cls.env.ref("rma.rma_operation_customer_replace")
|
||||||
cls.rma_sup_replace_op_id = cls.env.ref("rma.rma_operation_supplier_replace")
|
cls.rma_sup_replace_op_id = cls.env.ref("rma.rma_operation_supplier_replace")
|
||||||
cls.rma_ds_replace_op_id = cls.env.ref("rma.rma_operation_ds_replace")
|
cls.rma_ds_replace_op_id = cls.env.ref("rma.rma_operation_ds_replace")
|
||||||
|
cls.input_location = cls.env.ref("stock.stock_location_company")
|
||||||
|
cls.output_location = cls.env.ref("stock.stock_location_output")
|
||||||
cls.category = cls._create_product_category(
|
cls.category = cls._create_product_category(
|
||||||
"one_step", cls.rma_cust_replace_op_id, cls.rma_sup_replace_op_id
|
"one_step", cls.rma_cust_replace_op_id, cls.rma_sup_replace_op_id
|
||||||
)
|
)
|
||||||
@@ -41,7 +43,10 @@ class TestRma(common.TransactionCase):
|
|||||||
cls.partner_id = cls.env.ref("base.res_partner_2")
|
cls.partner_id = cls.env.ref("base.res_partner_2")
|
||||||
cls.stock_location = cls.env.ref("stock.stock_location_stock")
|
cls.stock_location = cls.env.ref("stock.stock_location_stock")
|
||||||
cls.wh = cls.env.ref("stock.warehouse0")
|
cls.wh = cls.env.ref("stock.warehouse0")
|
||||||
|
cls.wh.rma_in_this_wh = False
|
||||||
|
cls.wh.rma_in_this_wh = True
|
||||||
cls.stock_rma_location = cls.wh.lot_rma_id
|
cls.stock_rma_location = cls.wh.lot_rma_id
|
||||||
|
cls.customer_route = cls.wh.rma_customer_pull_id
|
||||||
cls.customer_location = cls.env.ref("stock.stock_location_customers")
|
cls.customer_location = cls.env.ref("stock.stock_location_customers")
|
||||||
cls.supplier_location = cls.env.ref("stock.stock_location_suppliers")
|
cls.supplier_location = cls.env.ref("stock.stock_location_suppliers")
|
||||||
cls.product_uom_id = cls.env.ref("uom.product_uom_unit")
|
cls.product_uom_id = cls.env.ref("uom.product_uom_unit")
|
||||||
@@ -366,9 +371,7 @@ class TestRma(common.TransactionCase):
|
|||||||
# check assert if call reference_move_id onchange
|
# check assert if call reference_move_id onchange
|
||||||
self.assertEqual(line.product_id, line.reference_move_id.product_id)
|
self.assertEqual(line.product_id, line.reference_move_id.product_id)
|
||||||
self.assertEqual(line.product_qty, line.reference_move_id.product_uom_qty)
|
self.assertEqual(line.product_qty, line.reference_move_id.product_uom_qty)
|
||||||
self.assertEqual(
|
self.assertEqual(line.location_id, line.in_warehouse_id.lot_rma_id)
|
||||||
line.location_id.location_id, line.reference_move_id.location_id
|
|
||||||
)
|
|
||||||
self.assertEqual(line.origin, line.reference_move_id.picking_id.name)
|
self.assertEqual(line.origin, line.reference_move_id.picking_id.name)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
line.delivery_address_id, line.reference_move_id.picking_id.partner_id
|
line.delivery_address_id, line.reference_move_id.picking_id.partner_id
|
||||||
@@ -1075,8 +1078,10 @@ class TestRma(common.TransactionCase):
|
|||||||
"""
|
"""
|
||||||
# Alter the customer RMA route to make it multi-step
|
# Alter the customer RMA route to make it multi-step
|
||||||
# Get rid of the duplicated rule
|
# Get rid of the duplicated rule
|
||||||
self.env.ref("rma.rule_rma_customer_out_pull").active = False
|
self.customer_route.rule_ids.active = False
|
||||||
self.env.ref("rma.rule_rma_customer_in_pull").active = False
|
# to be able to receive in in WH
|
||||||
|
self.wh.reception_steps = "two_steps"
|
||||||
|
self.wh.delivery_steps = "pick_ship"
|
||||||
cust_in_pull_rule = self.customer_route.rule_ids.filtered(
|
cust_in_pull_rule = self.customer_route.rule_ids.filtered(
|
||||||
lambda r: r.location_id == self.stock_rma_location
|
lambda r: r.location_id == self.stock_rma_location
|
||||||
)
|
)
|
||||||
@@ -1091,7 +1096,7 @@ class TestRma(common.TransactionCase):
|
|||||||
"name": "RMA->Output",
|
"name": "RMA->Output",
|
||||||
"action": "pull",
|
"action": "pull",
|
||||||
"warehouse_id": self.wh.id,
|
"warehouse_id": self.wh.id,
|
||||||
"location_src_id": self.env.ref("rma.location_rma").id,
|
"location_src_id": self.wh.lot_rma_id.id,
|
||||||
"location_id": self.output_location.id,
|
"location_id": self.output_location.id,
|
||||||
"procure_method": "make_to_stock",
|
"procure_method": "make_to_stock",
|
||||||
"route_id": self.customer_route.id,
|
"route_id": self.customer_route.id,
|
||||||
@@ -1128,7 +1133,7 @@ class TestRma(common.TransactionCase):
|
|||||||
"action": "pull",
|
"action": "pull",
|
||||||
"warehouse_id": self.wh.id,
|
"warehouse_id": self.wh.id,
|
||||||
"location_src_id": self.input_location.id,
|
"location_src_id": self.input_location.id,
|
||||||
"location_id": self.env.ref("rma.location_rma").id,
|
"location_id": self.wh.lot_rma_id.id,
|
||||||
"procure_method": "make_to_order",
|
"procure_method": "make_to_order",
|
||||||
"route_id": self.customer_route.id,
|
"route_id": self.customer_route.id,
|
||||||
"picking_type_id": self.env.ref("stock.picking_type_internal").id,
|
"picking_type_id": self.env.ref("stock.picking_type_internal").id,
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
</xpath>
|
</xpath>
|
||||||
<field name="resupply_wh_ids" position="after">
|
<field name="resupply_wh_ids" position="after">
|
||||||
<field name="rma_in_this_wh" />
|
<field name="rma_in_this_wh" />
|
||||||
|
<field name="rma_customer_pull_id" />
|
||||||
|
<field name="rma_supplier_pull_id" />
|
||||||
|
|
||||||
</field>
|
</field>
|
||||||
<xpath expr="//field[@name='out_type_id']" position="after">
|
<xpath expr="//field[@name='out_type_id']" position="after">
|
||||||
<field name="rma_cust_in_type_id" />
|
<field name="rma_cust_in_type_id" />
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ class RmaLineMakeSupplierRma(models.TransientModel):
|
|||||||
"location_id": (
|
"location_id": (
|
||||||
operation.location_id.id
|
operation.location_id.id
|
||||||
or operation.in_warehouse_id.lot_rma_id.id
|
or operation.in_warehouse_id.lot_rma_id.id
|
||||||
or warehouse.lot_rma_id.id
|
or item.line_id.in_warehouse_id.lot_rma_id.id
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
|
|||||||
Reference in New Issue
Block a user