Rucha (Open ERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-company-paper-format-rpa into 
lp:openobject-server.

Requested reviews:
  qdp (OpenERP) (qdp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-company-paper-format-rpa/+merge/86521

Added a new field paper format in company having two values A4 and US letter, 
It will format the reports based on paper format value selected on company,
But you must not specify pageSize in <template> tag of rml, if its provided it 
will take that size instead of company's paper format,
(Also check related 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-remove-rml-pageSize-rpa/+merge/86520)

Thanks
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-company-paper-format-rpa/+merge/86521
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-company-paper-format-rpa.
=== modified file 'openerp/addons/base/base_update.xml'
--- openerp/addons/base/base_update.xml	2011-12-06 09:10:11 +0000
+++ openerp/addons/base/base_update.xml	2011-12-21 09:56:52 +0000
@@ -257,6 +257,9 @@
                             </group>
                         </page>
                         <page string="Header/Footer" groups="base.group_extended">
+                            <group colspan="2" col="4">
+                               <field name="paper_format" on_change="onchange_paper_format(paper_format)"/>
+                            </group>
                             <field colspan="4" name="rml_header" nolabel="1"/>
                         </page>
                         <page string="Internal Header/Footer" groups="base.group_extended">

=== modified file 'openerp/addons/base/res/res_company.py'
--- openerp/addons/base/res/res_company.py	2011-11-07 15:19:49 +0000
+++ openerp/addons/base/res/res_company.py	2011-12-21 09:56:52 +0000
@@ -144,6 +144,7 @@
         'website': fields.related('partner_id', 'website', string="Website", type="char", size=64), 
         'vat': fields.related('partner_id', 'vat', string="Tax ID", type="char", size=32), 
         'company_registry': fields.char('Company Registry', size=64),
+        'paper_format': fields.selection([('a4', 'A4'), ('us_letter', 'US Letter')], "Paper Format") 
     }
     _sql_constraints = [
         ('name_uniq', 'unique (name)', 'The company name must be unique !')
@@ -277,29 +278,31 @@
             finally:
                 header_file.close()
         except:
-            return """
+            return self._header_a4
+
+    _header_main = """
     <header>
     <pageTemplate>
-        <frame id="first" x1="1.3cm" y1="2.5cm" height="23.0cm" width="19cm"/>
+        <frame id="first" x1="1.3cm" y1="2.5cm" height="%s" width="19.0cm"/>
         <pageGraphics>
             <!-- You Logo - Change X,Y,Width and Height -->
-            <image x="1.3cm" y="27.6cm" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image>
+            <image x="1.3cm" y="%s" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image>
             <setFont name="DejaVu Sans" size="8"/>
             <fill color="black"/>
             <stroke color="black"/>
-            <lines>1.3cm 27.7cm 20cm 27.7cm</lines>
-
-            <drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]]</drawRightString>
-
-
-            <drawString x="1.3cm" y="27.2cm">[[ company.partner_id.name ]]</drawString>
-            <drawString x="1.3cm" y="26.8cm">[[ company.partner_id.address and company.partner_id.address[0].street or  '' ]]</drawString>
-            <drawString x="1.3cm" y="26.4cm">[[ company.partner_id.address and company.partner_id.address[0].zip or '' ]] [[ company.partner_id.address and company.partner_id.address[0].city or '' ]] - [[ company.partner_id.address and company.partner_id.address[0].country_id and company.partner_id.address[0].country_id.name  or '']]</drawString>
-            <drawString x="1.3cm" y="26.0cm">Phone:</drawString>
-            <drawRightString x="7cm" y="26.0cm">[[ company.partner_id.address and company.partner_id.address[0].phone or '' ]]</drawRightString>
-            <drawString x="1.3cm" y="25.6cm">Mail:</drawString>
-            <drawRightString x="7cm" y="25.6cm">[[ company.partner_id.address and company.partner_id.address[0].email or '' ]]</drawRightString>
-            <lines>1.3cm 25.5cm 7cm 25.5cm</lines>
+            <lines>1.3cm %s 20cm %s</lines>
+
+            <drawRightString x="20cm" y="%s">[[ company.rml_header1 ]]</drawRightString>
+
+
+            <drawString x="1.3cm" y="%s">[[ company.partner_id.name ]]</drawString>
+            <drawString x="1.3cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].street or  '' ]]</drawString>
+            <drawString x="1.3cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].zip or '' ]] [[ company.partner_id.address and company.partner_id.address[0].city or '' ]] - [[ company.partner_id.address and company.partner_id.address[0].country_id and company.partner_id.address[0].country_id.name  or '']]</drawString>
+            <drawString x="1.3cm" y="%s">Phone:</drawString>
+            <drawRightString x="7cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].phone or '' ]]</drawRightString>
+            <drawString x="1.3cm" y="%s">Mail:</drawString>
+            <drawRightString x="7cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].email or '' ]]</drawRightString>
+            <lines>1.3cm %s 7cm %s</lines>
 
             <!--page bottom-->
 
@@ -311,8 +314,20 @@
         </pageGraphics>
     </pageTemplate>
 </header>"""
+
+    _header_a4 = _header_main % ('23.0cm', '27.6cm', '27.7cm', '27.7cm', '27.8cm', '27.2cm', '26.8cm', '26.4cm', '26.0cm', '26.0cm', '25.6cm', '25.6cm', '25.5cm', '25.5cm')
+
+    def onchange_paper_format(self, cr, uid, ids, paper_format, context=None):
+        header = self._header_a4
+        if paper_format == 'us_letter':
+            header = self._header_main % ('21.3cm', '25.9cm', '26.0cm', '26.0cm',
+                    '26.1cm', '25.5cm', '25.1cm', '24.7cm', '24.3cm', '24.3cm',
+                    '23.9cm', '23.9cm', '23.8cm', '23.8cm')
+        return {'value': {'rml_header': header}}
+
     _defaults = {
         'currency_id': _get_euro,
+        'paper_format': 'a4',
         'rml_header':_get_header,
         'rml_header2': _header2,
         'rml_header3': _header3,

=== modified file 'openerp/report/render/rml2pdf/trml2pdf.py'
--- openerp/report/render/rml2pdf/trml2pdf.py	2011-11-22 08:58:48 +0000
+++ openerp/report/render/rml2pdf/trml2pdf.py	2011-12-21 09:56:52 +0000
@@ -37,6 +37,8 @@
 from reportlab.lib.units import inch,cm,mm
 from openerp.tools.misc import file_open
 from reportlab.pdfbase import pdfmetrics
+from reportlab.lib.pagesizes import A4, letter
+
 
 try:
     from cStringIO import StringIO
@@ -910,9 +912,13 @@
         self.path = path
         self.title = title
 
-        if not node.get('pageSize'):
-            pageSize = (utils.unit_get('21cm'), utils.unit_get('29.7cm'))
-        else:
+        pagesize_map = {'a4': A4,
+                    'us_letter': letter
+                    }
+        pageSize = A4
+        if self.localcontext.get('company'):
+            pageSize = pagesize_map.get(self.localcontext.get('company').paper_format, A4)
+        if node.get('pageSize'):
             ps = map(lambda x:x.strip(), node.get('pageSize').replace(')', '').replace('(', '').split(','))
             pageSize = ( utils.unit_get(ps[0]),utils.unit_get(ps[1]) )
 

_______________________________________________
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