{{ notification.title }}

{{ notification.message }}

Sihl ERP

{{ getTabName(currentTab) }}

DE Deutsch
EN English
SQ Shqip

{{ user.email }}

{{ getTranslation('reports') }}

{{ reports.length }}

{{ getTranslation('clients') }}

{{ clients.length }}

{{ getTranslation('hoursToday') }}

{{ totalHoursToday }}

{{ getTranslation('invoices') }}

{{ invoices.length }}

{{ getTranslation('equipment') }}

{{ equipmentList.length }}

{{ getTranslation('totalPayroll') }}

{{ totalMonthlyPayroll.toLocaleString('de-CH') }} CHF

{{ getTranslation('reports') }}

{{ reports.length }}

{{ getTranslation('clients') }}

{{ clients.length }}

{{ getTranslation('hoursToday') }}

{{ totalHoursToday }}

{{ getTranslation('invoices') }}

{{ invoices.length }}

{{ getTranslation('fullMenu') }}

{{ getTranslation('latestReports') }}

{{ getTranslation('loading') }}...

{{ getTranslation('noReports') }}

{{ getTranslation('noReportsFound') }}

{{ getTranslation('swipeForDetails') }}
{{ report.submittedBy ? report.submittedBy.charAt(0) : 'A' }}

{{ report.submittedBy || getTranslation('anonymous') }}

{{ formatDate(report.date) }}

{{ report.site }}

{{ report.client }}

{{ report.totalHours || '0' }}h
{{ task.substring(0, 12) }}{{ task.length > 12 ? '...' : '' }} +{{ report.tasksList.length - 2 }}

{{ getTranslation('quickActions') }}

{{ getTranslation('latestReports') }}

{{ getTranslation('allSubmittedReports') }}

{{ getTranslation('loadingData') }}...
{{ getTranslation('date') }} {{ getTranslation('employee') }} {{ getTranslation('clientAndSite') }} {{ getTranslation('hours') }} {{ getTranslation('actions') }}
{{ formatDate(report.date) }}
{{ report.workType || getTranslation('regular') }}
{{ report.submittedBy || getTranslation('anonymous') }}
{{ getTranslation('report') }} #{{ report.reportNumber || report.id }}
{{ report.client || '-' }}
{{ report.site }}
{{ report.totalHours || '0' }}h
{{ getTranslation('page') }} {{ currentReportPage }} {{ getTranslation('of') }} {{ totalReportPages }}

{{ getTranslation('noReportsYet') }}

{{ getTranslation('noReportsSubmitted') }}

{{ getTranslation('clients') }}

{{ getTranslation('manageAllClients') }}

{{ client.name }}

{{ getClientHours(client.name) }}h total
{{ client.email }}
{{ client.phone }}
{{ client.address }}
{{ getClientInvoices(client.name).length }} {{ getTranslation('invoices') }}

{{ getTranslation('noClientsYet') }}

{{ getTranslation('addYourFirstClient') }}

{{ getTranslation('page') }} {{ currentClientPage }} {{ getTranslation('of') }} {{ totalClientPages }}

{{ getTranslation('clients') }}

{{ client.name }}

{{ getClientHours(client.name) }}h total

{{ client.email }}
{{ client.phone }}
{{ getClientInvoices(client.name).length }} {{ getTranslation('invoices') }}
Page {{ currentClientPage }} of {{ totalClientPages }}

{{ getTranslation('noClients') }}

{{ getTranslation('invoices') }}

{{ getTranslation('manageAllInvoices') }}

{{ getTranslation('invoiceNumber') }} {{ getTranslation('client') }} {{ getTranslation('date') }} {{ getTranslation('dueDate') }} {{ getTranslation('amount') }} {{ getTranslation('status') }} {{ getTranslation('actions') }}
{{ invoice.invoiceNumber || invoice.id }}
{{ invoice.site || '-' }}
{{ invoice.client || '-' }} {{ formatDate(invoice.date) }}
{{ formatDate(invoice.dueDate) }}
{{ invoice.totalAmount?.toLocaleString('de-CH') || '0' }} CHF {{ getInvoiceStatusText(invoice) }}
{{ getTranslation('page') }} {{ currentInvoicePage }} {{ getTranslation('of') }} {{ totalInvoicePages }}

{{ getTranslation('totalInvoices') }}

{{ invoices.length }}

{{ getTranslation('totalPending') }}

