Merge lp:~numerigraphe/openobject-server/trunk-bank-bzr-history into lp:openobject-server

Proposed by Numérigraphe
Status: Merged
Merged at revision: 3825
Proposed branch: lp:~numerigraphe/openobject-server/trunk-bank-bzr-history
Merge into: lp:openobject-server
Diff against target: 851 lines (+0/-416)
2 files modified
openerp/addons/base/res/res_bank.py (+0/-227)
openerp/addons/base/res/res_bank_view.xml (+0/-189)
To merge this branch: bzr merge lp:~numerigraphe/openobject-server/trunk-bank-bzr-history
Reviewer Review Type Date Requested Status
Numérigraphe (community) Needs Information
Olivier Dony (Odoo) Needs Fixing
Review via email: mp+82699@code.launchpad.net

Commit message

[MERGE] fix the bazaar history of res_bank.py and res_bank_view.xml, unproperly moved at revno 3541.

Description of the change

The bzr history for res_bank.py and res_bank_view.xml has been broken when these two files were renamed during development for v6.1.
This makes it unnecessarily hard to find differences between 6.0 and trunk, making it harder to port community modules.
This branch fixes the mistake by forking at revno 3541, doing the file move the right way, and successively merging all the changes to those files.

To post a comment you must log in.
Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

Thanks for trying to restore the proper history of the res_bank* files, that is very appreciated.
The history almost looks right when I merge you branch, however the blame is all messed up: most changes to the res_bank files are credited to you revision 3540.1.1 revid:<email address hidden> unfortunately.

I'll do a quick test of branching off rev.3540, renaming the files and then pulling trunk in it to see if I can get it right.

review: Needs Fixing
Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

Update: I tried to do the same thing you did, except I also preserved the commit and author for the very first merge ("bank account management reviewed..." by fp). I think that was the problem for the blame in your branch, and accounted for a large part of the new res_bank.py file.

My branch is at lp:~openerp-dev/openobject-server/trunk-bug-892054

Sorry for not merging your branch directly, but as you can imagine it would be a mess to fix, and I won't ask you to do the whole boring history fix once more from scratch ;-)

I will credit the final merge to you of course, as you did the whole work, even if technically I'm not merging your branch. Let's also mark this merge prop as Merged, even if it was not technically merged either ;-)

Revision history for this message
Numérigraphe (numerigraphe) wrote :

Dear Olivier,
Thanks for your support. My branch was a bit of a mess indeed, so I'm glad you found a way to do it more properly.
Please, would you care to give a step by step procedure I can follow if I stumble upon a similar problem later on?
This one had few changes but I imagine doing this for 100s of revisions, it would need to be scripted.
Lionel.

review: Needs Information
Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

On 11/23/2011 09:27 AM, Numérigraphe wrote:
> Thanks for your support. My branch was a bit of a mess indeed, so I'm glad you found a way to do it more properly.
> Please, would you care to give a step by step procedure I can follow if I stumble upon a similar problem later on?
> This one had few changes but I imagine doing this for 100s of revisions, it would need to be scripted.

Sure, though I imagine I did something very similar to what you did.

Let's say file F was moved to G at revision R, without preserving
history. Here's what I did:

0. Check the commit history on file G to see when it moved and how it
was changed afterwards.
 $ bzr log --line --show-ids trunk/<G>

1. Branch off the revision before the one that broke the history
 $ bzr branch -r <R-1> trunk trunk-fix-history
 $ cd trunk-fix-history

2. Merge rev R and before committing, use `bzr mv --after` to perform
the renaming correctly:
 $ bzr merge ../trunk -r <R>
 $ bzr mv --after <F> <G>
 $ bzr ci -m '<rev.R commit msg>' --author '<rev.R author>'

3. Then, every subsequent revision that touches G in trunk will cause a
conflict, and will result in a diff in the "blame" history, so we need
to merge them one by one to preserve commit message and author.
Repeat for each subsequent revision S that touches G on trunk:
 $ bzr merge ../trunk -r <S>
 # here you get a conflict on G, just copy over the new file
 $ mv <G-conflicting-file> <G>
 $ bzr resolve <G> # force resolve
 $ bzr ci -m '<rev.S commit msg>' --author '<rev.S author>'

4. When you're done merging the tip of trunk, you can merge back the
fixed branch to restore history, after double-checking that the files
are now identical:
 $ diff <G> ../trunk/<G> # should be empty!
 $ cd ../trunk
 $ bzr merge ../trunk-fix-history
 # It looks like you're removing and adding <G> again, this is normal
 # because you're removing the old file w/o history, and adding the
 # new one with the fixed history.
 $ bzr ci -m '[MERGE] Fixed history of <G>, broken at rev.<R>'

Conflicts in step 3 and how to resolve them will probably depend on how
much renaming happened to <G>. Here it was more complicated because the
file had been renamed back and forth.

I hope there's a better way to do this, but this was quick enough in
this case.

