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