Merge pull request #9134 from paulwer/fix-nordigen-transaction-id

fix: nordigen transaction id should be string
This commit is contained in:
David Bomba 2024-01-12 17:25:38 +11:00 committed by GitHub
commit f37c01bf50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 54 additions and 3 deletions

View File

@ -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,

View File

@ -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) {

View File

@ -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,

View File

@ -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

View File

@ -0,0 +1,49 @@
<?php
use App\Models\Account;
use App\Models\BankIntegration;
use App\Models\BankTransaction;
use App\Repositories\BankTransactionRepository;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// FIX: used column transaction_id was int and resulted in wrong value in field
Schema::table('bank_transactions', function (Blueprint $table) {
$table->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()
{
//
}
};