{% extends "base.html" %} {% block title %}{{ equipment.name }} — GMAO Collège{% endblock %} {% block content %}
{% if equipment.is_group %} {% if equipment.parent_id %} Sous-groupe {% else %} Groupe {% endif %} {% elif equipment.parent_id %} Suivi individuel {% else %} Équipement simple {% endif %}

{{ equipment.name }} {% if equipment.code %}({{ equipment.code }}){% endif %}

{% if equipment.parent %} Parent: {{ equipment.parent.name }} {% endif %} {% if equipment.tree_depth > 0 %}
Hiérarchie : {% for i in range(equipment.tree_depth) %}  {% endfor %} {{ equipment.tree_path }}
{% endif %}
{% if equipment.status != 'jete' %} Modifier Restrictions Intervention {% if equipment.mobility != 'fixe' %} Déplacer{% endif %} {% endif %}
{% if equipment.lifecycle_status == 'en_reparation' %}
Retiré provisoirement pour réparation depuis {{ equipment.unavailable_since|datetime_fmt }}.
{% elif equipment.status != 'jete' %}
{% endif %} {% if equipment.status == 'a_jeter' %}
Cet équipement est marqué comme à jeter. {% if equipment.planned_disposal_date %}Date prévue : {{ equipment.planned_disposal_date|date_fmt }}.{% endif %} {% if equipment.disposal_reason %}Motif : {{ equipment.disposal_reason }}.{% endif %}
{% elif equipment.status == 'jete' %}
Équipement mis au rebut. L'historique reste consultable.
{% elif equipment.needs_deep_work %}
Alerte récurrence : {{ equipment.curative_count }} interventions curatives. Travaux profonds recommandés.
{% endif %}
Informations
{% if equipment.serial_number %}{% endif %} {% if equipment.manufacturer or equipment.model_reference %}{% endif %} {% if equipment.supplier %}{% endif %} {% if equipment.is_group %} {% elif equipment.is_individual %} {% if equipment.position %} {% endif %} {% endif %} {% if equipment.code %} {% endif %}
Statut {{ equipment.status|format_status }}
Mobilité{{ equipment.mobility|replace('_', ' ')|title }}
Numéro de série{{ equipment.serial_number }}
Fabricant / modèle{{ equipment.manufacturer or '—' }} / {{ equipment.model_reference or '—' }}
Fournisseur{{ equipment.supplier.name }}
Quantité déclarée {{ equipment.quantity }} unités
{{ equipment.individualized_quantity }} individualisée(s), {{ equipment.unindividualized_quantity }} encore gérée(s) en quantité
Suivi individuel {% if equipment.tracked_individually %} Obligatoire {% else %} Optionnel {% endif %}
Numéro {% if equipment.individual_number %} #{{ equipment.individual_number }} {% else %} Non numéroté {% endif %}
Position {{ equipment.position }}
Catégorie {% if equipment.category %} {{ equipment.category.name }} {% else %} {% endif %} {% if equipment.parent and equipment.parent.category %} (héritée du parent) {% endif %}
Localisation {% if equipment.effective_room %} {{ equipment.effective_room.name }} {% if equipment.parent and equipment.room_id %} (propre) {% elif equipment.parent and not equipment.room_id %} (héritée du parent) {% endif %} {% elif equipment.is_group and not equipment.parent %} Non localisé (groupe parent) {% else %} {% endif %}
Code / N° série {{ equipment.code }}
Lot {% if equipment.effective_lot %} {{ equipment.effective_lot.name }} {% if equipment.lot %} (propre) {% elif equipment.parent %} (hérité du parent) {% endif %} {% else %} {% endif %}
{% if quantity_movements %}
Mouvements quantitatifs
{% for movement in quantity_movements %}{% endfor %}
DateOrigineDestinationQuantitéMotif
{{ movement.moved_at|datetime_fmt }}{{ movement.source_room.full_name if movement.source_room else 'Stock non localisé' }}{{ movement.target_room.full_name }}{{ movement.quantity }}{{ movement.reason or '—' }}
{% endif %} {% set meters_list = equipment.meters.all() %} {% if meters_list %}
Compteurs {{ meters_list|length }}
{% for meter in meters_list %} {% endfor %}
Nom Type Valeur Unité Dernier relevé
{{ meter.name }} {{ meter.type|title }} {{ meter.current_value }} {{ meter.unit }} {% if meter.last_reading_date %} {{ meter.last_reading_date.strftime('%d/%m/%Y') }} {% else %} {% endif %}
{% endif %} {% set consumables_list = equipment.consumables.all() %}
Consommables {{ consumables_list|length }}
{% if consumables_list %}
{% for ec in consumables_list %} {% endfor %}
Nom Référence Intervalle remplacement Notes
{% if ec.consumable %} {{ ec.consumable.name }} {% else %} {% endif %} {% if ec.consumable and ec.consumable.reference %} {{ ec.consumable.reference }} {% else %} {% endif %} {% if ec.replacement_interval_days %} {{ ec.replacement_interval_days }} jours {% elif ec.replacement_interval_hours %} {{ ec.replacement_interval_hours }} heures {% elif ec.replacement_interval_cycles %} {{ ec.replacement_interval_cycles }} cycles {% else %} {% endif %} {% if ec.notes %} {{ ec.notes[:50] }}{% if ec.notes|length > 50 %}...{% endif %} {% else %} {% endif %}
{% else %}

