Quelltext des aktuellen Standes
<?php $this->layout('layouts/admin', [
'page_title' => 'Wert & Nutzungsdauer',
'current_admin_page' => 'assets-valuation',
]); ?>
<?php
/** @var \OpenNIT\Assets\Valuation $valuation */
$monatsListe = static function (?int $monate): string {
if ($monate === null) {
return '';
}
return (string)$monate;
};
?>
<div class="settings-page">
<section class="settings-card">
<div class="settings-card-header">
<span class="settings-card-icon">📊</span>
<div>
<h2><?= $this->te('Wert & Nutzungsdauer') ?></h2>
<p class="settings-card-desc"><?= $this->te('Drei Angaben zum Inventar, einzeln zuschaltbar. Was hier aus bleibt, taucht weder im Formular noch auf der Geräteseite oder in der Liste auf.') ?></p>
</div>
</div>
<div class="settings-card-body">
<p style="line-height:1.55;">
<?= $this->t('Die <strong>Nutzungsdauer</strong> steht für sich allein: Sie sagt, wann ein Gerät planmäßig ersetzt wird, und braucht keinen Betrag. <strong>Abschreibung</strong> und <strong>Restwert</strong> brauchen zusätzlich einen Anschaffungswert – aber nicht einander. Wer nur wissen will, was ein Gerät heute noch wert ist, schaltet den Restwert ein und lässt die Abschreibung aus.') ?>
</p>
<form method="post" action="/admin/assets/valuation" style="margin-top:1rem;">
<input type="hidden" name="_csrf" value="<?= $this->e($this->csrf()) ?>">
<div class="form-group">
<label class="settings-toggle">
<input type="checkbox" name="assets_useful_life_enabled" value="1" <?= $valuation->nutzungsdauer ? 'checked' : '' ?>>
<span class="toggle-text">
<strong><?= $this->te('Nutzungsdauer') ?></strong>
<small><?= $this->te('Feld „Nutzungsdauer" am Gerät, daraus das Nutzungsende, ein Filter für auslaufende Geräte und eine Kennzahl für die Ersatzplanung. Ohne Anschaffungswert nutzbar.') ?></small>
</span>
</label>
</div>
<div class="form-group">
<label class="settings-toggle">
<input type="checkbox" name="assets_depreciation_enabled" value="1" <?= $valuation->abschreibung ? 'checked' : '' ?>>
<span class="toggle-text">
<strong><?= $this->te('Abschreibung') ?></strong>
<small><?= $this->te('Lineare Abschreibung aus Anschaffungswert und Nutzungsdauer: Betrag je Jahr und je Monat sowie die Summe, die bis heute abgeflossen ist.') ?></small>
</span>
</label>
</div>
<div class="form-group">
<label class="settings-toggle">
<input type="checkbox" name="assets_residual_value_enabled" value="1" <?= $valuation->restwert ? 'checked' : '' ?>>
<span class="toggle-text">
<strong><?= $this->te('Restwert') ?></strong>
<small><?= $this->te('Der heutige Buchwert am Gerät, als Spalte in der Liste und als Summe über den gefilterten Bestand.') ?></small>
</span>
</label>
</div>
<hr style="margin:1.5rem 0;border:none;border-top:1px solid var(--gray-200);">
<div class="form-group" style="max-width:26rem;">
<label for="afa-methode"><?= $this->te('Rechenweg') ?></label>
<select id="afa-methode" name="<?= $this->e(\OpenNIT\Assets\Valuation::SCHLUESSEL_METHODE) ?>" class="form-control">
<?php foreach ($methoden as $wert => $label): ?>
<option value="<?= $this->e($wert) ?>" <?= $valuation->methode === $wert ? 'selected' : '' ?>><?= $this->e($label) ?></option>
<?php endforeach; ?>
</select>
<small class="form-hint">
<?= $this->t('<strong>Monatsgenau</strong> verteilt den Wert auf Monatsraten; der Anschaffungsmonat zählt voll mit – so verlangt es die zeitanteilige AfA. <strong>Volle Jahre</strong> bucht erst nach jedem vollendeten Jahr ab dem Kaufdatum. Der Rechenweg gilt für Abschreibung und Restwert gleichermaßen.') ?>
</small>
</div>
<button type="submit" class="btn btn-primary"><?= $this->te('Speichern') ?></button>
</form>
</div>
</section>
<?php if ($valuation->aktiv()): ?>
<section class="settings-card">
<div class="settings-card-header">
<span class="settings-card-icon">📅</span>
<div>
<h2><?= $this->te('Vorgaben je Kategorie') ?></h2>
<p class="settings-card-desc"><?= $this->te('Belegt die Nutzungsdauer beim Anlegen eines Geräts vor. Leer lassen heißt: keine Vorgabe.') ?></p>
</div>
</div>
<div class="settings-card-body">
<p class="form-hint" style="margin-top:0;line-height:1.55;">
<?= $this->te('Übliche Werte aus der AfA-Tabelle des Bundesfinanzministeriums: Arbeitsplatzrechner und Notebooks 36 Monate, Server 60 Monate, Netzwerktechnik 96 Monate, Drucker 36 Monate. Eine geänderte Vorgabe wirkt nur auf neu angelegte Geräte – vorhandene Buchwerte bleiben, wo sie sind.') ?>
</p>
<form method="post" action="/admin/assets/valuation/defaults" style="margin-top:1rem;">
<input type="hidden" name="_csrf" value="<?= $this->e($this->csrf()) ?>">
<div class="table-wrapper">
<table class="data-table">
<thead>
<tr>
<th scope="col"><?= $this->te('Kategorie') ?></th>
<th scope="col" style="width:16rem;"><?= $this->te('Nutzungsdauer (Monate)') ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($kategorien as $kat): ?>
<tr>
<td>
<span style="font-size:1.1rem;"><?= $this->e($kat['icon'] ?? '') ?></span>
<?= $this->e($kat['name']) ?>
</td>
<td>
<input type="number" class="form-control form-control-sm"
name="default_useful_life_months[<?= (int)$kat['id'] ?>]"
value="<?= $this->e($monatsListe(isset($kat['default_useful_life_months']) && $kat['default_useful_life_months'] !== null ? (int)$kat['default_useful_life_months'] : null)) ?>"
min="1" max="<?= (int)$max_monate ?>" step="1" placeholder="<?= $this->te('keine Vorgabe') ?>">
</td>
</tr>
<?php endforeach; ?>
<?php if (!$kategorien): ?>
<tr><td colspan="2" class="empty-state"><?= $this->te('Noch keine Kategorien angelegt.') ?></td></tr>
<?php endif; ?>
</tbody>
</table>
</div>
<button type="submit" class="btn btn-primary" style="margin-top:1rem;"><?= $this->te('Vorgaben speichern') ?></button>
</form>
</div>
</section>
<section class="settings-card">
<div class="settings-card-header">
<span class="settings-card-icon">🔍</span>
<div>
<h2><?= $this->te('Stand der Daten') ?></h2>
<p class="settings-card-desc"><?= $this->te('Wie viele Geräte die Angaben schon tragen.') ?></p>
</div>
</div>
<div class="settings-card-body">
<p style="line-height:1.7;margin:0;">
<?= $this->t('Von <strong>{gesamt}</strong> Geräten haben <strong>{mitDauer}</strong> ein Kaufdatum <em>und</em> eine Nutzungsdauer, <strong>{mitWert}</strong> einen Anschaffungswert. Geräte ohne diese Angaben bleiben in den Auswertungen leer – geschätzt wird nichts.', ['gesamt' => (int)$gepflegt['gesamt'], 'mitDauer' => (int)$gepflegt['mit_dauer'], 'mitWert' => (int)$gepflegt['mit_wert']]) ?>
</p>
</div>
</section>
<?php endif; ?>
</div>