{{ totalPendingInvoices.toLocaleString('de-CH') }} CHF

{{ getTranslation('totalPaid') }}

{{ totalPaidInvoices.toLocaleString('de-CH') }} CHF

{{ getTranslation('invoices') }}

{{ invoice.invoiceNumber || invoice.id }}

{{ invoice.client || '-' }}

{{ getInvoiceStatusText(invoice) }}

{{ getTranslation('date') }}

{{ formatDate(invoice.date) }}

{{ getTranslation('dueDate') }}

{{ formatDate(invoice.dueDate) }}

{{ getTranslation('amount') }}

{{ invoice.totalAmount || '0' }} CHF

{{ getTranslation('noInvoices') }}

{{ getTranslation('schedule') }}

{{ getTranslation('planAndManageSchedule') }}

{{ getMonthName(currentMonth) }} {{ currentYear }}

{{ todayEvents.length }} {{ getTranslation('eventsToday') }}

Mo
Di
Mi
Do
Fr
Sa
So
{{ day.day }}
{{ event.client || event.site }}

{{ getTranslation('todayEvents') }}

{{ event.client || event.site }} {{ event.startTime }}

{{ event.notes || 'Keine Notizen' }}

{{ getTranslation('noEventsToday') }}

{{ getTranslation('upcomingEvents') }}

{{ event.client || event.site }} {{ formatDate(event.date) }}

{{ getTranslation('equipment') }}

{{ getTranslation('manageAllEquipment') }}

{{ getTranslation('totalEquipment') }}

{{ equipmentList.length }}

{{ getTranslation('needsMaintenance') }}

{{ equipmentNeedingMaintenance.length }}

{{ getTranslation('inUse') }}

{{ equipmentInUse.length }}

{{ getTranslation('totalValue') }}

{{ totalEquipmentValue.toLocaleString('de-CH') }} CHF

{{ equipment.name }}

{{ equipment.model || 'Kein Modell' }}

{{ getTranslation('serialNumber') }}: {{ equipment.serialNumber || '-' }}
{{ getTranslation('status') }}: {{ equipment.status === 'available' ? 'Verfügbar' : 'In Benutzung' }}
{{ getTranslation('lastService') }}: {{ formatDate(equipment.lastService) }}
{{ getTranslation('assignedTo') }}: {{ equipment.currentUser }}

{{ getTranslation('noEquipment') }}

{{ getTranslation('addYourFirstEquipment') }}

{{ getTranslation('page') }} {{ currentEquipmentPage }} {{ getTranslation('of') }} {{ totalEquipmentPages }}

{{ getTranslation('equipment') }}

{{ getTranslation('totalEquipment') }}

{{ equipmentList.length }}

{{ getTranslation('needsMaintenance') }}

{{ equipmentNeedingMaintenance.length }}

{{ equipment.name }}

{{ equipment.model || '-' }}

{{ getTranslation('status') }} {{ equipment.status === 'available' ? getTranslation('available') : getTranslation('inUse') }}
{{ getTranslation('lastService') }} {{ formatDate(equipment.lastService) }}
{{ currentEquipmentPage }} / {{ totalEquipmentPages }}

{{ getTranslation('payroll') }}

{{ getMonthName(new Date().getMonth()) }} {{ new Date().getFullYear() }}

{{ getTranslation('totalHours') }}

{{ totalMonthlyHours }}

{{ getTranslation('totalPayroll') }}

{{ totalMonthlyPayroll.toLocaleString('de-CH') }} CHF

{{ getTranslation('avgHourlyRate') }}

{{ averageHourlyRate.toFixed(2) }} CHF

{{ getTranslation('staffCount') }}

{{ staffList.length }}

{{ getTranslation('employee') }} {{ getTranslation('hours') }} {{ getTranslation('hourlyRate') }} {{ getTranslation('total') }} {{ getTranslation('status') }} {{ getTranslation('actions') }}
{{ worker.name.charAt(0) }}
{{ worker.name }}
{{ getPaymentMethodText(worker.paymentMethod) }}
{{ getWorkerHoursThisMonth(worker.name) }}h
{{ worker.hourlyRate?.toLocaleString('de-CH') || '0' }} CHF
{{ calculateWorkerPay(worker).toLocaleString('de-CH') }} CHF {{ isWorkerPaid(worker.name) ? getTranslation('paid') : getTranslation('pending') }}

{{ getTranslation('noStaff') }}

{{ getTranslation('addStaffFirst') }}

