[Erp5-report] r25933 - in /erp5/trunk/bt5/erp5_payroll_l10n_fr: PathTemplateItem/portal_cat...

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Mar 10 10:31:26 CET 2009


Author: fabien
Date: Tue Mar 10 10:31:25 2009
New Revision: 25933

URL: http://svn.erp5.org?rev=25933&view=rev
Log:
2009-03-10 fabien
* rename salaire_net_imposabe base_amount into taxable_net_pay
* add a macro used to display localised information in a part of the payslip
* increment version number because of the new style of the payslip

Added:
    erp5/trunk/bt5/erp5_payroll_l10n_fr/PathTemplateItem/portal_categories/base_amount/taxable_net_pay.xml
    erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml
    erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml
Modified:
    erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateSlice.xml
    erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/change_log
    erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/revision
    erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/template_path_list
    erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/version

Added: erp5/trunk/bt5/erp5_payroll_l10n_fr/PathTemplateItem/portal_categories/base_amount/taxable_net_pay.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/PathTemplateItem/portal_categories/base_amount/taxable_net_pay.xml?rev=25933&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/PathTemplateItem/portal_categories/base_amount/taxable_net_pay.xml (added)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/PathTemplateItem/portal_categories/base_amount/taxable_net_pay.xml [utf8] Tue Mar 10 10:31:25 2009
@@ -1,0 +1,58 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="Category" module="Products.ERP5Type.Document.Category"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>base_amount/taxable_net_pay</string>
+                <string>base_amount/taxable_net_pay</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>codification</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>taxable_net_pay</string> </value>
+        </item>
+        <item>
+            <key> <string>int_index</string> </key>
+            <value> <int>102</int> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Category</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Taxable Net Pay</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Added: erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml?rev=25933&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml (added)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml [utf8] Tue Mar 10 10:31:25 2009
@@ -1,0 +1,372 @@
+<?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
+quantity_renderer = context.Base_viewFieldLibrary.my_money_quantity.render_pdf\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 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 and career_title != \'default_career\':\n
+    s += \'%s: %s\' % (translateString(\'Career Title\'), career_title)\n
+  return s\n
+\n
+def getCollectiveAgreementId(collective_agreement):\n
+  s = \'\'\n
+  if collective_agreement:\n
+    s += \'%s: %s\' % (translateString(\'Collective Agreement\'), collective_agreement)\n
+  return s\n
+\n
+def getSalaryLevelId(salary_level):\n
+  s = \'\'\n
+  if salary_level:\n
+    s += \'%s: %s\' % (translateString(\'Salary Level\'), salary_level)\n
+  return s\n
+\n
+def getCareerCoefficientId(career_coefficient):\n
+  s = \'\'\n
+  if career_coefficient:\n
+    s += \'%s: %s\' % (translateString(\'Salary Coefficient\'), career_coefficient)\n
+  return s\n
+\n
+def getHiringDateId(date):\n
+  s = \'\'\n
+  if date:\n
+    s += \'%s: %s\' % (translateString(\'Hiring Date\'), date)\n
+  return s\n
+\n
+def getPriceCurrencyId(currency):\n
+  s = \'\'\n
+  if currency:\n
+    s += \'%s: %s\' % (translateString(\'Price Currency\'), currency)\n
+  return s\n
+\n
+taxable_net_pay = context.PaySheetTransaction_getMovementTotalPriceFromCategory(\\\n
+    base_contribution=\'base_contribution/base_amount/taxable_net_pay\',\n
+    tax_category=\'tax_category/employee_share\')\n
+def getTaxableNetPayId(taxable_net_pay):\n
+  s = \'\'\n
+  if taxable_net_pay:\n
+    s += \'%s: %s\' % (translateString(\'Taxable Net Pay\'), taxable_net_pay)\n
+  return s\n
+\n
+total_employee_tax = context.PaySheetTransaction_getMovementTotalPriceFromCategory(\\\n
+    base_contribution=\'base_contribution/base_amount/total_deductions\',\n
+    tax_category=\'tax_category/employee_share\')\n
+def getTotalEmployeeTaxId(total_employee_tax):\n
+  s = \'\'\n
+  if total_employee_tax:\n
+    s += \'%s: %s\' % (translateString(\'Total Employee Tax\'),\n
+        quantity_renderer(total_employee_tax))\n
+  return s\n
+\n
+total_employer_tax = context.PaySheetTransaction_getMovementTotalPriceFromCategory(\\\n
+    base_contribution=\'base_contribution/base_amount/total_deductions\',\n
+    tax_category=\'tax_category/employer_share\')\n
+def getTotalEmployerTaxId(total_employer_tax):\n
+  s = \'\'\n
+  if total_employer_tax:\n
+    s += \'%s: %s\' % (translateString(\'Total Employer Tax\'),\n
+        quantity_renderer(total_employer_tax))\n
+  return s\n
+\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(paysheet):\n
+  date = \'\'\n
+  if paysheet.getProperty(\'default_payment_condition_payment_date\'):\n
+    date = getOrderedDate(paysheet.getProperty(\'default_payment_condition_payment_date\'))\n
+  if paysheet.getPaymentConditionPaymentEndOfMonth():\n
+    date = translateString("End of Month")\n
+  days = paysheet.getPaymentConditionPaymentTerm()\n
+  if days:\n
+    date = \'%s %s\' % (days, translateString(\'Days\'))\n
+\n
+  if date:\n
+    if paysheet.getProperty(\'default_payment_condition_payment_mode_title\'):\n
+      return \'%s: %s\' % (translateString(\'Payment\'),\n
+          translateString(\'${payment_mode} at ${payment_date}\', \n
+            mapping = {\'payment_mode\': paysheet.getProperty(\'default_payment_condition_payment_mode_title\'),\n
+                       \'payment_date\':date}))\n
+    else:\n
+      return \'%s: %s %s\' % (translateString(\'Payment\'),\n
+          translateString(\'at\'),\n
+          date)\n
+  return \'\'\n
+\n
+gross_salary = context.PaySheetTransaction_getMovementTotalPriceFromCategory(\\\n
+    base_contribution=\'base_contribution/base_amount/gross_salary\',\n
+    tax_category=\'tax_category/employee_share\')\n
+year_to_date_gross_salary = context.PaySheetTransaction_getYearToDateBaseContributionTotalPrice(\\\n
+    paysheet=context, base_contribution_list=\'gross_salary\') + gross_salary\n
+\n
+year_to_date_slice_a = context.PaySheetTransaction_getYearToDateSlice(\'salary_range/france/tranche_a\')\n
+\n
+worked_hour_count = context.getWorkTimeAnnotationLineQuantity() and\\\n
+    context.getWorkTimeAnnotationLineQuantity(0)\n
+year_to_date_worked_hour_count = worked_hour_count + \\\n
+    context.PaySheetTransaction_getYearToDateWorkTimeSalary() or 0\n
+    \n
+\n
+over_time_small_rate = context.getAnnotationLineFromReference(reference=\'overtime_small_rate\')\n
+over_time_big_rate = context.getAnnotationLineFromReference(reference=\'overtime_big_rate\')\n
+bonus_worked_hour_count = over_time_small_rate is not None and \\\n
+    over_time_big_rate is not None and \\\n
+    over_time_small_rate.getQuantity() + over_time_big_rate.getQuantity() or 0\n
+year_to_date_bonus_worked_hour_count = bonus_worked_hour_count + \\\n
+    context.PaySheetTransaction_getYearToDateOvertimeHours() or 0\n
+\n
+year_to_date_bonus_worked_hour_amount = context.PaySheetTransaction_getYearToDateBaseContributionTotalPrice(\\\n
+    paysheet=context, base_contribution_list=\'overtime\') + \\\n
+    context.PaySheetTransaction_getMovementTotalPriceFromCategory(\\\n
+    base_contribution=\'base_contribution/base_amount/overtime\', \\\n
+    tax_category=\'tax_category/employee_share\') or 0\n
+\n
+taxable_net_pay = context.PaySheetTransaction_getMovementTotalPriceFromCategory(\\\n
+    base_contribution=\'base_contribution/base_amount/taxable_net_pay\',\n
+    tax_category=\'tax_category/employee_share\')\n
+year_to_date_taxable_net_salary = context.PaySheetTransaction_getYearToDateBaseContributionTotalPrice(\\\n
+    paysheet=context, base_contribution_list=\'taxable_net_pay\') + taxable_net_pay\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
+source_section = context.getSourceSectionValue()\n
+\n
+data_dict = {\n
+  \'source_section_title\': source_section.getProperty(\'corporate_name\') or\\\n
+                            source_section.getTitle(),\n
+  \'source_section_career_title\': getCareerId(context.getSourceSectionValue() is not None\\\n
+          and source_section.getProperty(\'default_career_title\') or \'\'),\n
+  \'source_section_default_career_start_date\': getHiringDateId(context.getSourceSectionValue() is not None\\\n
+          and getOrderedDate(source_section.getProperty(\'default_career_start_date\')) or \'\'),\n
+  \'source_section_default_career_stop_date\': context.getSourceSectionValue() is not None\\\n
+          and getOrderedDate(source_section.getProperty(\'default_career_stop_date\')) or \'\',\n
+  \'source_section_default_career_coefficient\' : getCareerCoefficientId(context.getSourceSectionValue() is not None\\\n
+          and source_section.getProperty(\'career_salary_coefficient\') or \'\'),\n
+  \'source_section_default_career_salary_level\' : getSalaryLevelId(context.getSourceSectionValue() is not None\\\n
+          and source_section.getProperty(\'default_career_salary_level\') or \'\'),\n
+  \'source_section_default_career_social_code\' : getSocialCodeId(context.getSourceSection() and\n
+      context.getSourceSectionValue().getProperty(\'social_code\') or \'\'),\n
+  \'source_section_default_career_collective_agreement_title\' : getCollectiveAgreementId(context.getSourceSectionValue() is not None\\\n
+          and source_section.getProperty(\'default_career_collective_agreement_title\') or \'\'),\n
+  \'default_payment_condition_payment_text\' : context.getDefaultPaymentConditionValue() is not None\\\n
+          and getPaymentConditionText(context) or \'\',\n
+  \'price_currency\': getPriceCurrencyId(context.getPriceCurrencyReference() or \'\'),\n
+  \'year\': str(context.getStartDate() is not None and context.getStartDate().year() or \'\'),\n
+  \'description\': getFieldAsLineList(context.getDescription() or\n
+                 getPropertyFromModel(model, \'description\') or \'\'),\n
+  \'year_to_date_gross_salary\': year_to_date_gross_salary,\n
+  \'year_to_date_slice_a\': year_to_date_slice_a,\n
+  \'year_to_date_worked_hour_count\': year_to_date_worked_hour_count,\n
+  \'year_to_date_bonus_worked_hour_count\': year_to_date_bonus_worked_hour_count,\n
+  \'year_to_date_bonus_worked_hour_amount\': year_to_date_bonus_worked_hour_amount,\n
+  \'year_to_date_taxable_net_salary\': year_to_date_taxable_net_salary,\n
+  \'worked_hour_count\': worked_hour_count,\n
+  \'bonus_worked_hour_count\': bonus_worked_hour_count,\n
+  \'absence_hour_count\': 0, #XXX currently absence hour are not take into \n
+                           # account in payroll\n
+  \'taxable_net_pay\': getTaxableNetPayId(taxable_net_pay),\n
+  \'total_employee_tax\': getTotalEmployeeTaxId(total_employee_tax),\n
+  \'total_employer_tax\': getTotalEmployerTaxId(total_employer_tax),\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>quantity_renderer</string>
+                            <string>model</string>
+                            <string>getPropertyFromModel</string>
+                            <string>getFieldAsLineList</string>
+                            <string>getFieldAsString</string>
+                            <string>getSocialCodeId</string>
+                            <string>getCareerId</string>
+                            <string>getCollectiveAgreementId</string>
+                            <string>getSalaryLevelId</string>
+                            <string>getCareerCoefficientId</string>
+                            <string>getHiringDateId</string>
+                            <string>getPriceCurrencyId</string>
+                            <string>taxable_net_pay</string>
+                            <string>getTaxableNetPayId</string>
+                            <string>total_employee_tax</string>
+                            <string>getTotalEmployeeTaxId</string>
+                            <string>total_employer_tax</string>
+                            <string>getTotalEmployerTaxId</string>
+                            <string>preferred_date_order</string>
+                            <string>separator</string>
+                            <string>getOrderedDate</string>
+                            <string>getPaymentConditionText</string>
+                            <string>gross_salary</string>
+                            <string>year_to_date_gross_salary</string>
+                            <string>year_to_date_slice_a</string>
+                            <string>worked_hour_count</string>
+                            <string>year_to_date_worked_hour_count</string>
+                            <string>over_time_small_rate</string>
+                            <string>over_time_big_rate</string>
+                            <string>None</string>
+                            <string>bonus_worked_hour_count</string>
+                            <string>year_to_date_bonus_worked_hour_count</string>
+                            <string>year_to_date_bonus_worked_hour_amount</string>
+                            <string>year_to_date_taxable_net_salary</string>
+                            <string>unicodeDict</string>
+                            <string>source_section</string>
+                            <string>str</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_getOtherInformationsDataDict</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Modified: erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateSlice.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateSlice.xml?rev=25933&r1=25932&r2=25933&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateSlice.xml [utf8] (original)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateSlice.xml [utf8] Tue Mar 10 10:31:25 2009
@@ -83,7 +83,7 @@
 slice = model.getCell(slice_path)\n
 \n
 if not slice:\n
-  return None\n
+  return 0.0\n
 \n
 plafond = slice.getQuantityRangeMax()\n
 \n
@@ -165,13 +165,13 @@
                             <string>yearly_slice_amount</string>
                             <string>model</string>
                             <string>slice</string>
-                            <string>None</string>
                             <string>plafond</string>
                             <string>gross_salary</string>
                             <string>slice_amount</string>
                             <string>_inplacevar_</string>
                             <string>_getiter_</string>
                             <string>paysheet</string>
+                            <string>None</string>
                           </tuple>
                         </value>
                     </item>

Added: erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml?rev=25933&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml (added)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml [utf8] Tue Mar 10 10:31:25 2009
@@ -1,0 +1,402 @@
+<?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[
+
+<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
+             tal:define="data_dict here/PaySheetTransaction_getOtherInformationsDataDict;\n
+             hour_renderer nocall:here/AnnotationLine_viewFieldLibrary/my_work_time_annotation_line_quantity/render_pdf;">\n
+    <table:table-row table:style-name=\'Tableau3.8\'>\n
+      <table:table-cell table:style-name=\'Tableau3.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=\'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.3\'>\n
+      <table:table-cell table:style-name=\'Tableau3.A7\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/source_section_career_title\'\n
+                tal:content=\'python:data_dict["source_section_career_title"]\'>Réceptionniste</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/source_section_default_career_start_date\'\n
+                tal:content=\'python:data_dict["source_section_default_career_start_date"]\'>12/09/2005</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/source_section_default_career_coefficient\'\n
+                tal:content=\'python:data_dict["source_section_default_career_coefficient"]\'>100</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/source_section_default_career_salary_level\'\n
+                tal:content=\'python:data_dict["source_section_default_career_salary_level"]\'>1.2</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/source_section_default_career_social_code\'\n
+                tal:content=\'python:data_dict["source_section_default_career_social_code"]\'>185897778270987</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/source_section_default_career_collective_agreement_title\'\n
+                tal:content=\'python:data_dict["source_section_default_career_collective_agreement_title"]\'>Syntec</text:p>\n
+      </table:table-cell>\n
+      <table:table-cell table:style-name=\'Tableau3.A7\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'\n
+        tal:content="python: here.Base_translateString(\'Attendance\')"></text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+        tal:content="python: \'%s: %s\' % (here.Base_translateString(\'Normal working hours\'), hour_renderer(data_dict[\'worked_hour_count\']) or \'0\')"></text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+        tal:content="python: \'%s: %s\' % (here.Base_translateString(\'Overtime\'), hour_renderer(data_dict[\'bonus_worked_hour_count\']) or \'0\')"></text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+        tal:content="python: \'%s: %s\' % (here.Base_translateString(\'Absence hours\'), hour_renderer(data_dict[\'absence_hour_count\']) or \'0\')"></text:p>\n
+      </table:table-cell>\n
+      <table:table-cell table:style-name=\'Tableau3.A7\' office:value-type=\'string\'>\n
+        <text:p text:style-name=\'Item_20_Table_20_Title_20_Left\'\n
+        tal:content="python: here.Base_translateString(\'Paid vacation (in days)\')"></text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+        tal:content="python: \'%s: %s\' % (here.Base_translateString(\'Earned on this period\'), \'\')"></text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+        tal:content="python: \'%s: %s\' % (here.Base_translateString(\'Taken on this period\'), \'\')"></text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+        tal:content="python: \'%s: %s\' % (here.Base_translateString(\'Remaining\'), \'\')"></text:p>\n
+      </table:table-cell>\n
+      <table:table-cell table:style-name=\'Tableau3.A7\' \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/price_currency\'\n
+                tal:content=\'python:data_dict["price_currency"]\'>FCFA</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/default_payment_condition_payment_text\'\n
+                tal:content=\'python:data_dict["default_payment_condition_payment_text"]\'>Payement: Chèque le 01/12/2009</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/taxable_net_pay\'\n
+                tal:content=\'python:data_dict["taxable_net_pay"]\'>Salaire net imposable: 200 000</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/total_employee_tax\'\n
+                tal:content=\'python:data_dict["total_employee_tax"]\'>Total cotisation employé: 200 000</text:p>\n
+        <text:p text:style-name=\'Table_20_Contents_20_Left\'\n
+                tal:condition=\'data_dict/total_employer_tax\'\n
+                tal:content=\'python:data_dict["total_employer_tax"]\'>Total cotisation employeur: 200 000</text:p>\n
+      </table:table-cell>\n
+      <table:covered-table-cell/>\n
+    </table:table-row>\n
+    <table:table-row table:style-name=\'Tableau1.4\'>\n
+        <table:table-cell table:style-name=\'Tableau1.A4\' \n
+                          office:value-type=\'string\' table:number-columns-spanned=\'5\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\'></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
+    <table:table-row table:style-name=\'Tableau1.4\'>\n
+        <table:table-cell table:style-name=\'Tableau1.A7\' \n
+                          office:value-type=\'string\' table:number-columns-spanned=\'5\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\'></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
+\n
+\n
+\n
+\n
+    <table:table-row table:style-name=\'Tableau1.5\'>\n
+      <table:table-cell table:style-name=\'Tableau1.A5\'\n
+                        table:number-columns-spanned=\'5\' office:value-type=\'string\'>\n
+        <table:table table:style-name=\'Tableau4\' table: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.C\'/>\n
+          <table:table-column table:style-name=\'Tableau4.D\'/>\n
+          <table:table-column table:style-name=\'Tableau4.E\'/>\n
+          <table:table-column table:style-name=\'Tableau4.F\'/>\n
+          <table:table-row>\n
+            <table:table-cell table:style-name=\'Tableau1.A2\' office:value-type=\'string\' table:number-columns-spanned=\'6\'>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\'>\n
+                <tal:block i18n:translate="">Cumuls Annuels </tal:block>\n
+                <tal:block tal:condition="python: data_dict[\'year\']" tal:content="python: \'(%s)\' % data_dict[\'year\']"/>\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
+          <table:table-row>\n
+            <table:table-cell table:style-name=\'Tableau1.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Gross Salary; 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\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\' 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.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Tranche A; 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\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\' 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.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Heures Normales; 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\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\' 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.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Heures supp.; 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\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\' 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.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Rémunération Heures supp.; 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\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\' 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.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Net Imposable.; 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\'><span tal:replace=\'orig_message\'/></text:p>\n
+              <text:p text:style-name=\'Item_20_Table_20_Title\' tal:condition=\'python:translated_message != orig_message\'><span tal:replace=\'translated_message\'/></text:p>\n
+            </table:table-cell>\n
+          </table:table-row>\n
+\n
+          <table:table-row table:style-name=\'Tableau1.3\' \n
+              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.A3\'\n
+                              office:value-type=\'float\'\n
+                              tal:condition="python: data_dict[\'year_to_date_gross_salary\']"\n
+                              tal:attributes=\'office:value data_dict/year_to_date_gross_salary\'> \n
+              <text:p text:style-name=\'Table_20_Contents\'\n
+                      tal:content="python: quantity_renderer(data_dict[\'year_to_date_gross_salary\'])"\n
+                      tal:attributes=\'text:style-name right_style_name\'>300000</text:p>\n
+            </table:table-cell> \n
+            <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                              office:value-type=\'string\'\n
+                              tal:condition="python: not data_dict[\'year_to_date_gross_salary\']"> \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: data_dict[\'year_to_date_slice_a\']"\n
+                              tal:attributes=\'office:value data_dict/year_to_date_slice_a\'> \n
+              <text:p text:style-name=\'Table_20_Contents\'\n
+                      tal:content="python: quantity_renderer(data_dict[\'year_to_date_slice_a\'])"\n
+                      tal:attributes=\'text:style-name right_style_name\'>300000</text:p>\n
+            </table:table-cell> \n
+            <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                              office:value-type=\'string\'\n
+                              tal:condition="python: not data_dict[\'year_to_date_slice_a\']"> \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: data_dict[\'year_to_date_worked_hour_count\']"\n
+                              tal:attributes=\'office:value data_dict/year_to_date_worked_hour_count\'> \n
+              <text:p text:style-name=\'Table_20_Contents\'\n
+                      tal:content="python: hour_renderer(data_dict[\'year_to_date_worked_hour_count\'])"\n
+                      tal:attributes=\'text:style-name right_style_name\'>300000</text:p>\n
+            </table:table-cell> \n
+            <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                              office:value-type=\'string\'\n
+                              tal:condition="python: not data_dict[\'year_to_date_worked_hour_count\']"> \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: data_dict[\'year_to_date_bonus_worked_hour_count\']"\n
+                              tal:attributes=\'office:value data_dict/year_to_date_bonus_worked_hour_count\'> \n
+              <text:p text:style-name=\'Table_20_Contents\'\n
+                      tal:content="python: hour_renderer(data_dict[\'year_to_date_bonus_worked_hour_count\'])"\n
+                      tal:attributes=\'text:style-name right_style_name\'>300000</text:p>\n
+            </table:table-cell> \n
+            <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                              office:value-type=\'string\'\n
+                              tal:condition="python: not data_dict[\'year_to_date_bonus_worked_hour_count\']"> \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: data_dict[\'year_to_date_bonus_worked_hour_amount\']"\n
+                              tal:attributes=\'office:value data_dict/year_to_date_bonus_worked_hour_amount\'> \n
+              <text:p text:style-name=\'Table_20_Contents\'\n
+                      tal:content="python: quantity_renderer(data_dict[\'year_to_date_bonus_worked_hour_amount\'])"\n
+                      tal:attributes=\'text:style-name right_style_name\'>300000</text:p>\n
+            </table:table-cell> \n
+            <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                              office:value-type=\'string\'\n
+                              tal:condition="python: not data_dict[\'year_to_date_bonus_worked_hour_amount\']"> \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: data_dict[\'year_to_date_taxable_net_salary\']"\n
+                              tal:attributes=\'office:value data_dict/year_to_date_taxable_net_salary\'> \n
+              <text:p text:style-name=\'Table_20_Contents\'\n
+                      tal:content="python: quantity_renderer(data_dict[\'year_to_date_taxable_net_salary\'])"\n
+                      tal:attributes=\'text:style-name right_style_name\'>300000</text:p>\n
+            </table:table-cell> \n
+            <table:table-cell table:style-name=\'Tableau1.A3\'\n
+                              office:value-type=\'string\'\n
+                              tal:condition="python: not data_dict[\'year_to_date_taxable_net_salary\']"> \n
+              <text:p text:style-name=\'Table_20_Contents\'/>\n
+            </table:table-cell>\n
+\n
+          </table:table-row>\n
+          <table:table-row table:style-name=\'Tableau1.4\' >\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-row>\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:table-row>\n
+    <table:table-row table:style-name=\'Tableau3.6\' tal:condition="data_dict/description">\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\' tal:condition="data_dict/description">\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:covered-table-cell/>\n
+    </table:table-row>\n
+\n
+  </tal:block>\n
+\n
+\n
+\n
+  <tal:block metal:define-macro="footer">\n
+    <text:p text:style-name="Footer">Dans votre intérêt et pour vous aider à faire valoir vos droits, conservez ce bulletin de paie sans limitation de durée.</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>

Modified: erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/change_log
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/change_log?rev=25933&r1=25932&r2=25933&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/change_log [utf8] (original)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/change_log [utf8] Tue Mar 10 10:31:25 2009
@@ -1,3 +1,8 @@
+2009-03-10 fabien
+* rename salaire_net_imposabe base_amount into taxable_net_pay
+* add a macro used to display localised information in a part of the payslip
+* increment version number because of the new style of the payslip
+
 2009-01-28 fabien
 * add salaire_net_imposable base_amount category
 

Modified: erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/revision?rev=25933&r1=25932&r2=25933&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/revision [utf8] (original)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/revision [utf8] Tue Mar 10 10:31:25 2009
@@ -1,1 +1,1 @@
-79
+84

Modified: erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/template_path_list
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/template_path_list?rev=25933&r1=25932&r2=25933&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/template_path_list [utf8] (original)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/template_path_list [utf8] Tue Mar 10 10:31:25 2009
@@ -1,5 +1,5 @@
 portal_categories/base_amount/base_csg
-portal_categories/base_amount/salaire_net_imposable
+portal_categories/base_amount/taxable_net_pay
 portal_categories/salary_range/france
 portal_categories/salary_range/france/tranche_1
 portal_categories/salary_range/france/tranche_2

Modified: erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/version
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/version?rev=25933&r1=25932&r2=25933&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/version [utf8] (original)
+++ erp5/trunk/bt5/erp5_payroll_l10n_fr/bt/version [utf8] Tue Mar 10 10:31:25 2009
@@ -1,1 +1,1 @@
-0.1
+0.2




More information about the Erp5-report mailing list