Merge lp:~numerigraphe/openobject-server/trunk-bank-bzr-history into lp:openobject-server
- trunk-bank-bzr-history
- Merge into trunk
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 |
Related bugs: |
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.
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 ;-)
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.
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-
$ 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-
# 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
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','<>',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','<>',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','<>',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','<>',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 | - |
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.