{{ getTranslation('page') }} {{ currentStaffPage }} {{ getTranslation('of') }} {{ totalStaffPages }}

{{ getTranslation('payroll') }}

{{ getMonthName(new Date().getMonth()) }} {{ new Date().getFullYear() }}

{{ getTranslation('totalHours') }}

{{ totalMonthlyHours }}h

{{ getTranslation('totalPayroll') }}

{{ totalMonthlyPayroll.toLocaleString('de-CH') }}

{{ worker.name.charAt(0) }}

{{ worker.name }}

{{ getPaymentMethodText(worker.paymentMethod) }}
{{ isWorkerPaid(worker.name) ? getTranslation('paid') : getTranslation('pending') }}

{{ getTranslation('hours') }}

{{ getWorkerHoursThisMonth(worker.name) }}h

{{ getTranslation('hourlyRate') }}

{{ worker.hourlyRate || 0 }}

{{ getTranslation('total') }}

{{ calculateWorkerPay(worker).toLocaleString('de-CH') }}

{{ currentStaffPage }} / {{ totalStaffPages }}

{{ getTranslation('tasks') }}

{{ getTranslation('manageAllTasks') }}

{{ getTranslation('activeTasks') }}

{{ activeTasksCount }}

{{ getTranslation('categories') }}

{{ categoriesCount }}

{{ getTranslation('avgTimePerTask') }}

{{ averageTaskTime }}

{{ task.name }}

{{ getCategoryName(task.category) }}
{{ task.estimatedTime }}h
{{ getFrequencyText(task.frequency) }}

{{ task.description }}

{{ formatTimestamp(task.createdAt) }}

{{ getTranslation('noTasks') }}

{{ getTranslation('createYourFirstTask') }}

{{ getTranslation('page') }} {{ currentTaskPage }} {{ getTranslation('of') }} {{ totalTaskPages }}

{{ getTranslation('tasks') }}

{{ task.name }}

{{ getCategoryName(task.category) }}

{{ task.description }}

{{ task.estimatedTime }}h {{ getFrequencyText(task.frequency) }}

{{ getTranslation('noTasks') }}

{{ currentTaskPage }} / {{ totalTaskPages }}

{{ getTranslation('staff') }}

{{ getTranslation('manageAllStaffMembers') }}

{{ getTranslation('totalStaff') }}

{{ staffList.length }}

{{ getTranslation('totalHoursThisMonth') }}

{{ totalMonthlyHours }}

{{ getTranslation('avgHoursPerStaff') }}

{{ (totalMonthlyHours / staffList.length || 0).toFixed(1) }}

{{ getTranslation('avgHourlyRate') }}

{{ averageHourlyRate.toFixed(2) }} CHF

{{ getTranslation('employee') }} {{ getTranslation('hoursThisMonth') }} {{ getTranslation('hourlyRate') }} {{ getTranslation('paymentMethod') }} {{ getTranslation('status') }} {{ getTranslation('actions') }}
{{ staff.name.charAt(0) }}
{{ staff.name }}
PIN: {{ staff.pin }}
{{ getWorkerHoursThisMonth(staff.name) }}h
{{ getWorkerHours(staff.name) }}h total
{{ staff.hourlyRate?.toLocaleString('de-CH') || '0' }} CHF {{ getPaymentMethodText(staff.paymentMethod) }}
{{ staff.bankAccount }}
{{ isWorkerPaid(staff.name) ? getTranslation('paid') : getTranslation('active') }}

{{ getTranslation('noStaff') }}

{{ getTranslation('addYourFirstStaffMember') }}

{{ getTranslation('staff') }}

{{ getMonthName(new Date().getMonth()) }}

{{ getTranslation('totalHours') }}

{{ totalMonthlyHours }}h

{{ getTranslation('totalPayroll') }}

{{ totalMonthlyPayroll.toLocaleString('de-CH') }}

{{ worker.name.charAt(0) }}

{{ worker.name }}

{{ getPaymentMethodText(worker.paymentMethod) }}
{{ isWorkerPaid(worker.name) ? getTranslation('paid') : getTranslation('pending') }}

{{ getTranslation('hours') }}

{{ getWorkerHoursThisMonth(worker.name) }}h

{{ getTranslation('hourlyRate') }}

{{ worker.hourlyRate || 0 }}

{{ getTranslation('total') }}

{{ calculateWorkerPay(worker).toLocaleString('de-CH') }}

