diff --git a/community_server/src/Controller/StateBalancesController.php b/community_server/src/Controller/StateBalancesController.php
index 9357abddd..4a0a02cf1 100644
--- a/community_server/src/Controller/StateBalancesController.php
+++ b/community_server/src/Controller/StateBalancesController.php
@@ -200,6 +200,7 @@ class StateBalancesController extends AppController
continue;
}
$transaction_id = $transaction['transaction_id'];
+ //echo "transaction id: $transaction_id
";
$decay_transaction = NULL;
$state_balance = $this->StateBalances->newEntity();
@@ -211,20 +212,22 @@ class StateBalancesController extends AppController
'transaction_id IN' => [$transaction_id, $prev_transaction['transaction_id']],
'state_user_id' => $user['id']
])
- ->order(['transaction_id ASC'])
+ ->order(['balance_date ASC'])
->toArray();
$prev = $stateUserTransactions[0];
if($prev->balance > 0) {
// var_dump($stateUserTransactions);
$current = $stateUserTransactions[1];
+ //echo "decay between " . $prev->transaction_id . " and " . $current->transaction_id . "
";
$interval = $current->balance_date->diff($prev->balance_date);
$state_balance->amount = $prev->balance;
$state_balance->record_date = $prev->balance_date;
$diff_amount = $state_balance->partDecay($current->balance_date);
//echo $interval->format('%R%a days');
- $decay_transaction = [
+ //echo "prev balance: " . $prev->balance . ", diff_amount: $diff_amount, summe: " . (-intval($prev->balance - $diff_amount)) . "
";
+ $decay_transaction = [
'type' => 'decay',
'balance' => -intval($prev->balance - $diff_amount),
'decay_duration' => $interval->format('%a days, %H hours, %I minutes, %S seconds'),
diff --git a/community_server/src/Model/Table/StateBalancesTable.php b/community_server/src/Model/Table/StateBalancesTable.php
index 0aac39f66..a80bdbc6e 100644
--- a/community_server/src/Model/Table/StateBalancesTable.php
+++ b/community_server/src/Model/Table/StateBalancesTable.php
@@ -102,7 +102,7 @@ class StateBalancesTable extends Table
$state_user_transactions = $stateUserTransactionsTable
->find()
->where(['state_user_id' => $stateUserId])
- ->order(['transaction_id ASC'])
+ ->order(['balance_date ASC'])
//->contain(false);
;
@@ -183,12 +183,18 @@ class StateBalancesTable extends Table
->where(['id IN' => array_keys($transaction_ids)])
->contain(['TransactionCreations', 'TransactionSendCoins']);
+ $transactions_indiced = [];
+ foreach($transactions as $transaction) {
+ $transactions_indiced[$transaction->id] = $transaction;
+ }
$balance_cursor = $this->newEntity();
$i = 0;
- foreach($transactions as $transaction) {
+ foreach($state_user_transactions_array as $state_user_transaction) {
+ $transaction = $transactions_indiced[$state_user_transaction->transaction_id];
if($transaction->transaction_type_id > 2) {
continue;
}
+ //echo "transaction id: ".$transaction->id . "
";
$amount_date = null;
$amount = 0;
@@ -219,7 +225,8 @@ class StateBalancesTable extends Table
} else {
$balance_cursor->amount = $balance_cursor->partDecay($amount_date) + $amount;
}
-
+ //echo "new balance: " . $balance_cursor->amount . "
";
+
$balance_cursor->record_date = $amount_date;
$state_user_transaction_index = $transaction_ids[$transaction->id];
$state_user_transactions_array[$state_user_transaction_index]->balance = $balance_cursor->amount;
diff --git a/community_server/tests/TestCase/Controller/StateBalancesControllerTest.php b/community_server/tests/TestCase/Controller/StateBalancesControllerTest.php
index df3ff8512..cfa6bebc4 100644
--- a/community_server/tests/TestCase/Controller/StateBalancesControllerTest.php
+++ b/community_server/tests/TestCase/Controller/StateBalancesControllerTest.php
@@ -90,8 +90,8 @@ class StateBalancesControllerTest extends TestCase
$response = $this->getAndParseWithoutCompare('/state-balances/ajaxGetBalance/' . $session_id);
$this->assertEquals('success', $response->state);
- $this->assertEquals(7321828, $response->balance);
- $this->assertLessThan(7321828, $response->decay);
+ $this->assertEquals(7321825, $response->balance);
+ $this->assertLessThan(7321825, $response->decay);
}
@@ -127,8 +127,8 @@ class StateBalancesControllerTest extends TestCase
$response = $this->getAndParseWithoutCompare('/state-balances/ajaxGetBalance/' . $session_id);
$this->assertEquals('success', $response->state);
- $this->assertEquals(9112595, $response->balance);
- $this->assertLessThan(9112595, $response->decay);
+ $this->assertEquals(9112592, $response->balance);
+ $this->assertLessThan(9112592, $response->decay);
}
public function testAjaxGetBalanceInvalidSession()