X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=wizard%2Fcreate_member.py;fp=wizard%2Fcreate_member.py;h=2ffc74958271f8a3d78c6bb6567e425d1bf2cdaf;hb=55dba608306d71e432857185b6dfeecc93505db2;hp=0000000000000000000000000000000000000000;hpb=ca51ac88c36bcea64458c76c9bb71abb741b7dd8;p=burette%2Fbikecoop_l10n_fr.git diff --git a/wizard/create_member.py b/wizard/create_member.py new file mode 100644 index 0000000..2ffc749 --- /dev/null +++ b/wizard/create_member.py @@ -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: