{% extends 'base.html' %} {% block title %}Lager | Filament Manager{% endblock %} {% block body_class %}page-warehouses{% endblock %} {% block page_title %}Lagerverwaltung{% endblock %} {% block page_subtitle %}Slot-Kapazitaet, automatische Slotvergabe, Overflow ins temporaere Lager und visuelle Slot-Raster-Ansicht.{% endblock %} {% block page_toolbar %}
Lager
Lagerverwaltung
Neue Lager anlegen und zwischen Rasteransicht, Bestandsliste und Historie wechseln.
Zum Slot-Raster
Export & Label
Ausgabe
Bestaende exportieren und direkt in die Label-Werkzeuge springen.
Lagerbestand PDF Report Lagerstatus Report Rollenvorrat Report Bestellzettel Label Tool
Wechsel
Navigation
Zwischen Lager, Spulen und globalen Materialdaten wechseln.
Spulen Globale Filamente
{% endblock %} {% block content %}

Lagerstamm

{% for warehouse in warehouses %} {% else %} {% endfor %}
NameCodeBeschreibungSlotsRollenBestandReserviertStatusAktionen
{{ warehouse.name }} {{ warehouse.code or '-' }} {{ warehouse.description or '-' }} {{ warehouse.occupied_slots }} / {{ warehouse.max_slots }}
{{ warehouse.free_slots }} frei
{{ warehouse.spool_count }} {{ warehouse.remaining_total_g }} g {{ warehouse.reserved_total_g }} g {% if warehouse.is_deleted %}archiviert{% else %}aktiv{% endif %} {% if not warehouse.is_deleted %} {% else %} Nur Historie {% endif %}
Keine Lager vorhanden.
Hinweis: Nur leer archivieren.
{% for entry in warehouse_cards %}

{{ entry.warehouse.name }}

{{ entry.warehouse.spool_count }} Rollen | {{ entry.warehouse.remaining_total_g }} g Bestand | {{ entry.warehouse.reserved_total_g }} g reserviert
{{ entry.occupied_slots }} / {{ entry.total_slots }} Slots belegt ({{ ((entry.occupied_slots / entry.total_slots) * 100)|round(1) if entry.total_slots else 0 }} %)
{% for slot in entry.slots[:30] %} {% endfor %} {% if entry.slots|length > 30 %} +{{ entry.slots|length - 30 }} {% endif %}
Slots 1-{{ entry.total_slots }} von {{ entry.total_slots }}
{{ entry.occupied_slots }} belegt / {{ entry.total_slots }} gesamt | {{ entry.free_slots }} frei
{% if entry.warehouse.is_deleted %}archiviert{% else %}aktiv{% endif %}
{% for slot in entry.slots %}
Slot {{ slot.slot_number }} {% if slot.spool %} {% set role_status_key = (slot.spool.role_status_key or 'free')|lower %} {% set role_status_label = { 'free': 'Verfügbar', 'reserved': 'Reserviert', 'in-use': 'Entnahme', 'empty': 'Leer', }.get(role_status_key, 'Verfügbar') %}
{{ role_status_label }}
{% endif %} {% if slot.spool %}belegt{% else %}frei{% endif %}
{% if slot.spool %} {% set color_mode = (slot.spool.filament_color_mode or slot.spool.color_mode or 'single')|lower %} {% set nozzle_temp = slot.spool.print_temp_c if slot.spool.print_temp_c not in [None, ''] else slot.spool.filament_print_temp_c %} {% set bed_temp = slot.spool.bed_temp_c if slot.spool.bed_temp_c not in [None, ''] else slot.spool.filament_bed_temp_c %} {% set chamber_temp = slot.spool.filament_chamber_temp_c|default('', true) %} {% set fan_percent = slot.spool.filament_fan_percent|default('', true) %} {% set diameter_mm = slot.spool.diameter_mm if slot.spool.diameter_mm not in [None, ''] else slot.spool.filament_diameter_mm %} {% set density = slot.spool.filament_density_g_cm3|default('', true) %} {% set net_weight_g = (slot.spool.net_weight_g or 0)|int %} {% set remaining_weight_g = (slot.spool.remaining_g or 0)|int %} {% set fill_percent = 0 %} {% if net_weight_g > 0 %} {% set fill_percent = ((remaining_weight_g / net_weight_g) * 100)|round(0, 'common')|int %} {% endif %} {% if fill_percent < 0 %} {% set fill_percent = 0 %} {% elif fill_percent > 100 %} {% set fill_percent = 100 %} {% endif %}
{{ slot.spool.brand }}
{{ slot.spool.color_name or slot.spool.sku or 'Filament' }}
{{ slot.spool.material or '-' }}
Fuellstand {{ fill_percent }} %
{{ remaining_weight_g }} g von {{ net_weight_g if net_weight_g > 0 else '-' }} g
Haupt-Druckdaten
{{ slot.spool.material }} | {{ slot.spool.brand }}
Duese{{ nozzle_temp ~ ' C' if nozzle_temp not in [None, ''] else '-' }}
Bett{{ bed_temp ~ ' C' if bed_temp not in [None, ''] else '-' }}
Kammer{{ chamber_temp ~ ' C' if chamber_temp not in [None, ''] else '-' }}
Luefter{{ fan_percent ~ ' %' if fan_percent not in [None, ''] else '-' }}
Durchmesser{{ diameter_mm ~ ' mm' if diameter_mm not in [None, ''] else '-' }}
Dichte{{ density ~ ' g/cm3' if density not in [None, ''] else '-' }}
{{ slot.spool.color_name or '-' }} {{ slot.spool.filament_color_family or slot.spool.color_family or '-' }}
{% else %}
Freier Lagerplatz
Slot kann fuer eine neue oder umgelagerte Rolle verwendet werden.
{% endif %}
{% endfor %}
{% endfor %}

Lagerhistorie

{% for event in warehouse_history %} {% else %} {% endfor %}
ZeitEventName-SnapshotDetails
{{ event.created_at }}{{ event.event_type }}{{ event.warehouse_name_snapshot }}{{ event.details or '-' }}
Keine Historie vorhanden.
{% endblock %} {% block data_blocks %} {% endblock %}