Merge branch 'master' into membership_wizard
[burette/bikecoop_l10n_fr.git] / wizard / create_member.py
1 # -*- coding: utf-8 -*-
2
3 from osv import osv
4 from osv import fields
5
6 class CreateMember(osv.osv_memory):
7 _name = 'bikecoop.create.member.wizard'
8 _description = 'Wizard to create a new bikecoop member or update the membership'
9
10 _columns = {
11 'member_ident': fields.char('Member identifier', size=64, help='Unique identifier for this member'),
12 'membership_state': fields.char('Membership state', size=64),
13 'membership_start': fields.date('Membership start date'),
14 'membership_stop': fields.date('Membership end date'),
15 'partner_id': fields.many2one('res.partner', 'Main partner', help='The partner to invoice in'),
16 'street': fields.char('Street', size=128),
17 'street2': fields.char('Street ...', size=128),
18 'zip': fields.char('ZIP code', size=24),
19 'city': fields.char('City', size=128),
20 'country_id': fields.many2one('res.country', 'Country'),
21 'birthdate': fields.date('Birthdate'),
22 'gender_id': fields.many2one('bikecoop.partner.theme', 'Gender', domain=[('domain', '=', 'gender')]),
23 'occupation_id': fields.many2one('bikecoop.partner.theme', 'Main occupation', domain=[('domain', '=', 'occupation')]),
24 'nationality_id': fields.many2one('res.country', 'Nationality'),
25 'volunteer_com': fields.boolean('Communication workgroup', help='Check this box if you want to be volunteer for communication subjects'),
26 'volunteer_anim': fields.boolean('Animation workgroup', help='Check this box if you want to be volunteer for animation subjects'),
27 'volunteer_admin': fields.boolean('Adminstration workgroup', help='Check this box if you want to be volunteer for administration subjects'),
28 'volunteer_workshop': fields.boolean('Workshop workgroup', help='Check this box if you want to be volunteer for bike workshop subjects'),
29 'associate_members': fields.one2many('res.partner', 'associate_member', 'Associate members', help='Partners to associate to main partner for this membership.'),
30 'comment': fields.text('Others volunteer activities', help='If you want being volunteer in other workshop activities that are not mentionned behind.'),
31 }
32
33 def onchange_partner_id(self, cr, uid, ids, partner_id, context=None):
34 """
35 Found already associates members of the partner who is selected in the
36 wizard and load default address datas
37 #TODO
38 - Update volunters activities
39 """
40 if not partner_id:
41 res = {
42 'member_ident': False,
43 'membership_state': False,
44 'membership_start': False,
45 'membership_stop': False,
46 'street': False,
47 'street2': False,
48 'zip': False,
49 'city': False,
50 'country_id': False,
51 'birthdate': False,
52 'gender_id': False,
53 'occupation_id': False,
54 'nationality_id': False,
55 'volunteer_com': False,
56 'comment': False,
57 'associate_members': False,
58 }
59 return {'value': res}
60
61 part_obj = self.pool.get('res.partner')
62 address_obj = self.pool.get('res.partner.address')
63
64 partner_fields_name = [
65 'member_ident',
66 'membership_state',
67 'membership_start',
68 'membership_stop',
69 'date',
70 'gender_id',
71 'occupation_id',
72 'nationality_id',
73 'volunteer_ids',
74 'comment',
75 ]
76 part = part_obj.read(cr, uid, partner_id, partner_fields_name, context=context)
77
78 address_data = part_obj.address_get(cr, uid, [partner_id], ['default'])
79 address_fields_name = [
80 'street',
81 'street2',
82 'zip',
83 'city',
84 'country_id'
85 ]
86 if address_data['default']:
87 address = address_obj.read(cr, uid, address_data['default'], address_fields_name, context=context)
88
89 associate_members_ids = part_obj.browse(cr, uid, partner_id, context=context).associate_members
90 associate_members = []
91 for i in associate_members_ids:
92 associate_members.append(i.id)
93
94 res = {
95 'member_ident': part['member_ident'],
96 'membership_state': part['membership_state'],
97 'membership_start': part['membership_start'],
98 'membership_stop': part['membership_stop'],
99 'street': address['street'],
100 'street2': address['street2'],
101 'zip': address['zip'],
102 'city': address['city'],
103 'country_id': address['country_id'],
104 'birthdate': part['date'],
105 'gender_id': part['gender_id'],
106 'occupation_id': part['occupation_id'],
107 'nationality_id': part['nationality_id'],
108 'comment': part['comment'],
109 'associate_members': associate_members,
110 }
111
112 return {
113 'value' : res
114 }
115
116
117 def confirm_members(self, cr, uid, ids, context=None):
118 """
119 This function should create or update partner informations into the database.
120 """
121
122 return {'type': 'ir.actions.act_window_close'}
123
124 CreateMember()
125
126 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: