From a5246bcfaa6acb8f6140255e9d506e99465965e5 Mon Sep 17 00:00:00 2001 From: Sven Franck Date: Wed, 5 Sep 2018 14:52:13 +0000 Subject: [PATCH] erp5_payroll: use corporate identity for Payslip report --- ...ySheetTransaction_generatePayslipReport.py | 45 +++ ...SheetTransaction_generatePayslipReport.xml | 62 +++++ ...ansaction_generatePayslipReportContent.xml | 58 ++++ ...ansaction_generatePayslipReportContent.zpt | 260 ++++++++++++++++++ .../PaySheetTransaction_getPayslipData.py | 84 ++++++ .../PaySheetTransaction_getPayslipData.xml | 62 +++++ .../PaySheetTransaction_printPayslipReport.py | 23 ++ ...PaySheetTransaction_printPayslipReport.xml | 62 +++++ ...heet.obj => PaySheet_getODTStyleSheet.bin} | Bin .../PaySheet_viewODTPrintDialog.xml | 6 +- 10 files changed, 661 insertions(+), 1 deletion(-) create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.py create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.xml create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.xml create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.zpt create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.py create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.xml create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.py create mode 100644 bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.xml rename bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/{PaySheet_getODTStyleSheet.obj => PaySheet_getODTStyleSheet.bin} (100%) diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.py b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.py new file mode 100644 index 00000000000..0b1b25c2451 --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.py @@ -0,0 +1,45 @@ +""" +================================================================================ +Create the actual report and return parameters for the report header +================================================================================ +""" +# parameters +# ------------------------------------------------------------------------------ +# + +def translateText(snip): + return rep_localiser.erp5_ui.gettext(snip, lang=rep_language).encode('utf-8').strip() + +rep = context +rep_language = rep.getLanguage() if getattr(rep, 'getLanguage', None) else None +rep_localiser = rep.getPortalObject().Localizer +rep_data_source_caller = None + +rep_start_date = kwargs.get('start_date', None) +rep_stop_date = kwargs.get('stop_date', None) +rep_title = kwargs.get('report_title') + +# bridge for filling in testdata and setting exported title to bogus dates +if kwargs.get('override_batch_mode'): + rep_data_source_caller = getattr(context, "PaySheetTransaction_getPayslipTestData", None) + rep_start_date = DateTime("1976-11-04") + rep_stop_date = DateTime("1976-11-30") + +if rep_data_source_caller is None: + rep_data_source_caller = getattr(context, "PaySheetTransaction_getPayslipTestData") + rep_start_date = rep_start_date or context.Base_getFirstAndLastDayOfMonth(day="first") + rep_stop_date = rep_stop_date or context.Base_getFirstAndLastDayOfMonth(day="last") + +kwargs["report_data"] = rep_data_source_caller(start_date=rep_start_date,stop_date=rep_stop_date) + +rep_content = context.Person_generatePayslipReportContent(*args, **kwargs) + +if isinstance(rep_content, unicode): + rep_content = rep_content.encode("utf8") + +return rep_content, rep_title, ' '.join([ + translateText("from").title(), + rep_start_date.strftime('%Y/%m/%d'), + translateText("to"), + rep_stop_date.strftime('%Y/%m/%d') +]) diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.xml new file mode 100644 index 00000000000..55b79883a0f --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReport.xml @@ -0,0 +1,62 @@ + + + + + + + + + + Script_magic + 3 + + + _bind_names + + + + + + + + + + _asgns + + + + name_container + container + + + name_context + context + + + name_m_self + script + + + name_subpath + traverse_subpath + + + + + + + + + + + _params + *args, **kwargs + + + id + PaySheetTransaction_generatePayslipReport + + + + + diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.xml new file mode 100644 index 00000000000..e85c63b3d45 --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.xml @@ -0,0 +1,58 @@ + + + + + + + + + + _bind_names + + + + + + + + + + _asgns + + + + name_subpath + traverse_subpath + + + + + + + + + + + content_type + text/html + + + expand + 0 + + + id + PaySheetTransaction_generatePayslipReportContent + + + output_encoding + utf-8 + + + title + + + + + + diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.zpt b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.zpt new file mode 100644 index 00000000000..cac053579e5 --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_generatePayslipReportContent.zpt @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + + Nexedi Sa + + + 2 Rue unerue + + + +
+
+ + + + UserTest Slicea + + + 2 Rue unerue + + + +
+
+
+ + + + + + + + + + +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DesignationBaseEmployee Share (%)Employee ShareEmployer Share (%)Employer Share
+
+
+
+ + + + + + +
+
+ Net payable +
+
+
+
+ +
+
+ +

XXX ERROR Payslip Report: No Paysheet data available

