[membership] transfert du wizard depuis bikecoop
[burette/bikecoop_l10n_fr.git] / wizard / create_member.py
diff --git a/wizard/create_member.py b/wizard/create_member.py
new file mode 100644 (file)
index 0000000..2ffc749
--- /dev/null
@@ -0,0 +1,126 @@
+# -*- coding: utf-8 -*-
+
+from osv import osv
+from osv import fields
+
+class CreateMember(osv.osv_memory):
+    _name = 'bikecoop.create.member.wizard'
+    _description = 'Wizard to create a new bikecoop member or update the membership'
+
+    _columns = {
+        'member_ident': fields.char('Member identifier', size=64, help='Unique identifier for this member'),
+        'membership_state': fields.char('Membership state', size=64),
+        'membership_start': fields.date('Membership start date'),
+        'membership_stop': fields.date('Membership end date'),
+        'partner_id': fields.many2one('res.partner', 'Main partner', help='The partner to invoice in'),
+        'street': fields.char('Street', size=128),
+        'street2': fields.char('Street ...', size=128),
+        'zip': fields.char('ZIP code', size=24),
+        'city': fields.char('City', size=128),
+        'country_id': fields.many2one('res.country', 'Country'),
+        'birthdate': fields.date('Birthdate'),
+        'gender_id': fields.many2one('bikecoop.partner.theme', 'Gender', domain=[('domain', '=', 'gender')]),
+        'occupation_id': fields.many2one('bikecoop.partner.theme', 'Main occupation', domain=[('domain', '=', 'occupation')]),
+        'nationality_id': fields.many2one('res.country', 'Nationality'),
+        'volunteer_com': fields.boolean('Communication workgroup', help='Check this box if you want to be volunteer for communication subjects'),
+        'volunteer_anim': fields.boolean('Animation workgroup', help='Check this box if you want to be volunteer for animation subjects'),
+        'volunteer_admin': fields.boolean('Adminstration workgroup', help='Check this box if you want to be volunteer for administration subjects'),
+        'volunteer_workshop': fields.boolean('Workshop workgroup', help='Check this box if you want to be volunteer for bike workshop subjects'),
+        'associate_members': fields.one2many('res.partner', 'associate_member', 'Associate members', help='Partners to associate to main partner for this membership.'),
+        'comment': fields.text('Others volunteer activities', help='If you want being volunteer in other workshop activities that are not mentionned behind.'),
+    }
+
+    def onchange_partner_id(self, cr, uid, ids, partner_id, context=None):
+        """
+        Found already associates members of the partner who is selected in the
+        wizard and load default address datas
+        #TODO
+        - Update volunters activities
+        """
+        if not partner_id:
+            res = {
+                'member_ident': False,
+                'membership_state': False,
+                'membership_start': False,
+                'membership_stop': False,
+                'street': False,
+                'street2': False,
+                'zip': False,
+                'city': False,
+                'country_id': False,
+                'birthdate': False,
+                'gender_id': False,
+                'occupation_id': False,
+                'nationality_id': False,
+                'volunteer_com': False,
+                'comment': False,
+                'associate_members': False,
+            }
+            return {'value': res}
+
+        part_obj = self.pool.get('res.partner')
+        address_obj = self.pool.get('res.partner.address')
+
+        partner_fields_name = [
+            'member_ident',
+            'membership_state',
+            'membership_start',
+            'membership_stop',
+            'date',
+            'gender_id',
+            'occupation_id',
+            'nationality_id',
+            'volunteer_ids',
+            'comment',
+        ]
+        part = part_obj.read(cr, uid, partner_id, partner_fields_name, context=context)
+
+        address_data = part_obj.address_get(cr, uid, [partner_id], ['default'])
+        address_fields_name = [
+            'street',
+            'street2',
+            'zip',
+            'city',
+            'country_id'
+        ]
+        if address_data['default']:
+            address = address_obj.read(cr, uid, address_data['default'], address_fields_name, context=context)
+
+        associate_members_ids = part_obj.browse(cr, uid, partner_id, context=context).associate_members
+        associate_members = []
+        for i in associate_members_ids:
+            associate_members.append(i.id)
+
+        res = {
+            'member_ident': part['member_ident'],
+            'membership_state': part['membership_state'],
+            'membership_start': part['membership_start'],
+            'membership_stop': part['membership_stop'],
+            'street': address['street'],
+            'street2': address['street2'],
+            'zip': address['zip'],
+            'city': address['city'],
+            'country_id': address['country_id'],
+            'birthdate': part['date'],
+            'gender_id': part['gender_id'],
+            'occupation_id': part['occupation_id'],
+            'nationality_id': part['nationality_id'],
+            'comment': part['comment'],
+            'associate_members': associate_members,
+        }
+
+        return {
+            'value' : res
+        }
+
+
+    def confirm_members(self, cr, uid, ids, context=None):
+        """
+        This function should create or update partner informations into the database.
+        """
+
+        return {'type': 'ir.actions.act_window_close'}
+
+CreateMember()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: