diff options
| -rw-r--r-- | addons/event_sale/models/sale_order.py | 7 | ||||
| -rw-r--r-- | addons/event_sale/tests/test_event_sale.py | 56 |
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.") |
