From c80cf7a46d59b0d7127a20585d708bb3bb51c2e5 Mon Sep 17 00:00:00 2001
From: Nicolas Wavrant <nicolas.wavrant@nexedi.com>
Date: Mon, 26 Oct 2015 15:41:22 +0000
Subject: [PATCH] erp5_payroll_l10n_fr : adds year-to-date employer taxes to
 payslip's footer

---
 ...ansaction_getOtherInformationsDataDict.xml |   7 ++
 ...arToDateMovementTotalPriceFromCategory.xml | 102 ++++++++++++++++++
 .../payroll_odt_macro.xml                     |  10 +-
 bt5/erp5_payroll_l10n_fr/bt/version           |   2 +-
 4 files changed, 115 insertions(+), 6 deletions(-)
 create mode 100644 bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateMovementTotalPriceFromCategory.xml

diff --git a/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml b/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml
index bdbc457cff..60300762fd 100644
--- a/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml
+++ b/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getOtherInformationsDataDict.xml
@@ -130,6 +130,7 @@ total_employee_tax = getMovementTotalPriceFromCategory(\\\n
     include_empty_contribution=False,\n
     excluded_reference_list=[\'ticket_restaurant\',],\n
     contribution_share=\'contribution_share/employee\')\n
+\n
 def getTotalEmployeeTaxId(total_employee_tax):\n
   s = \'\'\n
   if total_employee_tax:\n
@@ -149,6 +150,11 @@ def getTotalEmployerTaxId(total_employer_tax):\n
         quantity_renderer(total_employer_tax*-1))\n
   return s\n
 \n
+year_to_date_total_employer_tax = paysheet.PaySheetTransaction_getYearToDateMovementTotalPriceFromCategory(\\\n
+    no_base_contribution=True,\n
+    include_empty_contribution=False,\n
+    excluded_reference_list=[\'ticket_restaurant\',],\n
+    contribution_share=\'contribution_share/employer\')\n
 \n
 preferred_date_order = portal.portal_preferences\\\n
                        .getPreferredDateOrder() or \'ymd\'\n
@@ -254,6 +260,7 @@ data_dict = {\n
   \'salaire_net_imposable\': getTaxableNetPayId(salaire_net_imposable),\n
   \'total_employee_tax\': getTotalEmployeeTaxId(total_employee_tax),\n
   \'total_employer_tax\': getTotalEmployerTaxId(total_employer_tax),\n
+  \'year_to_date_total_employer_tax\': year_to_date_total_employer_tax,\n
 }\n
 \n
 return unicodeDict(data_dict)\n
diff --git a/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateMovementTotalPriceFromCategory.xml b/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateMovementTotalPriceFromCategory.xml
new file mode 100644
index 0000000000..c3ac6293b1
--- /dev/null
+++ b/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/PaySheetTransaction_getYearToDateMovementTotalPriceFromCategory.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </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>\'\'\'\n
+This script will call the PaySheetTransaction_getMovementTotalPriceFromCategory\n
+script to get the year to date summed amount of paysheet lines wich category of\n
+category_list parameter is in variation_category_list of the PaySheet line and \n
+wich has a base_contribution in the base_contribution_list\n
+\'\'\'\n
+\n
+portal = context.getPortalObject()\n
+accounting_module = portal.accounting_module\n
+\n
+from_date=DateTime(context.getStartDate().year(), 1, 1)\n
+to_date=context.getStartDate()\n
+\n
+search_params = {\n
+    \'portal_type\'         : \'Pay Sheet Transaction\',\n
+    \'delivery.start_date\' : {\'range\': "minmax", \'query\': (from_date, to_date)},\n
+    \'delivery.source_section_uid\' : context.getSourceSectionUid(),\n
+    \'simulation_state\'    : [\'confirmed\', \'stopped\', \'delivered\']\n
+}\n
+\n
+paysheet_list = [r.getObject() for r in accounting_module.searchFolder(**search_params)]\n
+paysheet_list.append(context)\n
+\n
+yearly_amount = 0.\n
+\n
+script_params = {\'base_contribution\': base_contribution,\n
+                 \'contribution_share\': contribution_share,\n
+                 \'no_base_contribution\': no_base_contribution,\n
+                 \'include_empty_contribution\': include_empty_contribution,\n
+                 \'excluded_reference_list\': excluded_reference_list}\n
+\n
+for paysheet in paysheet_list :\n
+  monthly_amount = paysheet.PaySheetTransaction_getMovementTotalPriceFromCategory(**script_params)\n
+  yearly_amount += monthly_amount\n
+  \n
+return yearly_amount * -1\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>base_contribution=None, contribution_share=None, no_base_contribution=False, include_empty_contribution=True, excluded_reference_list=None</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>PaySheetTransaction_getYearToDateMovementTotalPriceFromCategory</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml b/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml
index 49168e29db..73fbf66248 100644
--- a/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml
+++ b/bt5/erp5_payroll_l10n_fr/SkinTemplateItem/portal_skins/erp5_payroll_l10n_fr/payroll_odt_macro.xml
@@ -196,7 +196,7 @@
               <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
+            <table:table-cell table:style-name=\'Tableau1.A6\' office:value-type=\'string\' tal:define=\'orig_string string:Cotisations patronales; 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
@@ -268,15 +268,15 @@
 \n
             <table:table-cell table:style-name=\'Tableau1.A8\'\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
+                              tal:condition="python: data_dict[\'year_to_date_total_employer_tax\']"\n
+                              tal:attributes=\'office:value data_dict/year_to_date_total_employer_tax\'> \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:content="python: quantity_renderer(data_dict[\'year_to_date_total_employer_tax\'])"\n
                       tal:attributes=\'text:style-name right_style_name\'>300000</text:p>\n
             </table:table-cell> \n
             <table:table-cell table:style-name=\'Tableau1.A8\'\n
                               office:value-type=\'string\'\n
-                              tal:condition="python: not data_dict[\'year_to_date_bonus_worked_hour_amount\']"> \n
+                              tal:condition="python: not data_dict[\'year_to_date_total_employer_tax\']"> \n
               <text:p text:style-name=\'Table_20_Contents\'/>\n
             </table:table-cell>\n
 \n
diff --git a/bt5/erp5_payroll_l10n_fr/bt/version b/bt5/erp5_payroll_l10n_fr/bt/version
index 48360de846..017d74f4a2 100644
--- a/bt5/erp5_payroll_l10n_fr/bt/version
+++ b/bt5/erp5_payroll_l10n_fr/bt/version
@@ -1 +1 @@
-5.4.7
\ No newline at end of file
+5.4.8
\ No newline at end of file
-- 
2.30.9