[MERGE] merged the evv branch related to help tooltips on menuitems
[odoo/odoo.git] / addons / event / wizard / partner_event_registration.py
index 47c2092..b8521e4 100644 (file)
 #
 ##############################################################################
 
-import wizard
-import netsvc
-import tools
 from osv import fields, osv
 from tools.translate import _
-
+from decimal_precision import decimal_precision as dp
 
 class partner_event_registration(osv.osv_memory):
     """  event Registration """
@@ -36,102 +33,114 @@ class partner_event_registration(osv.osv_memory):
     _columns = {
         'event_id': fields.many2one('event.event', 'Event'),
         'event_type': fields.many2one('event.type', 'Type', readonly=True),
-        'unit_price': fields.float('Cost', readonly=True),
-        'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),
-        '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), 
+        '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),
         'nb_register': fields.integer('Number of Registration'),
     }
     _defaults = {
-        'nb_register': 1, 
+        'nb_register': 1,
     }
 
     def open_registration(self, cr, uid, ids, context=None):
+        """This Function Open Registration For Given Event id and Partner.
+
+        """
         value = {}
         res_obj = self.pool.get('res.partner')
+        job_obj = self.pool.get('res.partner.job')
+        reg_obj = self.pool.get('event.registration')
+        mod_obj = self.pool.get('ir.model.data')
+
         record_ids = context and context.get('active_ids', []) or []
         addr = res_obj.address_get(cr, uid, record_ids)
         contact_id = False
+        email = False
         if addr.has_key('default'):
-                job_ids = self.pool.get('res.partner.job').search(cr, uid, [('address_id', '=', addr['default'])])
+                job_ids = job_obj.search(cr, uid, [('address_id', '=', addr['default'])], context=context)
                 if job_ids:
-                    contact_id = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0]).contact_id.id
-         
-        event_obj = self.pool.get('event.event')
-        reg_obj = self.pool.get('event.registration')
-        mod_obj = self.pool.get('ir.model.data')
-        result = mod_obj._get_id(cr, uid, 'event', 'view_registration_search')
-        res = mod_obj.read(cr, uid, result, ['res_id'])
+                    contact = job_obj.browse(cr, uid, job_ids[0], context=context)
+                    if contact:
+                        contact_id = contact.contact_id.id
+                        email = contact.email
+
+        result = mod_obj.get_object_reference(cr, uid, 'event', 'view_registration_search')
+        res = result and result[1] or False
 
-        data_obj = self.pool.get('ir.model.data')
         # Select the view
-        id2 = data_obj._get_id(cr, uid, 'event', 'view_event_registration_form')
-        id3 = data_obj._get_id(cr, uid, 'event', 'view_event_registration_tree')
-        if id2:
-            id2 = data_obj.browse(cr, uid, id2, context=context).res_id
-        if id3:
-            id3 = data_obj.browse(cr, uid, id3, context=context).res_id
+
+        id2 = mod_obj.get_object_reference(cr, uid, 'event', 'view_event_registration_form')
+        id2 = id2 and id2[1] or False
+        id3 = mod_obj.get_object_reference(cr, uid, 'event', 'view_event_registration_tree')
+        id3 = id3 and id3[1] or False
 
         for current in self.browse(cr, uid, ids, context=context):
-            for reg in reg_obj.browse(cr, uid, record_ids, context=context):
+            for partner in res_obj.browse(cr, uid, record_ids, context=context):
                 new_case = reg_obj.create(cr, uid, {
-                        'name' : 'Registration',
-                        'event_id' : current.event_id and current.event_id.id or False,
-                        'unit_price' : current.event_id.unit_price,
-                        'currency_id' : current.event_id.currency_id and current.event_id.currency_id.id or False,
-                        'partner_id' : record_ids[0],
-                        'partner_invoice_id' :  record_ids[0] or False,
+                        'name': 'Registration',
+                        'event_id': current.event_id and current.event_id.id or False,
+                        'unit_price': current.unit_price,
+                        'partner_id': partner.id,
+                        'partner_invoice_id':  partner.id,
                         'event_product': current.event_id.product_id.name,
                         'contact_id': contact_id,
+                        'email_from': email,
                         'nb_register': current.nb_register,
+
                 }, context=context)
 
-            value = {
+        value = {
                 'name': _('Event Registration'),
                 'view_type': 'form',
                 'view_mode': 'tree,form',
                 'res_model': 'event.registration',
-                'res_id' : new_case,
+                'res_id': new_case,
                 'views': [(id2, 'form'), (id3, 'tree'), (False, 'calendar'), (False, 'graph')],
                 'type': 'ir.actions.act_window',
-                'search_view_id': res['res_id']
-            }
+                'search_view_id': res
+        }
         return value
-    
+
     def name_get(self, cr, uid, ids, context=None):
         """Overrides orm name_get method
         @param ids: List of partner_event_register ids
         """
-        if not context:
-            context = {}
-        
+
         res = []
         if not ids:
             return res
-        reads = self.read(cr, uid, ids, ['event_type', 'event_id'], context)
+        reads = self.read(cr, uid, ids, ['event_type', 'event_id'], context=context)
         for record in reads:
             event_id = record['event_id'][1]
             if record['event_type']:
                 event_id = record['event_type'][1] + ' on ' + event_id
             res.append((record['id'], event_id))
         return res
-    
-    def onchange_event_id(self, cr, uid, ids, event_id, context={}):
-        res = {}    
-        if event_id:   
-            obj_event = self.pool.get('event.event')
-            event = obj_event.browse(cr, uid, event_id)
+
+    def onchange_event_id(self, cr, uid, ids, event_id, context=None):
+        res = {}
+        event_obj = self.pool.get('event.event')
+        product_obj = self.pool.get('product.product')
+        partner_obj = self.pool.get('res.partner')
+        if context is None:
+            context = {}
+        partner_id = context.get('active_id', False)
+        if event_id:
+            event = event_obj.browse(cr, uid, event_id, context=context)
+            pricelist_id = event.pricelist_id and event.pricelist_id.id or False
+            if partner_id:
+                partner = partner_obj.browse(cr, uid, partner_id, context=context)
+                pricelist_id = pricelist_id or partner.property_product_pricelist.id
+            unit_price = product_obj._product_price(cr, uid, [event.product_id.id], False, False, {'pricelist': pricelist_id})[event.product_id.id]
+
             res['value'] = {
                           'event_type': event.type and event.type.id or False,
                           'start_date': event.date_begin,
                           'end_date': event.date_end,
-                          'unit_price': event.unit_price,
-                          'currency_id': event.currency_id and event.currency_id.id or False
-                           }
+                          'unit_price': unit_price,
+            }
         return res
-    
-partner_event_registration()
 
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+partner_event_registration()
 
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file