Merge pull request #381 from ForgeFlow/13.0-bp-376

[13.0][IMP] rma: cancel rma_lines
This commit is contained in:
Lois Rilo
2023-02-21 14:47:29 +01:00
committed by GitHub
2 changed files with 38 additions and 1 deletions

View File

@@ -231,6 +231,7 @@ class RmaOrderLine(models.Model):
("to_approve", "To Approve"),
("approved", "Approved"),
("done", "Done"),
("canceled", "Canceled"),
],
string="State",
default="draft",
@@ -620,6 +621,25 @@ class RmaOrderLine(models.Model):
self.write({"state": "done"})
return True
def check_cancel(self):
for move in self.move_ids:
if move.state == "done":
raise UserError(
_("Unable to cancel %s as some receptions have already been done.")
% (self.name)
)
def action_rma_cancel(self):
for order in self:
order.check_cancel()
order.write({"state": "canceled"})
order.move_ids._action_cancel()
shipments = order._get_in_pickings()
shipments |= order._get_out_pickings()
for ship in shipments:
ship.action_cancel()
return True
@api.model
def create(self, vals):
if not vals.get("name") or vals.get("name") == "/":

View File

@@ -318,7 +318,14 @@
name="action_rma_done"
type="object"
string="Done"
attrs="{'invisible':[('state', 'in', ('done', 'draft'))]}"
attrs="{'invisible':[('state', 'in', ('done', 'draft', 'canceled'))]}"
groups="rma.group_rma_customer_user"
/>
<button
name="action_rma_cancel"
type="object"
string="Cancel"
attrs="{'invisible':[('state', 'in', ('done', 'canceled'))]}"
groups="rma.group_rma_customer_user"
/>
<field name="state" widget="statusbar" nolabel="1" />
@@ -682,5 +689,15 @@ if records.filtered(lambda x: x.state == "draft"):
</field>
</record>
<record model="ir.actions.server" id="action_request_cancel_rma_order_line">
<field name="name">Cancel</field>
<field name="model_id" ref="rma.model_rma_order_line" />
<field name="binding_model_id" ref="rma.model_rma_order_line" />
<field name="state">code</field>
<field name="code">
records.action_rma_cancel()
</field>
</record>
</data>
</odoo>