2 Commits

Author SHA1 Message Date
295b67dcce Bump version to 1.16.1 2026-04-17 12:22:00 +02:00
f69a648ea5 Dashboard: Arbeitsstunden-Widget für laufendes Jahr
- Zeigt Mitglieder erfüllt/offen, fehlende Stunden und Gesamtaufschlag

- Hinweis und Link wenn keine Jahreseinstellungen hinterlegt
2026-04-16 22:11:03 +02:00
4 changed files with 60 additions and 6 deletions

View File

@@ -3,7 +3,7 @@ Contributors: ronnygrobel
Tags: verein, mitgliederverwaltung, parzellen, zaehler, abrechnung
Requires at least: 6.0
Tested up to: 6.8
Stable tag: 1.16.0
Stable tag: 1.16.1
Requires PHP: 7.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

View File

@@ -781,7 +781,26 @@ class Admin {
$meters_free = count( $this->meters->search( array( 'assignment' => 'free' ) ) );
$meters_used = count( $this->meters->search( array( 'assignment' => 'assigned' ) ) );
$tenants_total = count( $this->tenants->search() );
$members_total = count( $this->assignments->get_member_users() );
$all_members = $this->assignments->get_member_users();
$members_total = count( $all_members );
// Arbeitsstunden laufendes Jahr
$work_year = (int) current_time( 'Y' );
$work_config = $this->work->get_year_config( $work_year );
$work_summary = $this->work->get_member_summary( $work_year, $all_members );
$members_ok = 0;
$members_open = 0;
$total_missing_h = 0.0;
$total_surcharge = 0.0;
foreach ( $work_summary as $ws ) {
if ( $ws->missing_hours > 0 ) {
$members_open++;
$total_missing_h += $ws->missing_hours;
$total_surcharge += $ws->surcharge;
} else {
$members_ok++;
}
}
?>
<div class='wrap'>
<h1><?php echo esc_html__( 'Kleingartenverwaltung', KGVVM_TEXT_DOMAIN ); ?></h1>
@@ -814,6 +833,42 @@ class Admin {
</div>
</div>
<?php /* Arbeitsstunden-Widget */ ?>
<div class='kgvvm-card'>
<h2><?php echo esc_html( sprintf( __( 'Arbeitsstunden %d', KGVVM_TEXT_DOMAIN ), $work_year ) ); ?></h2>
<?php if ( ! $work_config ) : ?>
<p class='kgvvm-help'><?php echo esc_html__( 'Für das laufende Jahr wurden noch keine Jahreseinstellungen für Arbeitsstunden hinterlegt.', KGVVM_TEXT_DOMAIN ); ?>
<a href='<?php echo esc_url( $this->admin_url( 'kgvvm-arbeit', array( 'year' => $work_year ) ) ); ?>'><?php echo esc_html__( 'Jetzt einrichten', KGVVM_TEXT_DOMAIN ); ?></a>
</p>
<?php else : ?>
<div class='kgvvm-grid' style='margin-top:8px;'>
<div class='kgvvm-card' style='background:#f0faf0;'>
<h2 style='color:#2e7d32;'><?php echo esc_html( $members_ok ); ?></h2>
<p><?php echo esc_html__( 'Mitglieder erfüllt', KGVVM_TEXT_DOMAIN ); ?></p>
</div>
<div class='kgvvm-card' style='background:#fff4f4;'>
<h2 style='color:#c00;'><?php echo esc_html( $members_open ); ?></h2>
<p><?php echo esc_html__( 'Mitglieder mit offenen Stunden', KGVVM_TEXT_DOMAIN ); ?></p>
</div>
<div class='kgvvm-card' style='background:#fff4f4;'>
<h2 style='color:#c00;'><?php echo esc_html( number_format_i18n( $total_missing_h, 2 ) ); ?> Std.</h2>
<p><?php echo esc_html__( 'Fehlende Stunden gesamt', KGVVM_TEXT_DOMAIN ); ?></p>
</div>
<div class='kgvvm-card' style='background:#fff4f4;'>
<h2 style='color:#c00;'><?php echo esc_html( $this->format_currency( $total_surcharge ) ); ?></h2>
<p><?php echo esc_html__( 'Aufschlag gesamt (Jahresrechnung)', KGVVM_TEXT_DOMAIN ); ?></p>
</div>
</div>
<?php if ( $members_open > 0 ) : ?>
<p style='margin-top:8px;'>
<a href='<?php echo esc_url( $this->admin_url( 'kgvvm-arbeit', array( 'year' => $work_year, 'tab' => 'summary' ) ) ); ?>' class='button button-secondary'>
<?php echo esc_html__( 'Mitgliederübersicht aufrufen', KGVVM_TEXT_DOMAIN ); ?>
</a>
</p>
<?php endif; ?>
<?php endif; ?>
</div>
<div class='kgvvm-card'>
<h2><?php echo esc_html__( 'Fachmodell', KGVVM_TEXT_DOMAIN ); ?></h2>
<p><?php echo esc_html__( 'Das Plugin verwendet eigene Datenbanktabellen statt Custom Post Types, weil das Fachmodell stark relational ist: Sparten, Parzellen, Zähler, Pächter und Zuordnungen müssen performant gefiltert, eindeutig verknüpft und später um Zählerstände, Verträge oder Umlagen erweitert werden können.', KGVVM_TEXT_DOMAIN ); ?></p>

View File

@@ -4,7 +4,7 @@
* Plugin Name: KGV Vereinsverwaltung
* Plugin URI: https://apex-project.de/
* Description: Verwaltung von Sparten, Parzellen, Mitgliedern, Pächtern sowie Wasser- und Stromzählern für Kleingartenvereine.
* Version: 1.16.0
* Version: 1.16.1
* Author: Ronny Grobel
* Author URI: https://apex-project.de/
* License: GPL v2 or later
@@ -26,13 +26,12 @@
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version 2026-04-16
*/
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
define( 'KGVVM_VERSION', '1.16.0' );
define( 'KGVVM_VERSION', '1.16.1' );
define( 'KGVVM_PLUGIN_FILE', __FILE__ );
define( 'KGVVM_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'KGVVM_PLUGIN_URL', plugin_dir_url( __FILE__ ) );

View File

@@ -3,7 +3,7 @@ Contributors: ronnygrobel
Tags: verein, mitgliederverwaltung, parzellen, zaehler, abrechnung
Requires at least: 6.0
Tested up to: 6.8
Stable tag: 1.16.0
Stable tag: 1.16.1
Requires PHP: 7.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html