diff --git a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php index 0850b7f59214..4e5a8e3be887 100644 --- a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php +++ b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php @@ -110,7 +110,7 @@ class TransactionTransformer implements BankRevenueInterface $transaction['creditorName'] : null); return [ - 'transaction_id' => $transaction["transactionId"], + 'nordigen_transaction_id' => $transaction["transactionId"], 'amount' => abs((int) $transaction["transactionAmount"]["amount"]), 'currency_id' => $this->convertCurrency($transaction["transactionAmount"]["currency"]), 'category_id' => null, diff --git a/app/Http/Controllers/Bank/NordigenController.php b/app/Http/Controllers/Bank/NordigenController.php index 47dd7013eb7b..858d18959bd7 100644 --- a/app/Http/Controllers/Bank/NordigenController.php +++ b/app/Http/Controllers/Bank/NordigenController.php @@ -206,7 +206,7 @@ class NordigenController extends BaseController $nordigen_account = $nordigen->getAccount($nordigenAccountId); - $existing_bank_integration = BankIntegration::withTrashed()->where('nordigen_account_id', $nordigen_account['id'])->where('company_id', $company->id)->first(); + $existing_bank_integration = BankIntegration::withTrashed()->where('nordigen_account_id', $nordigen_account['id'])->where('company_id', $company->id)->where('is_deleted', 0)->first(); if (!$existing_bank_integration) { diff --git a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php index fc77d49e5774..5d17a8f5d32b 100644 --- a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php +++ b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php @@ -155,12 +155,13 @@ class ProcessBankTransactionsNordigen implements ShouldQueue foreach ($transactions as $transaction) { - if (BankTransaction::where('transaction_id', $transaction['transaction_id'])->where('company_id', $this->company->id)->where('bank_integration_id', $this->bank_integration->id)->withTrashed()->exists()) + if (BankTransaction::where('nordigen_transaction_id', $transaction['nordigen_transaction_id'])->where('company_id', $this->company->id)->where('bank_integration_id', $this->bank_integration->id)->where('is_deleted', 0)->withTrashed()->exists()) continue; //this should be much faster to insert than using ::create() \DB::table('bank_transactions')->insert( array_merge($transaction, [ + 'transaction_id' => 0, 'company_id' => $this->company->id, 'user_id' => $user_id, 'bank_integration_id' => $this->bank_integration->id, diff --git a/app/Models/BankTransaction.php b/app/Models/BankTransaction.php index d39c83a62985..d9595cad319e 100644 --- a/app/Models/BankTransaction.php +++ b/app/Models/BankTransaction.php @@ -23,6 +23,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property int $user_id * @property int $bank_integration_id * @property int $transaction_id + * @property string $nordigen_transaction_id * @property string $amount * @property string|null $currency_code * @property int|null $currency_id diff --git a/database/migrations/2024_01_10_155555_add_bank_transaction_nordigen_field.php b/database/migrations/2024_01_10_155555_add_bank_transaction_nordigen_field.php new file mode 100644 index 000000000000..fca0b6307f98 --- /dev/null +++ b/database/migrations/2024_01_10_155555_add_bank_transaction_nordigen_field.php @@ -0,0 +1,49 @@ +text('nordigen_transaction_id')->nullable(); + }); + + // remove invalid transactions + BankIntegration::query()->where('integration_type', BankIntegration::INTEGRATION_TYPE_NORDIGEN)->cursor()->each(function ($bank_integration) { + $bank_integration->from_date = now()->subDays(90); + $bank_integration->save(); + + BankTransaction::query()->where('bank_integration_id', $bank_integration->id)->cursor()->each(function ($bank_transaction) { + if ($bank_transaction->invoiceIds != '' || $bank_transaction->expense_id != '') + return; + + $btrepo = new BankTransactionRepository(); + $btrepo->delete($bank_transaction); + }); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +};