summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/event_sale/models/sale_order.py23
-rw-r--r--addons/event_sale/wizard/event_edit_registration.py14
2 files changed, 21 insertions, 16 deletions
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'}