{{ getTranslation('page') }} {{ currentStaffPage }} {{ getTranslation('of') }} {{ totalStaffPages }}

{{ getTranslation('fullMenu') }}

{{ getTranslation('reportDetails') }}

{{ formatDate(viewingReport.date) }}

{{ getTranslation('basicInfo') }}

{{ getTranslation('reportNumber') }} {{ viewingReport.reportNumber || viewingReport.id }}
{{ getTranslation('employee') }} {{ viewingReport.submittedBy || getTranslation('anonymous') }}
{{ getTranslation('workType') }} {{ viewingReport.workType || getTranslation('regular') }}

{{ getTranslation('locationInfo') }}

{{ getTranslation('client') }} {{ viewingReport.client || '-' }}
{{ getTranslation('site') }} {{ viewingReport.site }}
{{ getTranslation('totalHours') }} {{ viewingReport.totalHours || '0' }}h

{{ getTranslation('workDetails') }}

{{ index + 1 }}
{{ task }}
Nuk ka detyra të regjistruara

Makineritë / Pajisjet

{{ machine.type || machine.name }}
{{ machine.vermieter || 'Sihl Garten' }}
{{ machine.hours }}h

Materialet

Deponie / Mbetje

{{ item.name || item.type }}
{{ item.amount }} {{ item.unit || 'm³' }}

{{ getTranslation('signatures') }}

Signature
{{ getTranslation('notes') }}:

"{{ viewingReport.notes }}"

{{ getTranslation('photos') }} ({{ viewingReport.photos.length }})

Report Photo

{{ getTranslation('newReport') }}

{{ getTranslation('editReport') }}

{{ getTranslation('newClient') }}

{{ getTranslation('editClient') }}

{{ getTranslation('newInvoice') }}

{{ getTranslation('invoiceItems') }}

{{ (item.quantity * item.unitPrice).toFixed(2) }} CHF
{{ getTranslation('subtotal') }}: {{ newInvoice.subtotal.toFixed(2) }} CHF
{{ getTranslation('tax') }} (8%): {{ newInvoice.tax.toFixed(2) }} CHF
{{ getTranslation('total') }}: {{ newInvoice.totalAmount.toFixed(2) }} CHF

{{ getTranslation('invoiceDetails') }}

{{ viewingInvoice.invoiceNumber || viewingInvoice.id }}

{{ getTranslation('invoiceFrom') }}

Sihl Garten GmbH

Musterstrasse 123

8000 Zürich

Schweiz

{{ getTranslation('invoiceTo') }}

{{ viewingInvoice.client }}

{{ viewingInvoice.site }}

{{ getTranslation('invoiceNumber') }}

{{ viewingInvoice.invoiceNumber || viewingInvoice.id }}

{{ getTranslation('invoiceDate') }}

{{ formatDate(viewingInvoice.date) }}

{{ getTranslation('dueDate') }}

{{ formatDate(viewingInvoice.dueDate) }}

{{ getTranslation('status') }}

{{ getInvoiceStatusText(viewingInvoice) }}
{{ getTranslation('description') }} {{ getTranslation('quantity') }} {{ getTranslation('unitPrice') }} {{ getTranslation('total') }}
{{ item.description }} {{ item.quantity }} {{ item.unitPrice?.toFixed(2) || '0.00' }} CHF {{ (item.quantity * item.unitPrice).toFixed(2) }} CHF
{{ getTranslation('subtotal') }}: {{ viewingInvoice.subtotal?.toFixed(2) || '0.00' }} CHF
{{ getTranslation('tax') }} (8%): {{ viewingInvoice.tax?.toFixed(2) || '0.00' }} CHF
{{ getTranslation('total') }}: {{ viewingInvoice.totalAmount?.toFixed(2) || '0.00' }} CHF
{{ getTranslation('notes') }}:

{{ viewingInvoice.notes }}

{{ getTranslation('newSchedule') }}

bis

{{ getTranslation('duration') }}: {{ calculateDuration() }}h

{{ getTranslation('edit') }} Termin

ID: {{ editingScheduleEvent.id.substring(0, 8) }}...

bis

{{ getTranslation('newEquipment') }}

{{ getTranslation('editEquipment') }}

{{ getTranslation('editWageRate') }}

{{ getTranslation('newTask') }}

{{ getTranslation('editTask') }}

{{ getTranslation('newStaff') }}

{{ getTranslation('editStaff') }}