+
+
+
\ No newline at end of file diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.py b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.py new file mode 100644 index 00000000000..124cae98942 --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.py @@ -0,0 +1,84 @@ +""" +================================================================================ +Get data to build a payslip report based on a person's paysheet transaction +================================================================================ +""" +# +# parameters +# ------------------------------------------------------------------------------ +# start_date start date of the report +# stop_date stop date of the report +# +# returns: +# { +# "general_data_dict": { +# "year": 2017, +# "net_salary": "2 300.93", +# "gross_salary": "3 085.28" +# }, +# "cumulative_title_list": [ +# {"value": "Gross Salary", "is_header": True}, +# ... +# ], +# "cumulative_info_list":[ +# {"value": "3 085.28", "is_header": True}, +# ... +# ], +# 'destination_address_line_list': [ +# {"value": "USERTEST Slicea", "is_header": True}, +# {"value": "2 rue unerue"}, +# ... +# ], +# 'destination_hiring_info_list': [ +# {"value": "Hiring Date: 1990/10/10"}, +# ... +# ], +# 'destination_attendance_info_list': [ +# {"value": "Normal Working Hours": 151.67"}, +# ... +# ] +# 'destination_vacation_info_list': [ +# {"value": "Earned this period: "}, +# ... +# ], +# 'destination_taxation_info_list': [ +# {"value": "Price Currency: EUR"}, +# ], +# 'source_address_line_list: [ +# {"value": "Nexedi SA", "is_header": True}, +# {"value": "147 Rue du Ballon"} +# ... +# ], +# source_corporate_info_line_list: [ +# {"value": "Corporate Registration Code: 440047504 00020"}, +# {"value": "Activity Code: 5829C"}, +# ... +# ], +# "payslip_section_list": [ +# [ +# {"value": "Usertest Slicea", "is_header": True, "value_base": "", "value_employee_share_rate": "", "value_employee_share": "", "value_employer_share_rate": "", "value_employer_share": ""}, +# {"value": "Salarie de Base", "value_base": "2 805.28", "value_employee_share_rate": "", "value_employee_share": "", "value_employer_share_rate": "", "value_employer_share": ""} +# ], [ +# ... +# ] +# ] +#} + +response = { + "general_data_dict": { + "year": "", + "net_salary": "", + "gross_salary": "" + }, + "cumulative_title_list": [], + "cumulative_info_list": [], + "destination_address_line_list": [], + "destination_hiring_info_list": [], + "destination_attendance_info_list": [], + "destination_vacation_info_list": [], + "destination_taxation_info_list": [], + "source_address_line_list": [], + "source_corporate_info_line_list": [], + "payslip_section_list": [] +} +return response diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.xml new file mode 100644 index 00000000000..6fdc04573f3 --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_getPayslipData.xml @@ -0,0 +1,62 @@ + + + + + + + + + + Script_magic + 3 + + + _bind_names + + + + + + + + + + _asgns + + + + name_container + container + + + name_context + context + + + name_m_self + script + + + name_subpath + traverse_subpath + + + + + + + + + + + _params + start_date=None, stop_date=None, **kw + + + id + PaySheetTransaction_getPayslipData + + + + + diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.py b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.py new file mode 100644 index 00000000000..65a3a33c7d8 --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.py @@ -0,0 +1,23 @@ +""" +================================================================================ +Wire PaySheetTransaction through to erp5_corporate_identity Report +================================================================================ +""" +# ERP5 web uses format= argument, which is also a python builtin +# pylint: disable=redefined-builtin + +# parameters (* default) +# ------------------------------------------------------------------------------ +# format: output in html*, pdf +# international_form translate terms +# language target_language + +return context.Base_printAsReport( + format=format, + report_title="Payslip", + report_name="Person_generatePayslipReport", + language=target_language, + start_date=context.getStartDate() or None, + stop_date=context.getStopDate() or None, + **kw +) diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.xml new file mode 100644 index 00000000000..e3bdba786f6 --- /dev/null +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetTransaction_printPayslipReport.xml @@ -0,0 +1,62 @@ + + + + + + + + + + Script_magic + 3 + + + _bind_names + + + + + + + + + + _asgns + + + + name_container + container + + + name_context + context + + + name_m_self + script + + + name_subpath + traverse_subpath + + + + + + + + + + + _params + format=None, international_form=None, target_language=None, *args,**kw + + + id + PaySheetTransaction_printPayslipReport + + + + + diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.obj b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.bin similarity index 100% rename from bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.obj rename to bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_getODTStyleSheet.bin 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 index ec9e692c899..16cdeba8f83 100644 --- a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog.xml +++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheet_viewODTPrintDialog.xml @@ -35,7 +35,7 @@ action - PaySheet_printAsODT + PaySheetTransaction_printPayslipReport description @@ -124,6 +124,10 @@ update_action + + update_action_title + + -- 2.30.9