61 lines
2.1 KiB
Python
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)
|