From 1d3f80e1f0cbd885d022460e217c6cc4bd4c75b6 Mon Sep 17 00:00:00 2001
From: Fabien Morin <fabien@nexedi.com>
Date: Tue, 10 Mar 2009 09:28:09 +0000
Subject: [PATCH] 2009-03-10 fabien * fix some minor problems * add a default
 action on Pay Sheet Transaction portal type to be able to print a Payslip *
 add AsODT and AsODTStyles files * increment version number because of the new
 style of the payslip

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@25932 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../pay_sheet_print.xml                       |  77 ++
 ...tion_getMovementTotalPriceFromCategory.xml |   4 +-
 .../PaySheetTransaction_getODTDataDict.xml    | 495 +++++++++++++
 ...etYearToDateBaseContributionTotalPrice.xml |  13 +-
 .../PaySheetTransaction_viewAsODT.xml         | 690 ++++++++++++++++++
 .../PaySheetTransaction_viewAsODTStyles.xml   | 409 +++++++++++
 .../PaySheet_getODTStyleSheet.xml             | 268 +++++++
 .../erp5_payroll/PaySheet_printAsODT.xml      | 132 ++++
 .../PaySheet_viewODTPrintDialog.xml           | 133 ++++
 .../your_format.xml                           | 140 ++++
 .../your_international_form.xml               | 171 +++++
 .../your_target_language.xml                  |  93 +++
 .../erp5_payroll/payroll_odt_macro.xml        | 131 ++++
 bt5/erp5_payroll/bt/change_log                |   6 +
 bt5/erp5_payroll/bt/revision                  |   2 +-
 bt5/erp5_payroll/bt/template_action_path_list |   1 +
 bt5/erp5_payroll/bt/version                   |   2 +-
 17 files changed, 2760 insertions(+), 7 deletions(-)
 create mode 100644 bt5/erp5_payroll/ActionTemplateItem/portal_types/Pay%20Sheet%20Transaction/pay_sheet_print.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getODTDataDict.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODT.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODTStyles.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_printAsODT.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_format.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_international_form.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_target_language.xml
 create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/payroll_odt_macro.xml

