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 = {