qdp (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-per_country_address_format into 
lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-per_country_address_format/+merge/84113

this branch allows to define country specific formats for addresses in order to 
have them displayed using that format in reports.

As an example, to display the shipping address in the SO we would just need to 
put
[[ display_address(o.partner_shipping_id) ]] 


-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-per_country_address_format/+merge/84113
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-per_country_address_format.
=== modified file 'openerp/addons/base/base_data.xml'
--- openerp/addons/base/base_data.xml	2011-11-30 22:03:47 +0000
+++ openerp/addons/base/base_data.xml	2011-12-01 15:07:32 +0000
@@ -85,6 +85,7 @@
         <record id="au" model="res.country">
             <field name="name">Australia</field>
             <field name="code">au</field>
+            <field name="address_format" eval="'%(street)s\n%(street2)s %(state_code)s %(zip)s\n%(country_name)s'" />
         </record>
         <record id="aw" model="res.country">
             <field name="name">Aruba</field>
@@ -109,6 +110,7 @@
         <record id="be" model="res.country">
             <field name="name">Belgium</field>
             <field name="code">be</field>
+            <field name="address_format" eval="'%(street)s\n%(zip)s, %(city)s\n%(country_name)s'" />            
         </record>
         <record id="bf" model="res.country">
             <field name="name">Burkina Faso</field>
@@ -145,6 +147,7 @@
         <record id="br" model="res.country">
             <field name="name">Brazil</field>
             <field name="code">br</field>
+            <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s%(country_name)s'" />            
         </record>
         <record id="bs" model="res.country">
             <field name="name">Bahamas</field>
@@ -173,6 +176,7 @@
         <record id="ca" model="res.country">
             <field name="name">Canada</field>
             <field name="code">ca</field>
+            <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" />
         </record>
         <record id="cc" model="res.country">
             <field name="name">Cocos (Keeling) Islands</field>
@@ -254,6 +258,7 @@
         <record id="de" model="res.country">
             <field name="name">Germany</field>
             <field name="code">de</field>
+            <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />            
         </record>
         <record id="dj" model="res.country">
             <field name="name">Djibouti</field>
@@ -298,6 +303,7 @@
         <record id="es" model="res.country">
             <field name="name">Spain</field>
             <field name="code">es</field>
+            <field name="address_format" eval="'%(street)s\n%(zip)s %(city)s,%(state_name)s\n%(country_name)s'" />            
         </record>
         <record id="et" model="res.country">
             <field name="name">Ethiopia</field>
@@ -326,6 +332,7 @@
         <record id="fr" model="res.country">
             <field name="name">France</field>
             <field name="code">fr</field>
+            <field name="address_format" eval="'%(street)s\n%(zip)s %(city)s\n%(country_name)s'" />            
         </record>
         <record id="ga" model="res.country">
             <field name="name">Gabon</field>
@@ -434,6 +441,7 @@
         <record id="in" model="res.country">
             <field name="name">India</field>
             <field name="code">in</field>
+            <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(zip)s\n%(state_name)s%(country_name)s'" />            
         </record>
         <record id="io" model="res.country">
             <field name="name">British Indian Ocean Territory</field>
@@ -917,6 +925,7 @@
         </record>
         <record id="uk" model="res.country">
             <field name="name">United Kingdom</field>
+            <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(country_name)s\n%(zip)s'" />            
             <field name="code">gb</field>
         </record>
         <record id="um" model="res.country">
@@ -926,6 +935,7 @@
         <record id="us" model="res.country">
             <field name="name">United States</field>
             <field name="code">us</field>
+            <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" />            
         </record>
         <record id="uy" model="res.country">
             <field name="name">Uruguay</field>

=== modified file 'openerp/addons/base/res/res_country.py'
--- openerp/addons/base/res/res_country.py	2011-08-28 00:13:14 +0000
+++ openerp/addons/base/res/res_country.py	2011-12-01 15:07:32 +0000
@@ -31,6 +31,8 @@
         'code': fields.char('Country Code', size=2,
             help='The ISO country code in two chars.\n'
             'You can use this field for quick search.', required=True),
+        'address_format': fields.text('Address Format', help="You can state here the usual format to use for the \
+            addresses belonging to this country."),
     }
     _sql_constraints = [
         ('name_uniq', 'unique (name)',
@@ -38,6 +40,9 @@
         ('code_uniq', 'unique (code)',
             'The code of the country must be unique !')
     ]
+    _defaults = {
+        'address_format': "%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s",
+    }
 
     def name_search(self, cr, user, name='', args=None, operator='ilike',
             context=None, limit=100):

=== modified file 'openerp/addons/base/res/res_country_view.xml'
--- openerp/addons/base/res/res_country_view.xml	2011-08-28 00:13:14 +0000
+++ openerp/addons/base/res/res_country_view.xml	2011-12-01 15:07:32 +0000
@@ -26,6 +26,7 @@
                 <form string="Country">
                     <field name="name" select="1"/>
                     <field name="code" select="1"/>
+                     <field name="address_format" colspan="4" groups="base.group_extended"/>
                 </form>
             </field>
         </record>

=== modified file 'openerp/addons/base/res/res_partner.py'
--- openerp/addons/base/res/res_partner.py	2011-11-21 13:33:46 +0000
+++ openerp/addons/base/res/res_partner.py	2011-12-01 15:07:32 +0000
@@ -356,6 +356,32 @@
     def get_city(self, cr, uid, id):
         return self.browse(cr, uid, id).city
 
+    def display_address(self, cr, uid, address):
+        '''
+        The purpose of this function is to build and return an address formatted accordingly to the
+        standards of the country where it belongs.
+
+        :param address: browse record of the res.partner.address to format
+        :returns: the address formatted in a display that fit its country habits (or the default ones
+            if not country is specified)
+        :rtype: string
+        '''
+        # get the address format
+        address_format = address.country_id and address.country_id.address_format or \
+                                         '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' 
+        # get the information that will be injected into the display format
+        args = {
+            'state_code': address.state_id and address.state_id.code or '',
+            'state_name': address.state_id and address.state_id.name or '',
+            'country_code': address.country_id and address.country_id.code or '',
+            'country_name': address.country_id and address.country_id.name or '',
+        }
+        address_field = ['title', 'street', 'street2', 'zip', 'city']
+        for field in address_field :
+            args[field] = getattr(address, field) or ''
+
+        return address_format % args
+
 res_partner_address()
 
 class res_partner_category(osv.osv):

=== modified file 'openerp/report/report_sxw.py'
--- openerp/report/report_sxw.py	2011-11-28 12:45:35 +0000
+++ openerp/report/report_sxw.py	2011-12-01 15:07:32 +0000
@@ -170,6 +170,7 @@
             'setHtmlImage' : self.set_html_image,
             'strip_name' : self._strip_name,
             'time' : time,
+            'display_address': self.display_address,
             # more context members are setup in setCompany() below:
             #  - company_id
             #  - logo
@@ -313,6 +314,9 @@
                 res='%s %s'%(currency_obj.symbol, res)
         return res
 
+    def display_address(self, address_browse_record):
+        return self.pool.get('res.partner.address').display_address(self.cr, self.uid, address_browse_record)
+
     def repeatIn(self, lst, name,nodes_parent=False):
         ret_lst = []
         for id in lst:

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to