diff --git a/bt5/erp5_payroll/ActionTemplateItem/portal_types/Pay%20Sheet%20Transaction/pay_sheet_print.xml b/bt5/erp5_payroll/ActionTemplateItem/portal_types/Pay%20Sheet%20Transaction/pay_sheet_print.xml
new file mode 100644
index 0000000000..061eb2da42
--- /dev/null
+++ b/bt5/erp5_payroll/ActionTemplateItem/portal_types/Pay%20Sheet%20Transaction/pay_sheet_print.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_print</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>pay_sheet_print</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>3.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Print Pay Sheet</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="Expression" module="Products.CMFCore.Expression"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/PaySheet_viewODTPrintDialog</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getMovementTotalPriceFromCategory.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getMovementTotalPriceFromCategory.xml
index a51045163a..692a394512 100644
--- a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getMovementTotalPriceFromCategory.xml
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getMovementTotalPriceFromCategory.xml
@@ -62,7 +62,8 @@
 total_price = 0\n
 movement_list = context.getMovementList(portal_type=(\'Pay Sheet Line\', \'Pay Sheet Cell\'))\n
 for movement in movement_list:\n
-  if movement.isMemberOf(tax_category) and movement.isMemberOf(base_contribution):\n
+  if base_contribution is not None and tax_category is not None and\\\n
+      movement.isMemberOf(tax_category) and movement.isMemberOf(base_contribution):\n
     total_price += movement.getTotalPrice()\n
 \n
 # Get Precision\n
@@ -114,6 +115,7 @@ return amount\n
                             <string>movement_list</string>
                             <string>_getiter_</string>
                             <string>movement</string>
+                            <string>None</string>
                             <string>_inplacevar_</string>
                             <string>precision</string>
                             <string>round</string>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getODTDataDict.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getODTDataDict.xml
new file mode 100644
index 0000000000..87d14edc85
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getODTDataDict.xml
@@ -0,0 +1,495 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>translateString = context.Base_translateString\n
+request = context.REQUEST\n
+\n
+# display only title line instead of description\n
+use_line_title =  request.get(\'use_line_title\', 0)\n
+\n
+model = context.getSpecialiseValue()\n
+def getPropertyFromModel(model, property_name):\n
+  """Get a property from the paysheet model, or from a specialised model.\n
+  """\n
+  v = model.getProperty(property_name)\n
+  if v:\n
+    return v\n
+  for specialised_model in model.getSpecialiseValueList():\n
+    v = getPropertyFromModel(specialised_model, property_name)\n
+    if v:\n
+      return v\n
+\n
+def getFieldAsString(field):\n
+  return \', \'.join(getFieldAsLineList(field))\n
+\n
+def getFieldAsLineList(field):\n
+  """Returns the text as a list of lines."""\n
+  field = field or \'\'\n
+  text = field.replace(\'\\r\', \'\')\n
+  text_list = text.split(\'\\n\')\n
+  return [x for x in text_list if x]\n
+\n
+def getProductAndLineDesc(prod_desc, line_desc):\n
+  line_list = []\n
+  if line_desc:\n
+    line_list.extend(getFieldAsLineList(line_desc))\n
+  elif prod_desc:\n
+    line_list.extend(getFieldAsLineList(prod_desc))\n
+  return line_list\n
+\n
+def getOneLineAddress(text, region):\n
+  text_list = [getFieldAsString(text)]\n
+  if region:\n
+    text_list.append(region)\n
+  return \', \'.join(text_list)\n
+\n
+def getPhoneAndFax(phone, fax):\n
+  s = \'\'\n
+  if phone:\n
+    s += \'%s: %s\' % (translateString(\'Tel\'), phone)\n
+  if fax:\n
+    if s: s += \', \'\n
+    s += \'%s: %s\' % (translateString(\'Fax\'), fax)\n
+  return s\n
+\n
+def getEmail(email):\n
+  s = \'\'\n
+  if email:\n
+    s += \'%s: %s\' % (translateString(\'Email\'), email)\n
+  return s\n
+\n
+def getVatId(vat_id):\n
+  s = \'\'\n
+  if vat_id:\n
+    s += \'%s: %s\' % (translateString(\'VAT ID\'), vat_id)\n
+  return s\n
+\n
+def getActivityCodeId(activity_code_id):\n
+  s = \'\'\n
+  if activity_code_id:\n
+    s += \'%s: %s\' % (translateString(\'Activity Code\'), activity_code_id)\n
+  return s\n
+\n
+def getCorporateRegistrationCodeId(corporate_registration_code_id):\n
+  s = \'\'\n
+  if corporate_registration_code_id:\n
+    s += \'%s: %s\' % (translateString(\'Corporate Registration Code\'), corporate_registration_code_id)\n
+  return s\n
+\n
+def getSocialCodeId(social_code_id):\n
+  s = \'\'\n
+  if social_code_id:\n
+    s += \'%s: %s\' % (translateString(\'Social Code\'), social_code_id)\n
+  return s\n
+\n
+def getCareerId(career_title):\n
+  s = \'\'\n
+  if career_title:\n
+    s += \'%s: %s\' % (translateString(\'Career Title\'), career_title)\n
+  return s\n
+\n
+preferred_date_order = context.getPortalObject().portal_preferences\\\n
+                                          .getPreferredDateOrder() or \'ymd\'\n
+separator = \'/\'\n
+def getOrderedDate(date):\n
+  if date is None:\n
+    return \'\'\n
+  pattern = separator.join([\'%%%s\' % s for s in list(preferred_date_order)])\n
+  pattern = pattern.replace(\'y\', \'Y\')\n
+  return date.strftime(pattern)\n
+\n
+def getPaymentConditionText(order):\n
+  if order.getPaymentConditionPaymentEndOfMonth():\n
+    return translateString("End of Month")\n
+  days = order.getPaymentConditionPaymentTerm()\n
+  if days:\n
+    return \'%s %s\' % (days, translateString(\'Days\'))\n
+  return \'\'\n
+\n
+\n
+line_list = []\n
+total_price = 0.0\n
+total_vat = 0.0\n
+\n
+def unicodeDict(d):\n
+  for k, v in d.items():\n
+    if isinstance(v, str):\n
+      d.update({k:unicode(v, \'utf8\')})\n
+  return d\n
+\n
+line_list = context.PaySheetTransaction_getLineListAsDict()\n
+inch_cm_ratio = 2.54 / 100.0\n
+\n
+class EmptyOrganisation:\n
+  """Used for default when organisation is not found.\n
+  """\n
+  def getTitle(self):\n
+    return \'\'\n
+  def getDefaultAddressText(self):\n
+    return \'\'\n
+  def getDefaultAddressRegionTitle(self):\n
+    return \'\'\n
+  def getDefaultImagePath(self):\n
+    return \'\'\n
+  def getDefaultImageHeight(self):\n
+    return 0\n
+  def getDefaultImageWidth(self):\n
+    return 0\n
+  def getProperty(self, prop, d=\'\'):\n
+    return d\n
+\n
+source = context.getSourceValue()\n
+if source is None:\n
+  source = EmptyOrganisation()\n
+\n
+destination = context.getDestinationValue()\n
+if destination is None:\n
+  destination = EmptyOrganisation()\n
+\n
+source_section = context.getSourceSectionValue()\n
+if source_section is None:\n
+  source_section = EmptyOrganisation()\n
+\n
+destination_section = context.getDestinationSectionValue()\n
+if destination_section is None:\n
+  destination_section = EmptyOrganisation()\n
+\n
+source_administration = context.getSourceAdministrationValue(\n
+                              portal_type=\'Organisation\')\n
+if source_administration is None:\n
+  source_administration = context.getSourceSectionValue()\n
+if source_administration is None:\n
+  source_administration = EmptyOrganisation()\n
+\n
+destination_administration = context.getDestinationAdministrationValue(\n
+                              portal_type=\'Organisation\')\n
+if destination_administration is None:\n
+  destination_administration = context.getDestinationSectionValue()\n
+if destination_administration is None:\n
+  destination_administration = EmptyOrganisation()\n
+\n
+\n
+data_dict = {\n
+  \'source_section_title\': source_section.getProperty(\'corporate_name\') or\\\n
+                            source_section.getTitle(),\n
+  \'source_section_image_path\': context.getSourceSectionValue() is not None\\\n
+          and context.getSourceSectionValue().getDefaultImagePath() or \'\',\n
+  \'source_section_image_width\': context.getSourceSectionValue() is not None\\\n
+          and context.getSourceSectionValue().getDefaultImageWidth()  is not None\\\n
+          and context.getSourceSectionValue().getDefaultImageWidth() \\\n
+              * inch_cm_ratio or \'\',\n
+  \'source_section_image_height\': context.getSourceSectionValue() is not None\\\n
+          and context.getSourceSectionValue().getDefaultImageHeight()  is not None\\\n
+          and context.getSourceSectionValue().getDefaultImageHeight() \\\n
+              * inch_cm_ratio or \'\',\n
+  \'source_section_address\': context.getSourceSection() and\n
+              context.getSourceSectionValue().getDefaultAddressText() or \'\',\n
+  \'source_section_telfax\': getPhoneAndFax(context.getSourceSection() and \\\n
+                        context.getSourceSectionValue().getTelephoneText() or \'\',\n
+          context.getSourceSection() and \\\n
+              context.getSourceSectionValue().getFaxText() or \'\'),\n
+  \'source_section_email\': getEmail(context.getSourceSection() and\n
+          context.getSourceSectionValue().getEmailText() or \'\'),\n
+  \'source_section_vatid\': getVatId(context.getSourceSection() and\\\n
+                           getattr(context.getSourceSectionValue(), \'getVatCode\', None)\\\n
+                           is not None and\\\n
+                           context.getSourceSectionValue().getVatCode() or \'\'),\n
+  \'source_section_career_title\': getCareerId(context.getSourceSection() and\n
+          context.getSourceSectionValue().getCareerTitle() or \'\'),\n
+\n
+  \'source_administration_title\': \\\n
+      source_administration.getProperty(\'corporate_name\') \\\n
+      or source_administration.getTitle(),\n
+  \'source_administration_address\': getOneLineAddress(\n
+                                      source_administration.getDefaultAddressText(),\n
+                                      source_administration.getDefaultAddressRegionTitle()),\n
+  \'source_administration_telfax\':\n
+          getPhoneAndFax(source_administration.getProperty(\'telephone_text\', \'\'),\n
+                         source_administration.getProperty(\'fax_text\', \'\')),\n
+  \'source_administration_email\':\n
+          getEmail(source_administration.getProperty(\'email_text\', \'\')),\n
+  \'source_administration_vatid\':\n
+          getVatId(source_administration.getProperty(\'vat_code\', \'\')),\n
+\n
+  \'source_title\': source.getProperty(\'corporate_name\') or source.getTitle(),\n
+  \'source_address\': getOneLineAddress(\n
+          context.getSource() and\n
+              context.getSourceValue().getDefaultAddressText() or \'\',\n
+          context.getSource() and \n
+              context.getSourceValue().getDefaultAddressRegionTitle() or \'\'),\n
+  \'source_telfax\': getPhoneAndFax(context.getSource() and \\\n
+                        context.getSourceValue().getTelephoneText() or \'\',\n
+          context.getSource() and \\\n
+              context.getSourceValue().getFaxText() or \'\'),\n
+  \'source_email\': getEmail(context.getSource() and\n
+          context.getSourceValue().getEmailText() or \'\'),\n
+  \'source_vatid\': getVatId(context.getSource() and\n
+      context.getSourceValue().getProperty(\'vat_code\', \'\') or \'\'),\n
+\n
+  \'source_decision_title\': context.getSourceDecisionTitle() or \'\',\n
+  \'source_decision_image_path\': context.getSourceDecisionValue(portal_type=\'Organisation\') is not None\\\n
+          and context.getSourceDecisionValue(portal_type=\'Organisation\').getDefaultImagePath() or \'\',\n
+  \'source_decision_image_width\': context.getSourceDecisionValue(portal_type=\'Organisation\') is not None\\\n
+          and context.getSourceDecisionValue(portal_type=\'Organisation\').getDefaultImageWidth() is not None\\\n
+          and context.getSourceDecisionValue(portal_type=\'Organisation\').getDefaultImageWidth() \\\n
+              * inch_cm_ratio or \'\',\n
+  \'source_decision_image_height\': context.getSourceDecisionValue(portal_type=\'Organisation\') is not None\\\n
+          and context.getSourceDecisionValue(portal_type=\'Organisation\').getDefaultImageHeight() is not None\\\n
+          and context.getSourceDecisionValue(portal_type=\'Organisation\').getDefaultImageHeight() \\\n
+              * inch_cm_ratio or \'\',\n
+  \'source_decision_address\':getOneLineAddress(\n
+          context.getSourceDecision() and \n
+              context.getSourceDecisionValue().getDefaultAddressText() or \'\',\n
+          context.getSourceDecision() and \\\n
+              context.getSourceDecisionValue().getDefaultAddressRegionTitle() or \'\'),\n
+  \'source_decision_telfax\': getPhoneAndFax(context.getSourceDecision() and\n
+          context.getSourceDecisionValue().getTelephoneText() or \'\',\n
+      context.getSourceDecision() and \\\n
+          context.getSourceDecisionValue().getFaxText() or \'\'),\n
+  \'source_decision_email\': getEmail(context.getSourceDecision() and\n
+      context.getSourceDecisionValue().getEmailText() or \'\'),\n
+  \'source_decision_vatid\': getVatId(context.getSourceDecision() and\\\n
+                           getattr(context.getSourceDecisionValue(), \'getVatCode\', None)\\\n
+                           is not None and\\\n
+                           context.getSourceDecisionValue().getVatCode() or \'\'),\n
+\n
+  \'destination_title\': destination.getProperty(\'corporate_name\') or destination.getTitle(),\n
+  \'destination_address\': getOneLineAddress(\n
+      context.getDestination() and \\\n
+          context.getDestinationValue().getDefaultAddressText() or \'\',\n
+      context.getDestination() and \\\n
+          context.getDestinationValue().getDefaultAddressRegionTitle() or \'\'),\n
+  \'destination_telfax\': getPhoneAndFax(context.getDestination() and\n
+      context.getDestinationValue().getTelephoneText() or \'\',\n
+      context.getDestination() and context.getDestinationValue().getFaxText() or \'\'),\n
+  \'destination_email\': getEmail(context.getDestination() and \\\n
+      context.getDestinationValue().getEmailText() or \'\'),\n
+  \'destination_vatid\': getVatId(context.getDestination() and\n
+      context.getDestinationValue().getProperty(\'vat_code\', \'\') or \'\'),\n
+\n
+  \'destination_section_title\': destination_section.getProperty(\'corporate_name\') or \\\n
+                                  destination_section.getTitle(),\n
+  \'destination_section_image_path\': destination_section.getDefaultImagePath(),\n
+  \'destination_section_image_width\': context.getDestinationSectionValue() is not None\\\n
+      and context.getDestinationSectionValue().getDefaultImageWidth() is not None\\\n
+      and context.getDestinationSectionValue().getDefaultImageWidth() * inch_cm_ratio or \'\',\n
+  \'destination_section_image_height\': context.getDestinationSectionValue() is not None\\\n
+      and context.getDestinationSectionValue().getDefaultImageHeight() is not None\\\n
+      and context.getDestinationSectionValue().getDefaultImageHeight() * inch_cm_ratio or \'\',\n
+  \'destination_section_address\': getOneLineAddress(\n
+      context.getDestinationSection() and context.getDestinationSectionValue().getDefaultAddressText() or \'\',\n
+      context.getDestinationSection() and context.getDestinationSectionValue().getDefaultAddressRegionTitle() or \'\'),\n
+  \'destination_section_telfax\': getPhoneAndFax(\n
+      context.getDestinationSection() and context.getDestinationSectionValue().getTelephoneText() or \'\',\n
+      context.getDestinationSection() and context.getDestinationSectionValue().getFaxText() or \'\'),\n
+  \'destination_section_email\': getEmail(context.getDestinationSection() and context.getDestinationSectionValue().getEmailText() or \'\'),\n
+  \'destination_section_vatid\': getVatId(context.getDestinationSection() and\n
+      context.getDestinationSectionValue().getProperty(\'vat_code\') or \'\'),\n
+  \'destination_section_corporate_registration_codeid\': getCorporateRegistrationCodeId(context.getDestinationSection() and\n
+      context.getDestinationSectionValue().getProperty(\'corporate_registration_code\') or \'\'),\n
+  \'destination_section_activity_codeid\': getActivityCodeId(context.getDestinationSection() and\n
+      context.getDestinationSectionValue().getProperty(\'activity_code\') or \'\'),\n
+  \'destination_section_social_codeid\': getSocialCodeId(context.getDestinationSection() and\n
+      context.getDestinationSectionValue().getProperty(\'social_code\') or \'\'),\n
+  \'destination_section_social_company_title\' : context.getSocialInsuranceAnnotationLineValue() is not None and \\\n
+          context.getSocialInsuranceAnnotationLineValue().getSourceTitle() or \'\',\n
+  \'destination_section_social_address\': getOneLineAddress(\n
+      context.getSocialInsuranceAnnotationLineValue() is not None and \\\n
+          context.getSocialInsuranceAnnotationLineValue().getSource() and \\\n
+          context.getSocialInsuranceAnnotationLineValue().getSourceValue().getDefaultAddressText() or \'\',\n
+      context.getSocialInsuranceAnnotationLineValue() is not None and \\\n
+          context.getSocialInsuranceAnnotationLineValue().getSource() and \\\n
+          context.getSocialInsuranceAnnotationLineValue().getSourceValue().getDefaultAddressRegionTitle() or \'\'),\n
+\n
+  \'destination_administration_title\':\\\n
+    destination_administration.getProperty(\'corporate_name\') or \\\n
+                                destination_administration.getTitle(),\n
+  \'destination_administration_address\': getOneLineAddress(\n
+                                      destination_administration.getDefaultAddressText(),\n
+                                      destination_administration.getDefaultAddressRegionTitle()),\n
+  \'destination_administration_telfax\':\n
+          getPhoneAndFax(destination_administration.getProperty(\'telephone_text\', \'\'),\n
+                         destination_administration.getProperty(\'fax_text\', \'\')),\n
+  \'destination_administration_email\':\n
+          getEmail(destination_administration.getProperty(\'email_text\', \'\')),\n
+  \'destination_administration_vatid\':\n
+          getVatId(destination_administration.getProperty(\'vat_code\', \'\')),\n
+\n
+  \'destination_decision_title\': context.getDestinationDecisionTitle() or \'\',\n
+  \'destination_decision_telfax\': getPhoneAndFax(context.getDestinationDecision() and\n
+      context.getDestinationDecisionValue().getTelephoneText() or \'\',\n
+      context.getDestinationDecision() and context.getDestinationDecisionValue().getFaxText() or \'\'),\n
+  \'destination_decision_email\': getEmail(context.getDestinationDecision() and\n
+      context.getDestinationDecisionValue().getEmailText() or \'\'),\n
+\n
+  \'reference\': context.getReference() or \'\',\n
+  \'start_date\': getOrderedDate(context.getStartDate()) or \'\',\n
+  \'stop_date\': getOrderedDate(context.getStopDate()) or \'\',\n
+  \'creation_date\': getOrderedDate(context.getCreationDate()) or \'\',\n
+  \'currency\': context.getPriceCurrencyReference() or \'\',\n
+  \'payment_condition\': getPaymentConditionText(context),\n
+  \'delivery_mode\': context.getDeliveryModeTitle() or \'\',\n
+  \'incoterm\': context.getIncoterm() and context.getIncotermValue().getCodification() or \'\',\n
+\n
+  \'total_price_novat\': total_price,\n
+  \'description\': getFieldAsLineList(context.getDescription() or\n
+                                    getPropertyFromModel(model, \'description\') or \'\'),\n
+  \'specialise_title\': context.getProperty(\'specialise_title\',\'\'),\n
+\n
+  \'line_list\': line_list,\n
+}\n
+\n
+return unicodeDict(data_dict)\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>0</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>_getattr_</string>
+                            <string>context</string>
+                            <string>translateString</string>
+                            <string>request</string>
+                            <string>use_line_title</string>
+                            <string>model</string>
+                            <string>getPropertyFromModel</string>
+                            <string>getFieldAsLineList</string>
+                            <string>getFieldAsString</string>
+                            <string>getProductAndLineDesc</string>
+                            <string>getOneLineAddress</string>
+                            <string>getPhoneAndFax</string>
+                            <string>getEmail</string>
+                            <string>getVatId</string>
+                            <string>getActivityCodeId</string>
+                            <string>getCorporateRegistrationCodeId</string>
+                            <string>getSocialCodeId</string>
+                            <string>getCareerId</string>
+                            <string>preferred_date_order</string>
+                            <string>separator</string>
+                            <string>getOrderedDate</string>
+                            <string>getPaymentConditionText</string>
+                            <string>line_list</string>
+                            <string>total_price</string>
+                            <string>total_vat</string>
+                            <string>unicodeDict</string>
+                            <string>inch_cm_ratio</string>
+                            <string>EmptyOrganisation</string>
+                            <string>source</string>
+                            <string>None</string>
+                            <string>destination</string>
+                            <string>source_section</string>
+                            <string>destination_section</string>
+                            <string>source_administration</string>
+                            <string>destination_administration</string>
+                            <string>getattr</string>
+                            <string>data_dict</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>PaySheetTransaction_getODTDataDict</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getYearToDateBaseContributionTotalPrice.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getYearToDateBaseContributionTotalPrice.xml
index 3e81032d57..58f8bd7aec 100644
--- a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getYearToDateBaseContributionTotalPrice.xml
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getYearToDateBaseContributionTotalPrice.xml
@@ -56,7 +56,7 @@
             <value> <string>\'\'\'\n
   this script return the total price of the base contribution list\n
   from the first of january of the year of the paysheet and until\n
-  the start_date of this current paysheet.\n
+  the start_date of this current paysheet. Return 0.0 if there is no amount.\n
 \'\'\'\n
 \n
 if paysheet is None:\n
@@ -73,7 +73,12 @@ portal = context.getPortalObject();\n
 portal_simulation = portal.portal_simulation\n
 \n
 base_amount = portal.portal_categories.base_amount\n
-base_contribution_uid_list = [getattr(base_amount, category, None).getUid() for category in base_contribution_list]\n
+\n
+for category in base_contribution_list:\n
+  category_value = getattr(base_amount, category, None)\n
+  if category_value is None:\n
+    raise ValueError, \'Category "%s/%s" not found.\' % (base_amount.getPath(), category)  \n
+  base_contribution_uid_list = category_value.getUid()\n
 \n
 params = {\n
     \'node_uid\' : paysheet.getSourceSectionUid(),\n
@@ -135,11 +140,11 @@ return portal_simulation.getInventoryAssetPrice(**params)\n
                             <string>portal</string>
                             <string>portal_simulation</string>
                             <string>base_amount</string>
-                            <string>append</string>
-                            <string>$append0</string>
                             <string>_getiter_</string>
                             <string>category</string>
                             <string>getattr</string>
+                            <string>category_value</string>
+                            <string>ValueError</string>
                             <string>base_contribution_uid_list</string>
                             <string>DateTime</string>
                             <string>params</string>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODT.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODT.xml
new file mode 100644
index 0000000000..580d0ba2c1
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODT.xml
@@ -0,0 +1,690 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="OOoTemplate" module="Products.ERP5OOo.OOoTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>OLE_documents_zipstring</string> </key>
+            <value> <string encoding="base64">UEsDBBQAAAAIAKKDdTg1Ytc5PgEAAEoHAAAVAAAATUVUQS1JTkYvbWFuaWZlc3QueG1stZVLasMw
+EED3PYXR3lbbVTFxAi30BOkBJvLYEeiHZhSS21cO5NM2lKZYOwmk90YjzWix2ltT7TCS9q4TT82j
+qNAp32s3duJj/V6/iNXyYWHB6QGJ29OgyvscnaedSNG1HkhT68AitaxaH9D1XiWLjtuv69vJtHyo
+LuBBG6zzwnioLjLsNdR8CNgJCMFoBZzjlDvXN0dXc61oGPcsLruHZEwdgLedkELeJbtNefNu0GOK
+xyDoWRIDJ9pALIMHpdBgnvooVYpxOmLOYnFXEcFgPDAWggcfUshPIBXCRz9GpHI3PYVeDM7em2Jw
+bWFEkq+aLQQq6riT/b1fUHJT9TRJN+pa8LcY7pRPnUhOtXoTnv38v2L+nUt8MEizYy0yzNZ41ttk
+Nw60IcmnYRPcODd83sQic/4Qz6ldyB//4fITUEsBAhQAFAAAAAgAooN1ODVi1zk+AQAASgcAABUA
+AAAAAAAAAAAAAAAAAAAAAE1FVEEtSU5GL21hbmlmZXN0LnhtbFBLBQYAAAAAAQABAEMAAABxAQAA
+AAA=</string> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<office:document-content xmlns:office=\'urn:oasis:names:tc:opendocument:xmlns:office:1.0\' xmlns:text=\'urn:oasis:names:tc:opendocument:xmlns:text:1.0\' xmlns:number=\'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\' xmlns:meta=\'urn:oasis:names:tc:opendocument:xmlns:meta:1.0\' xmlns:tal=\'http://xml.zope.org/namespaces/tal\' xmlns:table=\'urn:oasis:names:tc:opendocument:xmlns:table:1.0\' xmlns:style=\'urn:oasis:names:tc:opendocument:xmlns:style:1.0\' xmlns:script=\'urn:oasis:names:tc:opendocument:xmlns:script:1.0\' xmlns:xlink=\'http://www.w3.org/1999/xlink\' xmlns:math=\'http://www.w3.org/1998/Math/MathML\' xmlns:draw=\'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\' xmlns:form=\'urn:oasis:names:tc:opendocument:xmlns:form:1.0\' xmlns:ooo=\'http://openoffice.org/2004/office\' xmlns:dc=\'http://purl.org/dc/elements/1.1/\' xmlns:chart=\'urn:oasis:names:tc:opendocument:xmlns:chart:1.0\' xmlns:i18n=\'http://xml.zope.org/namespaces/i18n\' xmlns:dr3d=\'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\' xmlns:fo=\'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\' xmlns:xforms=\'http://www.w3.org/2002/xforms\' xmlns:dom=\'http://www.w3.org/2001/xml-events\' xmlns:ooow=\'http://openoffice.org/2004/writer\' xmlns:svg=\'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\' xmlns:metal=\'http://xml.zope.org/namespaces/metal\' xmlns:xsd=\'http://www.w3.org/2001/XMLSchema\' xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\' xmlns:oooc=\'http://openoffice.org/2004/calc\' tal:attributes=\'dummy python:request.RESPONSE.setHeader("Content-Type", "text/html;; charset=utf-8")\' office:version=\'1.0\'\n
+                         tal:define="data_dict here/PaySheetTransaction_getODTDataDict;\n
+                                     set_precision python: request.set(\'precision\', here.getQuantityPrecisionFromResource(here.getPriceCurrency()));\n
+                                     quantity_renderer nocall:here/Base_viewFieldLibrary/my_money_quantity/render_pdf;\n
+                                     price_renderer nocall:here/PaySheetTransaction_viewFieldLibrary/my_price/render_pdf;\n
+                                     default_language python:test(request.get(\'international_form\'), \'en\', here.Localizer.get_selected_language())">\n
+  <office:scripts/>\n
+  <office:font-face-decls>\n
+    <style:font-face svg:font-family=\'StarSymbol\' style:name=\'StarSymbol\' style:font-charset=\'x-symbol\'/>\n
+    <style:font-face svg:font-family="\'DejaVu Sans\'" style:name=\'DejaVu Sans1\' style:font-pitch=\'variable\'/>\n
+    <style:font-face svg:font-family="\'Times New Roman\'" style:font-family-generic=\'roman\' style:name=\'Times New Roman\' style:font-pitch=\'variable\'/>\n
+    <style:font-face svg:font-family=\'Arial\' style:font-family-generic=\'swiss\' style:name=\'Arial1\' style:font-pitch=\'variable\'/>\n
+    <style:font-face svg:font-family=\'Arial\' style:font-family-generic=\'swiss\' style:name=\'Arial\' style:font-pitch=\'variable\' style:font-adornments=\'Normalny\'/>\n
+    <style:font-face svg:font-family="\'DejaVu Sans\'" style:font-family-generic=\'swiss\' style:name=\'DejaVu Sans\' style:font-pitch=\'variable\'/>\n
+    <style:font-face svg:font-family="\'DejaVu Sans\'" style:font-family-generic=\'system\' style:name=\'DejaVu Sans2\' style:font-pitch=\'variable\'/>\n
+  </office:font-face-decls>\n
+  <office:automatic-styles>\n
+    <style:style style:family=\'table\' style:name=\'Tableau1\'>\n
+      <style:table-properties fo:margin-left=\'0.021cm\' fo:margin-right=\'-0.014cm\' fo:break-before=\'page\' table:align=\'margins\' style:width=\'18.994cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau1.A\'>\n
+      <style:table-column-properties style:rel-column-width=\'31535*\' style:column-width=\'1.58cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau1.B\'>\n
+      <style:table-column-properties style:rel-column-width=\'8000*\' style:column-width=\'2.073cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau1.C\'>\n
+      <style:table-column-properties style:rel-column-width=\'5000*\' style:column-width=\'6.971cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau1.D\'>\n
+      <style:table-column-properties style:rel-column-width=\'8000*\' style:column-width=\'1.318cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau1.E\'>\n
+      <style:table-column-properties style:rel-column-width=\'5000*\' style:column-width=\'1.012cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau1.F\'>\n
+      <style:table-column-properties style:rel-column-width=\'8000*\' style:column-width=\'1.669cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau1.1\'>\n
+      <style:table-row-properties style:min-row-height=\'5.0cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau1.A1\'>\n
+      <style:table-cell-properties fo:padding=\'0cm\' fo:background-color=\'transparent\' fo:border=\'none\'>\n
+        <style:background-image/>\n
+      </style:table-cell-properties>\n
+    </style:style>\n
+    <style:style style:family=\'table\' style:name=\'Tableau2\'>\n
+      <style:table-properties fo:margin-left=\'0cm\' fo:margin-right=\'0.019cm\' table:align=\'margins\' style:width=\'18.974cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau2.A\'>\n
+      <style:table-column-properties style:rel-column-width=\'5326*\' style:column-width=\'1.542cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau2.B\'>\n
+      <style:table-column-properties style:rel-column-width=\'22690*\' style:column-width=\'5.000cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau2.C\'>\n
+      <style:table-column-properties style:rel-column-width=\'5326*\' style:column-width=\'1.542cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau2.D\'>\n
+      <style:table-column-properties style:rel-column-width=\'32192*\' style:column-width=\'5.000cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau2.E\'>\n
+      <style:table-column-properties style:rel-column-width=\'1*\' style:column-width=\'5.000cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau2.1\'>\n
+      <style:table-row-properties style:row-height=\'2.5cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau2.A1\'>\n
+      <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'none\' fo:border-top=\'0.018cm solid #000000\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau2.A2\'>\n
+      <style:table-cell-properties fo:padding=\'0.5cm\' fo:padding-left=\'0.8cm\' fo:border-right=\'none\' fo:border-top=\'0.018cm solid #000000\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau2.A3\'>\n
+      <style:table-cell-properties fo:padding=\'0.2cm\' fo:padding-left=\'0.5cm\' fo:border-right=\'none\' fo:border-top=\'none\' fo:border-left=\'none\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau2.A4\'>\n
+      <style:table-cell-properties fo:padding=\'0.049cm\' fo:border=\'0.018cm solid #000000\' style:vertical-align=\'top\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau2.A5\'>\n
+      <style:table-cell-properties fo:padding=\'0.5cm\' fo:padding-left=\'1.2cm\' fo:border-right=\'none\' fo:border-top=\'0.018cm solid #000000\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau1.A2\'>\n
+      <style:table-cell-properties fo:padding=\'0.049cm\' fo:background-color=\'#e6e6e6\' fo:border=\'0.008cm solid #000000\' style:vertical-align=\'middle\'>\n
+        <style:background-image/>\n
+      </style:table-cell-properties>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau1.3\'>\n
+      <style:table-row-properties style:min-row-height=\'0.4cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau1.A3\'>\n
+      <style:table-cell-properties fo:padding=\'0cm\' fo:border-right=\'0.008cm solid #000000\' fo:border-top=\'none\' fo:background-color=\'transparent\' fo:border-left=\'0.008cm solid #000000\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'>\n
+        <style:background-image/>\n
+      </style:table-cell-properties>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau1.4\'>\n
+      <style:table-row-properties style:row-height=\'0.3cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau1.A4\'>\n
+      <style:table-cell-properties fo:padding=\'0cm\' fo:border-right=\'none\' fo:border-top=\'0.008cm solid #000000\' fo:background-color=\'transparent\' fo:border-left=\'none\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'>\n
+      </style:table-cell-properties>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau1.A6\'>\n
+      <style:table-cell-properties fo:padding=\'0cm\' fo:border-right=\'0.008cm solid #000000\' fo:border-top=\'none\' fo:background-color=\'transparent\' fo:border-left=\'0.008cm solid #000000\' fo:border-bottom=\'0.008cm solid #000000\' style:vertical-align=\'middle\'>\n
+        <style:background-image/>\n
+      </style:table-cell-properties>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau1.A7\'>\n
+      <style:table-cell-properties fo:padding=\'0cm\' fo:border-right=\'none\' fo:border-top=\'none\' fo:background-color=\'transparent\' fo:border-left=\'none\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'>\n
+        <style:background-image/>\n
+      </style:table-cell-properties>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau1.A8\'>\n
+      <style:table-cell-properties fo:padding=\'0cm\' fo:border-right=\'0.008cm solid #000000\' fo:border-top=\'0.008cm solid #000000\' fo:background-color=\'transparent\' fo:border-left=\'0.008cm solid #000000\' fo:border-bottom=\'0.008cm solid #000000\' style:vertical-align=\'middle\'>\n
+        <style:background-image/>\n
+      </style:table-cell-properties>\n
+    </style:style>\n
+    <style:style style:family=\'table\' style:name=\'Tableau3\'>\n
+      <style:table-properties style:may-break-between-rows=\'false\' table:align=\'margins\' style:width=\'18.994cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau3.A\'>\n
+      <style:table-column-properties style:rel-column-width=\'20267*\' style:column-width=\'3.053cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau3.B\'>\n
+      <style:table-column-properties style:rel-column-width=\'14134*\' style:column-width=\'1.593cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau3.C\'>\n
+      <style:table-column-properties style:rel-column-width=\'14134*\' style:column-width=\'9.985cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau3.D\'>\n
+      <style:table-column-properties style:rel-column-width=\'9000*\' style:column-width=\'2.656cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau3.E\'>\n
+      <style:table-column-properties style:rel-column-width=\'8000*\' style:column-width=\'1.707cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau3.1\'>\n
+      <style:table-row-properties style:row-height=\'0.5cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.A1\'>\n
+      <style:table-cell-properties style:vertical-align=\'middle\' fo:padding=\'0.097cm\' fo:border=\'none\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau3.2\'>\n
+      <style:table-row-properties style:row-height=\'0.75cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau3.3\'>\n
+      <style:table-row-properties style:row-height=\'2cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.A2\'>\n
+      <style:table-cell-properties style:vertical-align=\'middle\' fo:padding=\'0cm\' fo:border=\'none\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.D2\'>\n
+      <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'none\' fo:border-top=\'0.018cm solid #000000\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.E2\'>\n
+      <style:table-cell-properties style:vertical-align=\'middle\' fo:padding=\'0.097cm\' fo:border=\'0.018cm solid #000000\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.D3\'>\n
+      <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'none\' fo:border-top=\'none\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.E3\'>\n
+      <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'0.018cm solid #000000\' fo:border-top=\'none\' fo:border-left=\'0.018cm solid #000000\' fo:border-bottom=\'0.018cm solid #000000\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau3.6\'>\n
+      <style:table-row-properties style:row-height=\'0.45cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.A6\'>\n
+      <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'none\' fo:border-top=\'0.008cm solid #000000\' fo:border-left=\'0.008cm solid #000000\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.B6\'>\n
+      <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'none\' fo:border-top=\'0.008cm solid #000000\' fo:border-left=\'none\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.E6\'>\n
+      <style:table-cell-properties fo:padding=\'0.097cm\' fo:border-right=\'0.008cm solid #000000\' fo:border-top=\'0.008cm solid #000000\' fo:border-left=\'none\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau3.7\'>\n
+      <style:table-row-properties style:row-height=\'1.499cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.A7\'>\n
+      <style:table-cell-properties fo:border-left=\'0.008cm solid #000000\' fo:border-right=\'0.008cm solid #000000\' fo:border-bottom=\'0.008cm solid #000000\' fo:padding=\'0.097cm\' fo:border-top=\'none\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-row\' style:name=\'Tableau3.8\'>\n
+      <style:table-row-properties style:row-height=\'0.0cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-cell\' style:name=\'Tableau3.A8\'>\n
+      <style:table-cell-properties fo:padding=\'0.0cm\' fo:border-right=\'none\' fo:border-top=\'0.008cm solid #000000\' fo:border-left=\'0.008cm solid #000000\' fo:border-bottom=\'none\' style:vertical-align=\'middle\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table\' style:name=\'Tableau4\'>\n
+      <style:table-properties style:may-break-between-rows=\'false\' table:align=\'margins\' style:width=\'18.994cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau4.A\'>\n
+      <style:table-column-properties style:rel-column-width=\'10922*\' style:column-width=\'3.053cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau4.B\'>\n
+      <style:table-column-properties style:rel-column-width=\'10922*\' style:column-width=\'1.593cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau4.C\'>\n
+      <style:table-column-properties style:rel-column-width=\'10922*\' style:column-width=\'9.985cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau4.D\'>\n
+      <style:table-column-properties style:rel-column-width=\'10923*\' style:column-width=\'2.656cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau4.E\'>\n
+      <style:table-column-properties style:rel-column-width=\'10923*\' style:column-width=\'1.707cm\'/>\n
+    </style:style>\n
+    <style:style style:family=\'table-column\' style:name=\'Tableau4.F\'>\n
+      <style:table-column-properties style:rel-column-width=\'10923*\' style:column-width=\'1.707cm\'/>\n
+    </style:style>\n
+    <style:style style:parent-style-name=\'Table_20_Heading\' style:family=\'paragraph\' style:name=\'P1\'>\n
+      <style:text-properties fo:font-style=\'normal\' style:font-style-asian=\'normal\' style:font-size-complex=\'7pt\' style:font-size-asian=\'7pt\' style:font-style-complex=\'normal\' style:font-weight-complex=\'normal\' style:font-weight-asian=\'normal\' fo:font-size=\'7pt\' fo:font-weight=\'normal\'/>\n
+    </style:style>\n
+    <style:style style:parent-style-name=\'Table_20_Heading\' style:family=\'paragraph\' style:name=\'P2\'>\n
+      <style:paragraph-properties fo:text-align=\'start\' style:justify-single-word=\'false\'/>\n
+    </style:style>\n
+    <style:style style:parent-style-name=\'Table_20_Contents\' style:family=\'paragraph\' style:name=\'P3\'>\n
+      <style:paragraph-properties fo:text-align=\'left\' style:justify-single-word=\'false\'/>\n
+    </style:style>\n
+    <style:style style:parent-style-name=\'Text_20_body\' style:family=\'paragraph\' style:name=\'P4\'>\n
+      <style:text-properties style:font-size-complex=\'6pt\' style:font-size-asian=\'6pt\' style:font-weight-complex=\'normal\' style:font-weight-asian=\'normal\' fo:font-size=\'6pt\' fo:font-weight=\'normal\'/>\n
+    </style:style>\n
+  </office:automatic-styles>\n
+  <office:body>\n
+    <office:text>\n
+      <text:variable-decls>\n
+        <text:variable-decl text:name=\'ds_title\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'ds_address\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'ds_telfax\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'ds_email\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'ds_vatid\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'purchase_order\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'purchase_order_tr\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'page\' office:value-type=\'string\'/>\n
+        <text:variable-decl text:name=\'of\' office:value-type=\'string\'/>\n
+      </text:variable-decls>\n
+      <text:sequence-decls>\n
+        <text:sequence-decl text:display-outline-level=\'0\' text:name=\'Illustration\'/>\n
+        <text:sequence-decl text:display-outline-level=\'0\' text:name=\'Table\'/>\n
+        <text:sequence-decl text:display-outline-level=\'0\' text:name=\'Text\'/>\n
+        <text:sequence-decl text:display-outline-level=\'0\' text:name=\'Drawing\'/>\n
+      </text:sequence-decls>\n
+      <draw:line text:anchor-type="page" text:anchor-page-number="1" draw:z-index="1" draw:style-name="gr1" draw:text-style-name="P1" svg:x1="-0.004cm" svg:y1="9.8cm" svg:x2="0.396cm" svg:y2="9.8cm">\n
+        <text:p/>\n
+      </draw:line>\n
+      <draw:line text:anchor-type="page" text:anchor-page-number="1" draw:z-index="2" draw:style-name="gr1" draw:text-style-name="P1" svg:x1="-0.004cm" svg:y1="19.962cm" svg:x2="0.396cm" svg:y2="19.962cm">\n
+        <text:p/>\n
+      </draw:line>\n
+      <table:table table:style-name=\'Tableau1\' table:name=\'Tableau1\'>\n
+        <table:table-column table:style-name=\'Tableau1.A\'/>\n
+        <table:table-column table:style-name=\'Tableau1.B\'/>\n
+        <table:table-column table:style-name=\'Tableau1.C\'/>\n
+        <table:table-column table:style-name=\'Tableau1.D\'/>\n
+        <table:table-column table:style-name=\'Tableau1.E\'/>\n
+        <table:table-column table:style-name=\'Tableau1.F\'/>\n
+        <table:table-header-rows>\n
+          <table:table-row table:style-name=\'Tableau1.1\'>\n
+            <table:table-cell table:style-name=\'Tableau1.A1\'\n
+                              table:number-columns-spanned=\'6\'\n
+                              office:value-type=\'string\'>\n
+              <table:table table:style-name=\'Tableau2\' table:name=\'Tableau2\'>\n
+                <table:table-column table:style-name=\'Tableau2.A\'/>\n
+                <table:table-column table:style-name=\'Tableau2.B\'/>\n
+                <table:table-column table:style-name=\'Tableau2.C\'/>\n
+                <table:table-column table:style-name=\'Tableau2.D\'/>\n
+                <table:table-column table:style-name=\'Tableau2.E\'/>\n
+                <table:table-header-rows>\n
+                  <table:table-row table:style-name=\'Tableau2.1\'>\n
+                    <table:table-cell table:style-name=\'Tableau2.A2\'\n
+                                      office:value-type=\'string\' table:number-columns-spanned=\'2\'>\n
+                      <text:p text:style-name=\'Big_20_Table_20_Content_20_Left\'\n
+                              tal:content=\'python:data_dict["destination_section_title"]\'>destination_section</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:content=\'python:data_dict["destination_section_address"]\'>address</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:content=\'python:data_dict["destination_section_telfax"]\'>tel, fax</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:content=\'python:data_dict["destination_section_email"]\'>email</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:condition=\'data_dict/destination_section_vatid\'\n
+                              tal:content=\'python:data_dict["destination_section_vatid"]\'>vat ID</text:p>\n
+                    </table:table-cell>\n
+                    <table:covered-table-cell/>\n
+                    <table:table-cell table:style-name=\'Tableau2.A5\'\n
+                                      office:value-type=\'string\' table:number-columns-spanned=\'2\'\n
+                                      table:number-rows-spanned=\'2\'>\n
+\n
+                      <text:p text:style-name=\'Header_20_Title_Left\'\n
+                              tal:content=\'python:data_dict["source_section_title"]\'>source</text:p>\n
+                      <text:p text:style-name=\'Header_20_left\'\n
+                              tal:content="structure python:data_dict[\'source_section_address\'].replace(\'&amp;\', \'&amp;amp;\').replace(\'&gt;\', \'&amp;gt;\').replace(\'&lt;\', \'&amp;lt;\').replace(\'\\n\', \'&lt;text:line-break/&gt;\')"/>\n
+                    </table:table-cell>\n
+                    <table:covered-table-cell/>\n
+                    <table:table-cell table:style-name=\'Tableau2.A1\'\n
+                      office:value-type=\'string\'>\n
+                    </table:table-cell>\n
+                  </table:table-row>\n
+                </table:table-header-rows>\n
+                  <table:table-row table:style-name=\'Tableau2.1\'>\n
+                    <table:table-cell table:style-name=\'Tableau2.A4\'\n
+                                      office:value-type=\'string\' table:number-columns-spanned=\'2\'>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:condition=\'data_dict/destination_section_corporate_registration_codeid\'\n
+                              tal:content=\'python:data_dict["destination_section_corporate_registration_codeid"]\'>SIRET</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:condition=\'data_dict/destination_section_activity_codeid\'\n
+                              tal:content=\'python:data_dict["destination_section_activity_codeid"]\'>APE</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:condition=\'data_dict/destination_section_social_codeid\'\n
+                              tal:content=\'python:data_dict["destination_section_social_codeid"]\'>Social Code</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:condition=\'data_dict/destination_section_social_company_title\'\n
+                              tal:content=\'python:data_dict["destination_section_social_company_title"]\'>Social Code</text:p>\n
+                      <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                              tal:condition=\'data_dict/destination_section_social_address\'\n
+                              tal:content=\'python:data_dict["destination_section_social_address"]\'>Social Code</text:p>\n
+                    </table:table-cell>\n
+                    <table:covered-table-cell/>\n
+                    <table:covered-table-cell/>\n
+                    <table:covered-table-cell/>\n
+                    <table:table-cell table:style-name=\'Tableau2.A1\'\n
+                      office:value-type=\'string\'>\n
+                    </table:table-cell>\n
+                  </table:table-row>\n
+              </table:table>\n
+              <text:p text:style-name=\'P1\'/>\n
+            </table:table-cell>\n
+            <table:covered-table-cell/>\n
+            <table:covered-table-cell/>\n
+            <table:covered-table-cell/>\n
+            <table:covered-table-cell/>\n
+          </table:table-row>\n
+          <table:table-row>\n
+            <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Designation; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Base; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Employee Share Rate; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Employee Share; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Employer Share Rate; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' tal:define=\'orig_string string:Employer Share; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n
+            </table:table-cell>\n
+          </table:table-row>\n
+        </table:table-header-rows>\n
+        <tal:block tal:define="global service python:None"/>\n
+        <tal:block tal:define="global previous_line python:None"/>\n
+        <tal:block tal:repeat=\'line_dict python:data_dict["line_list"]\'>\n
+\n
+          <!-- If previous line has \'base_salary\' category in its\n
+          base_contribution list and the next one don\'t have, display the total\n
+          gross_salary -->\n
+          <tal:block condition="python: previous_line is not None and \'base_amount/gross_salary\' in previous_line[\'base_contribution_list\'] and \'base_amount/gross_salary\' not in line_dict[\'base_contribution_list\']">\n
+            <table:table-row table:style-name=\'Tableau1.3\'>\n
+              <table:table-cell table:style-name=\'Tableau1.A8\' office:value-type=\'string\'>\n
+                <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:content=\'python: here.Base_translateString("Gross Salary")\'>1</text:p>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A8\' office:value-type=\'string\'>\n
+                <text:p text:style-name=\'Table_20_Contents_20_Right\' tal:content=\'python:quantity_renderer(context.PaySheetTransaction_getMovementTotalPriceFromCategory(base_contribution="base_contribution/base_amount/gross_salary", tax_category="tax_category/employee_share"))\'>400 000</text:p>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A8\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A8\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A8\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A8\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A8\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+            </table:table-row>\n
+          </tal:block>\n
+          \n
+\n
+          <!-- display the name of the service if it\'s not the same than the\n
+               previous -->\n
+          <tal:block condition="python: service != line_dict[\'group\']">\n
+            <table:table-row table:style-name=\'Tableau1.3\'>\n
+              <tal:block tal:define="global service python: line_dict[\'group\']"/>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\' tal:content=\'python:line_dict["group"]\'>1</text:p>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                 <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+            </table:table-row>\n
+          </tal:block>\n
+\n
+\n
+          <table:table-row table:style-name=\'Tableau1.3\'>\n
+            <div tal:omit-tag=\'\' tal:define="style_name python:\'Item_20_Table_20_Title\';\n
+                 left_style_name python:\'Table_20_Contents_20_Left\';\n
+                 right_style_name python:\'Table_20_Contents_20_Right\'">\n
+\n
+              <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                <text:p text:style-name=\'Table_20_Contents\' tal:content=\'python:line_dict["title"]\' tal:attributes=\'text:style-name left_style_name\'>1</text:p>\n
+              </table:table-cell>\n
+              \n
+              <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                office:value-type=\'float\'\n
+                                tal:condition="python: line_dict[\'base\'] != None"\n
+                                tal:attributes=\'office:value line_dict/base\'> \n
+                <text:p text:style-name=\'Table_20_Contents\'\n
+                        tal:content="python: quantity_renderer(line_dict[\'base\'])"\n
+                        tal:attributes=\'text:style-name right_style_name\'>base</text:p>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                office:value-type=\'string\'\n
+                                tal:condition="python: line_dict[\'base\'] == None"> \n
+                <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+\n
+              <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                office:value-type=\'float\'\n
+                                tal:condition="python: line_dict[\'employee_share_price\'] != None"\n
+                                tal:attributes=\'office:value line_dict/employee_share_price\'> \n
+                <text:p text:style-name=\'Table_20_Contents\'\n
+                        tal:content="python: price_renderer(line_dict[\'employee_share_price\'])"\n
+                        tal:attributes=\'text:style-name right_style_name\'>employee price</text:p>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                office:value-type=\'string\'\n
+                                tal:condition="python: line_dict[\'employee_share_price\'] == None"> \n
+                <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+\n
+              <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                office:value-type=\'float\'\n
+                                tal:condition="python: line_dict[\'employee_share_total_price\'] != None"\n
+                                tal:attributes=\'office:value line_dict/employee_share_total_price\'> \n
+                <text:p text:style-name=\'Table_20_Contents\'\n
+                        tal:content="python: quantity_renderer(line_dict[\'employee_share_total_price\'])"\n
+                        tal:attributes=\'text:style-name right_style_name\'>employee total price</text:p>\n
+              </table:table-cell>\n
+              <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                office:value-type=\'string\'\n
+                                tal:condition="python: line_dict[\'employee_share_total_price\'] == None"> \n
+                <text:p text:style-name=\'Table_20_Contents\'/>\n
+              </table:table-cell>\n
+\n
+              <!-- if this line not contribute to gross_salary base amount display employer share else don\'t display it-->\n
+              <tal:block tal:condition="python: \'base_amount/gross_salary\' not in line_dict[\'base_contribution_list\']">\n
+                <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                  office:value-type=\'float\'\n
+                                  tal:condition="python: line_dict[\'employer_share_price\'] != None"\n
+                                  tal:attributes=\'office:value line_dict/employer_share_price\'> \n
+                  <text:p text:style-name=\'Table_20_Contents\'\n
+                          tal:content="python: price_renderer(line_dict[\'employer_share_price\'])"\n
+                          tal:attributes=\'text:style-name right_style_name\'>employer price</text:p>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                  office:value-type=\'string\'\n
+                                  tal:condition="python: line_dict[\'employer_share_price\'] == None"> \n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                  office:value-type=\'float\'\n
+                                  tal:condition="python: line_dict[\'employer_share_total_price\'] != None"\n
+                                  tal:attributes=\'office:value line_dict/employer_share_total_price\'> \n
+                  <text:p text:style-name=\'Table_20_Contents\'\n
+                          tal:content="python: quantity_renderer(line_dict[\'employer_share_total_price\'])"\n
+                          tal:attributes=\'text:style-name right_style_name\'>employer total price</text:p>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                                  office:value-type=\'string\'\n
+                                  tal:condition="python: line_dict[\'employer_share_total_price\'] == None"> \n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+              </tal:block>\n
+              <tal:block tal:condition="python: \'base_amount/gross_salary\' in line_dict[\'base_contribution_list\']">\n
+                <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                   <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau1.A3\' office:value-type=\'string\'>\n
+                   <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+              </tal:block>\n
+            </div>\n
+          </table:table-row>\n
+          <tal:block tal:define="global previous_line python:line_dict"/>\n
+        </tal:block>\n
+        <table:table-row table:style-name=\'Tableau1.4\' >\n
+          <div tal:omit-tag=\'\' tal:define="style_name python:\'Item_20_Table_20_Title\';\n
+               left_style_name python:\'Table_20_Contents_20_Left\';\n
+               right_style_name python:\'Table_20_Contents_20_Right\'">\n
+            <table:table-cell table:style-name=\'Tableau1.A4\' office:value-type=\'string\'>\n
+               <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A4\' office:value-type=\'string\'>\n
+               <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A4\' office:value-type=\'string\'>\n
+               <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A4\' office:value-type=\'string\'>\n
+               <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A4\' office:value-type=\'string\'>\n
+               <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A4\' office:value-type=\'string\'>\n
+               <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name=\'Tableau1.A4\' office:value-type=\'string\'>\n
+               <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+          </div>\n
+        </table:table-row>\n
+        <table:table-row table:style-name=\'Tableau1.5\'>\n
+          <table:table-cell table:style-name=\'Tableau1.A5\'\n
+                            table:number-columns-spanned=\'9\' office:value-type=\'string\'>\n
+            <table:table table:style-name=\'Tableau3\' table:name=\'Tableau3\'>\n
+              <table:table-column table:style-name=\'Tableau3.A\'/>\n
+              <table:table-column table:style-name=\'Tableau3.B\'/>\n
+              <table:table-column table:style-name=\'Tableau3.C\'/>\n
+              <table:table-column table:style-name=\'Tableau3.D\'/>\n
+              <table:table-column table:style-name=\'Tableau3.E\'/>\n
+              <table:table-row table:style-name=\'Tableau3.2\'>\n
+                <table:table-cell table:style-name=\'Tableau3.A2\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.A2\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.D2\' office:value-type=\'string\' tal:define=\'orig_string string:Net payable; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+                  <text:p text:style-name=\'Table_20_Heading\'><span tal:replace=\'orig_message\'/>:</text:p>\n
+                  <text:p text:style-name=\'Table_20_Heading\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/>:</text:p>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.E2\'\n
+                                  office:value-type=\'float\'\n
+                                  tal:attributes=\'office:value data_dict/total_price_novat\'>\n
+                  <text:p text:style-name=\'Item_20_Table_20_Title_20_Right\' tal:content="python: \'%s %s\' % (quantity_renderer(context.PaySheetTransaction_getMovementTotalPriceFromCategory(base_contribution=\'base_contribution/base_amount/net_salary\', tax_category=\'tax_category/employee_share\')), data_dict[\'currency\'])">800.000,00</text:p>\n
+                </table:table-cell>\n
+              </table:table-row>\n
+              <table:table-row table:style-name=\'Tableau3.1\'>\n
+                <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+                <table:table-cell table:style-name=\'Tableau3.A1\' office:value-type=\'string\'>\n
+                  <text:p text:style-name=\'Table_20_Contents\'/>\n
+                </table:table-cell>\n
+              </table:table-row>\n
+              <!-- call a macro to display other information in this way, the\n
+                    paysheet could be adapted for all countries and legislation-->\n
+              <tal:block metal:use-macro="here/payroll_odt_macro/macros/other_informations" />\n
+            </table:table>\n
+            <text:p text:style-name=\'Table_20_Contents\'/>\n
+          </table:table-cell>\n
+          <table:covered-table-cell/>\n
+          <table:covered-table-cell/>\n
+          <table:covered-table-cell/>\n
+          <table:covered-table-cell/>\n
+          <table:covered-table-cell/>\n
+          <table:covered-table-cell/>\n
+          <table:covered-table-cell/>\n
+          <table:covered-table-cell/>\n
+        </table:table-row>\n
+      </table:table>\n
+      <text:p text:style-name=\'P4\'/>\n
+    </office:text>\n
+  </office:body>\n
+</office:document-content>\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/vnd.oasis.opendocument.text</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>PaySheetTransaction_viewAsODT</string> </value>
+        </item>
+        <item>
+            <key> <string>ooo_stylesheet</string> </key>
+            <value> <string>PaySheetTransaction_viewAsODTStyles</string> </value>
+        </item>
+        <item>
+            <key> <string>ooo_xml_file_id</string> </key>
+            <value> <string>content.xml</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODTStyles.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODTStyles.xml
new file mode 100644
index 0000000000..aac2e25525
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_viewAsODTStyles.xml
@@ -0,0 +1,409 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="OOoTemplate" module="Products.ERP5OOo.OOoTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>OLE_documents_zipstring</string> </key>
+            <value> <string encoding="base64">UEsDBBQAAAAIAMCAlTg1Ytc5PgEAAEoHAAAVAAAATUVUQS1JTkYvbWFuaWZlc3QueG1stZVLasMw
+EED3PYXR3lbbVTFxAi30BOkBJvLYEeiHZhSS21cO5NM2lKZYOwmk90YjzWix2ltT7TCS9q4TT82j
+qNAp32s3duJj/V6/iNXyYWHB6QGJ29OgyvscnaedSNG1HkhT68AitaxaH9D1XiWLjtuv69vJtHyo
+LuBBG6zzwnioLjLsNdR8CNgJCMFoBZzjlDvXN0dXc61oGPcsLruHZEwdgLedkELeJbtNefNu0GOK
+xyDoWRIDJ9pALIMHpdBgnvooVYpxOmLOYnFXEcFgPDAWggcfUshPIBXCRz9GpHI3PYVeDM7em2Jw
+bWFEkq+aLQQq6riT/b1fUHJT9TRJN+pa8LcY7pRPnUhOtXoTnv38v2L+nUt8MEizYy0yzNZ41ttk
+Nw60IcmnYRPcODd83sQic/4Qz6ldyB//4fITUEsBAhQAFAAAAAgAwICVODVi1zk+AQAASgcAABUA
+AAAAAAAAAAAAAAAAAAAAAE1FVEEtSU5GL21hbmlmZXN0LnhtbFBLBQYAAAAAAQABAEMAAABxAQAA
+AAA=</string> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<?xml version="1.0" encoding="utf-8"?>\n
+<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"\n
+                        xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"\n
+                        xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"\n
+                        xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"\n
+                        xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"\n
+                        xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"\n
+                        xmlns:xlink="http://www.w3.org/1999/xlink"\n
+                        xmlns:dc="http://purl.org/dc/elements/1.1/"\n
+                        xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"\n
+                        xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"\n
+                        xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"\n
+                        xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"\n
+                        xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"\n
+                        xmlns:math="http://www.w3.org/1998/Math/MathML"\n
+                        xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"\n
+                        xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"\n
+                        xmlns:ooo="http://openoffice.org/2004/office"\n
+                        xmlns:ooow="http://openoffice.org/2004/writer"\n
+                        xmlns:oooc="http://openoffice.org/2004/calc"\n
+                        xmlns:dom="http://www.w3.org/2001/xml-events"\n
+                        xmlns:tal="http://xml.zope.org/namespaces/tal"\n
+                        xmlns:i18n="http://xml.zope.org/namespaces/i18n"\n
+                        xmlns:metal="http://xml.zope.org/namespaces/metal"\n
+                        office:version="1.1"\n
+                        tal:attributes="dummy python:request.RESPONSE.setHeader(\'Content-Type\', \'text/html;; charset=utf-8\')"\n
+                        tal:define=\'data_dict here/PaySheetTransaction_getODTDataDict\'>\n
+  <office:font-face-decls>\n
+    <style:font-face style:name="StarSymbol" svg:font-family="StarSymbol" style:font-charset="x-symbol"/>\n
+    <style:font-face style:name="DejaVu Sans1" svg:font-family="\'DejaVu Sans\'" style:font-pitch="variable"/>\n
+    <style:font-face style:name="Times New Roman" svg:font-family="\'Times New Roman\'" style:font-family-generic="roman" style:font-pitch="variable"/>\n
+    <style:font-face style:name="Arial1" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/>\n
+    <style:font-face style:name="Arial" svg:font-family="Arial" style:font-adornments="Normalny" style:font-family-generic="swiss" style:font-pitch="variable"/>\n
+    <style:font-face style:name="DejaVu Sans" svg:font-family="\'DejaVu Sans\'" style:font-family-generic="swiss" style:font-pitch="variable"/>\n
+    <style:font-face style:name="DejaVu Sans2" svg:font-family="\'DejaVu Sans\'" style:font-family-generic="system" style:font-pitch="variable"/>\n
+  </office:font-face-decls>\n
+  <office:styles>\n
+    <style:default-style style:family="graphic">\n
+      <style:graphic-properties draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="true"/>\n
+      <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">\n
+        <style:tab-stops/>\n
+      </style:paragraph-properties>\n
+      <style:text-properties style:use-window-font-color="true" fo:font-size="12pt" fo:language="pl" fo:country="PL" style:font-size-asian="12pt" style:language-asian="pl" style:country-asian="PL" style:font-size-complex="12pt" style:language-complex="pl" style:country-complex="PL"/>\n
+    </style:default-style>\n
+    <style:default-style style:family="paragraph">\n
+      <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>\n
+      <style:text-properties style:use-window-font-color="true" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="pl" fo:country="PL" style:font-name-asian="DejaVu Sans1" style:font-size-asian="12pt" style:language-asian="pl" style:country-asian="PL" style:font-name-complex="DejaVu Sans1" style:font-size-complex="12pt" style:language-complex="pl" style:country-complex="PL" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>\n
+    </style:default-style>\n
+    <style:default-style style:family="table">\n
+      <style:table-properties table:border-model="collapsing"/>\n
+    </style:default-style>\n
+    <style:default-style style:family="table-row">\n
+      <style:table-row-properties fo:keep-together="always"/>\n
+    </style:default-style>\n
+    <style:style style:name="Standard" style:family="paragraph" style:class="text">\n
+      <style:text-properties style:font-name="Arial"/>\n
+    </style:style>\n
+    <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">\n
+      <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm"/>\n
+    </style:style>\n
+    <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">\n
+      <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" fo:keep-with-next="always"/>\n
+      <style:text-properties style:font-name="DejaVu Sans" fo:font-size="14pt" style:font-name-asian="DejaVu Sans2" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans2" style:font-size-complex="14pt"/>\n
+    </style:style>\n
+    <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Header" style:next-style-name="Text_20_body" style:class="text">\n
+      <style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>\n
+    </style:style>\n
+    <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list"/>\n
+    <style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="extra" style:master-page-name="">\n
+      <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-align="start" style:justify-single-word="false" style:register-true="true" style:page-number="auto" fo:background-color="transparent" style:shadow="none" fo:keep-with-next="always" style:vertical-align="auto">\n
+        <style:tab-stops/>\n
+        <style:background-image/>\n
+      </style:paragraph-properties>\n
+      <style:text-properties style:font-name="Arial1" fo:font-size="7pt" style:font-name-asian="DejaVu Sans1" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans1" style:font-size-complex="14pt"/>\n
+    </style:style>\n
+    <style:style style:name="Header_20_left" style:display-name="Header left" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">\n
+      <style:paragraph-properties text:number-lines="false" text:line-number="0">\n
+        <style:tab-stops>\n
+          <style:tab-stop style:position="9.5cm" style:type="center"/>\n
+          <style:tab-stop style:position="19.001cm" style:type="right"/>\n
+        </style:tab-stops>\n
+      </style:paragraph-properties>\n
+    </style:style>\n
+    <style:style style:name="Header_20_right" style:display-name="Header right" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">\n
+      <style:paragraph-properties fo:text-align="end" style:justify-single-word="false" text:number-lines="false" text:line-number="0">\n
+        <style:tab-stops>\n
+          <style:tab-stop style:position="9.5cm" style:type="center"/>\n
+          <style:tab-stop style:position="19.001cm" style:type="right"/>\n
+        </style:tab-stops>\n
+      </style:paragraph-properties>\n
+      <style:text-properties fo:font-size="8pt" fo:font-weight="bold"/>\n
+    </style:style>\n
+    <style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">\n
+      <style:paragraph-properties text:number-lines="false" text:line-number="0">\n
+        <style:tab-stops>\n
+          <style:tab-stop style:position="9.5cm" style:type="center"/>\n
+          <style:tab-stop style:position="19.001cm" style:type="right"/>\n
+        </style:tab-stops>\n
+      </style:paragraph-properties>\n
+      <style:text-properties fo:font-size="6pt"/>\n
+    </style:style>\n
+    <style:style style:name="Footer_20_right" style:display-name="Footer right" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">\n
+      <style:paragraph-properties text:number-lines="false" text:line-number="0">\n
+        <style:tab-stops>\n
+          <style:tab-stop style:position="9.5cm" style:type="center"/>\n
+          <style:tab-stop style:position="19.001cm" style:type="right"/>\n
+        </style:tab-stops>\n
+      </style:paragraph-properties>\n
+    </style:style>\n
+    <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">\n
+      <style:paragraph-properties fo:text-align="center" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/>\n
+      <style:text-properties fo:font-size="7pt"/>\n
+    </style:style>\n
+    <style:style style:name="Table_20_Heading" style:display-name="Table Heading" style:family="paragraph" style:parent-style-name="Table_20_Contents" style:class="extra">\n
+      <style:paragraph-properties fo:text-align="end" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/>\n
+      <style:text-properties fo:font-size="6pt" fo:font-style="normal" fo:font-weight="bold" style:font-style-asian="italic" style:font-weight-asian="normal" style:font-style-complex="italic" style:font-weight-complex="normal"/>\n
+    </style:style>\n
+    <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">\n
+      <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" text:number-lines="false" text:line-number="0"/>\n
+      <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-size-complex="12pt" style:font-style-complex="italic"/>\n
+    </style:style>\n
+    <style:style style:name="Table" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"/>\n
+    <style:style style:name="Text" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"/>\n
+    <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="extra"/>\n
+    <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">\n
+      <style:paragraph-properties text:number-lines="false" text:line-number="0"/>\n
+    </style:style>\n
+    <style:style style:name="Header_20_Title" style:display-name="Header Title" style:family="paragraph" style:parent-style-name="Header_20_right" style:master-page-name="">\n
+      <style:paragraph-properties style:page-number="auto" style:shadow="none"/>\n
+      <style:text-properties fo:text-transform="uppercase" fo:font-size="16pt"/>\n
+    </style:style>\n
+    <style:style style:name="Header_20_Title_Left" style:display-name="Header Title Left" style:family="paragraph" style:parent-style-name="Header_20_left" style:master-page-name="">\n
+      <style:paragraph-properties style:page-number="auto" style:shadow="none"/>\n
+      <style:text-properties fo:text-transform="uppercase" fo:font-size="16pt"/>\n
+    </style:style>\n
+    <style:style style:name="Big_20_Table_20_Content" style:display-name="Big Table Content" style:family="paragraph" style:parent-style-name="Table_20_Contents">\n
+      <style:text-properties fo:font-size="8pt" fo:font-weight="bold"/>\n
+    </style:style>\n
+    <style:style style:name="Big_20_Table_20_Content_20_Left" style:display-name="Big Table Content Left" style:family="paragraph" style:parent-style-name="Big_20_Table_20_Content">\n
+      <style:paragraph-properties fo:margin-left="0.049cm" fo:margin-right="0cm" fo:text-align="start" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/>\n
+    </style:style>\n
+    <style:style style:name="Item_20_Table_20_Title" style:display-name="Item Table Title" style:family="paragraph" style:parent-style-name="Table_20_Heading" style:class="extra">\n
+      <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>\n
+      <style:text-properties fo:font-size="7pt" style:font-weight-asian="normal" style:font-weight-complex="normal"/>\n
+    </style:style>\n
+    <style:style style:name="Table_20_Contents_20_Left" style:display-name="Table Contents Left" style:family="paragraph" style:parent-style-name="Table_20_Contents" style:class="extra">\n
+      <style:paragraph-properties fo:margin-left="0.2cm" fo:margin-right="0cm" fo:text-align="start" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/>\n
+    </style:style>\n
+    <style:style style:name="Table_20_Contents_20_Right" style:display-name="Table Contents Right" style:family="paragraph" style:parent-style-name="Table_20_Contents_20_Left" style:class="extra">\n
+      <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0.2cm" fo:text-align="end" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/>\n
+    </style:style>\n
+    <style:style style:name="Item_20_Table_20_Title_20_Left" style:display-name="Item Table Title Left" style:family="paragraph" style:parent-style-name="Item_20_Table_20_Title" style:class="extra">\n
+      <style:paragraph-properties fo:margin-left="0.049cm" fo:margin-right="0cm" fo:text-align="start" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/>\n
+    </style:style>\n
+    <style:style style:name="Item_20_Table_20_Title_20_Right" style:display-name="Item Table Title Right" style:family="paragraph" style:parent-style-name="Item_20_Table_20_Title" style:class="extra">\n
+      <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0.049cm" fo:text-align="end" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/>\n
+    </style:style>\n
+    <style:style style:name="Bullet_20_Symbols" style:display-name="Bullet Symbols" style:family="text">\n
+      <style:text-properties style:font-name="StarSymbol" fo:font-size="9pt" style:font-name-asian="StarSymbol" style:font-size-asian="9pt" style:font-name-complex="StarSymbol" style:font-size-complex="9pt"/>\n
+    </style:style>\n
+    <style:style style:name="Footnote_20_Symbol" style:display-name="Footnote Symbol" style:family="text"/>\n
+    <style:style style:name="Endnote_20_Symbol" style:display-name="Endnote Symbol" style:family="text"/>\n
+    <style:style style:name="Graphics" style:family="graphic">\n
+      <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="dynamic" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>\n
+    </style:style>\n
+    <style:style style:name="Header_20_Image" style:display-name="Header Image" style:family="graphic" style:parent-style-name="Graphics">\n
+      <style:graphic-properties svg:width="9.999cm" svg:height="0.049cm" text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0cm" fo:margin-right="0cm" style:run-through="foreground" style:wrap="right" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph" fo:background-color="transparent" style:background-transparency="100%" style:shadow="none">\n
+        <style:background-image/>\n
+        <style:columns fo:column-count="1" fo:column-gap="0cm"/>\n
+      </style:graphic-properties>\n
+    </style:style>\n
+    <text:outline-style>\n
+      <text:outline-level-style text:level="1" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="2" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="3" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="4" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="5" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="6" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="7" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="8" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="9" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+      <text:outline-level-style text:level="10" style:num-format="">\n
+        <style:list-level-properties text:min-label-distance="0.381cm"/>\n
+      </text:outline-level-style>\n
+    </text:outline-style>\n
+    <text:notes-configuration text:note-class="footnote" text:citation-style-name="Footnote_20_Symbol" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="page"/>\n
+    <text:notes-configuration text:note-class="endnote" text:citation-style-name="Endnote_20_Symbol" text:master-page-name="Endnote" style:num-format="1" text:start-value="0"/>\n
+    <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>\n
+  </office:styles>\n
+  <office:automatic-styles>\n
+    <style:style style:name="Tableau4" style:family="table">\n
+      <style:table-properties style:width="19.001cm" table:align="margins" style:shadow="none"/>\n
+    </style:style>\n
+    <style:style style:name="Tableau4.A" style:family="table-column">\n
+      <style:table-column-properties style:column-width="6.334cm" style:rel-column-width="21845*"/>\n
+    </style:style>\n
+    <style:style style:name="Tableau4.B" style:family="table-column">\n
+      <style:table-column-properties style:column-width="6.334cm" style:rel-column-width="21844*"/>\n
+    </style:style>\n
+    <style:style style:name="Tableau4.1" style:family="table-row">\n
+      <style:table-row-properties style:min-row-height="1.723cm"/>\n
+    </style:style>\n
+    <style:style style:name="Tableau4.A1" style:family="table-cell">\n
+      <style:table-cell-properties fo:padding="0.097cm" fo:border="none"/>\n
+    </style:style>\n
+    <style:style style:name="Tableau4.A2" style:family="table-cell">\n
+      <style:table-cell-properties fo:padding="0.097cm" fo:border="none" style:vertical-align="middle"/>\n
+    </style:style>\n
+    <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">\n
+      <style:text-properties style:font-name-asian="DejaVu Sans1" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans1" style:font-size-complex="14pt"/>\n
+    </style:style>\n
+    <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Header_20_right">\n
+      <style:text-properties style:font-name-asian="DejaVu Sans1" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans1" style:font-size-complex="14pt"/>\n
+    </style:style>\n
+    <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Header_20_Image">\n
+      <style:graphic-properties style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>\n
+    </style:style>\n
+    <style:style style:name="gr1" style:family="graphic">\n
+      <style:graphic-properties draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle" style:run-through="foreground" style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="page" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" draw:wrap-influence-on-position="once-concurrent" style:flow-with-text="false"/>\n
+    </style:style>\n
+    <style:page-layout style:name="pm1">\n
+      <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1cm" fo:margin-bottom="1cm" fo:margin-left="1cm" fo:margin-right="1cm" fo:background-color="transparent" style:writing-mode="lr-tb" style:footnote-max-height="0cm">\n
+        <style:background-image/>\n
+        <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>\n
+      </style:page-layout-properties>\n
+      <style:header-style>\n
+        <style:header-footer-properties svg:height="2.200cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.499cm" fo:border="none" fo:padding="0cm" style:shadow="none" style:dynamic-spacing="false"/>\n
+      </style:header-style>\n
+      <style:footer-style>\n
+        <style:header-footer-properties fo:min-height="0.25cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" style:dynamic-spacing="false"/>\n
+      </style:footer-style>\n
+    </style:page-layout>\n
+    <style:page-layout style:name="pm2">\n
+      <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">\n
+        <style:footnote-sep style:adjustment="left" style:rel-width="25%" style:color="#000000"/>\n
+      </style:page-layout-properties>\n
+      <style:header-style/>\n
+      <style:footer-style/>\n
+    </style:page-layout>\n
+  </office:automatic-styles>\n
+  <office:master-styles>\n
+    <style:master-page style:name="Standard" style:page-layout-name="pm1">\n
+      <style:header tal:define="default_language python:test(request.get(\'international_form\'), \'en\', here.Localizer.get_selected_language());\n
+                    date_renderer nocall:here/Base_viewFieldLibrary/my_date/render_pdf;\n
+                    orig_title python: \'Payslip\';\n
+                    en_title python: unicode(here.Base_translateString(orig_title, lang=default_language), \'utf-8\');\n
+                    my_title python: unicode(here.Base_translateString(orig_title), \'utf-8\');\n
+                    orig_period python: \'From ${start_date} to ${stop_date}\';\n
+                    en_period python: unicode(here.Base_translateString(orig_period, lang=default_language,\n
+                                                                mapping = {\'start_date\': date_renderer(here.getStartDate()),\n
+                                                                           \'stop_date\': date_renderer(here.getStopDate())}), \'utf-8\');\n
+                    my_period  python: unicode(here.Base_translateString(orig_period,\n
+                                                                mapping = {\'start_date\': date_renderer(here.getStartDate()),\n
+                                                                           \'stop_date\': date_renderer(here.getStopDate())}), \'utf-8\');\n
+                    image_path python: here.getPortalType().startswith(\'Pay Sheet Transaction\') and data_dict[\'destination_section_image_path\'] or (data_dict[\'destination_decision_image_path\'] or data_dict[\'destination_section_image_path\']);\n
+                    image_width python: here.getPortalType().startswith(\'Pay Sheet Transaction\') and data_dict[\'destination_section_image_width\'] or (data_dict[\'destination_decision_image_width\'] or data_dict[\'destination_section_image_width\']);\n
+                    image_height python: here.getPortalType().startswith(\'Pay Sheet Transaction\') and data_dict[\'destination_section_image_height\'] or (data_dict[\'destination_decision_image_height\'] or data_dict[\'destination_section_image_height\'])">\n
+        <table:table table:name="Tableau4" table:style-name="Tableau4">\n
+          <table:table-column table:style-name="Tableau4.A"/>\n
+          <table:table-column table:style-name="Tableau4.B"/>\n
+          <table:table-column table:style-name="Tableau4.A"/>\n
+          <table:table-row table:style-name="Tableau4.1">\n
+            <table:table-cell table:style-name="Tableau4.A1" office:value-type="string">\n
+              <text:p text:style-name="P1">\n
+                <office:include_img tal:condition="python: image_path and image_width and image_height"\n
+                                    maxwidth="6cm"\n
+                                    maxheight="2cm"\n
+                                    tal:attributes="path image_path;\n
+                                    draw:style-name string:fr1;\n
+                                    draw:z-index string:0;\n
+                                    text:anchor-type string:paragraph;\n
+                                    width image_width;\n
+                                    height image_height"/>\n
+              </text:p>\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name="Tableau4.A2" office:value-type="string">\n
+            </table:table-cell>\n
+            <table:table-cell table:style-name="Tableau4.A1" office:value-type="string">\n
+              <text:p text:style-name="Header_20_Title"\n
+                      tal:content="en_title">\n
+              </text:p>\n
+              <text:p text:style-name="Header_20_right"\n
+                      tal:content="my_title" tal:condition="python: my_title != en_title">\n
+              </text:p>\n
+              <text:p text:style-name="Header_20_right"\n
+                      tal:content="en_period">\n
+              </text:p>\n
+              <text:p text:style-name="Header_20_right"\n
+                      tal:content="my_period" tal:condition="python: my_period != en_period">\n
+              </text:p>\n
+            </table:table-cell>\n
+          </table:table-row>\n
+        </table:table>\n
+      </style:header>\n
+      <style:footer>\n
+        <tal:block metal:use-macro="here/payroll_odt_macro/macros/footer" />\n
+        <text:p text:style-name="Footer">Generated with ERP5 鈥� Open Source ERP suite (www.erp5.org)</text:p>\n
+      </style:footer>\n
+    </style:master-page>\n
+    <style:master-page style:name="Endnote" style:page-layout-name="pm2"/>\n
+  </office:master-styles>\n
+</office:document-styles>\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/vnd.oasis.opendocument.text</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>PaySheetTransaction_viewAsODTStyles</string> </value>
+        </item>
+        <item>
+            <key> <string>ooo_script_name</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>ooo_stylesheet</string> </key>
+            <value> <string>PaySheet_getODTStyleSheet</string> </value>
+        </item>
+        <item>
+            <key> <string>ooo_xml_file_id</string> </key>
+            <value> <string>styles.xml</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.xml
new file mode 100644
index 0000000000..903d3c359b
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.xml
@@ -0,0 +1,268 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="File" module="OFS.Image"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_EtagSupport__etag</string> </key>
+            <value> <string>ts06116239.52</string> </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>PaySheet_getODTStyleSheet</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/octet-stream</string> </value>
+        </item>
+        <item>
+            <key> <string>data</string> </key>
+            <value> <string encoding="base64">UEsDBBQAAAAAACWCdThexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2Fz
+aXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAAAAAAJYJ1OAAAAAAAAAAAAAAAABoAAABDb25maWd1
+cmF0aW9uczIvc3RhdHVzYmFyL1BLAwQUAAgACAAlgnU4AAAAAAAAAAAAAAAAJwAAAENvbmZpZ3Vy
+YXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbAMAUEsHCAAAAAACAAAAAAAAAFBLAwQUAAAA
+AAAlgnU4AAAAAAAAAAAAAAAAGAAAAENvbmZpZ3VyYXRpb25zMi9mbG9hdGVyL1BLAwQUAAAAAAAl
+gnU4AAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRpb25zMi9wb3B1cG1lbnUvUEsDBBQAAAAAACWC
+dTgAAAAAAAAAAAAAAAAcAAAAQ29uZmlndXJhdGlvbnMyL3Byb2dyZXNzYmFyL1BLAwQUAAAAAAAl
+gnU4AAAAAAAAAAAAAAAAGAAAAENvbmZpZ3VyYXRpb25zMi9tZW51YmFyL1BLAwQUAAAAAAAlgnU4
+AAAAAAAAAAAAAAAAGAAAAENvbmZpZ3VyYXRpb25zMi90b29sYmFyL1BLAwQUAAAAAAAlgnU4AAAA
+AAAAAAAAAAAAHwAAAENvbmZpZ3VyYXRpb25zMi9pbWFnZXMvQml0bWFwcy9QSwMEFAAIAAgAJYJ1
+OAAAAAAAAAAAAAAAAAsAAABjb250ZW50LnhtbO1dW3PbuBV+76/gqNNOt7OkeNHFcmPv2LGzyUyS
+dRMn0z55YBKSuSEJBgAtq7++AElJ1IUUAYI2nXgfshFwDvid+wEEKq9+ewgD7R5i4qPopGcZZk+D
+kYs8P5qd9L5cv9GPer+d/uUVmk59Fx57yE1CGFHdRRFl/9cYd0SOs9mTXoKjYwSIT44jEEJyTN1j
+FMNoyXVcpD5On5WNELoIarOnxEVuCh9oXWZOu8ELbus/OSUucnsYzOsyc1qm1CL7FNVlfiCBPkVM
+62EMqL+F4iHwo28nvTtK4+N+fz6fG3PHQHjWtyaTST+dXQF2V3RxgoOUynP7MID8YaRvGVZ/SRtC
+Curi47RFSFES3kJcWzWAgh2rkvtZbY+4n5Woxr0DuLZvpMSb5nW8+uZ1vCJvCOhdiU2O+h/YZPrH
+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</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>size</string> </key>
+            <value> <long>12867</long> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_printAsODT.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_printAsODT.xml
new file mode 100644
index 0000000000..5d6cc89e8b
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_printAsODT.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>if target_language:\n
+  container.REQUEST[\'AcceptLanguage\'].set(target_language, 10)\n
+\n
+return context.PaySheetTransaction_viewAsODT(format=format)\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>target_language=\'\', format=\'pdf\'</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>2</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>target_language</string>
+                            <string>format</string>
+                            <string>_getattr_</string>
+                            <string>_getitem_</string>
+                            <string>container</string>
+                            <string>context</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <tuple>
+                <string></string>
+                <string>pdf</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>PaySheet_printAsODT</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog.xml
new file mode 100644
index 0000000000..134f0812a6
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ERP5Form" module="Products.ERP5Form.Form"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary/>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>PaySheet_printAsODT</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>edit_order</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string>multipart/form-data</string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+                <string>right</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list>
+                        <string>your_target_language</string>
+                        <string>your_international_form</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>right</string> </key>
+                    <value>
+                      <list>
+                        <string>your_format</string>
+                      </list>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>PaySheet_viewODTPrintDialog</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>Base_viewODTPrintDialog</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_dialog</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Print Pay Sheet</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_format.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_format.xml
new file mode 100644
index 0000000000..2a406bc480
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_format.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>items</string>
+                <string>enabled</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_format</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>items</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string>printing format</string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>your_format</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewDialogFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>items</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Format</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python: here.Base_getConversionFormatItemList(base_content_type=\'application/vnd.oasis.opendocument.text\')</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_international_form.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_international_form.xml
new file mode 100644
index 0000000000..7d0579f65d
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_international_form.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="CheckBoxField" module="Products.Formulator.StandardFields"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_international_form</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string>Include english and translated version of all terms.</string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>International Form</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_target_language.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_target_language.xml
new file mode 100644
index 0000000000..6760d967c7
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog/your_target_language.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_target_language</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>your_target_language</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewDialogFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/payroll_odt_macro.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/payroll_odt_macro.xml
new file mode 100644
index 0000000000..9a22b3325e
--- /dev/null
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/payroll_odt_macro.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<!-- This macro is inclued in PaySheetTransaction_viewAsODT if no localized\n
+macro is found. It\'s used to display description field -->\n
+\n
+<tal:block\n
+  xmlns:draw=\'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\'\n
+  xmlns:office=\'urn:oasis:names:tc:opendocument:xmlns:office:1.0\' \n
+  xmlns:text=\'urn:oasis:names:tc:opendocument:xmlns:text:1.0\'\n
+  xmlns:ooo=\'http://openoffice.org/2004/office\'\n
+  xmlns:number=\'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\'\n
+  xmlns:dc=\'http://purl.org/dc/elements/1.1/\'\n
+  xmlns:meta=\'urn:oasis:names:tc:opendocument:xmlns:meta:1.0\'\n
+  xmlns:table=\'urn:oasis:names:tc:opendocument:xmlns:table:1.0\'\n
+  xmlns:dr3d=\'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\'\n
+  xmlns:fo=\'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\' \n
+  xmlns:style=\'urn:oasis:names:tc:opendocument:xmlns:style:1.0\'\n
+  xmlns:xforms=\'http://www.w3.org/2002/xforms\'\n
+  xmlns:form=\'urn:oasis:names:tc:opendocument:xmlns:form:1.0\'\n
+  xmlns:script=\'urn:oasis:names:tc:opendocument:xmlns:script:1.0\' \n
+  xmlns:ooow=\'http://openoffice.org/2004/writer\'\n
+  xmlns:svg=\'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\'\n
+  xmlns:chart=\'urn:oasis:names:tc:opendocument:xmlns:chart:1.0\'\n
+  xmlns:dom=\'http://www.w3.org/2001/xml-events\'\n
+  xmlns:xlink=\'http://www.w3.org/1999/xlink\'\n
+  xmlns:xsd=\'http://www.w3.org/2001/XMLSchema\'\n
+  xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\'\n
+  xmlns:oooc=\'http://openoffice.org/2004/calc\'\n
+  xmlns:math=\'http://www.w3.org/1998/Math/MathML\'\n
+  xmlns:tal=\'http://xml.zope.org/namespaces/tal\'\n
+  xmlns:i18n=\'http://xml.zope.org/namespaces/i18n\'\n
+  xmlns:metal=\'http://xml.zope.org/namespaces/metal\'>\n
+  <tal:block metal:define-macro="other_informations">\n
+    <table:table-row table:style-name=\'Tableau3.6\'>\n
+      <table:table-cell table:style-name=\'Tableau3.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Notes; orig_message python:unicode(here.Base_translateString(orig_string, lang=default_language),"utf-8"); translated_message python:unicode(here.Base_translateString(orig_string),"utf-8")\'>\n
+        <text:p text:style-name=\'P2\'><span tal:replace=\'orig_message\'/>\n
+          <span tal:omit-tag=\'\' tal:condition=\'python:translated_message != orig_message\'> / <span tal:replace=\'translated_message\'/></span>:</text:p>\n
+      </table:table-cell>\n
+      <table:table-cell table:style-name=\'Tableau3.B6\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'Table_20_Contents\'/>\n
+      </table:table-cell>\n
+      <table:table-cell table:style-name=\'Tableau3.B6\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'Table_20_Contents\'/>\n
+      </table:table-cell>\n
+      <table:table-cell table:style-name=\'Tableau3.B6\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'Table_20_Contents\'/>\n
+      </table:table-cell>\n
+      <table:table-cell table:style-name=\'Tableau3.E6\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'Table_20_Contents\'/>\n
+      </table:table-cell>\n
+    </table:table-row>\n
+    <table:table-row table:style-name=\'Tableau3.7\'>\n
+      <table:table-cell table:style-name=\'Tableau3.A7\' table:number-columns-spanned=\'5\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'P3\'><tal:block tal:repeat="line data_dict/description"><tal:block\n
+                tal:replace="line"/><text:line-break tal:condition="not:repeat/line/end"/></tal:block>\n
+      </text:p>\n
+      </table:table-cell>\n
+      <table:covered-table-cell/>\n
+      <table:covered-table-cell/>\n
+      <table:covered-table-cell/>\n
+      <table:covered-table-cell/>\n
+    </table:table-row>\n
+  </tal:block>\n
+\n
+  <tal:block metal:define-macro="footer">\n
+    <text:p />\n
+  </tal:block>\n
+</tal:block>\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/vnd.oasis.opendocument.text</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>payroll_odt_macro</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll/bt/change_log b/bt5/erp5_payroll/bt/change_log
index 505e2cd745..62e52817c4 100644
--- a/bt5/erp5_payroll/bt/change_log
+++ b/bt5/erp5_payroll/bt/change_log
@@ -1,3 +1,9 @@
+2009-03-10 fabien
+* fix some minor problems
+* add a default action on Pay Sheet Transaction portal type to be able to print a Payslip
+* add AsODT and AsODTStyles files
+* increment version number because of the new style of the payslip
+
 2009-02-26 fabien
 * update PaySheetTransaction_view and PaySheetModel_view to display payment_condition_payment_date only if cutom payment_condition_trade_date is selected.
 
diff --git a/bt5/erp5_payroll/bt/revision b/bt5/erp5_payroll/bt/revision
index ac471d3ba0..755152b7ef 100644
--- a/bt5/erp5_payroll/bt/revision
+++ b/bt5/erp5_payroll/bt/revision
@@ -1 +1 @@
-355
\ No newline at end of file
+359
\ No newline at end of file
diff --git a/bt5/erp5_payroll/bt/template_action_path_list b/bt5/erp5_payroll/bt/template_action_path_list
index 8dcb20d502..bc8b1e78a5 100644
--- a/bt5/erp5_payroll/bt/template_action_path_list
+++ b/bt5/erp5_payroll/bt/template_action_path_list
@@ -22,6 +22,7 @@ Pay Sheet Transaction | accounting_lines
 Pay Sheet Transaction | annotation_lines
 Pay Sheet Transaction | apply_model
 Pay Sheet Transaction | calcul
+Pay Sheet Transaction | pay_sheet_print
 Pay Sheet Transaction | view
 Pay Sheet Transaction | view_payment
 Pay Sheet Transaction | view_profile
diff --git a/bt5/erp5_payroll/bt/version b/bt5/erp5_payroll/bt/version
index 42f7d2336e..616187889b 100644
--- a/bt5/erp5_payroll/bt/version
+++ b/bt5/erp5_payroll/bt/version
@@ -1 +1 @@
-2.1
\ No newline at end of file
+2.2
\ No newline at end of file
-- 
2.30.9