snapshot: preserve dynamic pdf parity and quality pass
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ T.lang or 'de' }}">
|
||||
<html lang="{{ PDF_LANG or T.lang or 'de' }}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
@@ -29,12 +29,6 @@
|
||||
letter-spacing: 0.2px;
|
||||
}
|
||||
|
||||
.sub {
|
||||
margin: 2px 0 0 0;
|
||||
color: #6b7280;
|
||||
font-size: 9.5px;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-top: 9px;
|
||||
font-size: 11px;
|
||||
@@ -54,6 +48,8 @@
|
||||
border: 1px solid #f0e1e1;
|
||||
padding: 4px 6px;
|
||||
vertical-align: top;
|
||||
overflow-wrap: anywhere;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
th {
|
||||
@@ -141,17 +137,6 @@
|
||||
font-size: 9.4px;
|
||||
}
|
||||
|
||||
.manual-title {
|
||||
margin: 9px 0 5px;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
color: #111827;
|
||||
}
|
||||
|
||||
.manual-grid td {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -159,25 +144,26 @@
|
||||
<h1 class="title">{{ T.offboarding_title }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="section">{{ T.employee_info }}</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{ T.name }}</th>
|
||||
<td class="mono">{{ FULL_NAME }}</td>
|
||||
<th>{{ T.email }}</th>
|
||||
<td>{{ EMAIL }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.department }}</th>
|
||||
<td>{{ DEPARTMENT }}</td>
|
||||
<th>{{ T.job_title }}</th>
|
||||
<td>{{ JOB_TITLE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.last_working_day }}</th>
|
||||
<td colspan="3">{{ LAST_WORKING_DAY }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% for section in PDF_SECTIONS %}
|
||||
{% if section.has_content %}
|
||||
<div class="section">{{ section.title }}</div>
|
||||
|
||||
{% if section.scalar_rows %}
|
||||
<table>
|
||||
{% for row in section.scalar_rows %}
|
||||
<tr>
|
||||
<th>{{ row[0].label }}</th>
|
||||
<td{% if not row[1] %} colspan="3"{% endif %}{% if row[0].name in ['full_name', 'work_email'] %} class="mono"{% endif %}>{{ row[0].display_value }}</td>
|
||||
{% if row[1] %}
|
||||
<th>{{ row[1].label }}</th>
|
||||
<td>{{ row[1].display_value }}</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<div class="section">{{ T.offboarding_requester }}</div>
|
||||
<table>
|
||||
@@ -295,14 +281,6 @@
|
||||
<div class="sigline">{{ T.return_complete }} <span class="cb">□</span> {{ T.yes }}     <span class="cb">□</span> {{ T.no }}</div>
|
||||
</div>
|
||||
|
||||
<div class="section">{{ T.notes }}</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{ T.notes }}</th>
|
||||
<td>{{ NOTES }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p class="small">{{ T.offboarding_note }}</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -29,12 +29,6 @@
|
||||
letter-spacing: 0.2px;
|
||||
}
|
||||
|
||||
.sub {
|
||||
margin: 2px 0 0 0;
|
||||
color: #475569;
|
||||
font-size: 9.5px;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-top: 9px;
|
||||
font-size: 11px;
|
||||
@@ -101,11 +95,6 @@
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.empty {
|
||||
color: #94a3b8;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.signature {
|
||||
width: 150px;
|
||||
height: 70px;
|
||||
@@ -133,245 +122,41 @@
|
||||
<h1 class="title">{{ T.onboarding_title }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="section">{{ T.onboarding_staff_data }}</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{ T.name }}</th>
|
||||
<td class="mono" colspan="3">{{ DISPLAY_NAME }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.department }}</th>
|
||||
<td>{{ ABTEILUNG }}</td>
|
||||
<th>{{ T.job_title }}</th>
|
||||
<td>{{ BERUFSBEZEICHNUNG }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.work_email }}</th>
|
||||
<td>{{ EMAIL }}</td>
|
||||
<th>{{ T.employment_type }}</th>
|
||||
<td>{{ BESCHAEFTIGUNG }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.contract_start }}</th>
|
||||
<td>{{ VERTRAGSBEGINN }}</td>
|
||||
<th>{{ T.contract_end }}</th>
|
||||
<td>{{ VERTRAGSENDE }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.handover_date }}</th>
|
||||
<td colspan="3">{{ UEBERGABEDATUM }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% for section in PDF_SECTIONS %}
|
||||
{% if section.has_content %}
|
||||
<div class="section">{{ section.title }}</div>
|
||||
|
||||
<div class="section">{{ T.equipment_access }}</div>
|
||||
{% if section.scalar_rows %}
|
||||
<table>
|
||||
{% for row in section.scalar_rows %}
|
||||
<tr>
|
||||
<th>{{ row[0].label }}</th>
|
||||
<td{% if not row[1] %} colspan="3"{% endif %}{% if row[0].name in ['full_name', 'work_email'] %} class="mono"{% endif %}>{{ row[0].display_value }}</td>
|
||||
{% if row[1] %}
|
||||
<th>{{ row[1].label }}</th>
|
||||
<td>{{ row[1].display_value }}</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_DEVICES %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.devices }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in ARBEITSGERÄTE_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% for field in section.list_fields %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ field.label }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in field.display_value|batch(3, '') %}
|
||||
<tr>
|
||||
{% for cell in row %}
|
||||
<td>{% if cell %}• {{ cell }}{% endif %}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_GROUPS %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.workspace_groups }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in ZUGAENGE_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_SOFTWARE %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.software }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in SOFTWARE_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_ACCESSES %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.accesses }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in ACCOUNT_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_RESOURCES %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.resources }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in STANDARD_RESSOURCEN %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if GROUP_MAILBOXES_REQUIRED and HAS_GROUP_MAILBOXES %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.group_mailboxes_required }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in GROUP_MAILBOXES_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if ADDITIONAL_HARDWARE_NEEDED and HAS_ADDITIONAL_HARDWARE %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.additional_hardware_needed }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in ADDITIONAL_HARDWARE_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if ADDITIONAL_SOFTWARE_NEEDED and HAS_ADDITIONAL_SOFTWARE %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.additional_software_needed }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in ADDITIONAL_SOFTWARE_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if ADDITIONAL_ACCESS_NEEDED and HAS_ADDITIONAL_ACCESS %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.additional_access_needed }}</div>
|
||||
<table class="opt-grid">
|
||||
{% for row in ADDITIONAL_ACCESS_LIST %}
|
||||
<tr>
|
||||
{% for cell in row %}<td>• {{ cell }}</td>{% endfor %}
|
||||
{% if row|length < 3 %}
|
||||
{% for _ in range(3 - row|length) %}<td></td>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if (VISITENKARTE_BESTELLT and HAS_VISITENKARTE_DATEN) or HAS_ADDITIONAL_HARDWARE_OTHER or HAS_SUCCESSOR_INFO or HAS_ADDITIONAL_NOTES %}
|
||||
<div class="section">{{ T.additional_details }}</div>
|
||||
{% endif %}
|
||||
|
||||
{% if VISITENKARTE_BESTELLT and HAS_VISITENKARTE_DATEN %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.business_cards }}</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{ T.name }}</th>
|
||||
<td>{{ VISITENKARTE_NAME }}</td>
|
||||
<th>{{ T.job_title }}</th>
|
||||
<td>{{ VISITENKARTE_TITEL }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.email }}</th>
|
||||
<td>{{ VISITENKARTE_EMAIL }}</td>
|
||||
<th>{{ T.phone }}</th>
|
||||
<td>{{ VISITENKARTE_TELEFON }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_ADDITIONAL_HARDWARE_OTHER %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.additional_hardware_other }}</div>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{{ ADDITIONAL_HARDWARE_OTHER }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_SUCCESSOR_INFO %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.successor_phone }}</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{ T.successor_of }}</th>
|
||||
<td>{{ SUCCESSOR_NAME }}</td>
|
||||
<th>{{ T.inherit_phone_number }}</th>
|
||||
<td>{{ INHERIT_PHONE_NUMBER }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{ T.direct_extension }}</th>
|
||||
<td colspan="3">{{ PHONE_NUMBER }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if HAS_ADDITIONAL_NOTES %}
|
||||
<div class="opt-card">
|
||||
<div class="opt-title">{{ T.notes }}</div>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{{ ADDITIONAL_NOTES }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<div class="section">{{ T.confirmation }}</div>
|
||||
<table>
|
||||
|
||||
Reference in New Issue
Block a user