Good bank account process
authorFabien Pinckaers <fp@tinyerp.com>
Wed, 20 Jun 2007 15:52:07 +0000 (15:52 +0000)
committerFabien Pinckaers <fp@tinyerp.com>
Wed, 20 Jun 2007 15:52:07 +0000 (15:52 +0000)
Report on tasks: type
HR_timesheet invoices: shortcut to list of interresting analytic account

bzr revid: fp@tinyerp.com-49fb56b4d1ebf9490c32da20ff2d4f7e67af953d

bin/addons/base/base_data.xml
bin/addons/base/res/partner/partner.py
bin/addons/base/res/partner/partner_data.xml
bin/addons/base/res/partner/partner_view.xml

index 5c23ed4..1d4f2a0 100644 (file)
                <field name="groups_id" eval="[(6,0,[group_admin])]"/>
                <field name="company_id" ref="main_company"/>
        </record>
+
+       # --------------------------------------------------------------
+       # Default bank account description
+       # --------------------------------------------------------------
+       <record model="res.partner.bank.type" id="bank_normal">
+               <field name="name">Bank account</field>
+               <field name="code">bank</field>
+       </record>
+       <record model="res.partner.bank.type.field" id="bank_normal_field">
+               <field name="name">acc_number</field>
+               <field name="required" eval="True"/>
+               <field name="bank_type_id" ref="bank_normal"/>
+       </record>
+
 </data>
 </terp>
index 21c0f6b..faeea22 100644 (file)
@@ -300,50 +300,6 @@ class res_partner(osv.osv):
                return True
 res_partner()
 
-
-class res_partner_bank_type(osv.osv):
-       _description='Bank Account Type'
-       _name = 'res.partner.bank.type'
-       _columns = {
-               'name': fields.char('Name', size=64, required=True),
-               'code': fields.char('Code', size=64),
-               'elec_pay': fields.char('Electronic Payment', size=64),
-       }
-res_partner_bank_type()
-
-class res_partner_bank(osv.osv):
-       _description='Bank Details'
-       _name = "res.partner.bank"
-       _order = "sequence"
-       _columns = {
-               'name': fields.char('Account Name', size=64, required=True),
-               'sequence': fields.integer('Sequence'),
-               'number': fields.char('Account Number', size=64),
-               'iban': fields.char('Account Iban', size=27),
-               'type_id' : fields.many2one('res.partner.bank.type', 'Account Type', required=True),
-               'bank_name': fields.char('Bank Name', size=64, required= True),
-               'bank_code': fields.char('Bank Code', size=64),
-               'bank_guichet': fields.char('Branch', size=64),
-
-               'street': fields.char('Street', size=128),
-               'zip': fields.char('Zip', change_default=True, size=24),
-               'city': fields.char('City', size=128),
-               'country_id': fields.many2one('res.country', 'Country'),
-               
-               'partner_id': fields.many2one('res.partner', 'Partner', required=True, ondelete='cascade', select=True),
-               'active': fields.boolean('Active'),
-       }
-       def _default_type_id(self, cr, uid, context={}):
-               ids = self.pool.get('res.partner.bank.type').search(cr, uid, [('name','=','Other')])
-               return ids and ids[0] or False
-
-       _defaults = {
-               'active': lambda *a: 1,
-               'type_id': _default_type_id,
-       }
-res_partner_bank()
-
-
 class res_partner_address(osv.osv):
        _description ='Partner Contact'
        _name = 'res.partner.address'
@@ -399,4 +355,72 @@ class res_partner_address(osv.osv):
                return self.name_get(cr, user, ids)
 res_partner_address()
 
