Ich will das Zinssystem des Vault Mods ändern. Die eingebaute Version ist zu unlogisch und führt zu Verwirrung.
Gedacht habe ich an ein Tageszinskonto mit täglicher Verzinsung und jährlicher oder vierteljährlicher Auszahlung.
Dazu habe ich bereits folgendes umgesetzt:
Code: Alles auswählen
$vault_day = create_date('Ymd', $board_config['vault_loan_interests_time'], $board_config['board_timezone']);
$current_time = time();
$current_day = create_date('Ymd', $current_time, $board_config['board_timezone']);
if ($vault_day < $current_day)
{
Nun lese ich den aktuellen Jahres Zinsatz (interests_rate) aus der Tabelle VAULT_GENERAL aus und teile ihn durch 365 Tage.
Code: Alles auswählen
$vault_general = vault_get_general_config();
$sql = "SELECT * FROM " . VAULT_GENERAL_TABLE ;
if(!$result = $db->sql_query($sql))
{
message_die(CRITICAL_ERROR, "Could not query information in Vault General Table", "", __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$vault[$row['config_name']] = $row['config_value'];
}
$interests_day = ( $vault_general['interests_rate'] / 365);
Dieses Ergebnis soll nun mit den einzelnen User Konten (account_sum) multipliziert werden. Dazu müssen aus der Tabelle VAULT_USERS die Werte für owner_id (entspricht der User_ID) und account_sum (aktueller Kontostand) ausgelesen und verbunden werden. Das versuche ich so zu lösen:
Code: Alles auswählen
for ( $i = 0 ; $i < count ( $owner ) ; $i ++ )
{
$a = $owner[$i]['account_sum'];
$account_sum_interests_day = $a / 100 * $interests_day;
$usql = "UPDATE " . USERS_TABLE . "
SET account_sum_interests = account_sum_interests + $account_sum_interests_day
WHERE owner_id = ".$owner[$i]['owner_id'];
$uresult = $db->sql_query($usql);
if( !$uresult )
{
message_die(GENERAL_ERROR, "Couldn not update Vault Users Table", "", __LINE__, __FILE__, $usql);
}
}
Code: Alles auswählen
echo "$a";
echo "$account_sum_interests_day";
Nun müssen dies Werte nur noch in die DB eingetragen werden. Das sollte eigentlich mit diesem Code funktionieren:
Code: Alles auswählen
$usql = "UPDATE " .VAULT_ USERS_TABLE . "
SET account_sum_interests = account_sum_interests + $account_sum_interests_day
WHERE owner_id = ".$owner[$i]['owner_id'];
$uresult = $db->sql_query($usql);
if( !$uresult )
{
message_die(GENERAL_ERROR, "Couldn not update Vault Users Table", "", __LINE__, __FILE__, $usql);
}
Und wie es bei mir desöfteren so ist, während ich hier versuche mein Problem zu schildern, fällt mir die Lösung ein.
Ich habe den hier geposteten Code entsprechend korrigiert, falls doch mal jemand interesse daran haben sollte.
Bye