Better, but not perfect, currency switch.

This commit is contained in:
James Cole 2024-12-29 08:16:27 +01:00
parent 03e31ebb5e
commit c21a79e029
No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
2 changed files with 24 additions and 11 deletions

View File

@ -30,7 +30,9 @@ use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\UserGroup; use FireflyIII\Models\UserGroup;
use FireflyIII\Repositories\UserGroups\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\UserGroups\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\UserGroups\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Repositories\UserGroups\PiggyBank\PiggyBankRepositoryInterface;
use FireflyIII\Support\Facades\Amount;
use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Builder;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@ -57,6 +59,10 @@ class PreferencesEventHandler
$this->resetPiggyBanks($event->userGroup); $this->resetPiggyBanks($event->userGroup);
$this->resetBudgets($event->userGroup); $this->resetBudgets($event->userGroup);
$this->resetTransactions($event->userGroup); $this->resetTransactions($event->userGroup);
// fire laravel command to recalculate them all.
if (Amount::convertToNative()) {
Artisan::call('correction:recalculate-native-amounts');
}
} }
private function resetPiggyBanks(UserGroup $userGroup): void private function resetPiggyBanks(UserGroup $userGroup): void
@ -93,7 +99,7 @@ class PreferencesEventHandler
{ {
$repository = app(BudgetRepositoryInterface::class); $repository = app(BudgetRepositoryInterface::class);
$repository->setUserGroup($userGroup); $repository->setUserGroup($userGroup);
$set = $repository->getBudgets(); $set = $repository->getBudgets();
/** @var Budget $budget */ /** @var Budget $budget */
foreach ($set as $budget) { foreach ($set as $budget) {
@ -121,15 +127,13 @@ class PreferencesEventHandler
{ {
// custom query because of the potential size of this update. // custom query because of the potential size of this update.
$success = DB::table('transactions') $success = DB::table('transactions')
->join('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') ->join('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->where('transaction_journals.user_group_id', $userGroup->id) ->where('transaction_journals.user_group_id', $userGroup->id)
->where(static function (Builder $q): void { ->where(static function (Builder $q): void {
$q->whereNotNull('native_amount') $q->whereNotNull('native_amount')
->orWhereNotNull('native_foreign_amount') ->orWhereNotNull('native_foreign_amount');
; })
}) ->update(['native_amount' => null, 'native_foreign_amount' => null]);
->update(['native_amount' => null, 'native_foreign_amount' => null]) Log::debug(sprintf('Reset %d transactions.', $success));
;
Log::debug(sprintf('Updated %d transactions.', $success));
} }
} }

View File

@ -26,10 +26,19 @@ $(function () {
$('.make_default').on('click', setDefaultCurrency); $('.make_default').on('click', setDefaultCurrency);
$('.enable-currency').on('click', enableCurrency); $('.enable-currency').on('click', enableCurrency);
$('.disable-currency').on('click', disableCurrency); $('.disable-currency').on('click', disableCurrency);
console.log('Loaded3');
}); });
function setDefaultCurrency(e) { function setDefaultCurrency(e) {
console.log('Setting default currency');
var button = $(e.currentTarget); var button = $(e.currentTarget);
// disable everything.
button.prop('disabled', true);
$('a').css('pointer-events', 'none');
// change cursor to hourglass
$('body').css('cursor', 'wait');
var currencyCode = button.data('code'); var currencyCode = button.data('code');
var params = { var params = {