{% extends "client_portal/base.html" %} {% from "components/ui.html" import page_header %} {% block title %}{{ _('Client Portal') }} - {{ client.name }}{% endblock %} {% block content %} {% set breadcrumbs = [ {'text': _('Client Portal'), 'url': url_for('client_portal.dashboard')} ] %} {{ page_header( icon_class='fas fa-building', title_text=_('Client Portal'), subtitle_text=_('Welcome, %(client_name)s', client_name=client.name), breadcrumbs=breadcrumbs ) }}
{{ _('Active Projects') }}
{{ total_projects }}
{{ _('Total Hours') }}
{{ "%.2f"|format(total_hours) }}
{{ _('Total Invoices') }}
{{ total_invoices }}
{{ _('Outstanding') }}
{{ "%.2f"|format(unpaid_invoice_amount) }} {{ invoices[0].currency_code if invoices else 'EUR' }}
{{ project.name }}
{% if project.description %}{{ project.description[:50] }}{% if project.description|length > 50 %}...{% endif %}
{% endif %}{{ _('No projects found.') }}
{% endif %}{{ invoice.issue_date.strftime('%Y-%m-%d') }}
{{ "%.2f"|format(invoice.total_amount) }} {{ invoice.currency_code }}
{{ invoice.payment_status|replace('_', ' ')|title }}{{ _('No invoices found.') }}
{% endif %}| {{ _('Date') }} | {{ _('Project') }} | {{ _('User') }} | {{ _('Duration') }} | {{ _('Description') }} |
|---|---|---|---|---|
| {{ entry.start_time.strftime('%Y-%m-%d') }} | {{ entry.project.name if entry.project else _('N/A') }} | {{ entry.user.display_name if entry.user else _('N/A') }} | {{ "%.2f"|format(entry.duration_hours) }}h | {{ entry.description[:50] if entry.description else '-' }}{% if entry.description and entry.description|length > 50 %}...{% endif %} |
{{ _('No time entries found.') }}
{% endif %}