chore: import enterprise addons 19.0 bulk snapshot

This commit is contained in:
1b-agent committed 2026-09-16 10:13:08 +00:00
commit ca4af030d3
39951 files changed
+15570005

No files matched your search

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_individual_account">
<t t-call="web.html_container" t-if="report_data">
<t t-set="company" t-value="report_data.get('company')"/>
<t t-call="web.external_layout">
<div t-if="company" class="page">
<h2>
<t t-if="employee">
<span>Individual Account - </span> <t t-esc="report_data['year']"/> <t t-esc="employee.name"/> <span> - </span> <t t-esc="employee.registration_number"/>
</t>
<t t-else="">
<span>Individual Account - <t t-esc="report_data['company'].name"/> - </span> <t t-esc="report_data['year']"/>
</t>
</h2>
<br/>
<tbody>
<table class="table table-bordered table-sm">
<thead><tr>
<th class="text-center">Code</th>
<th class="text-center">Name</th>
<th class="text-center">January</th>
<th class="text-center">February</th>
<th class="text-center">March</th>
<th class="text-center">April</th>
<th class="text-center">May</th>
<th class="text-center">June</th>
<th class="text-center">July</th>
<th class="text-center">August</th>
<th class="text-center">September</th>
<th class="text-center">October</th>
<th class="text-center">November</th>
<th class="text-center">December</th>
<th class="text-center">Total</th>
</tr></thead>
<tr t-foreach="report_data['rules']" t-as="rule">
<td t-esc="rule['code']"/>
<td t-esc="rule['name']"/>
<t t-foreach="[0,1,2,3,4,5,6,7,8,9,10,11,12]" t-as="m">
<t t-if="rule['monthly_values'][m] != 0">
<td t-esc="rule['monthly_values'][m]"/>
</t>
<t t-else="">
<td class="text-center">/</td>
</t>
</t>
</tr>
</table>
</tbody>
</div>
<p style="page-break-before:always;"></p>
</t>
</t>
</template>
</data>
</odoo>
@@ -0,0 +1,454 @@
<odoo>
<template id="report_company_master_data_document">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="wizard">
<t t-set="company" t-value="doc.get('company')"/>
<t t-call="web.external_layout_standard">
<div class="page">
<h2><t t-esc="company.name"/> - Master Data - <t t-esc="year"/>-<t esc="month"/></h2>
<p>
<strong>UID-BFS:</strong>
<t t-esc="company.l10n_ch_uid"/>
</p>
<hr/>
<h3>Work Locations</h3>
<t t-if="doc.get('work_locations')">
<table class="table table-sm">
<thead>
<tr>
<th>Address</th>
<th>Canton</th>
<th>Municipality</th>
<th>BUR/REE #</th>
<th>In-House ID</th>
<th>Weekly Hours</th>
<th>Weekly Lessons</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc['work_locations']" t-as="wl">
<tr>
<td>
<t t-esc="wl.partner_id.street"/>
<t t-esc="wl.partner_id.street2"/>,
<t t-esc="wl.partner_id.zip"/>,
<t t-esc="wl.partner_id.city"/>,
<t t-esc="wl.partner_id.country_id.code"/>
</td>
<td><t t-esc="wl.canton"/></td>
<td><t t-esc="wl.municipality"/></td>
<td><t t-esc="wl.bur_ree_number"/></td>
<td><t t-esc="wl.in_house_id"/></td>
<td><t t-esc="wl.weekly_hours"/></td>
<td><t t-esc="wl.weekly_lessons"/></td>
</tr>
</t>
</tbody>
</table>
</t>
<!-- =========================================
1) AVS (Social Insurance) Institutions
========================================= -->
<hr/>
<h3>AVS Institutions</h3>
<t t-if="doc.get('avs_records')">
<t t-foreach="doc['avs_records']" t-as="avs">
<div class="mb16">
<h4><t t-esc="avs.name"/></h4>
<ul>
<li>
<strong>Insurance Code (AK-Nr.):</strong>
<t t-esc="avs.insurance_code"/>
</li>
<li>
<strong>Member Number:</strong>
<t t-esc="avs.member_number"/>
</li>
<li>
<strong>Sub-Number:</strong>
<t t-esc="avs.member_subnumber"/>
</li>
<li>
<strong>Minimum Contributing Age:</strong>
<t t-esc="avs.age_start"/>
</li>
<li>
<strong>Retirement Age (Male):</strong>
<t t-esc="avs.age_stop_male"/>
</li>
<li>
<strong>Retirement Age (Female):</strong>
<t t-esc="avs.age_stop_female"/>
</li>
<li>
<strong>LAA Insurance ID:</strong>
<t t-esc="avs.laa_insurance_id.name"/>
</li>
<li>
<strong>LAA Insurance From:</strong>
<t t-esc="avs.laa_insurance_from"/>
</li>
<li>
<strong>No LAA Reason:</strong>
<t t-esc="avs.no_laa_reason"/>
</li>
<li>
<strong>LPP Insurance ID:</strong>
<t t-esc="avs.lpp_insurance_id.name"/>
</li>
<li>
<strong>LPP Insurance From:</strong>
<t t-esc="avs.lpp_insurance_from"/>
</li>
<li>
<strong>No LPP Reason:</strong>
<t t-esc="avs.no_lpp_reason"/>
</li>
</ul>
<!-- AVS / AC lines, thresholds, etc. (if you have them in avs['avs_line_ids'] after a nested read) -->
<t t-if="avs.avs_line_ids">
<h5>Rates</h5>
<table class="table table-sm">
<thead>
<tr>
<th>Valid From</th>
<th>Until</th>
<th>Employee Rate</th>
<th>Employer Rate</th>
<th>Admin Fees</th>
</tr>
</thead>
<tbody>
<t t-foreach="avs.avs_line_ids" t-as="line">
<tr>
<td><t t-esc="line.date_from"/></td>
<td><t t-esc="line.date_to"/></td>
<td><t t-esc="line.employee_rate"/></td>
<td><t t-esc="line.employer_rate"/></td>
<td><t t-esc="line.admin_fees"/></td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
</t>
</t>
<!-- ===============================
2) CAF (Compensation Fund)
=============================== -->
<hr/>
<h3>CAF Institutions</h3>
<t t-if="doc.get('caf_records')">
<t t-foreach="doc['caf_records']" t-as="caf">
<div class="mb16">
<h4><t t-esc="caf.name"/></h4>
<ul>
<li>
<strong>Indemnity Fund Number:</strong>
<t t-esc="caf.insurance_code"/>
</li>
<li>
<strong>Member Number:</strong>
<t t-esc="caf.member_number"/>
</li>
<li>
<strong>Sub-Number:</strong>
<t t-esc="caf.member_subnumber"/>
</li>
</ul>
<!-- CAF lines -->
<t t-if="caf.caf_line_ids">
<h5>Rates</h5>
<table class="table table-sm">
<thead>
<tr>
<th>Valid From</th>
<th>Until</th>
<th>Employee Rate</th>
<th>Company Rate</th>
</tr>
</thead>
<tbody>
<t t-foreach="caf['caf_line_ids']" t-as="line">
<tr>
<td><t t-esc="line.date_from"/></td>
<td><t t-esc="line.date_to"/></td>
<td><t t-esc="line.employee_rate"/></td>
<td><t t-esc="line.company_rate"/></td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
</t>
</t>
<!-- ===============================
3) LAA (Accident Insurance)
=============================== -->
<hr/>
<h3>LAA Institutions</h3>
<t t-if="doc.get('laa_records')">
<t t-foreach="doc['laa_records']" t-as="laa">
<div class="mb16">
<h4><t t-esc="laa.name"/></h4>
<ul>
<li>
<strong>Insurance Number:</strong>
<t t-esc="laa.insurance_code"/>
</li>
<li>
<strong>UID-BFS Number:</strong>
<t t-esc="laa.uid_bfs_number"/>
</li>
<li>
<strong>Customer Number:</strong>
<t t-esc="laa.customer_number"/>
</li>
<li>
<strong>Contract Number:</strong>
<t t-esc="laa.contract_number"/>
</li>
</ul>
<!-- LAA Groups -->
<t t-if="laa.laa_group_ids">
<h5>LAA Groups</h5>
<t t-foreach="laa['laa_group_ids']" t-as="grp">
<div class="ml16 mb8">
<strong>Group Name:</strong> <t t-esc="grp.name"/>
<strong>Group Unit:</strong> <t t-esc="grp.group_unit"/>
<!-- Group lines -->
<t t-if="grp.line_ids">
<table class="table table-sm mt8">
<thead>
<tr>
<th>Valid From</th>
<th>Until</th>
<th>Threshold</th>
<th>Occupational Rate</th>
<th>Non-Occupational Rate</th>
<th>Employer AANP Part</th>
</tr>
</thead>
<tbody>
<t t-foreach="grp['line_ids']" t-as="ln">
<tr>
<td><t t-esc="ln.date_from"/></td>
<td><t t-esc="ln.date_to"/></td>
<td><t t-esc="ln.threshold"/></td>
<td><t t-esc="ln.occupational_male_rate"/>%</td>
<td><t t-esc="ln.non_occupational_male_rate"/>%</td>
<td><t t-esc="ln.employer_aanp_part"/>%</td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
</t>
</t>
</div>
</t>
</t>
<!-- ===============================
4) LAAC (Additional Accident)
=============================== -->
<hr/>
<h3>LAAC Institutions</h3>
<t t-if="doc.get('laac_records')">
<t t-foreach="doc['laac_records']" t-as="laac">
<div class="mb16">
<h4><t t-esc="laac.name"/></h4>
<ul>
<li>
<strong>Insurance Code:</strong>
<t t-esc="laac.insurance_code"/>
</li>
<li>
<strong>Customer Number:</strong>
<t t-esc="laac.customer_number"/>
</li>
<li>
<strong>Contract Number:</strong>
<t t-esc="laac.contract_number"/>
</li>
</ul>
<!-- LAAC Lines -->
<t t-if="laac.line_ids">
<h5>LAAC Solutions</h5>
<t t-foreach="laac.line_ids" t-as="sol">
<ul>
<li>
<strong>Name:</strong>
<t t-esc="sol.solution_name"/>
</li>
<li>
<strong>Code:</strong>
<t t-esc="sol.solution_type"/><t t-esc="sol.solution_number"/>
</li>
</ul>
<table class="table table-sm">
<thead>
<tr>
<th>Valid From</th>
<th>Until</th>
<th>Wage From</th>
<th>Wage To</th>
<th>Male Rate</th>
<th>Female Rate</th>
<th>Company Part</th>
</tr>
</thead>
<tbody>
<t t-foreach="sol.rate_ids" t-as="rate">
<tr>
<td><t t-esc="rate.date_from"/></td>
<td><t t-esc="rate.date_to"/></td>
<td><t t-esc="rate.wage_from"/></td>
<td><t t-esc="rate.wage_to"/></td>
<td><t t-esc="rate.male_rate"/></td>
<td><t t-esc="rate.female_rate"/></td>
<td><t t-esc="rate.employer_part"/>%</td>
</tr>
</t>
</tbody>
</table>
</t>
</t>
</div>
</t>
</t>
<!-- ===============================
5) IJM (Sickness Insurance)
=============================== -->
<hr/>
<h3>IJM (Sickness Insurance)</h3>
<h3>IJM Institutions</h3>
<t t-if="doc.get('ijm_records')">
<t t-foreach="doc['ijm_records']" t-as="laac">
<div class="mb16">
<h4><t t-esc="laac.name"/></h4>
<ul>
<li>
<strong>Insurance Code:</strong>
<t t-esc="laac.insurance_code"/>
</li>
<li>
<strong>Customer Number:</strong>
<t t-esc="laac.customer_number"/>
</li>
<li>
<strong>Contract Number:</strong>
<t t-esc="laac.contract_number"/>
</li>
</ul>
<!-- LAAC Lines -->
<t t-if="laac.line_ids">
<h5>IJM Solutions</h5>
<t t-foreach="laac.line_ids" t-as="sol">
<ul>
<li>
<strong>Name:</strong>
<t t-esc="sol.solution_name"/>
</li>
<li>
<strong>Code:</strong>
<t t-esc="sol.solution_type"/><t t-esc="sol.solution_number"/>
</li>
</ul>
<table class="table table-sm">
<thead>
<tr>
<th>Valid From</th>
<th>Until</th>
<th>Wage From</th>
<th>Wage To</th>
<th>Male Rate</th>
<th>Female Rate</th>
<th>Company Part</th>
</tr>
</thead>
<tbody>
<t t-foreach="sol.rate_ids" t-as="rate">
<tr>
<td><t t-esc="rate.date_from"/></td>
<td><t t-esc="rate.date_to"/></td>
<td><t t-esc="rate.wage_from"/></td>
<td><t t-esc="rate.wage_to"/></td>
<td><t t-esc="rate.male_rate"/></td>
<td><t t-esc="rate.female_rate"/></td>
<td><t t-esc="rate.employer_part"/>%</td>
</tr>
</t>
</tbody>
</table>
</t>
</t>
</div>
</t>
</t>
<!-- ===============================
6) LPP (Pension / 2e pilier)
=============================== -->
<hr/>
<h3>LPP Institutions</h3>
<t t-if="doc.get('lpp_records')">
<t t-foreach="doc['lpp_records']" t-as="lpp">
<div class="mb16">
<h4><t t-esc="lpp.name"/></h4>
<ul>
<li>
<strong>Insurance Code:</strong>
<t t-esc="lpp.insurance_code"/>
</li>
<li>
<strong>Customer Number:</strong>
<t t-esc="lpp.customer_number"/>
</li>
<li>
<strong>Contract Number:</strong>
<t t-esc="lpp.contract_number"/>
</li>
</ul>
</div>
</t>
</t>
<hr/>
<!-- ===============================
7) Source Tax Institutions
=============================== -->
<h3>Source Tax Institutions</h3>
<t t-if="doc.get('source_tax_institutions')">
<table class="table table-sm">
<thead>
<tr>
<th>Canton</th>
<th>DPI Number</th>
<th>Company Number</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc['source_tax_institutions']" t-as="sti">
<tr>
<td><t t-esc="sti.canton"/></td>
<td><t t-esc="sti.dpi_number"/></td>
<td><t t-esc="sti.company_number"/></td>
</tr>
</t>
</tbody>
</table>
</t>
<hr/>
</div>
</t>
</t>
</t>
</template>
</odoo>
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<template id="report_monthly_summary">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="wizard">
<t t-call="web.external_layout_standard" company="res_company">
<t t-foreach="line_values" t-as="aggreg_record">
<t t-set="company" t-value="aggreg_record if wizard.aggregation_type == 'company' else aggreg_record.company_id"/>
<div class="page">
<div class="row border">
<div class="col-4 border-end">
<strong>Nr.</strong> <span t-esc="wizard.id"/>
</div>
<div class="col-4 border-end">
<strong>From:</strong> <span t-esc="date_start"/>
</div>
<div class="col-4">
<strong>To:</strong> <span t-esc="date_end"/>
</div>
</div>
<div class="row border border-top-0">
<div class="col-4 border-end">
<t t-if="wizard.aggregation_type == 'company'">
<strong>Company:</strong> <br/>
<span t-esc="company.name"/> <br/>
<span t-esc="company.street"/> <span t-esc="company.street2"/><br/>
<span t-esc="company.zip"/>,
<span t-esc="company.city"/> <br/>
<span t-esc="company.country_id.name"/> <br/>
</t>
<t t-else="">
<strong>Employee:</strong> <br/>
<span t-esc="aggreg_record.name"/> <br/>
<span t-esc="aggreg_record.private_street"/> <span t-esc="aggreg_record.private_street2"/><br/>
<span t-esc="aggreg_record.private_zip"/>,
<span t-esc="aggreg_record.private_city"/> <br/>
<span t-esc="aggreg_record.private_country_id.name"/> <br/>
</t>
</div>
</div>
<div class="row border border-top-0">
<div class="col-12 text-center text-uppercase fw-bold">
Monthly Wage Type Summary.
</div>
</div>
<table class="table table-sm">
<thead class="o_black_border">
<tr>
<th>Code</th>
<th>Name</th>
<th class="text-end">Amount</th>
</tr>
</thead>
<tbody>
<t t-foreach="line_values[aggreg_record]" t-as="line">
<tr>
<td><span t-esc="line['code']"/></td>
<td><span t-esc="line['name']"/></td>
<td class="text-end">
<span t-esc="line['total']" t-options='{"widget": "monetary", "display_currency": company.currency_id}'/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
<p style="page-break-after: always;"/>
</t>
</t>
</t>
</t>
</template>
</data>
</odoo>
@@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="l10n_ch_elm_report_payslip">
<t t-set="company" t-value="o.company_id.sudo()"/>
<t t-call="web.external_layout_standard">
<div class="page">
<h2 id="payslip_name"><span t-field="o.name"/></h2>
<table class="table table-bordered table-sm o_table_ch o_table_ch_infos">
<tbody>
<tr>
<td style="width: 50%;"><strong>Name: </strong><span t-field="o.employee_id"/></td>
</tr>
<tr>
<td t-if="o.employee_id.l10n_ch_sv_as_number"><strong>AVS Number: </strong><span t-field="o.employee_id.l10n_ch_sv_as_number"/></td>
</tr>
<tr>
<td><strong>Address: </strong>
<span t-field="o.employee_id.private_street"/>,
<span t-field="o.employee_id.private_city"/>
<span t-field="o.employee_id.private_zip"/>,
<span t-field="o.employee_id.private_country_id"/>
</td>
</tr>
<tr>
<td><div t-if="o.version_id.job_id"><strong>Job Position: </strong><span t-field="o.version_id.job_id"/></div></td>
</tr>
<tr>
<td><strong>Entry Date: </strong><span t-out="o.l10n_ch_entry"/></td>
</tr>
<tr>
<td><div t-if="o.l10n_ch_withdrawal"><strong>Withdrawal Date: </strong><span t-field="o.l10n_ch_withdrawal"/></div></td>
</tr>
<tr>
<td><div t-if="not o.version_id.irregular_working_time"><strong>Activity Rate: </strong><span t-field="o.version_id.l10n_ch_current_occupation_rate"/> %</div></td>
</tr>
<tr>
<td t-if="o.l10n_ch_is_code"><strong>Source-Tax Code: </strong><span t-field="o.l10n_ch_is_code"/></td>
</tr>
<tr>
<t t-set="source_tax_line" t-value="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code == '9075')"/>
<td t-if="source_tax_line">
<strong>Source-Tax Rate: </strong><span t-out="str(round(source_tax_line.total, 4)) + ' %'"/>
</td>
</tr>
</tbody>
</table>
<table class="table table-bordered table-sm o_table_ch o_table_ch_payslip">
<thead class="o_black_border">
<tr>
<th class="text-center" style="width: 10%;">Code</th>
<th style="width: 50%;">Name</th>
<th class="text-end" style="width: 15%;">Amount</th>
<th class="text-end">Rate</th>
<th class="text-end" style="width: 15%;">Total</th>
</tr>
</thead>
<tbody>
<tr class="o_section_ch">
<td colspan="5">Income</td>
</tr>
<t t-foreach="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code &lt; '5000').sorted(lambda l: l.salary_rule_id.l10n_ch_code)" t-as="line">
<tr>
<td class="text-center"><span t-field="line.salary_rule_id.l10n_ch_code"/></td>
<td><span t-field="line.name"/></td>
<td class="text-end"><span t-esc="line.amount"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
<td class="text-end">
<span t-if="line.rate &lt; 100" t-out="str(round(line.rate, 4)) + ' %'"/>
<span t-if="line.rate > 100" t-out="round(line.rate / 100, 2)"/>
</td>
<td class="text-end"><span t-esc="line.total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
</t>
<t t-foreach="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '5000').sorted(lambda l: l.salary_rule_id.l10n_ch_code)" t-as="line">
<tr>
<td class="text-center fw-bold"><span t-field="line.salary_rule_id.l10n_ch_code"/></td>
<td class="fw-bold"><span t-field="line.name"/></td>
<td class="text-end fw-bold"><span t-if="line.quantity > 1 or line.rate != 100" t-esc="line.amount"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
<td class="text-end fw-bold"><span t-if="line.rate != 100" t-out="str(round(line.rate, 4)) + ' %'"/></td>
<td class="text-end fw-bold"><span t-esc="line.total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
</t>
<tr class="o_section_ch">
<td colspan="5">Deductions</td>
</tr>
<t t-foreach="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and '5000' &lt; line.salary_rule_id.l10n_ch_code &lt; '5999').sorted(lambda l: l.salary_rule_id.l10n_ch_code)" t-as="line">
<tr t-if="abs(line.total) > 0">
<td class="text-center"><span t-field="line.salary_rule_id.l10n_ch_code"/></td>
<td><span t-field="line.name"/></td>
<td class="text-end"><span t-if="line.quantity > 1 or line.rate != 100" t-esc="line.amount"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
<td class="text-end"><span t-if="line.rate != 100" t-out="str(round(abs(line.rate), 4)) + ' %'"/></td>
<td class="text-end"><span t-esc="line.total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
</t>
<tr class="o_section_ch" t-if="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and '5999' &lt; line.salary_rule_id.l10n_ch_code &lt; '6500')">
<td colspan="5">Expenses</td>
</tr>
<t t-foreach="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and '5999' &lt; line.salary_rule_id.l10n_ch_code &lt; '6500').sorted(lambda l: l.salary_rule_id.l10n_ch_code)" t-as="line">
<tr class="custom-row">
<td class="text-center"><span t-field="line.salary_rule_id.l10n_ch_code"/></td>
<td><span t-field="line.name"/></td>
<td class="text-end"><span t-if="line.quantity > 1 or line.rate != 100" t-esc="line.amount"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
<td class="text-end"><span t-if="line.rate != 100" t-out="str(round(abs(line.rate), 4)) + ' %'"/></td>
<td class="text-end"><span t-esc="line.total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
</t>
</tbody>
</table>
<table class="table table-bordered table-sm o_table_ch o_table_ch_net">
<tbody>
<tr>
<td class="text-center fw-bold" style="width: 10%;"><span>6500</span></td>
<td style="width: 75%;"><span class="fw-bold">Net Salary</span></td>
<td class="text-end fw-bold"><span t-esc="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '6500').total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
<tr t-if="abs(o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '6510').total) > 0">
<td class="text-center fw-bold" style="width: 10%;"><span>6510</span></td>
<td><span class="fw-bold">Advance Paid</span></td>
<td class="text-end fw-bold"><span t-esc="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '6510').total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
<tr t-if="abs(o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '6510').total) > 0">
<td class="text-center fw-bold" style="width: 10%;"><span>6600</span></td>
<td><span class="fw-bold">Net to Pay</span></td>
<td class="text-end fw-bold"><span t-esc="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '6600').total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<table class="table table-sm o_table_ch o_table_ch_net">
<tbody>
<tr t-if="abs(o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '9000').total) > 0">
<td class="text-center" style="width: 10%;"><span>9000</span></td>
<td style="width: 75%;"><span>Vacation Pay Provision</span></td>
<td class="text-end"><span t-esc="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '9000').total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
<tr t-if="abs(o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '9001').total) > 0">
<td class="text-center" style="width: 10%;"><span>9001</span></td>
<td><span>Vacation Pay Balance</span></td>
<td class="text-end"><span t-esc="o.line_ids.filtered(lambda line: line.salary_rule_id.l10n_ch_code and line.salary_rule_id.l10n_ch_code == '9001').total"
t-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<hr/>
<div class="center" id="to_pay_ch" t-if="o.employee_id.bank_account_ids">
<t t-if="o.net_wage >= 0">
<t t-set="allocations" t-value="o.compute_salary_allocations()"/>
<p>To pay on:</p>
<ul>
<t t-foreach="o.employee_id.bank_account_ids" t-as="ba">
<li>
<span class="fw-bold" t-out="ba.display_name"/>
of <span class="fst-italic" t-field="ba.acc_holder_name"/>:
<t t-esc="allocations.get(str(ba.id), 0.0)"/>
</li>
</t>
</ul>
</t>
</div>
</div>
</t>
</template>
<template id="ch_elm_report_payslip_lang">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-set="o" t-value="o.with_context(lang=o.employee_id.lang or o.env.lang)"/>
<t t-call="l10n_ch_hr_payroll.l10n_ch_elm_report_payslip" t-lang="o.env.lang"/>
</t>
</t>
</template>
</odoo>
@@ -0,0 +1,89 @@
<odoo>
<template id="report_wage_types_document">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="wizard">
<t t-set="company" t-value="doc.get('company')"/>
<t t-call="web.external_layout_standard">
<div class="page">
<h2>Wage Types Report - <t t-esc="company.name"/> - <t t-esc="year"/>-<t t-esc="month"/></h2>
<table class="table table-sm">
<thead>
<tr>
<th>Code</th>
<th>Name</th>
<th>+/-</th>
<th>Gross</th>
<th>AVS</th>
<th>LAA</th>
<th>LAAC</th>
<th>IJM</th>
<th>ST</th>
<th>Certificate</th>
<th>Statistic (M)</th>
<th>Statistic (Y)</th>
<th>LPP Forecast</th>
<th>LPP Factor</th>
<th>LPP Retroactive</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.get('salary_rules', [])" t-as="rule">
<tr t-if="rule.l10n_ch_code">
<td><t t-esc="rule.l10n_ch_code"/></td>
<td><t t-esc="rule.name"/></td>
<td>
<t t-if="rule.category_id.code in ['BASIC', 'ALW']">
+
</t>
<t t-elif="rule.category_id.code == 'DED'">
-
</t>
<t t-else="">
</t>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_gross_included else 0"/>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_ac_included else 0"/>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_aanp_included else 0"/>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_laac_included else 0"/>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_ijm_included else 0"/>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_source_tax_included else 0"/>
</td>
<td>
<t t-esc="rule.l10n_ch_salary_certificate"/>
</td>
<td>
<t t-esc="rule.l10n_ch_wage_statement"/>
</td>
<td>
<t t-esc="rule.l10n_ch_yearly_statement"/>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_lpp_forecast else ''"/>
</td>
<td>
<t t-esc="rule.l10n_ch_lpp_factor or ''"/>
</td>
<td>
<t t-esc="1 if rule.l10n_ch_lpp_retroactive else ''"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
</odoo>