# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import tagged
from odoo.addons.pos_event.tests.test_frontend import TestUi
from odoo import fields, Command


@tagged('post_install', '-at_install')
class TestPoSEventSaleReport(TestUi):
    def test_sale_event_report(self):
        self.pos_user.write({
            'group_ids': [
                (4, self.env.ref('event.group_event_user').id),
            ]
        })
        self.main_pos_config.with_user(self.pos_user).open_ui()

        order_data = {
            "amount_paid": 100,
            "amount_tax": 0,
            "amount_return": 0,
            "amount_total": 100,
            "date_order": fields.Datetime.to_string(fields.Datetime.now()),
            "fiscal_position_id": False,
            "lines": [
                Command.create({
                    "discount": 0,
                    "pack_lot_ids": [],
                    "price_unit": 100.0,
                    "product_id": self.product_event.id,
                    "price_subtotal": 100.0,
                    "price_subtotal_incl": 100.0,
                    "tax_ids": [],
                    "qty": 1,
                    "event_ticket_id": self.test_event.event_ticket_ids[0].id,
                    "event_registration_ids": [
                        (0, 0, {
                            "event_id": self.test_event.id,
                            "event_ticket_id": self.test_event.event_ticket_ids[0].id,
                            "name": "Test Name",
                            "email": "Test Email",
                            "phone": "047123123198",
                        }),
                    ],
                }),
            ],
            "name": "Order 12345-123-1234",
            "partner_id": self.partner_a.id,
            "session_id": self.main_pos_config.current_session_id.id,
            "sequence_number": 2,
            "payment_ids": [
                    Command.create({
                        "amount": 100,
                        "name": fields.Datetime.now(),
                        "payment_method_id": self.bank_payment_method.id,
                    }),
            ],
            "uuid": "12345-123-1234",
            "last_order_preparation_change": "{}",
            "user_id": self.env.uid,
            "to_invoice": False,
        }

        self.env['pos.order'].sync_from_ui([order_data])
        report = self.env['event.sale.report'].search([])
        self.assertEqual(len(report), 1)
        self.assertRecordValues(report, [{
            'event_registration_name': "Test Name",
            'event_id': self.test_event.id,
            'sale_order_id': False,
            'sale_price': 100.0,
            'sale_price_untaxed': 100.0,
        }])
