OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

valuation.php

9 KB
<?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">&#128202;</span>
            <div>
                <h2><?= $this->te('Wert &amp; 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">&#128197;</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">&#128269;</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>