From fa5edbc29cd56ce17bae6b8afbae0f0b481f1c43 Mon Sep 17 00:00:00 2001 From: paulwer Date: Sat, 9 Dec 2023 17:16:01 +0100 Subject: [PATCH] latest changes --- app/Helpers/Bank/Nordigen/Nordigen.php | 9 +++++++- .../Transformer/IncomeTransformer.php | 23 +++++++++++++++---- .../Bank/ProcessBankTransactionsNordigen.php | 9 +------- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/app/Helpers/Bank/Nordigen/Nordigen.php b/app/Helpers/Bank/Nordigen/Nordigen.php index 1e8e23ac0dfc..34b79a3da2db 100644 --- a/app/Helpers/Bank/Nordigen/Nordigen.php +++ b/app/Helpers/Bank/Nordigen/Nordigen.php @@ -114,10 +114,17 @@ class Nordigen } + /** + * this method returns booked transactions from the bank_account, pending transactions are not part of the result + * @todo @turbo124 should we include pending transactions within the integration-process and mark them with a specific category?! + */ public function getTransactions(string $accountId, string $dateFrom = null) { - return $this->client->account($accountId)->getAccountTransactions($dateFrom); + $transactionResponse = $this->client->account($accountId)->getAccountTransactions($dateFrom); + + $it = new IncomeTransformer(); + return $it->transform($transactionResponse); } } diff --git a/app/Helpers/Bank/Nordigen/Transformer/IncomeTransformer.php b/app/Helpers/Bank/Nordigen/Transformer/IncomeTransformer.php index 43476923a4ee..bb6961e3c5cc 100644 --- a/app/Helpers/Bank/Nordigen/Transformer/IncomeTransformer.php +++ b/app/Helpers/Bank/Nordigen/Transformer/IncomeTransformer.php @@ -65,7 +65,22 @@ class IncomeTransformer implements BankRevenueInterface { use AppSetup; - public function transform(BankIntegration $bank_integration, $transaction) + public function transform($transaction) + { + + $data = []; + + if (!property_exists($transaction, 'transactions') || !property_exists($transaction->transactions, 'booked')) + throw new \Exception('invalid dataset'); + + foreach ($transaction->transactions->booked as $transaction) { + $data[] = $this->transformTransaction($transaction); + } + + return $data; + } + + public function transformTransaction($transaction) { if (!property_exists($transaction, 'transactionId') || !property_exists($transaction, 'transactionAmount') || !property_exists($transaction, 'balances') || !property_exists($transaction, 'institution')) @@ -75,11 +90,9 @@ class IncomeTransformer implements BankRevenueInterface 'transaction_id' => $transaction->transactionId, 'amount' => abs($transaction->transactionAmount->amount), 'currency_id' => $this->convertCurrency($transaction->transactionAmount->currency), - 'account_type' => 'bank', - 'category_id' => $transaction->highLevelCategoryId, - 'category_type' => $transaction->categoryType, + 'category_id' => $transaction->highLevelCategoryId, // TODO + 'category_type' => $transaction->categoryType, // TODO 'date' => $transaction->bookingDate, - 'bank_account_id' => $bank_integration->id, 'description' => $transaction->remittanceInformationUnstructured, 'base_type' => $transaction->transactionAmount->amount > 0 ? 'DEBIT' : 'CREDIT', ]; diff --git a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php index 0ef3f9dfee96..b976030dff9f 100644 --- a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php +++ b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php @@ -99,18 +99,11 @@ class ProcessBankTransactionsNordigen implements ShouldQueue return; } - $data = [ - 'top' => 500, - 'fromDate' => $this->from_date, - 'accountId' => $this->bank_integration->bank_account_id, - 'skip' => $this->skip, - ]; - //Get transaction count object $transactions = $nordigen->getTransactions($this->bank_integration->bank_account_id, $this->from_date); //Get int count - $count = sizeof($transactions->transactions->booked); + $count = sizeof($transactions); //if no transactions, update the from_date and move on if (count($transactions) == 0) {