diff --git a/addons/event_sale/models/sale_order.py b/addons/event_sale/models/sale_order.py index b3b79a3899c..28426520a18 100644 --- a/addons/event_sale/models/sale_order.py +++ b/addons/event_sale/models/sale_order.py @@ -18,16 +18,11 @@ class SaleOrder(models.Model): registrations_toupdate.write({'partner_id': vals['partner_id']}) return result - def _action_confirm(self): - res = super(SaleOrder, self)._action_confirm() - for so in self: - # confirm registration if it was free (otherwise it will be confirmed once invoice fully paid) - so.order_line._update_registrations(confirm=so.amount_total == 0, cancel_to_draft=False) - return res - def action_confirm(self): res = super(SaleOrder, self).action_confirm() for so in self: + # confirm registration if it was free (otherwise it will be confirmed once invoice fully paid) + so.order_line._update_registrations(confirm=so.amount_total == 0, cancel_to_draft=False) if any(so.order_line.filtered(lambda line: line.event_id)): return self.env['ir.actions.act_window'] \ .with_context(default_sale_order_id=so.id) \ @@ -87,13 +82,17 @@ class SaleOrderLine(models.Model): if cancel_to_draft: existing_registrations.filtered(lambda self: self.state == 'cancel').action_set_draft() + registrations_vals = [] for count in range(int(so_line.product_uom_qty) - len(existing_registrations)): - registration_vals = {} - if registration_data: - registration_vals = registration_data.pop() + values = { + 'sale_order_line_id': so_line.id, + 'sale_order_id': so_line.order_id.id + } # TDE CHECK: auto confirmation - registration_vals['sale_order_line_id'] = so_line.id - Registration.create(registration_vals) + if registration_data: + values.update(registration_data.pop()) + registrations_vals.append(values) + Registration.create(registrations_vals) return True @api.onchange('product_id') diff --git a/addons/event_sale/wizard/event_edit_registration.py b/addons/event_sale/wizard/event_edit_registration.py index 0cc1ab9c4ca..9db556ba804 100644 --- a/addons/event_sale/wizard/event_edit_registration.py +++ b/addons/event_sale/wizard/event_edit_registration.py @@ -41,6 +41,10 @@ class RegistrationEditor(models.TransientModel): 'event_id': so_line.event_id.id, 'event_ticket_id': so_line.event_ticket_id.id, 'sale_order_line_id': so_line.id, + 'name': so_line.order_partner_id.name, + 'email': so_line.order_partner_id.email, + 'phone': so_line.order_partner_id.phone, + 'mobile': so_line.order_partner_id.mobile, }]) res['event_registration_ids'] = attendee_list res = self._convert_to_write(res) @@ -48,15 +52,17 @@ class RegistrationEditor(models.TransientModel): def action_make_registration(self): self.ensure_one() + registrations_to_create = [] for registration_line in self.event_registration_ids: values = registration_line.get_registration_data() if registration_line.registration_id: registration_line.registration_id.write(values) else: - self.env['event.registration'].create(values) - if self.env.context.get('active_model') == 'sale.order': - for order in self.env['sale.order'].browse(self.env.context.get('active_ids', [])): - order.order_line._update_registrations(confirm=False) + registrations_to_create.append(values) + + self.env['event.registration'].create(registrations_to_create) + self.sale_order_id.order_line._update_registrations(confirm=self.sale_order_id.amount_total == 0) + return {'type': 'ir.actions.act_window_close'}