+class res_partner_bank_type(osv.osv):
+       _description='Bank Account Type'
+       _name = 'res.partner.bank.type'
+       _columns = {
+               'name': fields.char('Name', size=64, required=True),
+               'code': fields.char('Code', size=64, required=True),
+               'elec_pay': fields.char('Electronic Payment', size=64),
+               'field_ids': fields.one2many('res.partner.bank.type.field', 'bank_type_id', 'Type fields'),
+       }
+res_partner_bank_type()
+
+class res_partner_bank_type_fields(osv.osv):
+       _description='Bank type fields'
+       _name = 'res.partner.bank.type.field'
+       _columns = {
+               'name': fields.char('Field name', size=64, required=True),
+               'bank_type_id': fields.many2one('res.partner.bank.type', 'Bank type', required=True, ondelete='cascade'),
+               'required': fields.boolean('Required'),
+               'readonly': fields.boolean('Readonly'),
+               'size': fields.integer('Max. Size'),
+       }
+res_partner_bank_type_fields()
+
+
+class res_partner_bank(osv.osv):
+       _description='Bank Details'
+       _name = "res.partner.bank"
+       def _bank_type_get(self, cr, uid, *args):
+               result = []
+               type_ids = self.pool.get('res.partner.bank.type').search(cr, uid, [])
+               res = self.pool.get('res.partner.bank.type').read(cr, uid, type_ids, ['code','name'])
+               for r in res:
+                       result.append((r['code'], r['name']))
+               return result
+
+       _columns = {
+               'name': fields.char('Account Name', size=64, required=True),
+               'acc_number': fields.char('Account Number', size=64, required=False),
+               'bank_id': fields.many2one('res.partner', 'Bank'),
+               'bank_address_id': fields.many2one('res.partner.address', 'Bank address'),
+
+               'owner_name': fields.char('Account owner', size=64),
+               'street': fields.char('Street', size=128),
+               'zip': fields.char('Zip', change_default=True, size=24),
+               'city': fields.char('City', size=128),
+               'country_id': fields.many2one('res.country', 'Country'),
+               
+               'partner_id': fields.many2one('res.partner', 'Partner', required=True, ondelete='cascade', select=True),
+               'state': fields.selection(_bank_type_get, 'Bank type', required=True)
+       }
+       def fields_get(self, cr, uid, *args):
+               res = super(res_partner_bank, self).fields_get(cr, uid, *args)
+               type_ids = self.pool.get('res.partner.bank.type').search(cr, uid, [])
+               types = self.pool.get('res.partner.bank.type').browse(cr, uid, type_ids)
+               for t in types:
+                       for f in t.field_ids:
+                               if f.name in res:
+                                       res[f.name].setdefault('states',{})
+                                       res[f.name]['states'][t.code] = [('readonly',f.readonly),('required',f.required)]
+                                       print 'Change', f.name
+                               else:
+                                       print 'Noe Change', f.name
+               print res
+               return res
+
+res_partner_bank()
+
+
 # vim:noexpandtab:
index 74244c5..7f9f4e6 100644 (file)
@@ -2,18 +2,6 @@
 <terp>
 <data>
 
-<!-- bank types -->
-       <record model="res.partner.bank.type" id="bank_type_iban">
-               <field name="name">Iban</field>
-               <field name="code"></field>
-               <field name="elec_pay">iban</field>
-       </record>
-       <record model="res.partner.bank.type" id="bank_type_notype">
-               <field name="name">Other</field>
-               <field name="code"></field>
-               <field name="elec_pay"></field>
-       </record>
-
 
 
 </data>
index 90b2afb..396d41b 100644 (file)
                <field name="model">res.partner.bank</field>
                <field name="type">form</field>
                <field name="arch" type="xml">
-                       <form string="Bank Details">
-                               <field name="name" select="1" colspan="4"/>
-                               <field name="bank_name" select="1"/>
-                               <field name="bank_guichet" select="2"/>
-                               <field name="street"/>
+                       <form string="Bank account">
+                               <field name="name" select="1"/>
+                               <field name="state" select="2"/>
+                               <newline/>
+                               <field name="acc_number" select="1"/>
+                               <newline/>
+                               <field name="bank_id"/>
+                               <field name="bank_address_id" domain="[('partner_id','=',bank_id)]"/>
+                               <separator string="Bank account owner" colspan="4"/>
+                               <field name="owner_name" colspan="4"/>
+                               <field name="street" colspan="4"/>
                                <field name="city"/>
                                <field name="zip"/>
                                <field name="country_id"/>
-                               <newline/>
-                               <field name="type_id" select="2"/>
-                               <field name="number" select="1"/>
-                               <field name="iban" select="2"/>
-                               <field name="bank_code" select="2"/>
-                               <field name="sequence"/>
                        </form>
                </field>
        </record>
                <field name="type">tree</field>
                <field name="arch" type="xml">
                        <tree string="Bank Details">
-                               <field name="sequence"/>
                                <field name="name"/>
-                               <field name="type_id"/>
-                               <field name="number"/>
+                               <field name="state"/>
                        </tree>
                </field>
        </record>