mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
[IMP] rma: set rma to received on invoice delete.
Remove 'waiting_refund' rma state. RMAs go from received to refunded. When the linked refund is deleted the rma is set to received.
This commit is contained in:
@@ -21,11 +21,12 @@ class AccountInvoice(models.Model):
|
|||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_("There is at least one invoice lines whose quantity is "
|
_("There is at least one invoice lines whose quantity is "
|
||||||
"less than the quantity specified in its linked RMA."))
|
"less than the quantity specified in its linked RMA."))
|
||||||
res = super().action_invoice_open()
|
return super().action_invoice_open()
|
||||||
self.sudo().mapped('invoice_line_ids.rma_id').write(
|
|
||||||
{'state': 'refunded'}
|
def unlink(self):
|
||||||
)
|
rma = self.mapped('invoice_line_ids.rma_id')
|
||||||
return res
|
rma.write({'state': 'received'})
|
||||||
|
return super().unlink()
|
||||||
|
|
||||||
|
|
||||||
class AccountInvoiceLine(models.Model):
|
class AccountInvoiceLine(models.Model):
|
||||||
|
|||||||
@@ -164,7 +164,6 @@ class Rma(models.Model):
|
|||||||
("draft", "Draft"),
|
("draft", "Draft"),
|
||||||
("confirmed", "Confirmed"),
|
("confirmed", "Confirmed"),
|
||||||
("received", "Received"),
|
("received", "Received"),
|
||||||
("waiting_refund", "Waiting for refund"),
|
|
||||||
("waiting_return", "Waiting for return"),
|
("waiting_return", "Waiting for return"),
|
||||||
("waiting_replacement", "Waiting for replacement"),
|
("waiting_replacement", "Waiting for replacement"),
|
||||||
("refunded", "Refunded"),
|
("refunded", "Refunded"),
|
||||||
@@ -402,7 +401,7 @@ class Rma(models.Model):
|
|||||||
def _compute_can_be_locked(self):
|
def _compute_can_be_locked(self):
|
||||||
for r in self:
|
for r in self:
|
||||||
r.can_be_locked = (r.remaining_qty_to_done > 0
|
r.can_be_locked = (r.remaining_qty_to_done > 0
|
||||||
and r.state in ['received', 'waiting_refund',
|
and r.state in ['received',
|
||||||
'waiting_return',
|
'waiting_return',
|
||||||
'waiting_replacement'])
|
'waiting_replacement'])
|
||||||
|
|
||||||
@@ -590,7 +589,7 @@ class Rma(models.Model):
|
|||||||
rma.write({
|
rma.write({
|
||||||
'refund_line_id': line.id,
|
'refund_line_id': line.id,
|
||||||
'refund_id': refund.id,
|
'refund_id': refund.id,
|
||||||
'state': 'waiting_refund',
|
'state': 'refunded',
|
||||||
})
|
})
|
||||||
refund.message_post_with_view(
|
refund.message_post_with_view(
|
||||||
'mail.message_origin_link',
|
'mail.message_origin_link',
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ class TestRma(SavepointCase):
|
|||||||
self.assertEqual(rma.refund_line_id.product_id, rma.product_id)
|
self.assertEqual(rma.refund_line_id.product_id, rma.product_id)
|
||||||
self.assertEqual(rma.refund_line_id.quantity, 10)
|
self.assertEqual(rma.refund_line_id.quantity, 10)
|
||||||
self.assertEqual(rma.refund_line_id.uom_id, rma.product_uom)
|
self.assertEqual(rma.refund_line_id.uom_id, rma.product_uom)
|
||||||
self.assertEqual(rma.state, 'waiting_refund')
|
self.assertEqual(rma.state, 'refunded')
|
||||||
self.assertFalse(rma.can_be_refunded)
|
self.assertFalse(rma.can_be_refunded)
|
||||||
self.assertFalse(rma.can_be_returned)
|
self.assertFalse(rma.can_be_returned)
|
||||||
self.assertFalse(rma.can_be_replaced)
|
self.assertFalse(rma.can_be_replaced)
|
||||||
@@ -275,7 +275,6 @@ class TestRma(SavepointCase):
|
|||||||
rma.refund_id.action_invoice_open()
|
rma.refund_id.action_invoice_open()
|
||||||
rma.refund_line_id.quantity = 10
|
rma.refund_line_id.quantity = 10
|
||||||
rma.refund_id.action_invoice_open()
|
rma.refund_id.action_invoice_open()
|
||||||
self.assertEqual(rma.state, 'refunded')
|
|
||||||
self.assertFalse(rma.can_be_refunded)
|
self.assertFalse(rma.can_be_refunded)
|
||||||
self.assertFalse(rma.can_be_returned)
|
self.assertFalse(rma.can_be_returned)
|
||||||
self.assertFalse(rma.can_be_replaced)
|
self.assertFalse(rma.can_be_replaced)
|
||||||
@@ -311,6 +310,8 @@ class TestRma(SavepointCase):
|
|||||||
ctx = dict(self.env.context)
|
ctx = dict(self.env.context)
|
||||||
ctx.update(active_ids=all_rmas.ids, active_model='rma')
|
ctx.update(active_ids=all_rmas.ids, active_model='rma')
|
||||||
action.with_context(ctx).run()
|
action.with_context(ctx).run()
|
||||||
|
# After that all RMAs are in 'refunded' state
|
||||||
|
self.assertEqual(all_rmas.mapped('state'), ['refunded'] * 4)
|
||||||
# Two refunds were created
|
# Two refunds were created
|
||||||
refund_1 = (rma_1 | rma_2 | rma_3).mapped('refund_id')
|
refund_1 = (rma_1 | rma_2 | rma_3).mapped('refund_id')
|
||||||
refund_2 = rma_4.refund_id
|
refund_2 = rma_4.refund_id
|
||||||
@@ -351,7 +352,6 @@ class TestRma(SavepointCase):
|
|||||||
rma_2.refund_line_id.quantity = 15
|
rma_2.refund_line_id.quantity = 15
|
||||||
refund_1.action_invoice_open()
|
refund_1.action_invoice_open()
|
||||||
refund_2.action_invoice_open()
|
refund_2.action_invoice_open()
|
||||||
self.assertEqual(all_rmas.mapped('state'), ['refunded']*4)
|
|
||||||
|
|
||||||
def test_replace(self):
|
def test_replace(self):
|
||||||
# Create, confirm and receive an RMA
|
# Create, confirm and receive an RMA
|
||||||
@@ -636,3 +636,15 @@ class TestRma(SavepointCase):
|
|||||||
self.assertEqual(new_rma.product_uom_qty + rma.product_uom_qty, 10)
|
self.assertEqual(new_rma.product_uom_qty + rma.product_uom_qty, 10)
|
||||||
self.assertEqual(new_rma.move_id.quantity_done, 10)
|
self.assertEqual(new_rma.move_id.quantity_done, 10)
|
||||||
self.assertEqual(new_rma.reception_move_id.quantity_done, 10)
|
self.assertEqual(new_rma.reception_move_id.quantity_done, 10)
|
||||||
|
|
||||||
|
def test_rma_to_receive_on_delete_invoice(self):
|
||||||
|
rma = self._create_confirm_receive(self.partner, self.product, 10,
|
||||||
|
self.rma_loc)
|
||||||
|
rma.action_refund()
|
||||||
|
self.assertEqual(rma.state, 'refunded')
|
||||||
|
rma.refund_id.unlink()
|
||||||
|
self.assertFalse(rma.refund_id)
|
||||||
|
self.assertEqual(rma.state, 'received')
|
||||||
|
self.assertTrue(rma.can_be_refunded)
|
||||||
|
self.assertTrue(rma.can_be_returned)
|
||||||
|
self.assertTrue(rma.can_be_replaced)
|
||||||
|
|||||||
Reference in New Issue
Block a user