Of course, it goes without saying that the best way to fix this is to
never break the history in the first place! ;-)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'openerp/addons/base/res/res_bank.py'
2--- openerp/addons/base/res/res_bank.py 1970-01-01 00:00:00 +0000
3+++ openerp/addons/base/res/res_bank.py 2011-11-18 15:47:33 +0000
4@@ -0,0 +1,227 @@
5+# -*- coding: utf-8 -*-
6+##############################################################################
7+#
8+# OpenERP, Open Source Management Solution
9+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
10+#
11+# This program is free software: you can redistribute it and/or modify
12+# it under the terms of the GNU Affero General Public License as
13+# published by the Free Software Foundation, either version 3 of the
14+# License, or (at your option) any later version.
15+#
16+# This program is distributed in the hope that it will be useful,
17+# but WITHOUT ANY WARRANTY; without even the implied warranty of
18+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19+# GNU Affero General Public License for more details.
20+#
21+# You should have received a copy of the GNU Affero General Public License
22+# along with this program. If not, see <http://www.gnu.org/licenses/>.
23+#
24+##############################################################################
25+
26+from osv import fields, osv
27+
28+class Bank(osv.osv):
29+ _description='Bank'
30+ _name = 'res.bank'
31+ _order = 'name'
32+ _columns = {
33+ 'name': fields.char('Name', size=128, required=True),
34+ 'street': fields.char('Street', size=128),
35+ 'street2': fields.char('Street2', size=128),
36+ 'zip': fields.char('Zip', change_default=True, size=24),
37+ 'city': fields.char('City', size=128),
38+ 'state': fields.many2one("res.country.state", 'State',
39+ domain="[('country_id', '=', country)]"),
40+ 'country': fields.many2one('res.country', 'Country'),
41+ 'email': fields.char('E-Mail', size=64),
42+ 'phone': fields.char('Phone', size=64),
43+ 'fax': fields.char('Fax', size=64),
44+ 'active': fields.boolean('Active'),
45+ 'bic': fields.char('Bank Identifier Code', size=64,
46+ help="Sometimes called BIC or Swift."),
47+ }
48+ _defaults = {
49+ 'active': lambda *a: 1,
50+ }
51+ def name_get(self, cr, uid, ids, context=None):
52+ result = []
53+ for bank in self.browse(cr, uid, ids, context):
54+ result.append((bank.id, (bank.bic and (bank.bic + ' - ') or '') + bank.name))
55+ return result
56+
57+Bank()
58+
59+
60+class res_partner_bank_type(osv.osv):
61+ _description='Bank Account Type'
62+ _name = 'res.partner.bank.type'
63+ _order = 'name'
64+ _columns = {
65+ 'name': fields.char('Name', size=64, required=True, translate=True),
66+ 'code': fields.char('Code', size=64, required=True),
67+ 'field_ids': fields.one2many('res.partner.bank.type.field', 'bank_type_id', 'Type fields'),
68+ 'format_layout': fields.text('Format Layout', translate=True)
69+ }
70+ _defaults = {
71+ 'format_layout': lambda *args: "%(bank_name)s: %(acc_number)s"
72+ }
73+res_partner_bank_type()
74+
75+class res_partner_bank_type_fields(osv.osv):
76+ _description='Bank type fields'
77+ _name = 'res.partner.bank.type.field'
78+ _order = 'name'
79+ _columns = {
80+ 'name': fields.char('Field Name', size=64, required=True, translate=True),
81+ 'bank_type_id': fields.many2one('res.partner.bank.type', 'Bank Type', required=True, ondelete='cascade'),
82+ 'required': fields.boolean('Required'),
83+ 'readonly': fields.boolean('Readonly'),
84+ 'size': fields.integer('Max. Size'),
85+ }
86+res_partner_bank_type_fields()
87+
88+
89+class res_partner_bank(osv.osv):
90+ '''Bank Accounts'''
91+ _name = "res.partner.bank"
92+ _rec_name = "acc_number"
93+ _description = __doc__
94+ _order = 'sequence'
95+
96+ def _bank_type_get(self, cr, uid, context=None):
97+ bank_type_obj = self.pool.get('res.partner.bank.type')
98+
99+ result = []
100+ type_ids = bank_type_obj.search(cr, uid, [])
101+ bank_types = bank_type_obj.browse(cr, uid, type_ids, context=context)
102+ for bank_type in bank_types:
103+ result.append((bank_type.code, bank_type.name))
104+ return result
105+
106+ def _default_value(self, cursor, user, field, context=None):
107+ if context is None: context = {}
108+ if field in ('country_id', 'state_id'):
109+ value = False
110+ else:
111+ value = ''
112+ if not context.get('address'):
113+ return value
114+
115+ for address in self.pool.get('res.partner').resolve_o2m_commands_to_record_dicts(
116+ cursor, user, 'address', context['address'], ['type', field], context=context):
117+
118+ if address.get('type') == 'default':
119+ return address.get(field, value)
120+ elif not address.get('type'):
121+ value = address.get(field, value)
122+ return value
123+
124+ _rec_name = 'acc_number'
125+ _columns = {
126+ 'name': fields.char('Bank Account', size=64), # to be removed in v6.2 ?
127+ 'acc_number': fields.char('Account Number', size=64, required=True),
128+ 'bank': fields.many2one('res.bank', 'Bank'),
129+ 'bank_bic': fields.char('Bank Identifier Code', size=16),
130+ 'bank_name': fields.char('Bank Name', size=32),
131+ 'owner_name': fields.char('Account Owner Name', size=64),
132+ 'street': fields.char('Street', size=128),
133+ 'zip': fields.char('Zip', change_default=True, size=24),
134+ 'city': fields.char('City', size=128),
135+ 'country_id': fields.many2one('res.country', 'Country',
136+ change_default=True),
137+ 'state_id': fields.many2one("res.country.state", 'State',
138+ change_default=True, domain="[('country_id','=',country_id)]"),
139+ 'company_id': fields.many2one('res.company', 'Company',
140+ ondelete='cascade', help="Only if this bank account belong to your company"),
141+ 'partner_id': fields.many2one('res.partner', 'Account Owner', required=True,
142+ ondelete='cascade', select=True),
143+ 'state': fields.selection(_bank_type_get, 'Bank Account Type', required=True,
144+ change_default=True),
145+ 'sequence': fields.integer('Sequence'),
146+ 'footer': fields.boolean("Display on Reports")
147+ }
148+ _defaults = {
149+ 'owner_name': lambda obj, cursor, user, context: obj._default_value(
150+ cursor, user, 'name', context=context),
151+ 'street': lambda obj, cursor, user, context: obj._default_value(
152+ cursor, user, 'street', context=context),
153+ 'city': lambda obj, cursor, user, context: obj._default_value(
154+ cursor, user, 'city', context=context),
155+ 'zip': lambda obj, cursor, user, context: obj._default_value(
156+ cursor, user, 'zip', context=context),
157+ 'country_id': lambda obj, cursor, user, context: obj._default_value(
158+ cursor, user, 'country_id', context=context),
159+ 'state_id': lambda obj, cursor, user, context: obj._default_value(
160+ cursor, user, 'state_id', context=context),
161+ 'name': lambda *args: '/'
162+ }
163+
164+ def fields_get(self, cr, uid, fields=None, context=None):
165+ res = super(res_partner_bank, self).fields_get(cr, uid, fields, context)
166+ bank_type_obj = self.pool.get('res.partner.bank.type')
167+ type_ids = bank_type_obj.search(cr, uid, [])
168+ types = bank_type_obj.browse(cr, uid, type_ids)
169+ for type in types:
170+ for field in type.field_ids:
171+ if field.name in res:
172+ res[field.name].setdefault('states', {})
173+ res[field.name]['states'][type.code] = [
174+ ('readonly', field.readonly),
175+ ('required', field.required)]
176+ return res
177+
178+ def name_get(self, cr, uid, ids, context=None):
179+ if not len(ids):
180+ return []
181+ bank_type_obj = self.pool.get('res.partner.bank.type')
182+ res = []
183+ for val in self.browse(cr, uid, ids, context=context):
184+ result = val.acc_number
185+ if val.state:
186+ type_ids = bank_type_obj.search(cr, uid, [('code','=',val.state)])
187+ if type_ids:
188+ t = bank_type_obj.browse(cr, uid, type_ids[0], context=context)
189+ try:
190+ result = t.format_layout % val._data[val.id]
191+ except:
192+ result += ' [Formating Error]'
193+ raise
194+ res.append((val.id, result))
195+ return res
196+
197+ def onchange_company_id(self, cr, uid, ids, company_id, context={}):
198+ result = {}
199+ if company_id:
200+ c = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
201+ if c.partner_id:
202+ r = self.onchange_partner_id(cr, uid, ids, c.partner_id.id, context=context)
203+ r['value']['partner_id'] = c.partner_id.id
204+ r['value']['footer'] = 1
205+ result = r
206+ return result
207+
208+ def onchange_bank_id(self, cr, uid, ids, bank_id, context={}):
209+ result = {}
210+ if bank_id:
211+ bank = self.pool.get('res.bank').browse(cr, uid, bank_id, context=context)
212+ result['bank_name'] = bank.name
213+ result['bank_bic'] = bank.bic
214+ return {'value': result}
215+
216+
217+ def onchange_partner_id(self, cr, uid, id, partner_id, context={}):
218+ result = {}
219+ if partner_id:
220+ part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
221+ result['owner_name'] = part.name
222+ result['street'] = part.address and part.address[0].street or False
223+ result['city'] = part.address and part.address[0].city or False
224+ result['zip'] = part.address and part.address[0].zip or False
225+ result['country_id'] = part.address and part.address[0].country_id and part.address[0].country_id.id or False
226+ result['state_id'] = part.address and part.address[0].state_id and part.address[0].state_id.id or False
227+ return {'value': result}
228+
229+res_partner_bank()
230+
231+
232
233=== removed file 'openerp/addons/base/res/res_bank.py'
234--- openerp/addons/base/res/res_bank.py 2011-10-11 08:03:38 +0000
235+++ openerp/addons/base/res/res_bank.py 1970-01-01 00:00:00 +0000
236@@ -1,227 +0,0 @@
237-# -*- coding: utf-8 -*-
238-##############################################################################
239-#
240-# OpenERP, Open Source Management Solution
241-# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
242-#
243-# This program is free software: you can redistribute it and/or modify
244-# it under the terms of the GNU Affero General Public License as
245-# published by the Free Software Foundation, either version 3 of the
246-# License, or (at your option) any later version.
247-#
248-# This program is distributed in the hope that it will be useful,
249-# but WITHOUT ANY WARRANTY; without even the implied warranty of
250-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
251-# GNU Affero General Public License for more details.
252-#
253-# You should have received a copy of the GNU Affero General Public License
254-# along with this program. If not, see <http://www.gnu.org/licenses/>.
255-#
256-##############################################################################
257-
258-from osv import fields, osv
259-
260-class Bank(osv.osv):
261- _description='Bank'
262- _name = 'res.bank'
263- _order = 'name'
264- _columns = {
265- 'name': fields.char('Name', size=128, required=True),
266- 'street': fields.char('Street', size=128),
267- 'street2': fields.char('Street2', size=128),
268- 'zip': fields.char('Zip', change_default=True, size=24),
269- 'city': fields.char('City', size=128),
270- 'state': fields.many2one("res.country.state", 'State',
271- domain="[('country_id', '=', country)]"),
272- 'country': fields.many2one('res.country', 'Country'),
273- 'email': fields.char('E-Mail', size=64),
274- 'phone': fields.char('Phone', size=64),
275- 'fax': fields.char('Fax', size=64),
276- 'active': fields.boolean('Active'),
277- 'bic': fields.char('Bank Identifier Code', size=64,
278- help="Sometimes called BIC or Swift."),
279- }
280- _defaults = {
281- 'active': lambda *a: 1,
282- }
283- def name_get(self, cr, uid, ids, context=None):
284- result = []
285- for bank in self.browse(cr, uid, ids, context):
286- result.append((bank.id, (bank.bic and (bank.bic + ' - ') or '') + bank.name))
287- return result
288-
289-Bank()
290-
291-
292-class res_partner_bank_type(osv.osv):
293- _description='Bank Account Type'
294- _name = 'res.partner.bank.type'
295- _order = 'name'
296- _columns = {
297- 'name': fields.char('Name', size=64, required=True, translate=True),
298- 'code': fields.char('Code', size=64, required=True),
299- 'field_ids': fields.one2many('res.partner.bank.type.field', 'bank_type_id', 'Type fields'),
300- 'format_layout': fields.text('Format Layout', translate=True)
301- }
302- _defaults = {
303- 'format_layout': lambda *args: "%(bank_name)s: %(acc_number)s"
304- }
305-res_partner_bank_type()
306-
307-class res_partner_bank_type_fields(osv.osv):
308- _description='Bank type fields'
309- _name = 'res.partner.bank.type.field'
310- _order = 'name'
311- _columns = {
312- 'name': fields.char('Field Name', size=64, required=True, translate=True),
313- 'bank_type_id': fields.many2one('res.partner.bank.type', 'Bank Type', required=True, ondelete='cascade'),
314- 'required': fields.boolean('Required'),
315- 'readonly': fields.boolean('Readonly'),
316- 'size': fields.integer('Max. Size'),
317- }
318-res_partner_bank_type_fields()
319-
320-
321-class res_partner_bank(osv.osv):
322- '''Bank Accounts'''
323- _name = "res.partner.bank"
324- _rec_name = "acc_number"
325- _description = __doc__
326- _order = 'sequence'
327-
328- def _bank_type_get(self, cr, uid, context=None):
329- bank_type_obj = self.pool.get('res.partner.bank.type')
330-
331- result = []
332- type_ids = bank_type_obj.search(cr, uid, [])
333- bank_types = bank_type_obj.browse(cr, uid, type_ids, context=context)
334- for bank_type in bank_types:
335- result.append((bank_type.code, bank_type.name))
336- return result
337-
338- def _default_value(self, cursor, user, field, context=None):
339- if context is None: context = {}
340- if field in ('country_id', 'state_id'):
341- value = False
342- else:
343- value = ''
344- if not context.get('address'):
345- return value
346-
347- for address in self.pool.get('res.partner').resolve_o2m_commands_to_record_dicts(
348- cursor, user, 'address', context['address'], ['type', field], context=context):
349-
350- if address.get('type') == 'default':
351- return address.get(field, value)
352- elif not address.get('type'):
353- value = address.get(field, value)
354- return value
355-
356- _rec_name = 'acc_number'
357- _columns = {
358- 'name': fields.char('Bank Account', size=64), # to be removed in v6.2 ?
359- 'acc_number': fields.char('Account Number', size=64, required=True),
360- 'bank': fields.many2one('res.bank', 'Bank'),
361- 'bank_bic': fields.char('Bank Identifier Code', size=16),
362- 'bank_name': fields.char('Bank Name', size=32),
363- 'owner_name': fields.char('Account Owner Name', size=64),
364- 'street': fields.char('Street', size=128),
365- 'zip': fields.char('Zip', change_default=True, size=24),
366- 'city': fields.char('City', size=128),
367- 'country_id': fields.many2one('res.country', 'Country',
368- change_default=True),
369- 'state_id': fields.many2one("res.country.state", 'State',
370- change_default=True, domain="[('country_id','=',country_id)]"),
371- 'company_id': fields.many2one('res.company', 'Company',
372- ondelete='cascade', help="Only if this bank account belong to your company"),
373- 'partner_id': fields.many2one('res.partner', 'Account Owner', required=True,
374- ondelete='cascade', select=True),
375- 'state': fields.selection(_bank_type_get, 'Bank Account Type', required=True,
376- change_default=True),
377- 'sequence': fields.integer('Sequence'),
378- 'footer': fields.boolean("Display on Reports")
379- }
380- _defaults = {
381- 'owner_name': lambda obj, cursor, user, context: obj._default_value(
382- cursor, user, 'name', context=context),
383- 'street': lambda obj, cursor, user, context: obj._default_value(
384- cursor, user, 'street', context=context),
385- 'city': lambda obj, cursor, user, context: obj._default_value(
386- cursor, user, 'city', context=context),
387- 'zip': lambda obj, cursor, user, context: obj._default_value(
388- cursor, user, 'zip', context=context),
389- 'country_id': lambda obj, cursor, user, context: obj._default_value(
390- cursor, user, 'country_id', context=context),
391- 'state_id': lambda obj, cursor, user, context: obj._default_value(
392- cursor, user, 'state_id', context=context),
393- 'name': lambda *args: '/'
394- }
395-
396- def fields_get(self, cr, uid, fields=None, context=None):
397- res = super(res_partner_bank, self).fields_get(cr, uid, fields, context)
398- bank_type_obj = self.pool.get('res.partner.bank.type')
399- type_ids = bank_type_obj.search(cr, uid, [])
400- types = bank_type_obj.browse(cr, uid, type_ids)
401- for type in types:
402- for field in type.field_ids:
403- if field.name in res:
404- res[field.name].setdefault('states', {})
405- res[field.name]['states'][type.code] = [
406- ('readonly', field.readonly),
407- ('required', field.required)]
408- return res
409-
410- def name_get(self, cr, uid, ids, context=None):
411- if not len(ids):
412- return []
413- bank_type_obj = self.pool.get('res.partner.bank.type')
414- res = []
415- for val in self.browse(cr, uid, ids, context=context):
416- result = val.acc_number
417- if val.state:
418- type_ids = bank_type_obj.search(cr, uid, [('code','=',val.state)])
419- if type_ids:
420- t = bank_type_obj.browse(cr, uid, type_ids[0], context=context)
421- try:
422- result = t.format_layout % val._data[val.id]
423- except:
424- result += ' [Formating Error]'
425- raise
426- res.append((val.id, result))
427- return res
428-
429- def onchange_company_id(self, cr, uid, ids, company_id, context={}):
430- result = {}
431- if company_id:
432- c = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
433- if c.partner_id:
434- r = self.onchange_partner_id(cr, uid, ids, c.partner_id.id, context=context)
435- r['value']['partner_id'] = c.partner_id.id
436- r['value']['footer'] = 1
437- result = r
438- return result
439-
440- def onchange_bank_id(self, cr, uid, ids, bank_id, context={}):
441- result = {}
442- if bank_id:
443- bank = self.pool.get('res.bank').browse(cr, uid, bank_id, context=context)
444- result['bank_name'] = bank.name
445- result['bank_bic'] = bank.bic
446- return {'value': result}
447-
448-
449- def onchange_partner_id(self, cr, uid, id, partner_id, context={}):
450- result = {}
451- if partner_id:
452- part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
453- result['owner_name'] = part.name
454- result['street'] = part.address and part.address[0].street or False
455- result['city'] = part.address and part.address[0].city or False
456- result['zip'] = part.address and part.address[0].zip or False
457- result['country_id'] = part.address and part.address[0].country_id and part.address[0].country_id.id or False
458- result['state_id'] = part.address and part.address[0].state_id and part.address[0].state_id.id or False
459- return {'value': result}
460-
461-res_partner_bank()
462-
463-
464
465=== added file 'openerp/addons/base/res/res_bank_view.xml'
466--- openerp/addons/base/res/res_bank_view.xml 1970-01-01 00:00:00 +0000
467+++ openerp/addons/base/res/res_bank_view.xml 2011-11-18 15:47:33 +0000
468@@ -0,0 +1,189 @@
469+<?xml version="1.0" encoding="utf-8"?>
470+<openerp>
471+ <data>
472+ <!-- Banks -->
473+
474+ <record id="view_res_bank_form" model="ir.ui.view">
475+ <field name="name">res.bank.form</field>
476+ <field name="model">res.bank</field>
477+ <field name="type">form</field>
478+ <field name="arch" type="xml">
479+ <form string="Bank">
480+ <group colspan="4" col="6">
481+ <field name="name" select="1"/>
482+ <field name="bic" select="1"/>
483+ <field name="active" select="2"/>
484+ </group>
485+ <newline/>
486+ <group colspan="2" col="4">
487+ <separator string="Address" colspan="4"/>
488+ <field name="street" select="2"/>
489+ <field name="street2" select="2"/>
490+ <field name="zip"/>
491+ <field name="city"/>
492+ <field name="country" select="2"/>
493+ <field name="state" select="2"/>
494+ </group>
495+ <group colspan="2" col="2">
496+ <separator string="Communication" colspan="2"/>
497+ <field name="phone"/>
498+ <field name="fax"/>
499+ <field name="email" widget="email"/>
500+ </group>
501+ </form>
502+ </field>
503+ </record>
504+
505+ <record id="view_res_bank_tree" model="ir.ui.view">
506+ <field name="name">res.bank.tree</field>
507+ <field name="model">res.bank</field>
508+ <field name="type">tree</field>
509+ <field name="arch" type="xml">
510+ <tree string="Banks">
511+ <field name="name"/>
512+ <field name="bic"/>
513+ <field name="country"/>
514+ </tree>
515+ </field>
516+ </record>
517+
518+ <record id="action_res_bank_form" model="ir.actions.act_window">
519+ <field name="name">Banks</field>
520+ <field name="res_model">res.bank</field>
521+ <field name="view_type">form</field>
522+ <field name="view_mode">tree,form</field>
523+ <field name="help">Manage bank records you want to be used in the system.</field>
524+ </record>
525+
526+ <menuitem action="action_res_bank_form" id="menu_action_res_bank_form"
527+ parent="base.menu_config_address_book" sequence="11"
528+ groups="base.group_no_one"/>
529+
530+
531+
532+ <record id="view_partner_bank_type_form" model="ir.ui.view">
533+ <field name="name">res.partner.bank.type.form</field>
534+ <field name="model">res.partner.bank.type</field>
535+ <field name="type">form</field>
536+ <field name="arch" type="xml">
537+ <form string="Bank Account Type">
538+ <field name="name"/>
539+ <field name="code"/>
540+ <field name="field_ids" colspan="4"/>
541+ <field name="format_layout" colspan="4"/>
542+ </form>
543+ </field>
544+ </record>
545+
546+ <record id="view_partner_bank_type_tree" model="ir.ui.view">
547+ <field name="name">res.partner.bank.type.tree</field>
548+ <field name="model">res.partner.bank.type</field>
549+ <field name="type">tree</field>
550+ <field name="arch" type="xml">
551+ <tree string="Bank Account Type">
552+ <field name="name" select="1"/>
553+ <field name="code" select="1"/>
554+ </tree>
555+ </field>
556+ </record>
557+
558+
559+ <record id="view_partner_bank_form" model="ir.ui.view">
560+ <field name="name">res.partner.bank.form</field>
561+ <field name="model">res.partner.bank</field>
562+ <field name="type">form</field>
563+ <field name="arch" type="xml">
564+ <form string="Bank account">
565+ <group colspan="4" col="6">
566+ <field name="state"/>
567+ <field name="company_id" on_change="onchange_company_id(company_id)" invisible="context.get('company_hide', True)" widget="selection"/>
568+ <field name="footer" attrs="{'invisible': [('company_id','=',False)]}"/>
569+ <newline/>
570+ <field name="acc_number"/>
571+ </group>
572+ <group name="owner" colspan="2" col="2">
573+ <separator colspan="4" string="Bank Account Owner"/>
574+ <field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
575+ <field name="owner_name"/>
576+ <field name="street"/>
577+ <field name="city"/>
578+ <field name="zip"/>
579+ <field name="state_id"/>
580+ <field name="country_id"/>
581+ </group>
582+ <group name="bank" colspan="2" col="2">
583+ <separator colspan="2" string="Information About the Bank"/>
584+ <field name="bank" on_change="onchange_bank_id(bank)" groups="base.group_extended"/>
585+ <field name="bank_name" attrs="{'required': [('company_id','&lt;&gt;',False)]}"/>
586+ <field name="bank_bic"/>
587+ </group>
588+
589+ </form>
590+ </field>
591+ </record>
592+
593+ <record id="view_partner_bank_search" model="ir.ui.view">
594+ <field name="name">res.partner.bank.search</field>
595+ <field name="model">res.partner.bank</field>
596+ <field name="type">search</field>
597+ <field name="arch" type="xml">
598+ <search string="Bank Accounts">
599+ <filter name="my_bank" icon="terp-check" string="My Banks" domain="[('company_id','&lt;&gt;',False)]" help="Bank accounts belonging to one of your companies"/>
600+ <separator orientation="vertical"/>
601+ <field name="acc_number"/>
602+ <field name="company_id" invisible="context.get('company_hide', True)"/>
603+ <field name="partner_id"/>
604+ <field name="bank_name"/>
605+ </search>
606+ </field>
607+ </record>
608+
609+
610+ <record id="view_partner_bank_tree" model="ir.ui.view">
611+ <field name="name">res.partner.bank.tree</field>
612+ <field name="model">res.partner.bank</field>
613+ <field name="type">tree</field>
614+ <field name="arch" type="xml">
615+ <tree string="Bank Accounts">
616+ <field name="sequence" invisible="1"/>
617+ <field name="acc_number"/>
618+ <field name="bank_name"/>
619+ <field name="company_id" invisible="context.get('company_hide', True)"/>
620+ <field name="footer" invisible="context.get('company_hide', True)"/>
621+ <field name="partner_id"/>
622+ </tree>
623+ </field>
624+ </record>
625+
626+ <record id="action_res_partner_bank_account_form" model="ir.actions.act_window">
627+ <field name="name">Bank Accounts</field>
628+ <field name="res_model">res.partner.bank</field>
629+ <field name="view_type">form</field>
630+ <field name="view_mode">tree,form</field>
631+ </record>
632+
633+ <menuitem action="action_res_partner_bank_account_form"
634+ id="menu_action_res_partner_bank_form"
635+ parent="base.menu_config_address_book"
636+ groups="base.group_no_one"
637+ sequence="9"/>
638+
639+
640+ <record id="action_res_partner_bank_type_form" model="ir.actions.act_window">
641+ <field name="name">Bank Account Types</field>
642+ <field name="res_model">res.partner.bank.type</field>
643+ <field name="view_type">form</field>
644+ <field name="view_mode">tree,form</field>
645+ </record>
646+
647+ <menuitem action="action_res_partner_bank_type_form"
648+ id="menu_action_res_partner_bank_typeform"
649+ parent="base.menu_config_address_book"
650+ groups="base.group_no_one"
651+ sequence="15"/>
652+
653+
654+
655+ </data>
656+</openerp>
657+
658
659=== removed file 'openerp/addons/base/res/res_bank_view.xml'
660--- openerp/addons/base/res/res_bank_view.xml 2011-08-28 00:13:14 +0000
661+++ openerp/addons/base/res/res_bank_view.xml 1970-01-01 00:00:00 +0000
662@@ -1,189 +0,0 @@
663-<?xml version="1.0" encoding="utf-8"?>
664-<openerp>
665- <data>
666- <!-- Banks -->
667-
668- <record id="view_res_bank_form" model="ir.ui.view">
669- <field name="name">res.bank.form</field>
670- <field name="model">res.bank</field>
671- <field name="type">form</field>
672- <field name="arch" type="xml">
673- <form string="Bank">
674- <group colspan="4" col="6">
675- <field name="name" select="1"/>
676- <field name="bic" select="1"/>
677- <field name="active" select="2"/>
678- </group>
679- <newline/>
680- <group colspan="2" col="4">
681- <separator string="Address" colspan="4"/>
682- <field name="street" select="2"/>
683- <field name="street2" select="2"/>
684- <field name="zip"/>
685- <field name="city"/>
686- <field name="country" select="2"/>
687- <field name="state" select="2"/>
688- </group>
689- <group colspan="2" col="2">
690- <separator string="Communication" colspan="2"/>
691- <field name="phone"/>
692- <field name="fax"/>
693- <field name="email" widget="email"/>
694- </group>
695- </form>
696- </field>
697- </record>
698-
699- <record id="view_res_bank_tree" model="ir.ui.view">
700- <field name="name">res.bank.tree</field>
701- <field name="model">res.bank</field>
702- <field name="type">tree</field>
703- <field name="arch" type="xml">
704- <tree string="Banks">
705- <field name="name"/>
706- <field name="bic"/>
707- <field name="country"/>
708- </tree>
709- </field>
710- </record>
711-
712- <record id="action_res_bank_form" model="ir.actions.act_window">
713- <field name="name">Banks</field>
714- <field name="res_model">res.bank</field>
715- <field name="view_type">form</field>
716- <field name="view_mode">tree,form</field>
717- <field name="help">Manage bank records you want to be used in the system.</field>
718- </record>
719-
720- <menuitem action="action_res_bank_form" id="menu_action_res_bank_form"
721- parent="base.menu_config_address_book" sequence="11"
722- groups="base.group_no_one"/>
723-
724-
725-
726- <record id="view_partner_bank_type_form" model="ir.ui.view">
727- <field name="name">res.partner.bank.type.form</field>
728- <field name="model">res.partner.bank.type</field>
729- <field name="type">form</field>
730- <field name="arch" type="xml">
731- <form string="Bank Account Type">
732- <field name="name"/>
733- <field name="code"/>
734- <field name="field_ids" colspan="4"/>
735- <field name="format_layout" colspan="4"/>
736- </form>
737- </field>
738- </record>
739-
740- <record id="view_partner_bank_type_tree" model="ir.ui.view">
741- <field name="name">res.partner.bank.type.tree</field>
742- <field name="model">res.partner.bank.type</field>
743- <field name="type">tree</field>
744- <field name="arch" type="xml">
745- <tree string="Bank Account Type">
746- <field name="name" select="1"/>
747- <field name="code" select="1"/>
748- </tree>
749- </field>
750- </record>
751-
752-
753- <record id="view_partner_bank_form" model="ir.ui.view">
754- <field name="name">res.partner.bank.form</field>
755- <field name="model">res.partner.bank</field>
756- <field name="type">form</field>
757- <field name="arch" type="xml">
758- <form string="Bank account">
759- <group colspan="4" col="6">
760- <field name="state"/>
761- <field name="company_id" on_change="onchange_company_id(company_id)" invisible="context.get('company_hide', True)" widget="selection"/>
762- <field name="footer" attrs="{'invisible': [('company_id','=',False)]}"/>
763- <newline/>
764- <field name="acc_number"/>
765- </group>
766- <group name="owner" colspan="2" col="2">
767- <separator colspan="4" string="Bank Account Owner"/>
768- <field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
769- <field name="owner_name"/>
770- <field name="street"/>
771- <field name="city"/>
772- <field name="zip"/>
773- <field name="state_id"/>
774- <field name="country_id"/>
775- </group>
776- <group name="bank" colspan="2" col="2">
777- <separator colspan="2" string="Information About the Bank"/>
778- <field name="bank" on_change="onchange_bank_id(bank)" groups="base.group_extended"/>
779- <field name="bank_name" attrs="{'required': [('company_id','&lt;&gt;',False)]}"/>
780- <field name="bank_bic"/>
781- </group>
782-
783- </form>
784- </field>
785- </record>
786-
787- <record id="view_partner_bank_search" model="ir.ui.view">
788- <field name="name">res.partner.bank.search</field>
789- <field name="model">res.partner.bank</field>
790- <field name="type">search</field>
791- <field name="arch" type="xml">
792- <search string="Bank Accounts">
793- <filter name="my_bank" icon="terp-check" string="My Banks" domain="[('company_id','&lt;&gt;',False)]" help="Bank accounts belonging to one of your companies"/>
794- <separator orientation="vertical"/>
795- <field name="acc_number"/>
796- <field name="company_id" invisible="context.get('company_hide', True)"/>
797- <field name="partner_id"/>
798- <field name="bank_name"/>
799- </search>
800- </field>
801- </record>
802-
803-
804- <record id="view_partner_bank_tree" model="ir.ui.view">
805- <field name="name">res.partner.bank.tree</field>
806- <field name="model">res.partner.bank</field>
807- <field name="type">tree</field>
808- <field name="arch" type="xml">
809- <tree string="Bank Accounts">
810- <field name="sequence" invisible="1"/>
811- <field name="acc_number"/>
812- <field name="bank_name"/>
813- <field name="company_id" invisible="context.get('company_hide', True)"/>
814- <field name="footer" invisible="context.get('company_hide', True)"/>
815- <field name="partner_id"/>
816- </tree>
817- </field>
818- </record>
819-
820- <record id="action_res_partner_bank_account_form" model="ir.actions.act_window">
821- <field name="name">Bank Accounts</field>
822- <field name="res_model">res.partner.bank</field>
823- <field name="view_type">form</field>
824- <field name="view_mode">tree,form</field>
825- </record>
826-
827- <menuitem action="action_res_partner_bank_account_form"
828- id="menu_action_res_partner_bank_form"
829- parent="base.menu_config_address_book"
830- groups="base.group_no_one"
831- sequence="9"/>
832-
833-
834- <record id="action_res_partner_bank_type_form" model="ir.actions.act_window">
835- <field name="name">Bank Account Types</field>
836- <field name="res_model">res.partner.bank.type</field>
837- <field name="view_type">form</field>
838- <field name="view_mode">tree,form</field>
839- </record>
840-
841- <menuitem action="action_res_partner_bank_type_form"
842- id="menu_action_res_partner_bank_typeform"
843- parent="base.menu_config_address_book"
844- groups="base.group_no_one"
845- sequence="15"/>
846-
847-
848-
849- </data>
850-</openerp>
851-