[IMP] edi: bugfixes/cleanup after more review
[odoo/odoo.git] / addons / edi / models / res_company.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #
4 #    OpenERP, Open Source Management Solution
5 #    Copyright (C) 2004-2011 Tiny SPRL (<http://tiny.be>).
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 osv import fields,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         res_partner_address = self.pool.get('res.partner.address')
41         addresses = res_partner.address_get(cr, uid, [company.partner_id.id], ['default', 'contact', 'invoice'])
42         addr_id = addresses['invoice'] or addresses['contact'] or addresses['default']
43         if addr_id:
44             address = res_partner_address.browse(cr, uid, addr_id, context=context)
45             return res_partner_address.edi_export(cr, uid, [address], edi_struct=edi_address_struct, context=context)[0]
46         return {}