Files
2026-10-06 19:40:28 +02:00

107 lines
4.9 KiB
PHP

<?php
namespace HermannTelser\Zuladungsliste\Berechnung;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/***
*
* This file is part of the "Zuladungsliste Steiermark" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
*
***/
class AufloesungPunkteVerteilung
{
/**
* @return void
*/
public static function manage()
{
if (_Berechnung::$debug) {
Message::debug(__FILE__, __LINE__, 'Manage Auflösung Punkte Verteilung');
}
// 2 usergroup => Ordentliche Registrierung zur Zuladungsliste
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_konto_aufloesung_mm');
$statement = $queryBuilder
->select('uid_geber', ' uid_empfaenger', ' prozente')
->from('tx_zuladungsliste_konto_aufloesung_mm')
->where(
$queryBuilder->expr()->gt('prozente', (int) 0)
)->execute()->fetchAll();
if (_Berechnung::$debug) {
Message::note($queryBuilder->getSQL());
}
$verteiler_arr = [];
foreach ($statement as $key => $value) {
$uid = $value['uid_geber'];
$verteiler_arr[$uid][] = $value;
}
foreach ($verteiler_arr as $uid_geber => $empfaener_arr) {
$frauenpunkt_abgezogen = '';
foreach (_Berechnung::$_data['liste'] as $key => $_value_liste) {
if ($_value_liste['user_id'] == $uid_geber) {
$geber_punkte = $_value_liste['punkte'];
if ($geber_punkte > 0) {
$geber_company = $_value_liste['company'];
_Berechnung::$_data['liste'][$key]['company'] .= ' ( Kontoauflösung '._Berechnung::$_data['liste'][$key]['kontoaufloesung_active'].')';
_Berechnung::$_data['liste'][$key]['punkte'] = 0;
_Berechnung::$_data['liste'][$key]['nominiert'] = 0;
_Berechnung::$_data['liste'][$key]['auswertung']['wettbewerbe']['punkte'] = 0;
_Berechnung::$_data['liste'][$key]['auswertung']['neueinsteigerpunkt']['punkte'] = 0;
if (1 == _Berechnung::$_data['liste'][$key]['auswertung']['frauenfoerderpunkt']['punkte']) {
$frauenpunkt_abgezogen = ', Frauenförderpunkt wurde abgezogen';
--$geber_punkte;
}
_Berechnung::$_data['liste'][$key]['auswertung']['frauenfoerderpunkt']['punkte'] = 0;
foreach ($empfaener_arr as $key => $_empfaenger) {
$uid_empfaenger = $_empfaenger['uid_empfaenger'];
$prozente = $_empfaenger['prozente'];
// SET EMPFÄNGER
foreach (_Berechnung::$_data['liste'] as $key => $value) {
if ($value['user_id'] == $uid_empfaenger) {
$punkte_empf_anteil = round($geber_punkte * ($prozente / 100), 2);
_Berechnung::$_data['liste'][$key]['punkte'] = _Berechnung::$_data['liste'][$key]['punkte'] + $punkte_empf_anteil;
_Berechnung::$_data['liste'][$key]['istempfaenger'] = '1';
_Berechnung::$_data['liste'][$key]['auswertung']['wettbewerbe']['punkte'] += $punkte_empf_anteil;
_Berechnung::$_data['liste'][$key]['auswertung']['wettbewerbe'][] = [
'wettbewerb' => "$prozente% von Kontoauflösung".$frauenpunkt_abgezogen,
'verfahrensid' => '',
'verfahrensort' => '',
'entscheidungstermin' => '',
'mit_sperrung' => '',
'punkte' => $punkte_empf_anteil,
'bezeichnung' => '',
'bezeichnung_punkte' => '',
'regelwerk' => '',
'monate_seit_entscheidungstermin' => '',
'punkte_aktive' => '',
'gueltig_bis' => '',
'von_transfer' => $geber_company,
];
}
}
}
}
}
}
}
}
}