diff --git a/app/Handlers/Observer/AutoBudgetObserver.php b/app/Handlers/Observer/AutoBudgetObserver.php index 7dee632cb1..08b176540b 100644 --- a/app/Handlers/Observer/AutoBudgetObserver.php +++ b/app/Handlers/Observer/AutoBudgetObserver.php @@ -36,6 +36,7 @@ class AutoBudgetObserver Log::debug('Observe "created" of an auto budget.'); $this->updatePrimaryCurrencyAmount($autoBudget); } + public function updated(AutoBudget $autoBudget): void { Log::debug('Observe "updated" of an auto budget.'); diff --git a/app/Handlers/Observer/AvailableBudgetObserver.php b/app/Handlers/Observer/AvailableBudgetObserver.php index 29957f75c8..3edf2e3859 100644 --- a/app/Handlers/Observer/AvailableBudgetObserver.php +++ b/app/Handlers/Observer/AvailableBudgetObserver.php @@ -27,20 +27,16 @@ namespace FireflyIII\Handlers\Observer; use FireflyIII\Handlers\ExchangeRate\ConversionParameters; use FireflyIII\Handlers\ExchangeRate\ConvertsAmountToPrimaryAmount; use FireflyIII\Models\AvailableBudget; -use FireflyIII\Support\Facades\Amount; -use FireflyIII\Support\Http\Api\ExchangeRateConverter; -use Illuminate\Support\Facades\Log; class AvailableBudgetObserver { public function created(AvailableBudget $availableBudget): void { - // Log::debug('Observe "created" of an available budget.'); $this->updatePrimaryCurrencyAmount($availableBudget); } + public function updated(AvailableBudget $availableBudget): void { - // Log::debug('Observe "updated" of an available budget.'); $this->updatePrimaryCurrencyAmount($availableBudget); } diff --git a/app/Handlers/Observer/BillObserver.php b/app/Handlers/Observer/BillObserver.php index 6da78db1bc..6b8fb62a87 100644 --- a/app/Handlers/Observer/BillObserver.php +++ b/app/Handlers/Observer/BillObserver.php @@ -39,12 +39,6 @@ class BillObserver $this->updatePrimaryCurrencyAmount($bill); } - public function updated(Bill $bill): void - { - // Log::debug('Observe "updated" of a bill.'); - $this->updatePrimaryCurrencyAmount($bill); - } - public function deleting(Bill $bill): void { $repository = app(AttachmentRepositoryInterface::class); @@ -57,6 +51,12 @@ class BillObserver $bill->notes()->delete(); } + public function updated(Bill $bill): void + { + // Log::debug('Observe "updated" of a bill.'); + $this->updatePrimaryCurrencyAmount($bill); + } + private function updatePrimaryCurrencyAmount(Bill $bill): void { $params = new ConversionParameters(); diff --git a/app/Handlers/Observer/BudgetLimitObserver.php b/app/Handlers/Observer/BudgetLimitObserver.php index becd2aae41..728efcec2e 100644 --- a/app/Handlers/Observer/BudgetLimitObserver.php +++ b/app/Handlers/Observer/BudgetLimitObserver.php @@ -49,7 +49,31 @@ class BudgetLimitObserver $singleton = PreferencesSingleton::getInstance(); if (true === $singleton->getPreference('fire_webhooks_bl_store')) { - $user = $budgetLimit->budget->user; + $user = $budgetLimit->budget->user; + + /** @var MessageGeneratorInterface $engine */ + $engine = app(MessageGeneratorInterface::class); + $engine->setUser($user); + $engine->setObjects(new Collection()->push($budgetLimit)); + $engine->setTrigger(WebhookTrigger::STORE_UPDATE_BUDGET_LIMIT); + $engine->generateMessages(); + + Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__)); + event(new WebhookMessagesRequestSending()); + } + } + + public function updated(BudgetLimit $budgetLimit): void + { + Log::debug('Observe "updated" of a budget limit.'); + $this->updatePrimaryCurrencyAmount($budgetLimit); + $this->updateAvailableBudget($budgetLimit); + + // this is a lame trick to communicate with the observer. + $singleton = PreferencesSingleton::getInstance(); + + if (true === $singleton->getPreference('fire_webhooks_bl_update')) { + $user = $budgetLimit->budget->user; /** @var MessageGeneratorInterface $engine */ $engine = app(MessageGeneratorInterface::class); @@ -73,7 +97,7 @@ class BudgetLimitObserver $userCurrency = Amount::getPrimaryCurrencyByUserGroup($budgetLimit->budget->user->userGroup); $budgetLimit->native_amount = null; if ($budgetLimit->transactionCurrency->id !== $userCurrency->id) { - $converter = new ExchangeRateConverter(); + $converter = new ExchangeRateConverter(); $converter->setUserGroup($budgetLimit->budget->user->userGroup); $converter->setIgnoreSettings(true); $budgetLimit->native_amount = $converter->convert($budgetLimit->transactionCurrency, $userCurrency, today(), $budgetLimit->amount); @@ -81,28 +105,4 @@ class BudgetLimitObserver $budgetLimit->saveQuietly(); Log::debug('Budget limit primary currency amounts are updated.'); } - - public function updated(BudgetLimit $budgetLimit): void - { - Log::debug('Observe "updated" of a budget limit.'); - $this->updatePrimaryCurrencyAmount($budgetLimit); - $this->updateAvailableBudget($budgetLimit); - - // this is a lame trick to communicate with the observer. - $singleton = PreferencesSingleton::getInstance(); - - if (true === $singleton->getPreference('fire_webhooks_bl_update')) { - $user = $budgetLimit->budget->user; - - /** @var MessageGeneratorInterface $engine */ - $engine = app(MessageGeneratorInterface::class); - $engine->setUser($user); - $engine->setObjects(new Collection()->push($budgetLimit)); - $engine->setTrigger(WebhookTrigger::STORE_UPDATE_BUDGET_LIMIT); - $engine->generateMessages(); - - Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__)); - event(new WebhookMessagesRequestSending()); - } - } } diff --git a/app/Handlers/Observer/BudgetObserver.php b/app/Handlers/Observer/BudgetObserver.php index 3dc4d450ce..5ec313217d 100644 --- a/app/Handlers/Observer/BudgetObserver.php +++ b/app/Handlers/Observer/BudgetObserver.php @@ -51,7 +51,7 @@ class BudgetObserver if (true === $singleton->getPreference('fire_webhooks_budget_create')) { // fire event. - $user = $budget->user; + $user = $budget->user; /** @var MessageGeneratorInterface $engine */ $engine = app(MessageGeneratorInterface::class); @@ -64,35 +64,14 @@ class BudgetObserver } } - public function updated(Budget $budget): void - { - Log::debug(sprintf('Observe "updated" of budget #%d ("%s").', $budget->id, $budget->name)); - - // this is a lame trick to communicate with the observer. - $singleton = PreferencesSingleton::getInstance(); - - if (true === $singleton->getPreference('fire_webhooks_budget_update')) { - $user = $budget->user; - - /** @var MessageGeneratorInterface $engine */ - $engine = app(MessageGeneratorInterface::class); - $engine->setUser($user); - $engine->setObjects(new Collection()->push($budget)); - $engine->setTrigger(WebhookTrigger::UPDATE_BUDGET); - $engine->generateMessages(); - Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__)); - event(new WebhookMessagesRequestSending()); - } - } - public function deleting(Budget $budget): void { Log::debug('Observe "deleting" of a budget.'); - $user = $budget->user; + $user = $budget->user; /** @var MessageGeneratorInterface $engine */ - $engine = app(MessageGeneratorInterface::class); + $engine = app(MessageGeneratorInterface::class); $engine->setUser($user); $engine->setObjects(new Collection()->push($budget)); $engine->setTrigger(WebhookTrigger::DESTROY_BUDGET); @@ -100,7 +79,7 @@ class BudgetObserver Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__)); event(new WebhookMessagesRequestSending()); - $repository = app(AttachmentRepositoryInterface::class); + $repository = app(AttachmentRepositoryInterface::class); $repository->setUser($budget->user); /** @var Attachment $attachment */ @@ -123,4 +102,25 @@ class BudgetObserver // recalculate available budgets. } + + public function updated(Budget $budget): void + { + Log::debug(sprintf('Observe "updated" of budget #%d ("%s").', $budget->id, $budget->name)); + + // this is a lame trick to communicate with the observer. + $singleton = PreferencesSingleton::getInstance(); + + if (true === $singleton->getPreference('fire_webhooks_budget_update')) { + $user = $budget->user; + + /** @var MessageGeneratorInterface $engine */ + $engine = app(MessageGeneratorInterface::class); + $engine->setUser($user); + $engine->setObjects(new Collection()->push($budget)); + $engine->setTrigger(WebhookTrigger::UPDATE_BUDGET); + $engine->generateMessages(); + Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__)); + event(new WebhookMessagesRequestSending()); + } + } } diff --git a/app/Handlers/Observer/AccountObserver.php b/app/Handlers/Observer/DeletedAccountObserver.php similarity index 83% rename from app/Handlers/Observer/AccountObserver.php rename to app/Handlers/Observer/DeletedAccountObserver.php index 2954042790..e78074527c 100644 --- a/app/Handlers/Observer/AccountObserver.php +++ b/app/Handlers/Observer/DeletedAccountObserver.php @@ -34,7 +34,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; -class AccountObserver +class DeletedAccountObserver { public function deleting(Account $account): void { @@ -51,14 +51,13 @@ class AccountObserver } $journalIds = Transaction::where('account_id', $account->id) - ->get(['transactions.transaction_journal_id']) - ->pluck('transaction_journal_id') - ->toArray() - ; + ->get(['transactions.transaction_journal_id']) + ->pluck('transaction_journal_id') + ->toArray(); $groupIds = TransactionJournal::whereIn('id', $journalIds) - ->get(['transaction_journals.transaction_group_id']) - ->pluck('transaction_group_id') - ->toArray() // @phpstan-ignore-line + ->get(['transaction_journals.transaction_group_id']) + ->pluck('transaction_group_id') + ->toArray() // @phpstan-ignore-line ; if (count($journalIds) > 0) { diff --git a/app/Handlers/Observer/AttachmentObserver.php b/app/Handlers/Observer/DeletedAttachmentObserver.php similarity index 97% rename from app/Handlers/Observer/AttachmentObserver.php rename to app/Handlers/Observer/DeletedAttachmentObserver.php index e88b3d9fca..4f7baf2975 100644 --- a/app/Handlers/Observer/AttachmentObserver.php +++ b/app/Handlers/Observer/DeletedAttachmentObserver.php @@ -29,7 +29,7 @@ use Illuminate\Support\Facades\Log; /** * Class AttachmentObserver */ -class AttachmentObserver +class DeletedAttachmentObserver { public function deleting(Attachment $attachment): void { diff --git a/app/Handlers/Observer/CategoryObserver.php b/app/Handlers/Observer/DeletedCategoryObserver.php similarity index 98% rename from app/Handlers/Observer/CategoryObserver.php rename to app/Handlers/Observer/DeletedCategoryObserver.php index 4a9664a39a..21b2ad72ad 100644 --- a/app/Handlers/Observer/CategoryObserver.php +++ b/app/Handlers/Observer/DeletedCategoryObserver.php @@ -31,7 +31,7 @@ use Illuminate\Support\Facades\Log; /** * Class CategoryObserver */ -class CategoryObserver +class DeletedCategoryObserver { public function deleting(Category $category): void { diff --git a/app/Handlers/Observer/RecurrenceObserver.php b/app/Handlers/Observer/DeletedRecurrenceObserver.php similarity index 98% rename from app/Handlers/Observer/RecurrenceObserver.php rename to app/Handlers/Observer/DeletedRecurrenceObserver.php index a2dc023e49..5ff7bbd39f 100644 --- a/app/Handlers/Observer/RecurrenceObserver.php +++ b/app/Handlers/Observer/DeletedRecurrenceObserver.php @@ -31,7 +31,7 @@ use Illuminate\Support\Facades\Log; /** * Class RecurrenceObserver */ -class RecurrenceObserver +class DeletedRecurrenceObserver { public function deleting(Recurrence $recurrence): void { diff --git a/app/Handlers/Observer/RecurrenceTransactionObserver.php b/app/Handlers/Observer/DeletedRecurrenceTransactionObserver.php similarity index 96% rename from app/Handlers/Observer/RecurrenceTransactionObserver.php rename to app/Handlers/Observer/DeletedRecurrenceTransactionObserver.php index 956faec6f6..91db3a373c 100644 --- a/app/Handlers/Observer/RecurrenceTransactionObserver.php +++ b/app/Handlers/Observer/DeletedRecurrenceTransactionObserver.php @@ -29,7 +29,7 @@ use Illuminate\Support\Facades\Log; /** * Class RecurrenceTransactionObserver */ -class RecurrenceTransactionObserver +class DeletedRecurrenceTransactionObserver { public function deleting(RecurrenceTransaction $transaction): void { diff --git a/app/Handlers/Observer/RuleGroupObserver.php b/app/Handlers/Observer/DeletedRuleGroupObserver.php similarity index 97% rename from app/Handlers/Observer/RuleGroupObserver.php rename to app/Handlers/Observer/DeletedRuleGroupObserver.php index 88118998c4..3087024382 100644 --- a/app/Handlers/Observer/RuleGroupObserver.php +++ b/app/Handlers/Observer/DeletedRuleGroupObserver.php @@ -29,7 +29,7 @@ use Illuminate\Support\Facades\Log; /** * Class RuleGroupObserver */ -class RuleGroupObserver +class DeletedRuleGroupObserver { public function deleting(RuleGroup $ruleGroup): void { diff --git a/app/Handlers/Observer/RuleObserver.php b/app/Handlers/Observer/DeletedRuleObserver.php similarity index 97% rename from app/Handlers/Observer/RuleObserver.php rename to app/Handlers/Observer/DeletedRuleObserver.php index 9e1795ebb6..c30e2d54e0 100644 --- a/app/Handlers/Observer/RuleObserver.php +++ b/app/Handlers/Observer/DeletedRuleObserver.php @@ -29,7 +29,7 @@ use Illuminate\Support\Facades\Log; /** * Class RuleObserver */ -class RuleObserver +class DeletedRuleObserver { public function deleting(Rule $rule): void { diff --git a/app/Handlers/Observer/TagObserver.php b/app/Handlers/Observer/DeletedTagObserver.php similarity index 98% rename from app/Handlers/Observer/TagObserver.php rename to app/Handlers/Observer/DeletedTagObserver.php index 85f56ed7f7..9b324329d4 100644 --- a/app/Handlers/Observer/TagObserver.php +++ b/app/Handlers/Observer/DeletedTagObserver.php @@ -31,7 +31,7 @@ use Illuminate\Support\Facades\Log; /** * Class TagObserver */ -class TagObserver +class DeletedTagObserver { public function deleting(Tag $tag): void { diff --git a/app/Handlers/Observer/TransactionJournalObserver.php b/app/Handlers/Observer/DeletedTransactionJournalObserver.php similarity index 98% rename from app/Handlers/Observer/TransactionJournalObserver.php rename to app/Handlers/Observer/DeletedTransactionJournalObserver.php index 810978f51c..e8fd082a91 100644 --- a/app/Handlers/Observer/TransactionJournalObserver.php +++ b/app/Handlers/Observer/DeletedTransactionJournalObserver.php @@ -33,7 +33,7 @@ use Illuminate\Support\Facades\Log; /** * Class TransactionJournalObserver */ -class TransactionJournalObserver +class DeletedTransactionJournalObserver { public function deleting(TransactionJournal $transactionJournal): void { diff --git a/app/Handlers/Observer/WebhookMessageObserver.php b/app/Handlers/Observer/DeletedWebhookMessageObserver.php similarity index 97% rename from app/Handlers/Observer/WebhookMessageObserver.php rename to app/Handlers/Observer/DeletedWebhookMessageObserver.php index 2b12bdf4ee..37b914468b 100644 --- a/app/Handlers/Observer/WebhookMessageObserver.php +++ b/app/Handlers/Observer/DeletedWebhookMessageObserver.php @@ -29,7 +29,7 @@ use Illuminate\Support\Facades\Log; /** * Class WebhookMessageObserver */ -class WebhookMessageObserver +class DeletedWebhookMessageObserver { public function deleting(WebhookMessage $webhookMessage): void { diff --git a/app/Handlers/Observer/WebhookObserver.php b/app/Handlers/Observer/DeletedWebhookObserver.php similarity index 97% rename from app/Handlers/Observer/WebhookObserver.php rename to app/Handlers/Observer/DeletedWebhookObserver.php index 3ff89af260..0f0b7e54dc 100644 --- a/app/Handlers/Observer/WebhookObserver.php +++ b/app/Handlers/Observer/DeletedWebhookObserver.php @@ -29,7 +29,7 @@ use Illuminate\Support\Facades\Log; /** * Class WebhookObserver */ -class WebhookObserver +class DeletedWebhookObserver { public function deleting(Webhook $webhook): void { diff --git a/app/Handlers/Observer/PiggyBankEventObserver.php b/app/Handlers/Observer/PiggyBankEventObserver.php index 0aab702717..26f9df05e0 100644 --- a/app/Handlers/Observer/PiggyBankEventObserver.php +++ b/app/Handlers/Observer/PiggyBankEventObserver.php @@ -37,9 +37,15 @@ class PiggyBankEventObserver $this->updatePrimaryCurrencyAmount($event); } + public function updated(PiggyBankEvent $event): void + { + Log::debug('Observe "updated" of a piggy bank event.'); + $this->updatePrimaryCurrencyAmount($event); + } + private function updatePrimaryCurrencyAmount(PiggyBankEvent $event): void { - $user = $event->piggyBank->accounts()->first()?->user; + $user = $event->piggyBank->accounts()->first()?->user; if (null === $user) { Log::warning('Piggy bank seems to have no accounts. Break.'); @@ -51,7 +57,7 @@ class PiggyBankEventObserver $userCurrency = Amount::getPrimaryCurrencyByUserGroup($event->piggyBank->accounts()->first()->user->userGroup); $event->native_amount = null; if ($event->piggyBank->transactionCurrency->id !== $userCurrency->id) { - $converter = new ExchangeRateConverter(); + $converter = new ExchangeRateConverter(); $converter->setUserGroup($event->piggyBank->accounts()->first()->user->userGroup); $converter->setIgnoreSettings(true); $event->native_amount = $converter->convert($event->piggyBank->transactionCurrency, $userCurrency, today(), $event->amount); @@ -59,10 +65,4 @@ class PiggyBankEventObserver $event->saveQuietly(); Log::debug('Piggy bank event primary currency amount is updated.'); } - - public function updated(PiggyBankEvent $event): void - { - Log::debug('Observe "updated" of a piggy bank event.'); - $this->updatePrimaryCurrencyAmount($event); - } } diff --git a/app/Handlers/Observer/PiggyBankObserver.php b/app/Handlers/Observer/PiggyBankObserver.php index b5d14fd8ed..943775d6d4 100644 --- a/app/Handlers/Observer/PiggyBankObserver.php +++ b/app/Handlers/Observer/PiggyBankObserver.php @@ -42,26 +42,6 @@ class PiggyBankObserver $this->updatePrimaryCurrencyAmount($piggyBank); } - private function updatePrimaryCurrencyAmount(PiggyBank $piggyBank): void - { - $group = $piggyBank->accounts()->first()?->user->userGroup; - if (null === $group) { - Log::debug(sprintf('No account(s) yet for piggy bank #%d.', $piggyBank->id)); - - return; - } - $userCurrency = Amount::getPrimaryCurrencyByUserGroup($group); - $piggyBank->native_target_amount = null; - if ($piggyBank->transactionCurrency->id !== $userCurrency->id) { - $converter = new ExchangeRateConverter(); - $converter->setIgnoreSettings(true); - $converter->setUserGroup($group); - $piggyBank->native_target_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $piggyBank->target_amount); - } - $piggyBank->saveQuietly(); - Log::debug('Piggy bank primary currency target amount is updated.'); - } - /** * Also delete related objects. */ @@ -88,4 +68,24 @@ class PiggyBankObserver Log::debug('Observe "updated" of a piggy bank.'); $this->updatePrimaryCurrencyAmount($piggyBank); } + + private function updatePrimaryCurrencyAmount(PiggyBank $piggyBank): void + { + $group = $piggyBank->accounts()->first()?->user->userGroup; + if (null === $group) { + Log::debug(sprintf('No account(s) yet for piggy bank #%d.', $piggyBank->id)); + + return; + } + $userCurrency = Amount::getPrimaryCurrencyByUserGroup($group); + $piggyBank->native_target_amount = null; + if ($piggyBank->transactionCurrency->id !== $userCurrency->id) { + $converter = new ExchangeRateConverter(); + $converter->setIgnoreSettings(true); + $converter->setUserGroup($group); + $piggyBank->native_target_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $piggyBank->target_amount); + } + $piggyBank->saveQuietly(); + Log::debug('Piggy bank primary currency target amount is updated.'); + } } diff --git a/app/Handlers/Observer/TransactionObserver.php b/app/Handlers/Observer/TransactionObserver.php index dab2a95fc0..5941cf9242 100644 --- a/app/Handlers/Observer/TransactionObserver.php +++ b/app/Handlers/Observer/TransactionObserver.php @@ -44,50 +44,6 @@ class TransactionObserver $this->updatePrimaryCurrencyAmount($transaction); } - private function updatePrimaryCurrencyAmount(Transaction $transaction): void - { - if (!Amount::convertToPrimary($transaction->transactionJournal->user)) { - return; - } - $userCurrency = Amount::getPrimaryCurrencyByUserGroup($transaction->transactionJournal->user->userGroup); - $transaction->native_amount = null; - $transaction->native_foreign_amount = null; - // first normal amount - if ( - $transaction->transactionCurrency->id !== $userCurrency->id - && ( - null === $transaction->foreign_currency_id - || null !== $transaction->foreign_currency_id - && $transaction->foreign_currency_id !== $userCurrency->id - ) - ) { - $converter = new ExchangeRateConverter(); - $converter->setUserGroup($transaction->transactionJournal->user->userGroup); - $converter->setIgnoreSettings(true); - $transaction->native_amount = $converter->convert( - $transaction->transactionCurrency, - $userCurrency, - $transaction->transactionJournal->date, - $transaction->amount - ); - } - // then foreign amount - if ($transaction->foreignCurrency?->id !== $userCurrency->id && null !== $transaction->foreign_amount && null !== $transaction->foreignCurrency) { - $converter = new ExchangeRateConverter(); - $converter->setUserGroup($transaction->transactionJournal->user->userGroup); - $converter->setIgnoreSettings(true); - $transaction->native_foreign_amount = $converter->convert( - $transaction->foreignCurrency, - $userCurrency, - $transaction->transactionJournal->date, - $transaction->foreign_amount - ); - } - - $transaction->saveQuietly(); - Log::debug(sprintf('Transaction #%d primary currency amounts are updated.', $transaction->id)); - } - public function deleting(?Transaction $transaction): void { Log::debug('Observe "deleting" of a transaction.'); @@ -107,4 +63,48 @@ class TransactionObserver } $this->updatePrimaryCurrencyAmount($transaction); } + + private function updatePrimaryCurrencyAmount(Transaction $transaction): void + { + if (!Amount::convertToPrimary($transaction->transactionJournal->user)) { + return; + } + $userCurrency = Amount::getPrimaryCurrencyByUserGroup($transaction->transactionJournal->user->userGroup); + $transaction->native_amount = null; + $transaction->native_foreign_amount = null; + // first normal amount + if ( + $transaction->transactionCurrency->id !== $userCurrency->id + && ( + null === $transaction->foreign_currency_id + || null !== $transaction->foreign_currency_id + && $transaction->foreign_currency_id !== $userCurrency->id + ) + ) { + $converter = new ExchangeRateConverter(); + $converter->setUserGroup($transaction->transactionJournal->user->userGroup); + $converter->setIgnoreSettings(true); + $transaction->native_amount = $converter->convert( + $transaction->transactionCurrency, + $userCurrency, + $transaction->transactionJournal->date, + $transaction->amount + ); + } + // then foreign amount + if ($transaction->foreignCurrency?->id !== $userCurrency->id && null !== $transaction->foreign_amount && null !== $transaction->foreignCurrency) { + $converter = new ExchangeRateConverter(); + $converter->setUserGroup($transaction->transactionJournal->user->userGroup); + $converter->setIgnoreSettings(true); + $transaction->native_foreign_amount = $converter->convert( + $transaction->foreignCurrency, + $userCurrency, + $transaction->transactionJournal->date, + $transaction->foreign_amount + ); + } + + $transaction->saveQuietly(); + Log::debug(sprintf('Transaction #%d primary currency amounts are updated.', $transaction->id)); + } } diff --git a/app/Models/Account.php b/app/Models/Account.php index 878d3745aa..3a6f89952e 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Enums\AccountTypeEnum; -use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\DeletedAccountObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -42,7 +42,7 @@ use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -#[ObservedBy([AccountObserver::class])] +#[ObservedBy([DeletedAccountObserver::class])] class Account extends Model { use HasFactory; diff --git a/app/Models/Attachment.php b/app/Models/Attachment.php index 835c434cad..898afa613c 100644 --- a/app/Models/Attachment.php +++ b/app/Models/Attachment.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Models; -use FireflyIII\Handlers\Observer\AttachmentObserver; +use FireflyIII\Handlers\Observer\DeletedAttachmentObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -36,7 +36,7 @@ use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -#[ObservedBy([AttachmentObserver::class])] +#[ObservedBy([DeletedAttachmentObserver::class])] class Attachment extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/Category.php b/app/Models/Category.php index b8dbd6999f..937f443958 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Models; -use FireflyIII\Handlers\Observer\CategoryObserver; +use FireflyIII\Handlers\Observer\DeletedCategoryObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -36,7 +36,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -#[ObservedBy([CategoryObserver::class])] +#[ObservedBy([DeletedCategoryObserver::class])] class Category extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/Recurrence.php b/app/Models/Recurrence.php index c5af8b80af..aaf5826769 100644 --- a/app/Models/Recurrence.php +++ b/app/Models/Recurrence.php @@ -26,7 +26,7 @@ namespace FireflyIII\Models; use Carbon\Carbon; use FireflyIII\Casts\SeparateTimezoneCaster; -use FireflyIII\Handlers\Observer\RecurrenceObserver; +use FireflyIII\Handlers\Observer\DeletedRecurrenceObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -43,7 +43,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property Carbon $first_date * @property null|Carbon $latest_date */ -#[ObservedBy([RecurrenceObserver::class])] +#[ObservedBy([DeletedRecurrenceObserver::class])] class Recurrence extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/RecurrenceTransaction.php b/app/Models/RecurrenceTransaction.php index 14a211006d..c31f17cd98 100644 --- a/app/Models/RecurrenceTransaction.php +++ b/app/Models/RecurrenceTransaction.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Models; -use FireflyIII\Handlers\Observer\RecurrenceTransactionObserver; +use FireflyIII\Handlers\Observer\DeletedRecurrenceTransactionObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; @@ -33,7 +33,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; -#[ObservedBy([RecurrenceTransactionObserver::class])] +#[ObservedBy([DeletedRecurrenceTransactionObserver::class])] class RecurrenceTransaction extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/Rule.php b/app/Models/Rule.php index aa590123d5..c8bf52fe7f 100644 --- a/app/Models/Rule.php +++ b/app/Models/Rule.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Models; -use FireflyIII\Handlers\Observer\RuleObserver; +use FireflyIII\Handlers\Observer\DeletedRuleObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -38,7 +38,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * @property User $user */ -#[ObservedBy([RuleObserver::class])] +#[ObservedBy([DeletedRuleObserver::class])] class Rule extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/RuleGroup.php b/app/Models/RuleGroup.php index 790685456b..9c1aa35fda 100644 --- a/app/Models/RuleGroup.php +++ b/app/Models/RuleGroup.php @@ -23,7 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Models; -use FireflyIII\Handlers\Observer\RuleGroupObserver; +use FireflyIII\Handlers\Observer\DeletedRuleGroupObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -40,7 +40,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property User $user * @property Collection $rules */ -#[ObservedBy([RuleGroupObserver::class])] +#[ObservedBy([DeletedRuleGroupObserver::class])] class RuleGroup extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/Tag.php b/app/Models/Tag.php index eb37877ac7..94e31c6855 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Casts\SeparateTimezoneCaster; -use FireflyIII\Handlers\Observer\TagObserver; +use FireflyIII\Handlers\Observer\DeletedTagObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -36,7 +36,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -#[ObservedBy([TagObserver::class])] +#[ObservedBy([DeletedTagObserver::class])] class Tag extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 1e2d086df5..295bc84aaa 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -26,7 +26,7 @@ namespace FireflyIII\Models; use Carbon\Carbon; use FireflyIII\Casts\SeparateTimezoneCaster; use FireflyIII\Enums\TransactionTypeEnum; -use FireflyIII\Handlers\Observer\TransactionJournalObserver; +use FireflyIII\Handlers\Observer\DeletedTransactionJournalObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -50,7 +50,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * * @property TransactionGroup $transactionGroup */ -#[ObservedBy([TransactionJournalObserver::class])] +#[ObservedBy([DeletedTransactionJournalObserver::class])] class TransactionJournal extends Model { use HasFactory; diff --git a/app/Models/Webhook.php b/app/Models/Webhook.php index 911ff17f56..c6f4f330b9 100644 --- a/app/Models/Webhook.php +++ b/app/Models/Webhook.php @@ -27,7 +27,7 @@ namespace FireflyIII\Models; use FireflyIII\Enums\WebhookDelivery as WebhookDeliveryEnum; use FireflyIII\Enums\WebhookResponse as WebhookResponseEnum; use FireflyIII\Enums\WebhookTrigger as WebhookTriggerEnum; -use FireflyIII\Handlers\Observer\WebhookObserver; +use FireflyIII\Handlers\Observer\DeletedWebhookObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; @@ -39,7 +39,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -#[ObservedBy([WebhookObserver::class])] +#[ObservedBy([DeletedWebhookObserver::class])] class Webhook extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/WebhookMessage.php b/app/Models/WebhookMessage.php index 38846e1c89..44a35bec40 100644 --- a/app/Models/WebhookMessage.php +++ b/app/Models/WebhookMessage.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Models; -use FireflyIII\Handlers\Observer\WebhookMessageObserver; +use FireflyIII\Handlers\Observer\DeletedWebhookMessageObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\User; use Illuminate\Database\Eloquent\Attributes\ObservedBy; @@ -34,7 +34,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -#[ObservedBy([WebhookMessageObserver::class])] +#[ObservedBy([DeletedWebhookMessageObserver::class])] class WebhookMessage extends Model { use ReturnsIntegerIdTrait;