[IMP] event_sale: easier configuration of tickets, no more event_type_id on product as tickets define what you can sell

This commit is contained in:
Fabien Pinckaers
2016-05-22 10:42:53 +02:00
parent 6a430678b5
commit 7f97a64091
10 changed files with 4 additions and 40 deletions
-4
View File
@@ -3,7 +3,6 @@
<record id="event_0_product" model="product.product">
<field name="name">Open Days in Los Angeles</field>
<field name="event_ok">True</field>
<field name="event_type_id" ref="event.event_type_1"/>
<field name="categ_id" ref="product.product_category_1"/>
<field name="type">service</field>
<field name="list_price">2500.0</field>
@@ -16,7 +15,6 @@
<record id="event_1_product" model="product.product">
<field name="name">Functional Webinar</field>
<field name="event_ok">True</field>
<field name="event_type_id" ref="event.event_type_0"/>
<field name="categ_id" ref="product.product_category_1"/>
<field name="type">service</field>
<field name="list_price">2500.0</field>
@@ -29,7 +27,6 @@
<record id="event_2_product" model="product.product">
<field name="name">Conference on Business Applications</field>
<field name="event_ok">True</field>
<field name="event_type_id" ref="event.event_type_2"/>
<field name="categ_id" ref="product.product_category_1"/>
<field name="type">service</field>
<field name="list_price">2500.0</field>
@@ -46,7 +43,6 @@
<record id="event_3_product" model="product.product">
<field name="name">Technical Training</field>
<field name="event_ok">True</field>
<field name="event_type_id" ref="event.event_type_4"/>
<field name="categ_id" ref="product.product_category_1"/>
<field name="type">service</field>
<field name="list_price">2500.0</field>
@@ -15,7 +15,6 @@
<field name="name">Event Registration</field>
<field name="categ_id" ref="product.product_category_all"/>
<field name="type">service</field>
<field name="event_type_id" ref="event_sale.event_type"/>
</record>
</data>
-17
View File
@@ -139,11 +139,6 @@ msgstr ""
msgid "Event Tickets"
msgstr ""
#. module: event_sale
#: model:ir.model.fields,field_description:event_sale.field_sale_order_line_event_type_id
msgid "Event Type"
msgstr ""
#. module: event_sale
#: model:product.product,name:event_sale.event_1_product
#: model:product.template,name:event_sale.event_1_product_product_template
@@ -309,12 +304,6 @@ msgstr ""
msgid "Seats used"
msgstr ""
#. module: event_sale
#: model:ir.model.fields,help:event_sale.field_product_product_event_type_id
#: model:ir.model.fields,help:event_sale.field_product_template_event_type_id
msgid "Select event types so when we use this product in sales order lines, it will filter events of this type only."
msgstr ""
#. module: event_sale
#: model:ir.ui.view,arch_db:event_sale.view_event_registration_editor_form
msgid "Skip"
@@ -362,12 +351,6 @@ msgstr ""
msgid "Tickets"
msgstr ""
#. module: event_sale
#: model:ir.model.fields,field_description:event_sale.field_product_product_event_type_id
#: model:ir.model.fields,field_description:event_sale.field_product_template_event_type_id
msgid "Type of Event"
msgstr ""
#. module: event_sale
#: model:ir.model.fields,field_description:event_sale.field_event_event_ticket_seats_unconfirmed
msgid "Unconfirmed Seat Reservations"
+1 -2
View File
@@ -36,8 +36,7 @@ class EventTicket(models.Model):
name = fields.Char(string='Name', required=True, translate=True)
event_id = fields.Many2one('event.event', string="Event", required=True, ondelete='cascade')
product_id = fields.Many2one('product.product', string='Product',
required=True, domain=[("event_type_id", "!=", False)],
default=_default_product_id)
required=True, domain=[("event_ok", "=", True)], default=_default_product_id)
registration_ids = fields.One2many('event.registration', 'event_ticket_id', string='Registrations')
price = fields.Float(string='Price', digits=dp.get_precision('Product Price'))
deadline = fields.Date(string="Sales End")
-2
View File
@@ -8,8 +8,6 @@ class ProductTemplate(models.Model):
event_ok = fields.Boolean(string='Event Registration', help='Determine if a product needs '
'to create automatically an event registration at the confirmation of a sales order line.')
event_type_id = fields.Many2one('event.type', string='Type of Event', help='Select event types '
'so when we use this product in sales order lines, it will filter events of this type only.')
@api.onchange('event_ok')
def _onchange_event_ok(self):
+1 -5
View File
@@ -24,9 +24,6 @@ class SaleOrderLine(models.Model):
help="Choose an event and it will automatically create a registration for this event.")
event_ticket_id = fields.Many2one('event.event.ticket', string='Event Ticket', help="Choose "
"an event ticket and it will automatically create a registration for this event ticket.")
# those 2 fields are used for dynamic domains and filled by onchange
# TDE: really necessary ? ..
event_type_id = fields.Many2one(related='product_id.event_type_id', string="Event Type")
event_ok = fields.Boolean(related='product_id.event_ok')
@api.multi
@@ -39,9 +36,8 @@ class SaleOrderLine(models.Model):
@api.onchange('product_id')
def _onchange_product_id_event(self):
values = {'event_type_id': False, 'event_ok': False}
values = {'event_ok': False}
if self.product_id.event_ok:
values['event_type_id'] = self.product_id.event_type_id.id
values['event_ok'] = self.product_id.event_ok
self.update(values)
@@ -15,7 +15,6 @@ class EventSaleTest(common.TransactionCase):
'name': 'test_formation',
'type': 'service',
'event_ok': True,
'event_type_id': 1,
})
# I create an event from the same type than my product
@@ -11,9 +11,6 @@
<label for="event_ok"/>
</div>
</div>
<field name='type' position="after">
<field name="event_type_id" attrs="{'invisible': [('event_ok', '=', False)]}"/>
</field>
</field>
</record>
</odoo>
+2 -4
View File
@@ -6,13 +6,11 @@
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='order_line']//form//field[@name='product_id']" position="after">
<field name="event_id" domain="['|', ('event_type_id','=', False),('event_type_id', '=', event_type_id),('date_end','&gt;=',time.strftime('%Y-%m-%d 00:00:00'))]" attrs="{'invisible': [('event_ok', '=', False)],'required': [('event_ok', '!=', False)]}"/>
<field name="event_ticket_id" domain="[('event_id', '=', event_id), ('seats_available', '>', 0)]" attrs="{'invisible': [('event_id', '=', False)], 'required': [('event_id', '!=', False)]}"/>
<field name="event_type_id" invisible="1"/>
<field name="event_id" domain="[('event_ticket_ids.product_id','=', product_id),('date_end','&gt;=',time.strftime('%Y-%m-%d 00:00:00'))]" attrs="{'invisible': [('event_ok', '=', False)],'required': [('event_ok', '!=', False)]}"/>
<field name="event_ticket_id" domain="[('event_id', '=', event_id), ('product_id','=',product_id), ('seats_available', '>', 0)]" attrs="{'invisible': [('event_ok', '=', False)], 'required': [('event_ok', '!=', False)]}"/>
<field name="event_ok" invisible="1"/>
</xpath>
<xpath expr="//field[@name='order_line']//tree//field[@name='product_id']" position="after">
<field name="event_type_id" invisible="1"/>
<field name="event_ok" invisible="1"/>
</xpath>
</field>
@@ -42,7 +42,6 @@ class SaleOrder(models.Model):
values['name'] = "%s\n%s" % (ticket.event_id.display_name, ticket.name)
# avoid writing related values that end up locking the product record
values.pop('event_type_id', None)
values.pop('event_ok', None)
return values