{% extends "base.html" %} {% block title %}{{ _("Map the payslip") }} · {{ account.name }}{% endblock %} {% block heading %}{{ _("Map the payslip") }}{% endblock %} {% block lede %}

{{ _("No importer here knows this sheet, and it does not need to: say which line is which, once. The mapping is kept under the sheet's own markers — the employer and the earner — so next month's sheet from the same employer is recognised by itself. The suggestions come from a catalogue of what payslips call things in the languages they are printed in; what is remembered is what you confirm.") }}

{% endblock %} {% block content %} {% set names = { '': '—', 'gross': _("Gross"), 'base': _("Base salary"), 'bonus': _("Bonus"), 'allowance': _("Allowance"), 'tax': _("Tax at source"), 'social': _("Social deduction"), 'pension': _("Pension, yours"), 'other': _("Other deduction"), 'net': _("Net paid"), 'employer_pension': _("Pension, the employer's"), 'employer_social': _("Social, the employer's"), 'period': _("The month"), 'paid': _("Paid on") } %}

{{ _("Whose sheet") }}

{{ filename }} · {{ _f("amounts written the {fmt} way", fmt={'de': '1.234,56', 'ch': "1’234.56", 'en': '1,234.56', 'fr': '1 234,56'}[fmt]) }}

{{ _("Both names must appear on the sheet as written here — spaces and case do not matter — because that is how the next sheet is recognised. The earner's name is what the Income page groups by.") }}

{{ _("The lines") }}

{{ _n(lines | length, "{n} line with an amount, a month or a date", "{n} lines with an amount, a month or a date") }}
{% for l in lines %}{% set i = loop.index0 %} {% endfor %}
{{ _("Label") }}{{ _("Amounts") }}{{ _("Rate") }}{{ _("Means") }}
{{ l.label }}{% if l.month or l.date %}{{ l.month or '' }} {{ l.date or '' }}{% endif %} {% for a in l.amounts %}{{ '%.2f' | format(a) }}{% if not loop.last %} · {% endif %}{% endfor %} {% for r in l.rates %}{{ '%g' | format(r) }} %{% if not loop.last %} · {% endif %}{% endfor %}

{{ _("On a line with several amounts the last one is the amount; the ones before it are the basis and the rate. Deductions are stored as money out whichever way the sheet prints them — a French bulletin prints its retenues positive, an SAP sheet with a trailing minus — because what a line means settles the sign. Several lines may mean the same thing: AHV and ALV are both social deductions. Lines left at — are kept as detail and count for nothing.") }}

{{ _("This is not a payslip") }}
{% if preview %}

{{ _("Read through the mapping") }}

{{ preview.employee }} · {{ preview.employer }} · {{ preview.period }}{% if preview.paid_on %} · {{ _f("paid {date}", date=d(preview.paid_on)) }}{% endif %}
{{ _("Gross") }}
{{ money(preview.gross, preview.currency) }}
{% if preview.base_salary %}{{ _f("base {amount}", amount=money(preview.base_salary, preview.currency)) }}{% endif %}{% if preview.bonus %} · {{ _f("bonus {amount}", amount=money(preview.bonus, preview.currency)) }}{% endif %}
{{ _("Taken at source") }}
{{ money(preview.tax + preview.employee_social + preview.employee_pension + preview.other_deductions, preview.currency) }}
{{ _f("tax {tax} · social {social} · pension {pension} · other {other}", tax=money(preview.tax, preview.currency), social=money(preview.employee_social, preview.currency), pension=money(preview.employee_pension, preview.currency), other=money(preview.other_deductions, preview.currency)) }}
{{ _("Net paid") }}
{{ money(preview.net_paid, preview.currency) }}
{% if gap is not none and (gap | abs) <= 0.05 %}{{ _("gross less every deduction is the net: the mapping caught every line") }}{% else %}{{ _f("gross less the deductions differs from the net by {gap} — a line is missing or mapped twice", gap=money(gap, preview.currency)) }}{% endif %}
{{ _("Employer's side") }}
{{ money(preview.employer_pension + preview.employer_social, preview.currency) }}
{% if preview.employer_side_known %}{{ _f("pension {pension} · social {social}", pension=money(preview.employer_pension, preview.currency), social=money(preview.employer_social, preview.currency)) }}{% else %}{{ _("nothing mapped as the employer's — the sheet may print none") }}{% endif %}
{% endif %} {% endblock %}