diff --git a/addons/event/__openerp__.py b/addons/event/__openerp__.py
index 465e01cdda3..37ad77f310f 100644
--- a/addons/event/__openerp__.py
+++ b/addons/event/__openerp__.py
@@ -54,7 +54,11 @@ Note that:
'res_partner_view.xml',
],
'demo_xml': ['event_demo.xml'],
- 'test': ['test/test_event.yml'],
+ 'test': ['test/process/event_confirm2done.yml',
+ 'test/process/event_draft2cancel.yml',
+ 'test/process/partner_register2invoice.yml',
+ 'test/ui/duplicate_event.yml',
+ 'test/ui/demo_data.yml'],
'installable': True,
'active': False,
'certificate': '0083059161581',
diff --git a/addons/event/event_demo.xml b/addons/event/event_demo.xml
index 8e8764ca1a7..4f86f620e6f 100644
--- a/addons/event/event_demo.xml
+++ b/addons/event/event_demo.xml
@@ -61,6 +61,8 @@
68.00
+ True
+ True
500
@@ -74,9 +76,9 @@
24.00
+ 50
350
-
Conference on ERP Buisness
@@ -92,7 +94,7 @@
Thanks for registration. The conference will begin at 2 PM and will be given by Mr. Pinckaers.
-
+
@@ -126,5 +128,16 @@
+
+
+
+
+ 5
+ Ticket for Conference
+ 20
+
+
+
+
diff --git a/addons/event/test/process/event_confirm2done.yml b/addons/event/test/process/event_confirm2done.yml
new file mode 100644
index 00000000000..4d5542896f7
--- /dev/null
+++ b/addons/event/test/process/event_confirm2done.yml
@@ -0,0 +1,22 @@
+-
+ I want to organize one conference event on "OpenERP Business", Customer subscribe/join
+ into "Conference on OpenERP Business" with 6 tickets, first I confim this event.
+-
+ !python {model: event.event}: |
+ self.button_confirm(cr, uid, [ref("event_0")])
+-
+ I Check that Event is "confirmed", and Its automatically sending mail to registered
+ partner which joined to this event.
+-
+ !assert {model: event.event, id: event_0}:
+ - state == 'confirm', "Event should be confirmed."
+-
+ After completed event, I close this event.
+-
+ !python {model: event.event}: |
+ self.button_done(cr, uid, [ref("event_0")])
+-
+ Check that conference is in "close" state.
+-
+ !assert {model: event.event, id: event_0}:
+ - state == 'done', "Event should be Closed."
diff --git a/addons/event/test/process/event_draft2cancel.yml b/addons/event/test/process/event_draft2cancel.yml
new file mode 100644
index 00000000000..48cb102f3e8
--- /dev/null
+++ b/addons/event/test/process/event_draft2cancel.yml
@@ -0,0 +1,22 @@
+-
+ I want to organize event and its need Minimum 50 Registrations to confirm/start
+ this Event, but Only 10 registration confirm for this event, I confirm this event.
+-
+ !python {model: event.event}: |
+ self.button_confirm(cr, uid, [ref("event_1")])
+-
+ Now I cheked for event and It should not be confirm because registrations for
+ this event is below limit.
+-
+ !assert {model: event.event, id: event_1}:
+ - state == 'confirm', "Event should be confirm."
+-
+ So I cancel this Event
+-
+ !python {model: event.event}: |
+ self.button_cancel(cr, uid, [ref("event_1")])
+-
+ I check event should be cancel.
+-
+ !assert {model: event.event, id: event_1}:
+ - state == 'cancel', "Event should be cancel"
diff --git a/addons/event/test/process/partner_register2invoice.yml b/addons/event/test/process/partner_register2invoice.yml
new file mode 100644
index 00000000000..f8748afee2f
--- /dev/null
+++ b/addons/event/test/process/partner_register2invoice.yml
@@ -0,0 +1,62 @@
+-
+ I want to organize one conference event, First I registered partner for event
+ with 5 tickets.
+-
+ !python {model: partner.event.registration}: |
+ context.update({'active_model': 'res.partner', 'active_ids': [ref("base.res_partner_ericdubois0")], 'active_id': ref("base.res_partner_ericdubois0")})
+ register = self.create(cr, uid, {'event_id': ref('event_1'),'nb_register': 5}, context=context)
+ self.open_registration(cr, uid, [register], context=context)
+-
+ Now I check for registration created base on partner.
+-
+ !python {model: event.registration}: |
+ ids = self.search(cr, uid, [('partner_id','=',ref("base.res_partner_ericdubois0")), ('event_id', '=', ref('event_1'))])
+ assert ids, "Registration should be create here."
+-
+ I confirm registration process.
+-
+ !python {model: event.registration}: |
+ self.check_confirm(cr, uid, [ref("reg_1_1")])
+-
+ I Check that Registration is confirm.
+-
+ !assert {model: event.registration, id: reg_1_1}:
+ - state == 'open', "Registration should be open here."
+-
+ After confirmation of partner, I create invoice base on costing of event.
+-
+ !python {model: event.registration}: |
+ self.action_invoice_create(cr, uid, [ref("reg_1_1")])
+-
+ Now I Check for Invoice is created and Registration should be closed after invoice generated.
+-
+ !python {model: event.registration}: |
+ record = self.browse(cr, uid, [ref("reg_1_1")])[0]
+ assert record.invoice_id, "Invoice should be generated"
+ assert record.invoice_id.state == "draft", "Invoice state should be draft"
+ assert record.invoice_id.partner_id == record.partner_id, "Customer is not correspond with registration"
+ assert record.invoice_id.type == 'out_invoice', "Invoice type is not correct"
+ assert record.invoice_id.origin == record.event_product, "Invoice origin is not correct"
+ assert record.invoice_id.amount_total == record.price_subtotal, "Invoice amount is not correct"
+ assert record.state == "done", "Registration should be closed after invoice generated"
+-
+ Now I check for same partner registration for two diffrent event and I create group invoices for same partner.
+-
+ !python {model: event.make.invoice}: |
+ context.update({'active_model': 'event.make.invoice', 'active_ids': [ref("reg_0_1"), ref("reg_0_2")], 'active_id': ref("reg_0_1")})
+ invoice = self.create(cr, uid, {'grouped': True}, context=context)
+ self.make_invoice(cr, uid, [invoice], context=context)
+-
+ Now I Check for group Invoice is created with total amount of both registration
+ and Registration should be closed after invoice generated.
+-
+ !python {model: event.registration}: |
+ reg_data_1 = self.browse(cr, uid, [ref("reg_0_1")])[0]
+ reg_data_2 = self.browse(cr, uid, [ref("reg_0_2")])[0]
+ assert reg_data_1.invoice_id, "Invoice should be generated"
+ assert reg_data_1.invoice_id.state == "draft", "Invoice state should be draft"
+ assert reg_data_1.invoice_id.partner_id == reg_data_1.partner_id, "Customer is not correspond with registration"
+ assert reg_data_1.invoice_id.type == 'out_invoice', "Invoice type is not correct"
+ assert reg_data_1.invoice_id.origin == reg_data_1.event_product, "Invoice origin is not correct"
+ assert reg_data_1.invoice_id.amount_total == (reg_data_1.price_subtotal + reg_data_2.price_subtotal), "Invoice total amount is not correct"
+ assert reg_data_1.state == "done", "Registration should be closed after invoice generated"
diff --git a/addons/event/test/test_event.yml b/addons/event/test/test_event.yml
deleted file mode 100644
index 5e35d79cab2..00000000000
--- a/addons/event/test/test_event.yml
+++ /dev/null
@@ -1,172 +0,0 @@
-- |
- In order to test the "Event Organisation" in Association system.
-- |
- I want to organize one conference event on "OpenERP Business".
-- |
- I'm creating new product "Conference Ticket" to specify registration Cost of conference.
--
- !record {model: product.product, id: product_product_ticketforconcert0}:
- categ_id: product.cat1
- list_price: 68.0
- name: Conference Ticket
-- |
- I'm creating Event type "Conference".
--
- !record {model: event.type, id: event_type_conference0}:
- name: Conferences
-- |
- I'm creating one Event "Conference on OpenERP Business" which will last from 1st of this month to 10th of this month.
--
- !record {model: event.event, id: event_event_conference0}:
- date_begin: !eval time.strftime('%Y-%m-01')
- date_end: !eval time.strftime('%Y-%m-10')
- name: Conference on OpenERP Business.
- product_id: 'product_product_ticketforconcert0'
- type: 'event_type_conference0'
- reply_to: 'info@customer.com'
-- |
- Check that the new conference event is "Draft" or not.
--
- !assert {model: event.event, id: event_event_conference0}:
- - state == 'draft', "Event should be in draft by default when first time created"
-- |
- Need Minimum 10 Registrations to confirm/start this Conference Event and does not allowed more than 100 Registrations.
-- |
- So I set Minimum and Maximum Registrations limit.
--
- !python {model: event.event}: |
- self.write(cr, uid, [ref('event_event_conference0')], {'register_max': 100, 'register_min': 10})
-- |
- I'm doing to confirm that conference event.
--
- !python {model: event.event}: |
- self.button_confirm(cr, uid, [ref("event_event_conference0")])
-- |
- But this conference event need minimum 10 Confirmed Registrations. so Check that Event is not "confirmed".
--
- !assert {model: event.event, id: event_event_conference0}:
- - state != 'confirm', "Event should not confirmed if minimum registrations does not reached"
-- |
- "Mark Johnson" want to subscribe/join into "Conference on OpenERP Business" with 10 tickets.
-- |
- I'm creating new partner "Mark Johnson" with his email "info@mycustomer.com".
--
- !record {model: res.partner, id: res_partner_markjohnson0}:
- address:
- - city: Bruxelles
- country_id: base.be
- job_ids:
- - contact_id: base_contact.res_partner_contact_jacot0
- function: CTO
- name: base.res_partner_maxtor
- sequence_partner: 0.0
- state: current
- street: Rue des Palais 51, bte 33
- type: default
- zip: '1000'
- email: 'info@mycustomer.com'
- name: Mark Johnson
-
-- |
- I'm creating Registration for "Mark Johnson" on "Conference on OpenERP Business" with 10 tickets.
--
- !record {model: event.registration, id: event_registration_registrationjacot0}:
- contact_id: base_contact.res_partner_contact_jacot0
- event_id: event.event_event_conference0
- partner_id: event.res_partner_markjohnson0
- partner_invoice_id: event.res_partner_markjohnson0
- event_product: Conference Ticket
- unit_price: 68.0
- nb_register: 10
-- |
- I'm going to Open that Registration.
--
- !python {model: event.registration}: |
- self.check_confirm(cr, uid, [ref("event_registration_registrationjacot0")])
-- |
- Check that Registration is in "Open" state or not.
--
- !assert {model: event.registration, id: event_registration_registrationjacot0}:
- - state == 'open', "Registration should be open here."
-
-- |
- I'm again trying to confirm that conference event.
--
- !python {model: event.event}: |
- self.button_confirm(cr, uid, [ref("event_event_conference0")])
-
-- |
- Now Minimum requirement of Registration is fulfil. so Check that Event is "confirmed" or not.
--
- !assert {model: event.event, id: event_event_conference0}:
- - state == 'confirm', "Event should be confirmed here."
-
-- |
- I'm creating invoice of Registration of "Mark Johnson" on "Conference on OpenERP Business".
--
- !python {model: event.registration}: |
- self.action_invoice_create(cr, uid, [ref("event_registration_registrationjacot0")])
-
-- |
- Check Invoice of Registration of "Mark Johnson" is created or not.
--
- !assert {model: event.registration, id: event_registration_registrationjacot0}:
- - invoice_id != False, "Invoice should be generated"
-
-- |
- Check Registration of "Mark Johnson" is closed or not after invoice generated.
--
- !assert {model: event.registration, id: event_registration_registrationjacot0}:
- - state != 'done', "Registration should be closed after invoice generated"
-
-- |
- Now "Mark Johnson" want to another registration on "Conference on OpenERP Business" with 120 tickets.
-- |
- I'm creating new registration for "Mark Johnson" with 100 tickets.
--
- !record {model: event.registration, id: event_registration_registrationzen0}:
- event_id: event.event_event_conference0
- partner_id: event.res_partner_markjohnson0
- partner_invoice_id: event.res_partner_markjohnson0
- event_product: Conference Ticket
- unit_price: 68.0
- nb_register: 100
-
-- |
- I'm going to open "Mark Johnson" registration.
--
- !python {model: event.registration}: |
- self.check_confirm(cr, uid, [ref("event_registration_registrationzen0")])
-
-- |
- But conference event does not allow more than 100 Registrations. so Check that registration is not in "open" state.
--
- !assert {model: event.registration, id: event_registration_registrationzen0}:
- - state == 'draft', "Registration should be in draft by default."
-- |
- Now I'm modifying number of tickets of "Mark Johnson"'s registration with 90 tickets.
--
- !python {model: event.registration}: |
- self.write(cr, uid, [ref("event_registration_registrationzen0")], {'nb_register': 90})
-- |
- I'm again try to open "Mark Johnson" registration.
--
- !python {model: event.registration}: |
- self.check_confirm(cr, uid, [ref("event_registration_registrationzen0")])
-
-- |
- Check that registration "open" or not.
--
- !assert {model: event.registration, id: event_registration_registrationzen0}:
- - state == 'open', "Registration should be open here."
-- |
- I'm closing "Conference on OpenERP Business" Conference event
--
- !python {model: event.event}: |
- self.button_done(cr, uid, [ref("event_event_conference0")])
-- |
- Check that conference is in "close" state or not.
--
- !assert {model: event.event, id: event_event_conference0}:
- - state == 'done', "Registration should be Closed here."
-
diff --git a/addons/event/test/ui/demo_data.yml b/addons/event/test/ui/demo_data.yml
new file mode 100644
index 00000000000..2f48cf1a90b
--- /dev/null
+++ b/addons/event/test/ui/demo_data.yml
@@ -0,0 +1,32 @@
+-
+ I create event registation record to call event onchange and partner onchange.
+-
+ !record {model: event.registration, id: reg_0_1}:
+ event_id: event_0
+ partner_id: base.res_partner_asus
+ name: 'Ticket for Concert'
+-
+ I create event record to call product onchange and team onchange.
+-
+ !record {model: event.event, id: event_2}:
+ product_id: event_product_2
+ section_id: crm.section_sales_department
+ name: 'Conference on ERP Buisness'
+-
+ I call onchange event from event registration wizard.
+-
+ !python {model: partner.event.registration}: |
+ context.update({'active_id': ref("base.res_partner_ericdubois0")})
+ self.onchange_event_id(cr, uid, 1, ref("event_1"), context=context)
+-
+ I confirm event from wizard.
+-
+ !python {model: event.confirm}: |
+ context.update({'event_ids': [ref("event_2")]})
+ id = self.create(cr, uid , {})
+ self.confirm(cr, uid, [id], context=context)
+-
+ I call close registration process.
+-
+ !python {model: event.registration}: |
+ self.button_reg_close(cr, uid, [ref("reg_0_2")])
diff --git a/addons/event/test/ui/duplicate_event.yml b/addons/event/test/ui/duplicate_event.yml
new file mode 100644
index 00000000000..c1287353c67
--- /dev/null
+++ b/addons/event/test/ui/duplicate_event.yml
@@ -0,0 +1,16 @@
+-
+ Copy of event.
+-
+ !python {model: event.event}: |
+ try:
+ self.copy(cr, uid, ref("event_2"))
+ except:
+ pass
+-
+ Copy of event registarion.
+-
+ !python {model: event.registration}: |
+ try:
+ self.copy(cr, uid, ref("reg_1_1"))
+ except:
+ pass
\ No newline at end of file
diff --git a/addons/event/wizard/partner_event_registration.py b/addons/event/wizard/partner_event_registration.py
index b8521e404e2..45d56ddc41c 100644
--- a/addons/event/wizard/partner_event_registration.py
+++ b/addons/event/wizard/partner_event_registration.py
@@ -34,8 +34,8 @@ class partner_event_registration(osv.osv_memory):
'event_id': fields.many2one('event.event', 'Event'),
'event_type': fields.many2one('event.type', 'Type', readonly=True),
'unit_price': fields.float('Registration Cost', digits_compute=dp.get_precision('Sale Price')),
- 'start_date': fields.datetime('Start date', required=True, help="Beginning Date of Event", readonly=True),
- 'end_date': fields.datetime('Closing date', required=True, help="Closing Date of Event", readonly=True),
+ 'start_date': fields.datetime('Start date', help="Beginning Date of Event", readonly=True),
+ 'end_date': fields.datetime('Closing date', help="Closing Date of Event", readonly=True),
'nb_register': fields.integer('Number of Registration'),
}
_defaults = {