[membership] transfert du wizard depuis bikecoop
authorLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Thu, 15 Nov 2012 14:55:12 +0000 (15:55 +0100)
committerLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Thu, 15 Nov 2012 14:55:12 +0000 (15:55 +0100)
__init__.py
__openerp__.py
wizard/__init__.py [new file with mode: 0644]
wizard/create_member.py [new file with mode: 0644]
wizard/create_member_view.xml [new file with mode: 0644]

index bd51724..6081a99 100644 (file)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 
 import bikecoop_l10n_fr
+import wizard
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
index 5fd8edf..796422c 100644 (file)
@@ -16,11 +16,12 @@ This module is to configure add french spepcifitities to modules related to a bi
     """,
     'author': 'L\'Heureux Cyclage',
     'website': 'http://www.heureux-cyclage.org',
-    'depends': ['bikecoop','l10n_fr'],
+    'depends': ['bikecoop','l10n_fr', 'remembership'],
     'update_xml': [
         'data/bikecoop_l10n_fr.xml',
         'data/plan_comptable_general.xml',
         'view/bikecoop.xml',
+        'wizard/create_member_view.xml',
         'demo/res_users.xml',
         'demo/membership.xml',
     ],
diff --git a/wizard/__init__.py b/wizard/__init__.py
new file mode 100644 (file)
index 0000000..2a69bb5
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+
+import create_member
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
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:
diff --git a/wizard/create_member_view.xml b/wizard/create_member_view.xml
new file mode 100644 (file)
index 0000000..d6e474e
--- /dev/null
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record id="view_bikecoop_create_member_form" model="ir.ui.view">
+            <field name="name">bikecoop.create.member.wizard.form</field>
+            <field name="model">bikecoop.create.member.wizard</field>
+            <field name="type">form</field>
+            <field name="priority" eval="8"/>
+            <field name="arch" type="xml">
+            <form string="Create bikecoop member">
+                <group colspan="4" col="2">
+                    <field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
+                </group>
+                <separator string="The membership status" colspan="4"/>
+                <group colspan="4">
+                    <field name="member_ident" readonly="1" />
+                    <field name="membership_state" readonly="1"/>
+                    <field name="membership_start" readonly="1"/>
+                    <field name="membership_stop"  readonly="1"/>
+                    <separator string="Address" colspan="4"/>
+                    <field name="street"/>
+                    <field name="street2"/>
+                    <field name="zip"/>
+                    <field name="city"/>
+                    <field name="country_id" widget="selection"/>
+                </group>
+                <separator string="Personal information" colspan="4"/>
+                <group colspan="4">
+                    <field name="birthdate"/>
+                    <field name="gender_id" widget="selection"/>
+                    <field name="occupation_id" widget="selection"/>
+                    <field name="nationality_id" widget="selection"/>
+                    <field name="volunteer_com"/>
+                    <field name="volunteer_anim"/>
+                    <field name="volunteer_admin"/>
+                    <field name="volunteer_workshop"/>
+                    <field name="comment"/>
+                </group>
+                <separator string="Associate members" colspan="4"/>
+                <group colspan="4">
+                    <field name="associate_members" nolabel="1"/>
+                </group>
+                <button string="Cancel" icon="gtk-cancel" special="cancel"/>
+                <button string="Validate" icon="gtk-ok" type="object" name="confirm_members"/>
+            </form>
+            </field>
+        </record>
+        
+        <record model="ir.actions.act_window" id="act_open_bikecoop_create_member_view">
+            <field name="name">Create bikecoop member</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">bikecoop.create.member.wizard</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="domain">[]</field>
+            <field name="context">{}</field>
+            <field name="target">new</field>
+        </record>
+        
+        <record model="ir.actions.act_window.view" id="act_open_bikecoop_create_member_view_form">
+            <field name="act_window_id" ref="act_open_bikecoop_create_member_view"/>
+            <field name="sequence" eval="20"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="view_bikecoop_create_member_form"/>
+        </record>
+
+        <menuitem id="menu_bikecoop_create_member"
+            parent="bikecoop.menu_bikecoop"
+            sequence="20"
+            action="act_open_bikecoop_create_member_view"/>
+    </data>
+</openerp>