Merge branch 'v6.2' of github.com:firefly-iii/firefly-iii into v6.2

This commit is contained in:
James Cole
2024-12-23 14:35:34 +01:00
5 changed files with 2982 additions and 2943 deletions

View File

@@ -232,7 +232,8 @@ trait AccountCollection
return $this;
}
#[\Override] public function accountBalanceIs(string $direction, string $operator, string $value): GroupCollectorInterface
#[\Override]
public function accountBalanceIs(string $direction, string $operator, string $value): GroupCollectorInterface
{
Log::warning(sprintf('GroupCollector will be SLOW: accountBalanceIs: "%s" "%s" "%s"', $direction, $operator, $value));
@@ -254,27 +255,41 @@ trait AccountCollection
$balance = Steam::finalAccountBalance(Account::find($accountId), $transaction['date']);
$result = bccomp($balance['balance'], $value);
Log::debug(sprintf('"%s" vs "%s" is %d', $balance['balance'], $value, $result));
switch ($operator) {
default:
Log::error(sprintf('GroupCollector: accountBalanceIs: unknown operator "%s"', $operator));
return false;
case '==':
Log::debug('Expect result to be 0 (equal)');
return 0 === $result;
case '!=':
Log::debug('Expect result to be -1 or 1 (not equal)');
return 0 !== $result;
case '>':
Log::debug('Expect result to be 1 (greater then)');
return 1 === $result;
case '>=':
Log::debug('Expect result to be 0 or 1 (greater then or equal)');
return -1 !== $result;
case '<':
Log::debug('Expect result to be -1 (less than)');
return -1 === $result;
case '<=':
Log::debug('Expect result to be -1 or 0 (less than or equal)');
return 1 !== $result;
}
// if($balance['balance'] $operator $value) {

View File

@@ -1823,49 +1823,73 @@ class OperatorQuerySearch implements SearchInterface
$this->collector->setSepaCT($value);
break;
case 'source_balance_gte':
case '-source_balance_lt':
$this->collector->accountBalanceIs('source', '>=', $value);
break;
case '-source_balance_gte':
case 'source_balance_lt':
$this->collector->accountBalanceIs('source', '<', $value);
break;
case 'source_balance_gt':
case '-source_balance_lte':
$this->collector->accountBalanceIs('source', '>', $value);
break;
case '-source_balance_gt':
case 'source_balance_lte':
$this->collector->accountBalanceIs('source', '<=', $value);
break;
case 'source_balance_is':
$this->collector->accountBalanceIs('source', '==', $value);
break;
case '-source_balance_is':
$this->collector->accountBalanceIs('source', '!=', $value);
break;
case 'destination_balance_gte':
case '-destination_balance_lt':
$this->collector->accountBalanceIs('destination', '>=', $value);
break;
case '-destination_balance_gte':
case 'destination_balance_lt':
$this->collector->accountBalanceIs('destination', '<', $value);
break;
case 'destination_balance_gt':
case '-destination_balance_lte':
$this->collector->accountBalanceIs('destination', '>', $value);
break;
case '-destination_balance_gt':
case 'destination_balance_lte':
$this->collector->accountBalanceIs('destination', '<=', $value);
break;
case 'destination_balance_is':
$this->collector->accountBalanceIs('destination', '==', $value);
break;
case '-destination_balance_is':
$this->collector->accountBalanceIs('destination', '!=', $value);
break;
}