Aucun consommable associé

{% endif %}
{% set documents_list = equipment.documents %}
Documents {{ documents_list|length }}
{% if documents_list %}
{% for doc in documents_list %} {% endfor %}
Nom Type Ajouté le
{{ doc.name or doc.filename }} {% if doc.file_type %} {{ doc.file_type }} {% else %} {% endif %} {% if doc.uploaded_at %} {{ doc.uploaded_at.strftime('%d/%m/%Y') }} {% else %} {% endif %}
{% else %}

Aucun document associé

{% endif %}
{% set scheduled_tasks = equipment.scheduled_tasks.all() if equipment.scheduled_tasks else [] %}
Tâches préventives
Gérer {{ scheduled_tasks|length }}
{% if scheduled_tasks %}
{% for task in scheduled_tasks %} {% endfor %}
Tâche Périodicité Prochaine date Statut
{{ task.lot_task.num_tache if task.lot_task else '—' }} {{ task.lot_task.tache if task.lot_task else '—' }} {{ task.lot_task.periodicite if task.lot_task else '—' }} {% if task.scheduled_date %} {{ task.scheduled_date.strftime('%d/%m/%Y') }} {% else %} {% endif %} {% if task.status == 'planned' %} Planifiée {% elif task.status == 'completed' %} Terminée {% elif task.status == 'postponed' %} Reportée {% else %} {{ task.status }} {% endif %}
{% else %}

Aucune tâche préventive associée

{% if not equipment.lot_id %} Associez un lot à cet équipement pour hériter de ses tâches préventives {% endif %}
{% endif %}
Actions rapides
{% if equipment.is_group %}
{% if equipment.unindividualized_quantity > 0 %} {% endif %} {% if not equipment.parent %} {% endif %}
{% elif equipment.parent %} {% else %} {% endif %}
{% if equipment.is_group and equipment.children_count > 0 %}
Éléments du groupe {{ equipment.children_count }}
{% for child in equipment.children.limit(10) %} {% endfor %}
Nom Localisation Statut Curatives
{% if child.individual_number %}#{{ child.individual_number }}{% else %}—{% endif %} {{ child.name or '—' }} {% if child.effective_room %} {{ child.effective_room.name }} {% else %} {% endif %} {{ child.status|format_status }} {% if child.curative_count > 0 %} {{ child.curative_count }} {% else %} 0 {% endif %}
{% if equipment.children_count > 10 %} {% endif %}
{% endif %} {% if equipment.description %}
Description

{{ equipment.description|nl2br }}

{% endif %}
Interventions récentes Voir tout
{% if equipment.interventions %}
{% for intervention in equipment.interventions[:5] %} {% endfor %}
Date Type Statut
{{ intervention.created_at.strftime('%d/%m/%Y') }} {{ intervention.intervention_type|title }} {{ intervention.status|format_status }}
{% else %}

Aucune intervention enregistrée

{% endif %}
Statistiques
  • Interventions curatives {{ equipment.curative_count }}
  • Interventions préventives {{ equipment.preventive_count }}
{% if equipment.room_history %}
Historique des déplacements
    {% for history in equipment.room_history[:5] %}
  • {{ history.changed_at.strftime('%d/%m/%Y') }}
    {% if history.old_room %} {{ history.old_room.name }} → {% endif %} {{ history.new_room.name if history.new_room else '' }}
  • {% endfor %}
{% endif %}
Zone dangereuse
{% if equipment.status != 'a_jeter' and equipment.status != 'jete' %}
{% endif %}
{% endblock %}