[FIX]Web: Refixed the issue of context propagation, we must not remove search_default...
[odoo/odoo.git] / addons / edi / models / res_company.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #
4 #    OpenERP, Open Source Business Applications
5 #    Copyright (c) 2011-2012 OpenERP S.A. <http://openerp.com>
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU Affero General Public License as
9 #    published by the Free Software Foundation, either version 3 of the
10 #    License, or (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU Affero General Public License for more details.
16 #
17 #    You should have received a copy of the GNU Affero General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 #
20 ##############################################################################
21
22 from openerp.osv import osv
23
24 class res_company(osv.osv):
25     """Helper subclass for res.company providing util methods for working with
26        companies in the context of EDI import/export. The res.company object
27        itself is not EDI-exportable"""
28     _inherit = "res.company"
29
30     def edi_export_address(self, cr, uid, company, edi_address_struct=None, context=None):
31         """Returns a dict representation of the address of the company record, suitable for
32            inclusion in an EDI document, and matching the given edi_address_struct if provided.
33            The first found address is returned, in order of preference: invoice, contact, default.
34
35            :param browse_record company: company to export
36            :return: dict containing the address representation for the company record, or
37                     an empty dict if no address can be found
38         """
39         res_partner = self.pool.get('res.partner')
40         addresses = res_partner.address_get(cr, uid, [company.partner_id.id], ['default', 'contact', 'invoice'])
41         addr_id = addresses['invoice'] or addresses['contact'] or addresses['default']
42         result = {}
43         if addr_id:
44             address = res_partner.browse(cr, uid, addr_id, context=context)
45             result = res_partner.edi_export(cr, uid, [address], edi_struct=edi_address_struct, context=context)[0]
46         if company.logo:
47             result['logo'] = company.logo # already base64-encoded
48         if company.paypal_account:
49             result['paypal_account'] = company.paypal_account
50         # bank info: include only bank account supposed to be displayed in document footers
51         res_partner_bank = self.pool.get('res.partner.bank')
52         bank_ids = res_partner_bank.search(cr, uid, [('company_id','=',company.id),('footer','=',True)], context=context)
53         if bank_ids:
54             result['bank_ids'] = res_partner.edi_m2m(cr, uid,
55                                                              res_partner_bank.browse(cr, uid, bank_ids, context=context),
56                                                              context=context)
57         return result
58
59 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: