{% extends "shared/frontend/base.html" %} {% block title %}{{ case.titel }} - BMC Hub{% endblock %} {% block extra_css %} {% endblock %} {% block content %}
Tilbage til sager
{% set tkey = (case.template_key or case.type or 'ticket')|lower %} {% set type_icons = {'ticket': 'bi-ticket-perforated', 'pipeline': 'bi-graph-up-arrow', 'opgave': 'bi-puzzle', 'ordre': 'bi-receipt', 'projekt': 'bi-folder2-open', 'service': 'bi-tools'} %} {% set type_labels = {'ticket': 'Ticket', 'pipeline': 'Pipeline', 'opgave': 'Opgave', 'ordre': 'Ordre', 'projekt': 'Projekt', 'service': 'Service'} %} {% set type_colors = {'ticket': '#6366f1', 'pipeline': '#0ea5e9', 'opgave': '#f59e0b', 'ordre': '#10b981', 'projekt': '#8b5cf6', 'service': '#ef4444'} %} {% set tcolor = type_colors.get(tkey, '#0f4c75') %} {% set ticon = type_icons.get(tkey, 'bi-card-text') %} {% set tlabel = type_labels.get(tkey, tkey|capitalize) %}
#{{ case.id }} {{ case.status|capitalize }}
{{ case.created_at.strftime('%d. %b %Y') if case.created_at else '—' }} · {{ case.updated_at.strftime('%d. %b %Y') if case.updated_at else '—' }}
Kunde
{% if customer %} {{ customer.name }} {% else %} Ingen {% endif %}
Kontakt
{% if hovedkontakt %} {{ hovedkontakt.first_name ~ ' ' ~ hovedkontakt.last_name }} {% else %} Ingen {% endif %}
Afdeling
{{ customer.department if customer and customer.department else '—' }}
Type
Ansvarlig
Deadline
{% if case.deadline %} {{ case.deadline.strftime('%d/%m/%Y') }} {% else %} Ingen deadline {% endif %}
Udsat til
{% if case.deferred_until %} {{ case.deferred_until.strftime('%d/%m/%Y') }} {% else %} Ikke udsat {% endif %}
📍 Lokationer
Henter lokationer...
🏢 Kunder
{% if customers %}
Navn Rolle E-mail Slet
{% for customer in customers %}
{{ customer.role or '-' }} {{ customer.customer_email or '-' }}
{% endfor %} {% else %}

Ingen kunder

{% endif %}
👥 Kontakter
{% if contacts %}
Navn Titel Kunde Slet
{% for contact in contacts %}
{{ contact.contact_name }}
{{ contact.title or '-' }} {{ contact.customer_name or '-' }}
{% endfor %} {% else %}

Ingen kontakter

{% endif %}
📈 Salgspipeline
Stage
{% set ns = namespace(selected_stage=None) %} {% for stage in pipeline_stages or [] %} {% if case.pipeline_stage_id == stage.id %} {% set ns.selected_stage = stage %} {% endif %} {% endfor %} {% if ns.selected_stage %} {{ ns.selected_stage.name }} {% else %} Ikke sat {% endif %}
Sandsynlighed
{{ case.pipeline_probability if case.pipeline_probability is not none else 0 }}%
Beløb
{% if case.pipeline_amount is not none %} {{ "{:,.2f}".format(case.pipeline_amount|float).replace(',', 'X').replace('.', ',').replace('X', '.') }} kr. {% else %} Ikke sat {% endif %}
Beskrivelse
{{ case.pipeline_description or 'Ingen beskrivelse' }}
📞 Opkaldshistorik
{% if call_history and call_history|length > 0 %}
{% for call in call_history %} {% endfor %}
Dato Retning Nummer Bruger Varighed
{{ call.started_at.strftime('%d/%m/%Y %H:%M') if call.started_at else '-' }} {{ 'Udgående' if call.direction == 'outbound' else 'Indgående' }} {% if call.ekstern_nummer %}
{{ call.ekstern_nummer }}
{% else %} - {% endif %}
{{ call.full_name or call.username or '-' }} {% if call.duration_sec is not none %} {{ (call.duration_sec // 60)|int }}:{{ '%02d'|format((call.duration_sec % 60)|int) }} {% elif call.ended_at %} - {% else %} I gang {% endif %}
{% else %}
Ingen opkald linket til denne sag
{% endif %}

{{ case.titel }}

{{ case.status }} {{ case.template_key or case.type or 'ticket' }}
Opgavebeskrivelse
{{ case.beskrivelse or '' }}
{% if not case.beskrivelse %}

Ingen opgavebeskrivelse tilføjet endnu.

Klik Rediger eller dobbeltklik for at tilføje
{% endif %}
Ctrl+Enter for at gemme · Esc for at annullere
Indlæser...
🔗 Relationer
{% macro render_tree(nodes) %}
    {% for node in nodes %}
  • {% if node.relation_type %} {% set rel_icon = 'bi-link-45deg' %} {% set rel_color = 'text-muted' %} {% set rel_help = 'Faglig kobling uden direkte afhængighed' %} {% if node.relation_type == 'Afledt af' %} {% set rel_icon = 'bi-arrow-return-right' %} {% set rel_color = 'text-info' %} {% set rel_help = 'Denne sag er opstået på baggrund af en anden sag' %} {% elif node.relation_type == 'Årsag til' %} {% set rel_icon = 'bi-arrow-right-circle' %} {% set rel_color = 'text-primary' %} {% set rel_help = 'Denne sag er årsagen til en anden sag' %} {% elif node.relation_type == 'Blokkerer' %} {% set rel_icon = 'bi-slash-circle' %} {% set rel_color = 'text-danger' %} {% set rel_help = 'Arbejdet i denne sag blokerer den anden' %} {% endif %} {{ node.relation_type }} {% endif %} {% if node.is_current %} ▶ #{{ node.case.id }} {{ node.case.titel }} {% else %} #{{ node.case.id }} {{ node.case.titel }} {% endif %} {% if node.is_repeated %} {% endif %}
    {% if node.relation_id %} {% endif %}
    {% if node.children %}
    {{ render_tree(node.children) }}
    {% endif %}
  • {% endfor %}
{% endmacro %} {# Only show tree when there is more than the lone current case #} {% set has_relations = relation_tree and (relation_tree|length > 1 or (relation_tree|length == 1 and relation_tree[0].children)) %} {% if has_relations %}
{{ render_tree(relation_tree) }}
{% else %}

Ingen relaterede sager

{% endif %}
📁 Filer & Dokumenter

Træk filer hertil for at uploade

Ingen filer fundet...
Tid & Fakturering
{% for entry in time_entries %} {% else %} {% endfor %}
Dato Beskrivelse Bruger Timer
{{ entry.worked_date }} {{ entry.description or '-' }} {{ entry.user_name }} {{ entry.original_hours }}
Ingen tid registreret endnu
{% if prepaid_cards %}
Aktive Klippekort
{% for card in prepaid_cards %}
Kort #{{ card.card_number or card.id }}
{{ '%.2f' % card.remaining_hours }} timer tilbage
{% endfor %}
{% endif %}
💻 Hardware
Henter hardware...
Kunde-wiki
Henter wiki...
✅ Todo-opgaver
Ingen opgaver endnu
Kommentarer
{{ comments|length if comments else 0 }}
{% if comments %} {% for comment in comments %}
{{ comment.forfatter }} {{ comment.created_at.strftime('%d/%m-%Y %H:%M') }}
{{ comment.indhold|replace('\n', '
')|safe }}
{% endfor %} {% else %}

Ingen kommentarer endnu.

{% endif %}
{% if nextcloud_instance %} {% endblock %}