Odoo18-Base/addons/sale_crm/tests/test_sale_crm.py
2025-01-06 10:57:38 +07:00

61 lines
2.1 KiB
Python

from odoo.addons.crm.tests.common import TestCrmCommon
from odoo.fields import Command
class TestSaleCrm(TestCrmCommon):
def test_sale_crm_revenue(self):
""" Test the updation of the expected_revenue when the is confirmed.
If the expected_revenue of the lead is smaller than the total of quote which we are confirming, update it with that.
e.g. if the lead has a expected revenue of 40 $
Quotes - q1 = 45$
===> The expected_revenue would be updated, from 40 to 45$.
"""
product1, product2 = self.env['product.template'].create([{
'name': 'Test product1',
'list_price': 100.0,
}, {
'name': 'Test product2',
'list_price': 200.0,
}])
my_pricelist = self.env['product.pricelist'].create({
'name': 'Rupee',
'currency_id': self.ref('base.INR')
})
pricelist_expected_by_lead = self.env['product.pricelist'].create({
'name': 'Rupee',
'currency_id': self.ref('base.USD')
})
so_values = {
'partner_id': self.env.user.partner_id.id,
'opportunity_id': self.lead_1.id,
}
so1, so2 = self.env['sale.order'].create([{
**so_values,
'pricelist_id': my_pricelist.id,
'order_line': [
Command.create({
'product_id': product1.product_variant_id.id,
}),
],
}, {
**so_values,
'pricelist_id': pricelist_expected_by_lead.id,
'order_line': [
Command.create({
'product_id': product2.product_variant_id.id,
}),
],
}])
self.assertEqual(self.lead_1.expected_revenue, 0)
# Revenue should not be updated when the currency of sale order is different from lead.
so1.action_confirm()
self.assertEqual(self.lead_1.expected_revenue, 0)
# Revenue should be updated when the currency is same.
so2.action_confirm()
self.assertEqual(self.lead_1.expected_revenue, 200)