Commit 75a6e5cb authored by Xiaowu Zhang's avatar Xiaowu Zhang

erp5_payroll_l10n_fr: add fr simplified payslip report

parent 26613050
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_jio_print</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_jio_print</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>pay_sheet_simplified_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>2.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Print Simplified Payslip</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/PaySheetTransaction_viewCorporatePrintDialog</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>fr</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>FR</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>amount_non_subject_to_contribution</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Amount Non Subject To Contribution</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>contribution_relief</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Contribution Relief</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>csg_crds_taxable_to_income_tax</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>10</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CSG/CRDS Taxable To Income Tax</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>csg_non_taxable_to_income_tax</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CSG Non Taxable To Income Tax</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>family-social_security</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Family-Socal Security</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>health</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Health</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>income_tax</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>11</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Income Tax</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>other_employer_contributions</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Other Employer Contributions</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>retirement</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Retirement</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>unemployment_insurance</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Unemployment Insurance</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>work_accident-occupational_disease</string> </value>
</item>
<item>
<key> <string>int_index</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Category</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Work Accident-Occupational Disease</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
kw["report_data"] = context.PaySheetTransaction_getPayslipData()
rep_content = context.PaySheetTransaction_generatePayslipReportContent(**kw)
if isinstance(rep_content, unicode):
rep_content = rep_content.encode("utf8")
return rep_content,"",""
<?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>_params</string> </key>
<value> <string>**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaySheetTransaction_generatePayslipReport</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</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>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaySheetTransaction_generatePayslipReportContent</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<tal:block metal:use-macro="context/PaySheetTransaction_generatePayslipReportContent/macros/report"/>
<tal:block tal:condition="python: False">
<tal:block metal:define-macro="report">
<tal:block tal:define="payslip_data python: options.get('report_data');
payslip_line_list python: payslip_data['contribution_dict_list'] + payslip_data['non_contribution_dict_list'];
income_tax_dict python: payslip_data['income_tax_dict'];
other_data_dict here/PaySheetTransaction_getOtherInformationsDataDict;
quantity_renderer nocall:here/Base_viewFieldLibrary/my_view_mode_money_quantity/render_pdf;
price_renderer nocall:here/PaySheetTransaction_viewFieldLibrary/my_price/render_pdf;
hour_renderer nocall:here/AnnotationLine_viewFieldLibrary/my_work_time_annotation_line_quantity/render_pdf;">
<tal:block tal:condition="python: payslip_data is not None">
<div class="payslip-report-content-detail-wrapper">
<table class="payslip-report-detail-table">
<thead>
<!--tr>
<th i18n:translate="" i18n:domain="erp5_ui">Designation</th>
<th i18n:translate="" i18n:domain="erp5_ui">Base</th>
<th colspan="2" i18n:translate="" i18n:domain="erp5_ui">Employee</th>
<th colspan="2" i18n:translate="" i18n:domain="erp5_ui">Employer</th>
</tr-->
<tr>
<th i18n:translate="" i18n:domain="erp5_ui">Designation</th>
<th i18n:translate="" i18n:domain="erp5_ui">Base</th>
<th i18n:translate="" i18n:domain="erp5_ui">Employee Share Rate</th>
<th i18n:translate="" i18n:domain="erp5_ui">Employee Share</th>
<th i18n:translate="" i18n:domain="erp5_ui">Employer Share Rate</th>
<th i18n:translate="" i18n:domain="erp5_ui">Employer Share</th>
</tr>
</thead>
<tbody>
<tal:block tal:repeat="line payslip_line_list">
<tal:block tal:define="class_name python: ' '.join(line.get('style_class', []))">
<tr tal:attributes="class python: class_name">
<td tal:content="python: line['title']"></td>
<tal:block tal:condition="python: line['base']">
<td tal:content="python: quantity_renderer(line['base'])"></td>
</tal:block>
<tal:block tal:condition="python: not line['base']">
<td></td>
</tal:block>
<tal:block tal:condition="python: line['employee_price']">
<td tal:content="python: price_renderer(line['employee_price'])"></td>
</tal:block>
<tal:block tal:condition="python: not line['employee_price']">
<td></td>
</tal:block>
<tal:block tal:condition="python: line['employee_total_price']">
<td tal:content="python: quantity_renderer(line['employee_total_price'])"></td>
</tal:block>
<tal:block tal:condition="python: not line['employee_total_price']">
<td></td>
</tal:block>
<tal:block tal:condition="python: line['employer_price']">
<td tal:content="python: price_renderer(line['employer_price'])"></td>
</tal:block>
<tal:block tal:condition="python: not line['employer_price']">
<td></td>
</tal:block>
<tal:block tal:condition="python: line['employer_total_price']">
<td tal:content="python: quantity_renderer(line['employer_total_price'])"></td>
</tal:block>
<tal:block tal:condition="python: not line['employer_total_price']">
<td></td>
</tal:block>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
</div>
<div class="payslip-report-net-to-pay-before-income-tax-wrapper">
<table class="payslip-report-net-to-pay-before-income-tax-table">
<tbody>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">NET PAYABLE BEFORE INCOME TAX</td>
<td class="net-to-pay-before-income-tax" tal:content="python: '%s %s' % (
quantity_renderer(
payslip_data['net_salary_before_income_tax']),
payslip_data['currency'])">800.000,00</td>
</tr>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">dont évolution de la rémunération à la supression des cotisations salariales chômage et maladie</td>
<td tal:content="python: quantity_renderer(payslip_data['amount_of_remuneration_evolution'])"></td>
</tr>
</tbody>
</table>
</div>
<!-- holiday -->
<div class="payslip-holiday-income-tax">
<table class="payslip-holiday">
<thead>
<tr>
<th colspan="2" i18n:translate="" i18n:domain="erp5_ui">Paid vacation (in days)</th>
</tr>
</thead>
<tbody>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">Earned on this period</td>
<td></td>
</tr>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">Taken on this period</td>
<td></td>
</tr>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">Remaining</td>
<td></td>
</tr>
</tbody>
</table>
<!-- tax -->
<table class="payslip-income-tax">
<thead>
<tr>
<th colspan="3" i18n:translate="" i18n:domain="erp5_ui">Income Tax</th>
</tr>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">Base</td>
<td i18n:translate="" i18n:domain="erp5_ui">Rate</td>
<td i18n:translate="" i18n:domain="erp5_ui">Amount</td>
</tr>
</thead>
<tbody>
<tr>
<td tal:content='python: quantity_renderer(income_tax_dict["base"])'></td>
<td tal:content='python: price_renderer(income_tax_dict["employee_price"])'></td>
<td tal:content='python: quantity_renderer(income_tax_dict["employee_total_price"])'></td>
</tr>
</tbody>
</table>
</div>
<!-- cumul -->
<div class='payslip-cumul-net-to-pay'>
<table class='payslip-cumul'>
<thead>
<tr>
<th i18n:translate="" i18n:domain="erp5_ui">Cumuls Annuels</th>
<th i18n:translate="" i18n:domain="erp5_ui">Gross Salary</th>
<th i18n:translate="" i18n:domain="erp5_ui">Net Imposable</th>
<th i18n:translate="" i18n:domain="erp5_ui">Work Hours </th>
</tr>
</thead>
<tbody>
<tr>
<td tal:content="python: other_data_dict['year']"></td>
<td tal:content="python: other_data_dict['year_to_date_gross_salary']"></td>
<td tal:content="python: other_data_dict['year_to_date_taxable_net_salary']"></td>
<td tal:content="python: hour_renderer(other_data_dict['year_to_date_worked_hour_count'] + other_data_dict['year_to_date_bonus_worked_hour_count'])"></td>
</tr>
</tbody>
</table>
<!-- net to pay -->
<table class='payslip-net-to-pay'>
<tbody>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">Net payable</td>
<td tal:content="python: quantity_renderer(payslip_data['net_salary'])"></td>
</tr>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">Contribution Relief</td>
<td tal:content="python: quantity_renderer(payslip_data['total_contribution_relief'])"></td>
</tr>
<tr>
<td i18n:translate="" i18n:domain="erp5_ui">Total Pay By Employeur</td>
<td tal:content="python: quantity_renderer(payslip_data['total_pay_by_employer'])"></td>
</tr>
</tbody>
</table>
</div>
</tal:block>
<tal:block tal:condition="python: payslip_data is None">
<h1 i18n:translate="" i18n:domain="erp5_ui" class="custom-header">ERROR Payslip Report: No Paysheet data available</h1>
</tal:block>
</tal:block>
</tal:block>
</tal:block>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</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>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaySheetTransaction_generatePayslipReportFooter</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<p>Dans votre intérêt et pour vous aider à faire valoir vos droits, conservez ce bulletin de paie sans limitation de durée.</p>
<p>Generated with ERP5 – Open Source ERP suite (www.erp5.org)</p>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</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>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaySheetTransaction_generatePayslipReportHeader</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<tal:block tal:define="data_dict here/PaySheetTransaction_getODTDataDict;
other_data_dict here/PaySheetTransaction_getOtherInformationsDataDict;
language python: options.get('language');
date_renderer nocall:here/Base_viewFieldLibrary/my_date_time_field/render_pdf;
">
<div class="payslip-header-title">
<span class="payslip-title payslip-report-emphasis" tal:content='python: here.Base_translateString("Payslip", lang=language).upper()'></span>
<span class="payslip-period payslip-report-emphasis" tal:content='python: here.Base_translateString("From ${start_date} to ${stop_date}",
lang=language,
mapping={
"start_date": date_renderer(here.getStartDate()),
"stop_date": date_renderer(here.getStopDate())})'></span>
</div>
<div class="payslip-header-detail">
<div class="payslip-header-employer">
<span class='payslip-report-emphasis' tal:content='python:data_dict["destination_section_title"]'>destination_section</span>
<span tal:condition="data_dict/destination_section_address" tal:content='python:data_dict["destination_section_address"]'>address</span>
<span tal:condition='data_dict/destination_section_corporate_registration_codeid' tal:content='python:data_dict["destination_section_corporate_registration_codeid"]'>SIRET</span>
<span tal:condition='data_dict/destination_section_activity_codeid' tal:content='python:data_dict["destination_section_activity_codeid"]'>APE</span>
</div>
<div class="payslip-header-employee">
<span class='payslip-report-emphasis' tal:content='python:data_dict["source_section_title"].upper()'>source_section</span>
<tal:block tal:condition="data_dict/source_section_address"
tal:define="address_list python: data_dict['source_section_address'].split('\n');">
<tal:block tal:repeat="line address_list">
<span tal:content='line'></span>
</tal:block>
</tal:block>
<span tal:condition='other_data_dict/source_section_default_career_social_code' tal:content='python:other_data_dict["source_section_default_career_social_code"]'>185897778270987</span>
<span tal:condition='other_data_dict/source_section_default_career_start_date' tal:content='python:other_data_dict["source_section_default_career_start_date"]'>12/09/2005</span>
<span tal:condition='other_data_dict/source_section_career_title' tal:content='python:other_data_dict["source_section_career_title"]'>Réceptionniste</span>
<span tal:condition='other_data_dict/source_section_default_career_coefficient' tal:content='python:other_data_dict["source_section_default_career_coefficient"]'>100</span>
</div>
</div>
</tal:block>
\ No newline at end of file
from DateTime import DateTime
line_dict_list = context.PaySheetTransaction_getLineListAsDict()
non_subject_amount = 'base_amount/payroll/report_section/l10n/fr/amount_non_subject_to_contribution'
gross_category = 'base_amount/payroll/report/salary/gross'
contribution_relief = 'base_amount/payroll/report_section/l10n/fr/contribution_relief'
income_tax = 'base_amount/payroll/report_section/l10n/fr/income_tax'
csg_crds_taxable_to_income_tax = 'base_amount/payroll/report_section/l10n/fr/csg_crds_taxable_to_income_tax'
csg_non_taxable_to_income_tax = 'base_amount/payroll/report_section/l10n/fr/csg_non_taxable_to_income_tax'
report_section_to_group_list=[
'base_amount/payroll/report_section/l10n/fr/family-social_security',
'base_amount/payroll/report_section/l10n/fr/unemployment_insurance',
'base_amount/payroll/report_section/l10n/fr/other_employer_contributions',
'base_amount/payroll/report_section/l10n/fr/work_accident-occupational_disease',
'base_amount/payroll/report_section/l10n/fr/contribution_relief']
contribution_line_list = []
no_contribution_line_list = []
income_tax_dict = {}
csg_base = 0
total_contribution_relief = 0
def getReportSectionTitle(title):
if 'report_section' in title:
return context.portal_categories.restrictedTraverse(title).getTitle()
return title
def getFakeLineDictForNewSection(title, base=0, employer_price=0, employer_total_price=0, employee_price=0, employee_total_price=0, report_section=False):
style_class = ['report-title']
if report_section:
style_class.append('report-section')
return {
'style_class': style_class,
'title': context.Base_translateString(title).upper(),
'base': base,
'employer_price': employer_price,
'employer_total_price': employer_total_price,
'employee_price': employee_price,
'employee_total_price': employee_total_price
}
def groupSameReportSectionLine(line_to_group_list):
tmp_base_dict = {}
tmp2_base_dict = {}
title = getReportSectionTitle(line_to_group_list[0]['report_section'])
# First group by base amount
for line_dict in line_to_group_list:
base = line_dict['base']
if base not in tmp_base_dict:
tmp_base_dict[base] = getFakeLineDictForNewSection(title,base)
tmp_base_dict[base]['employer_price'] = tmp_base_dict[base]['employer_price'] + (line_dict['employer_price'] or 0)
tmp_base_dict[base]['employer_total_price'] = tmp_base_dict[base]['employer_total_price'] + (line_dict['employer_total_price'] or 0)
tmp_base_dict[base]['employee_price'] = tmp_base_dict[base]['employee_price'] + (line_dict['employee_price'] or 0)
tmp_base_dict[base]['employee_total_price'] = tmp_base_dict[base]['employee_total_price'] + (line_dict['employee_total_price'] or 0)
# Check if can group by same rate
for _, value in tmp_base_dict.iteritems():
new_key = (value['employer_price'], value['employee_price'])
if new_key not in tmp2_base_dict:
tmp2_base_dict[new_key] = value
else:
tmp2_base_dict[new_key]['base'] = tmp2_base_dict[new_key]['base'] + value['base']
tmp2_base_dict[new_key]['employer_total_price'] = tmp2_base_dict[new_key]['employer_total_price'] + value['employer_total_price']
tmp2_base_dict[new_key]['employee_total_price'] = tmp2_base_dict[new_key]['employee_total_price'] + value['employee_total_price']
return tmp2_base_dict.values()
def getReportSectionDictList(line_dict_list):
new_line_dict_list = []
previous_line_dict = None
previous_report_section = None
line_to_group_list = []
exception_line = True
employee_total_price = 0
employer_total_price = 0
for current_line_dict in line_dict_list:
current_report_section = current_line_dict['report_section']
# New section
if previous_report_section != current_report_section:
if len(line_to_group_list):
new_line_dict_list += groupSameReportSectionLine(line_to_group_list)
exception_line = True
line_to_group_list = []
# add one line for gross salary
if previous_line_dict is not None and gross_category in previous_line_dict['base_contribution_list'] and gross_category not in current_line_dict['base_contribution_list']:
new_line_dict_list.append(
getFakeLineDictForNewSection(
context.Base_translateString("Gross Salary"),
base=context.PaySheetTransaction_getMovementTotalPriceFromCategory(base_contribution="base_contribution/%s"%gross_category),
report_section=True
))
if current_line_dict['report_section'] in report_section_to_group_list:
line_to_group_list.append(current_line_dict)
else:
if previous_report_section != current_report_section:
new_line_dict_list.append(getFakeLineDictForNewSection(getReportSectionTitle(current_report_section)))
# same report section, but few lines need to group but other not
if len(line_to_group_list) and exception_line:
exception_line = False
new_line_dict_list.append(getFakeLineDictForNewSection(getReportSectionTitle(current_report_section)))
new_line_dict_list.append(current_line_dict)
previous_report_section = current_report_section
previous_line_dict = current_line_dict
employer_total_price += (current_line_dict['employer_total_price'] or 0)
employee_total_price += (current_line_dict['employee_total_price'] or 0)
if len(line_to_group_list):
new_line_dict_list += groupSameReportSectionLine(line_to_group_list)
return new_line_dict_list, employer_total_price, employee_total_price
# split line list to differents categories
for line_dict in line_dict_list:
added_to_list = False
for base_contribution in line_dict['base_contribution_list']:
if base_contribution.startswith('base_amount/payroll/report_section/l10n/fr/'):
added_to_list = True
if base_contribution == income_tax:
# Not add to list since income tax is show at other place
income_tax_dict = {
'base': line_dict['base'],
'employee_price': line_dict['employee_price'],
'employee_total_price': line_dict['employee_total_price']
}
else:
if base_contribution == contribution_relief:
total_contribution_relief += line_dict['employer_total_price']
elif base_contribution in (csg_crds_taxable_to_income_tax, csg_non_taxable_to_income_tax):
csg_base = line_dict['base']
line_dict['report_section'] = base_contribution
if base_contribution == non_subject_amount:
no_contribution_line_list.append(line_dict)
else:
contribution_line_list.append(line_dict)
break
if not added_to_list:
line_dict['report_section'] = line_dict['group']
contribution_line_list.append(line_dict)
contribution_dict_list, contribution_employer_total_price, contribution_employee_total_price = getReportSectionDictList(contribution_line_list)
if len(contribution_dict_list):
contribution_dict_list.append(
getFakeLineDictForNewSection(
context.Base_translateString("Total Contributions"),
employer_total_price=contribution_employer_total_price,
employee_total_price=contribution_employee_total_price,
report_section=True
))
non_contribution_dict_list, non_contribution_employer_total_price, non_contribution_employee_total_price = getReportSectionDictList(no_contribution_line_list)
if len(non_contribution_dict_list):
non_contribution_dict_list.append(
getFakeLineDictForNewSection(
context.Base_translateString("Total Amounts Non Subject To Contributions"),
employer_total_price=non_contribution_employer_total_price,
employee_total_price=non_contribution_employee_total_price,
report_section=True
))
gross_salary = context.PaySheetTransaction_getMovementTotalPriceFromCategory(base_contribution="base_contribution/%s"%gross_category)
# Set contribution_share to 'True' so it will return all movement with 0 contribution share
total_pay_by_employer = context.PaySheetTransaction_getMovementTotalPriceFromCategory(
base_contribution='base_contribution/base_amount/payroll/report/salary/net',
contribution_share='True') - contribution_employer_total_price - non_contribution_employer_total_price
net_salary = context.PaySheetTransaction_getMovementTotalPriceFromCategory(
base_contribution='base_contribution/base_amount/payroll/report/salary/net',
contribution_share='contribution_share/employee')
net_salary_before_income_tax = net_salary - income_tax_dict['employee_total_price']
currency = context.getPriceCurrencyValue() is not None and context.getPriceCurrencyValue().getShortTitle() or context.getPriceCurrencyReference() or ''
"""
from 01/01/18 to 30/09/18
amount = gross_salary * 2.2% - CSG * 1.7%
from 01/10/2018
amount = gross_salary * 3.15% - CSG * 1.7%
"""
amount_of_remuneration_evolution = 0
start_date = context.getStartDate()
if DateTime('2018/01/01') <= start_date <= DateTime('2018/09/30'):
amount_of_remuneration_evolution = gross_salary * 0.022 - csg_base * 0.017
elif start_date >= DateTime('2018/10/01'):
amount_of_remuneration_evolution = gross_salary * 0.0315 - csg_base * 0.017
return {
"contribution_dict_list": contribution_dict_list,
"non_contribution_dict_list": non_contribution_dict_list,
"gross_salary": gross_salary,
"net_salary_before_income_tax": net_salary_before_income_tax,
"net_salary": net_salary,
"currency": currency,
"amount_of_remuneration_evolution": amount_of_remuneration_evolution,
"income_tax_dict": income_tax_dict,
'total_pay_by_employer': total_pay_by_employer,
'total_contribution_relief': total_contribution_relief
}
<?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>_params</string> </key>
<value> <string>start_date=None, stop_date=None, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaySheetTransaction_getPayslipData</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""
================================================================================
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_header = "PaySheetTransaction_generatePayslipReportHeader",
report_name = "PaySheetTransaction_generatePayslipReport",
report_footer = "PaySheetTransaction_generatePayslipReportFooter",
conversion_dict = dict(
margin_top=70,
header_spacing=5
),
css_path="payslip_css/payslip",
document_language=target_language,
start_date=context.getStartDate() or None,
stop_date=context.getStopDate() or None,
**kw
)
<?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>_params</string> </key>
<value> <string>format=None, international_form=None, target_language=None, *args,**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaySheetTransaction_printPayslipReport</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</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>PaySheetTransaction_printPayslipReport</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></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>PaySheetTransaction_viewCorporatePrintDialog</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 Simplified Payslip</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>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>default</string>
<string>description</string>
<string>items</string>
<string>title</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>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</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> <string></string> </value>
</item>
<item>
<key> <string>target</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>default</string> </key>
<value> <string>pdf</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Printing format</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_list_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewPayrollFieldLibrary</string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<list>
<tuple>
<string>Html</string>
<string>html</string>
</tuple>
<tuple>
<string>PDF</string>
<string>pdf</string>
</tuple>
<tuple>
<string>mhtml</string>
<string>mhtml</string>
</tuple>
</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>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>description</string>
<string>title</string>
</list>
</value>
</item>
<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>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>description</string> </key>
<value> <string>Include english and translated version of all terms.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewPayrollFieldLibrary</string> </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>International Form</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</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_viewPayrollFieldLibrary</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>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>payslip_css</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
body {
color:#000;
font-size: 3mm;
font-family: "Roboto Condensed", Arial, SimHei, STXihei, sans-serif;
font-weight: normal;
}
/* payslip header*/
.payslip-report-emphasis {
font-weight: bold;
}
table {
border-collapse: collapse;
page-break-inside: avoid;
}
table.payslip-report-detail-table thead tr th,
table.payslip-holiday thead tr th,
table.payslip-income-tax thead tr th,
table.payslip-cumul thead tr th,
table.payslip-income-tax thead tr td{
background-color: #e0e0e0;
font-weight: bold;
text-align: center;
padding-top: 2mm;
padding-bottom: 2mm;
border:1px solid #a1a1a1;
}
.payslip-header-title .payslip-title,
.payslip-header-title .payslip-period{
font-size: 5.29167mm;
width:45%;
text-align:left;
display: inline-block;
}
.payslip-header-detail {
padding-top:10px;
}
.payslip-header-detail .payslip-header-employer,
.payslip-header-detail .payslip-header-employee{
border: 1px solid black;
border-radius:1%;
width:45%;
text-align: left;
min-height:200px;
}
.payslip-cumul-net-to-pay:after,
.payslip-holiday-income-tax:after,
.payslip-header-detail:after{
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.payslip-cumul-net-to-pay .payslip-cumul,
.payslip-holiday-income-tax .payslip-holiday,
.payslip-header-detail .payslip-header-employer{
float:left;
}
.payslip-cumul-net-to-pay .payslip-net-to-pay,
.payslip-holiday-income-tax .payslip-income-tax,
.payslip-header-detail .payslip-header-employee{
float:right;
}
.payslip-header-detail .payslip-header-employer span,
.payslip-header-detail .payslip-header-employee span{
display: block;
padding-top:4px;
padding-left:2px;
}
.payslip-header-detail .payslip-header-employer span:not(:first-child),
.payslip-header-detail .payslip-header-employee span:not(:first-child){
padding-left:4px;
}
table.payslip-report-detail-table,
table.payslip-report-net-to-pay-before-income-tax-table {
margin-top: 5mm;
margin-bottom: 5mm;
margin-left: auto;
margin-right: auto;
width:100%;
}
table.payslip-holiday tr td,
table.payslip-income-tax tr td,
table.payslip-cumul tr td,
table.payslip-net-to-pay tr td,
table.payslip-report-net-to-pay-before-income-tax-table tbody tr td,
table.payslip-report-detail-table tbody tr.report-section td {
border:1px solid #a1a1a1;
}
table.payslip-report-detail-table tbody tr td{
border-left:1px solid #a1a1a1;
border-right:1px solid #a1a1a1;
}
table.payslip-cumul tbody tr td,
table.payslip-net-to-pay tbody tr td:nth-child(2),
table.payslip-income-tax tbody tr td,
table.payslip-report-net-to-pay-before-income-tax-table tbody tr td:not(:first-child),
table.payslip-report-detail-table tbody tr td:not(:first-child) {
text-align: right;
}
table.payslip-report-detail-table tbody tr:not(.report-title) td:first-child {
padding-left: 10px;
}
/* base column*/
table.payslip-report-detail-table tbody tr td:nth-child(2){
min-width:150px;
}
table.payslip-net-to-pay tbody tr:not(:nth-child(2)) td:first-child,
table.payslip-report-net-to-pay-before-income-tax-table tbody tr:first-child td,
table.payslip-report-detail-table tbody tr.report-section td,
table.payslip-report-detail-table tbody tr.report-title td:first-child{
font-weight: bold;
}
.payslip-cumul-net-to-pay .payslip-cumul,
.payslip-cumul-net-to-pay .payslip-net-to-pay,
.payslip-holiday-income-tax .payslip-holiday,
.payslip-holiday-income-tax .payslip-income-tax{
width:45%;
}
.payslip-holiday-income-tax .payslip-holiday tbody tr td:first-child{
width:50%;
}
.payslip-cumul-net-to-pay {
padding-top:5mm;
}
table.payslip-report-net-to-pay-before-income-tax-table tbody tr:first-child td.net-to-pay-before-income-tax{
font-weight:900;
font-size: 4.5mm;
}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>payslip.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
body {
color:#000;
font-size: 3mm;
font-family: "Roboto Condensed", Arial, SimHei, STXihei, sans-serif;
font-weight: normal;
}
/* payslip header*/
.payslip-report-emphasis {
font-weight: bold;
}
table {
border-collapse: collapse;
page-break-inside: avoid;
}
table.payslip-report-detail-table thead tr th,
table.payslip-holiday thead tr th,
table.payslip-income-tax thead tr th,
table.payslip-cumul thead tr th,
table.payslip-income-tax thead tr td{
background-color: #e0e0e0;
font-weight: bold;
text-align: center;
padding-top: 2mm;
padding-bottom: 2mm;
border:1px solid #a1a1a1;
}
.payslip-header-title .payslip-title,
.payslip-header-title .payslip-period{
font-size: 5.29167mm;
width:45%;
text-align:left;
display: inline-block;
}
.payslip-header-detail {
padding-top:10px;
}
.payslip-header-detail .payslip-header-employer,
.payslip-header-detail .payslip-header-employee{
border: 1px solid black;
border-radius:1%;
width:45%;
text-align: left;
min-height:200px;
}
.payslip-cumul-net-to-pay:after,
.payslip-holiday-income-tax:after,
.payslip-header-detail:after{
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.payslip-cumul-net-to-pay .payslip-cumul,
.payslip-holiday-income-tax .payslip-holiday,
.payslip-header-detail .payslip-header-employer{
float:left;
}
.payslip-cumul-net-to-pay .payslip-net-to-pay,
.payslip-holiday-income-tax .payslip-income-tax,
.payslip-header-detail .payslip-header-employee{
float:right;
}
.payslip-header-detail .payslip-header-employer span,
.payslip-header-detail .payslip-header-employee span{
display: block;
padding-top:4px;
padding-left:2px;
}
.payslip-header-detail .payslip-header-employer span:not(:first-child),
.payslip-header-detail .payslip-header-employee span:not(:first-child){
padding-left:4px;
}
table.payslip-report-detail-table,
table.payslip-report-net-to-pay-before-income-tax-table {
margin-top: 5mm;
margin-bottom: 5mm;
margin-left: auto;
margin-right: auto;
width:100%;
}
table.payslip-holiday tr td,
table.payslip-income-tax tr td,
table.payslip-cumul tr td,
table.payslip-net-to-pay tr td,
table.payslip-report-net-to-pay-before-income-tax-table tbody tr td,
table.payslip-report-detail-table tbody tr.report-section td {
border:1px solid #a1a1a1;
}
table.payslip-report-detail-table tbody tr td{
border-left:1px solid #a1a1a1;
border-right:1px solid #a1a1a1;
}
table.payslip-cumul tbody tr td,
table.payslip-net-to-pay tbody tr td:nth-child(2),
table.payslip-income-tax tbody tr td,
table.payslip-report-net-to-pay-before-income-tax-table tbody tr td:not(:first-child),
table.payslip-report-detail-table tbody tr td:not(:first-child) {
text-align: right;
}
table.payslip-report-detail-table tbody tr:not(.report-title) td:first-child {
padding-left: 10px;
}
/* base column*/
table.payslip-report-detail-table tbody tr td:nth-child(2){
min-width:150px;
}
table.payslip-net-to-pay tbody tr:not(:nth-child(2)) td:first-child,
table.payslip-report-net-to-pay-before-income-tax-table tbody tr:first-child td,
table.payslip-report-detail-table tbody tr.report-section td,
table.payslip-report-detail-table tbody tr.report-title td:first-child{
font-weight: bold;
}
.payslip-cumul-net-to-pay .payslip-cumul,
.payslip-cumul-net-to-pay .payslip-net-to-pay,
.payslip-holiday-income-tax .payslip-holiday,
.payslip-holiday-income-tax .payslip-income-tax{
width:45%;
}
.payslip-holiday-income-tax .payslip-holiday tbody tr td:first-child{
width:50%;
}
.payslip-cumul-net-to-pay {
padding-top:5mm;
}
table.payslip-report-net-to-pay-before-income-tax-table tbody tr:first-child td.net-to-pay-before-income-tax{
font-weight:900;
font-size: 4.5mm;
}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>payslip.pdf.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
erp5_calendar
erp5_payroll
\ No newline at end of file
erp5_payroll
erp5_corporate_identity
\ No newline at end of file
......@@ -16,4 +16,5 @@ DSN Monthly Report | select_paysheet_list
DSN Monthly Report | view
DSN Monthly Report | view_editor
Leave Request Period | dsn_report_leave_view
Organisation | dsn_report_configuration
\ No newline at end of file
Organisation | dsn_report_configuration
Pay Sheet Transaction | pay_sheet_simplified_print
\ No newline at end of file
portal_categories/base_amount/payroll/l10n/fr
portal_categories/base_amount/payroll/l10n/fr/**
portal_categories/base_amount/payroll/report_section/l10n/fr
portal_categories/base_amount/payroll/report_section/l10n/fr/**
portal_categories/calendar_period_type/social_declaration
portal_categories/calendar_period_type/social_declaration/l10n
portal_categories/calendar_period_type/social_declaration/l10n/fr
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment