mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
143 lines
5.3 KiB
Python
143 lines
5.3 KiB
Python
# Copyright 2022 Tecnativa - David Vidal
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
from odoo.tests import Form
|
|
|
|
from odoo.addons.rma.tests.test_rma import TestRma
|
|
|
|
|
|
class TestRmaDelivery(TestRma):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.carrier_product = cls.product_product.create(
|
|
{"name": "Delivery product test 1", "type": "service"}
|
|
)
|
|
cls.replace_product = cls.product_product.create(
|
|
{"name": "Replace product test 1", "type": "product"}
|
|
)
|
|
cls.carrier = cls.env["delivery.carrier"].create(
|
|
{
|
|
"name": "Test Fixed delivery method",
|
|
"product_id": cls.carrier_product.id,
|
|
}
|
|
)
|
|
cls.carrier_customer = cls.env["delivery.carrier"].create(
|
|
{
|
|
"name": "Test Customer delivery method",
|
|
"product_id": cls.carrier_product.id,
|
|
}
|
|
)
|
|
cls.partner.property_delivery_carrier_id = cls.carrier_customer
|
|
cls.partner_shipping.property_delivery_carrier_id = False
|
|
cls.company.rma_fixed_delivery_method = cls.carrier
|
|
|
|
def _return_to_customer(self, rma, delivery_type="return"):
|
|
"""Helper to return the rma"""
|
|
delivery_form = Form(
|
|
self.env["rma.delivery.wizard"].with_context(
|
|
active_ids=rma.ids, rma_delivery_type=delivery_type,
|
|
)
|
|
)
|
|
if delivery_type == "replace":
|
|
delivery_form.product_id = self.replace_product
|
|
delivery_form.product_uom_qty = 1
|
|
delivery_wizard = delivery_form.save()
|
|
delivery_wizard.action_deliver()
|
|
return rma.delivery_move_ids.picking_id
|
|
|
|
def test_01_fixed_method(self):
|
|
"""Fixed method. RMA gets the company default carrier"""
|
|
# Return picking
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
self.company.rma_delivery_strategy = "fixed_method"
|
|
picking = self._return_to_customer(rma)
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
self.carrier,
|
|
"The carrier isn't the one set in the company as default",
|
|
)
|
|
# Replace picking
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
picking = self._return_to_customer(rma, "replace")
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
self.carrier,
|
|
"The carrier isn't the one set in the company as default",
|
|
)
|
|
|
|
def test_02_customer_method(self):
|
|
"""Customer method. RMA gets the carrier from the contact"""
|
|
# Return picking
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
self.company.rma_delivery_strategy = "customer_method"
|
|
picking = self._return_to_customer(rma)
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
self.carrier_customer,
|
|
"The carrier isn't the same one as in the commercial partner",
|
|
)
|
|
carrier_2 = self.env["delivery.carrier"].create(
|
|
{"name": "Test delivery method", "product_id": self.carrier_product.id}
|
|
)
|
|
self.partner_shipping.property_delivery_carrier_id = carrier_2
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
picking = self._return_to_customer(rma)
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
carrier_2,
|
|
"The carrier isn't the same one as in the picking partner",
|
|
)
|
|
# Replace picking
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
picking = self._return_to_customer(rma, "replace")
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
carrier_2,
|
|
"The carrier isn't the same one as in the picking partner",
|
|
)
|
|
|
|
def test_03_mixed_method(self):
|
|
"""Mixed method. RMA gets the carrier from the contact otherwise the company
|
|
default one"""
|
|
# Return picking
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
self.company.rma_delivery_strategy = "mixed_method"
|
|
picking = self._return_to_customer(rma)
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
self.carrier_customer,
|
|
"The carrier isn't the same one as in the commercial partner",
|
|
)
|
|
self.partner.property_delivery_carrier_id = False
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
picking = self._return_to_customer(rma)
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
self.carrier,
|
|
"The carrier isn't the one set in the company as default",
|
|
)
|
|
# Replace picking
|
|
rma = self._create_confirm_receive(
|
|
self.partner_shipping, self.product, 1, self.rma_loc
|
|
)
|
|
picking = self._return_to_customer(rma, "replace")
|
|
self.assertEqual(
|
|
picking.carrier_id,
|
|
self.carrier,
|
|
"The carrier isn't the one set in the company as default",
|
|
)
|