summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/event_sale/models/sale_order.py7
-rw-r--r--addons/event_sale/tests/test_event_sale.py56
2 files changed, 57 insertions, 6 deletions
diff --git a/addons/event_sale/models/sale_order.py b/addons/event_sale/models/sale_order.py
index 9f170b994ce..57d9c3ad140 100644
--- a/addons/event_sale/models/sale_order.py
+++ b/addons/event_sale/models/sale_order.py
@@ -137,11 +137,6 @@ class SaleOrderLine(models.Model):
def _get_display_price(self, product):
if self.event_ticket_id and self.event_id:
- company = self.event_id.company_id or self.env.company
- currency = company.currency_id
- return currency._convert(
- self.event_ticket_id.price, self.order_id.currency_id,
- self.order_id.company_id or self.env.company.id,
- self.order_id.date_order or fields.Date.today())
+ return self.event_ticket_id.with_context(pricelist=self.order_id.pricelist_id.id, uom=self.product_uom.id).price_reduce
else:
return super()._get_display_price(product)
diff --git a/addons/event_sale/tests/test_event_sale.py b/addons/event_sale/tests/test_event_sale.py
index f41949a5fb5..8b8ab6c7d92 100644
--- a/addons/event_sale/tests/test_event_sale.py
+++ b/addons/event_sale/tests/test_event_sale.py
@@ -50,6 +50,7 @@ class TestEventSale(TestEventSaleCommon):
'event_ticket_id': ticket1.id,
'product_id': ticket1.product_id.id,
'product_uom_qty': TICKET1_COUNT,
+ 'price_unit': 10,
}), (0, 0, {
'event_id': self.event_0.id,
'event_ticket_id': ticket2.id,
@@ -153,3 +154,58 @@ class TestEventSale(TestEventSaleCommon):
self.assertEqual(editor_action['type'], 'ir.actions.act_window')
self.assertEqual(editor_action['res_model'], 'registration.editor')
+
+ def test_ticket_price_with_pricelist_and_tax(self):
+ self.env.user.partner_id.country_id = False
+ pricelist = self.env['product.pricelist'].search([], limit=1)
+
+ tax = self.env['account.tax'].create({
+ 'name': "Tax 10",
+ 'amount': 10,
+ })
+
+ event_product = self.env['product.template'].create({
+ 'name': 'Event Product',
+ 'list_price': 10.0,
+ })
+
+ event_product.taxes_id = tax
+
+ event = self.env['event.event'].create({
+ 'name': 'New Event',
+ 'date_begin': '2020-02-02',
+ 'date_end': '2020-04-04',
+ })
+ event_ticket = self.env['event.event.ticket'].create({
+ 'name': 'VIP',
+ 'price': 1000.0,
+ 'event_id': event.id,
+ 'product_id': event_product.product_variant_id.id,
+ })
+
+ pricelist.item_ids = self.env['product.pricelist.item'].create({
+ 'applied_on': "1_product",
+ 'base': "list_price",
+ 'compute_price': "fixed",
+ 'fixed_price': 6.0,
+ 'product_tmpl_id': event_product.id,
+ })
+
+ pricelist.discount_policy = 'without_discount'
+
+ so = self.env['sale.order'].create({
+ 'partner_id': self.env.user.partner_id.id,
+ 'pricelist_id': pricelist.id,
+ })
+ sol = self.env['sale.order.line'].create({
+ 'name': event.name,
+ 'product_id': event_product.product_variant_id.id,
+ 'product_uom_qty': 1,
+ 'product_uom': event_product.uom_id.id,
+ 'price_unit': event_product.list_price,
+ 'order_id': so.id,
+ 'event_id': event.id,
+ 'event_ticket_id': event_ticket.id,
+ })
+ sol.product_id_change()
+ self.assertEqual(so.amount_total, 660.0, "Ticket is $1000 but the event product is on a pricelist 10 -> 6. So, $600 + a 10% tax.")