From e10df27f4bd727a2ff5904cfea7cd43f6730810d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 25 Jun 2023 13:15:15 +1000 Subject: [PATCH] Improve imports for transactions --- app/Import/Definitions/BankTransactionMap.php | 8 ++++-- .../Transformer/Bank/BankTransformer.php | 26 +++++++++++++++++-- app/Repositories/SchedulerRepository.php | 1 - 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/Import/Definitions/BankTransactionMap.php b/app/Import/Definitions/BankTransactionMap.php index fb30efd891f0..cf76d071af50 100644 --- a/app/Import/Definitions/BankTransactionMap.php +++ b/app/Import/Definitions/BankTransactionMap.php @@ -20,12 +20,14 @@ class BankTransactionMap 1 => 'transaction.amount', 2 => 'transaction.currency', 3 => 'transaction.account_type', - 4 => 'transaction.category_id', + 4 => 'transaction.category', 5 => 'transaction.category_type', 6 => 'transaction.date', - 7 => 'transaction.bank_account_id', + 7 => 'transaction.bank_account', 8 => 'transaction.description', 9 => 'transaction.base_type', + 10 => 'transaction.payment_type_Credit', + 11 => 'transaction.payment_type_Debit', ]; } @@ -42,6 +44,8 @@ class BankTransactionMap 7 => 'texts.bank_account_id', 8 => 'texts.description', 9 => 'texts.type', + 10 => 'transaction.credit', + 11 => 'transaction.debit', ]; } } diff --git a/app/Import/Transformer/Bank/BankTransformer.php b/app/Import/Transformer/Bank/BankTransformer.php index d9377edc09de..a5846d4f3157 100644 --- a/app/Import/Transformer/Bank/BankTransformer.php +++ b/app/Import/Transformer/Bank/BankTransformer.php @@ -30,7 +30,7 @@ class BankTransformer extends BaseTransformer $transformed = [ 'bank_integration_id' => $transaction['transaction.bank_integration_id'], 'transaction_id' => $this->getNumber($transaction, 'transaction.transaction_id'), - 'amount' => abs($this->getFloat($transaction, 'transaction.amount')), + 'amount' => $this->calculateAmount($transaction), 'currency_id' => $this->getCurrencyByCode($transaction, 'transaction.currency'), 'account_type' => strlen($this->getString($transaction, 'transaction.account_type')) > 1 ? $this->getString($transaction, 'transaction.account_type') : 'bank', 'category_id' => $this->getNumber($transaction, 'transaction.category_id') > 0 ? $this->getNumber($transaction, 'transaction.category_id') : null, @@ -49,13 +49,35 @@ class BankTransformer extends BaseTransformer return $transformed; } + private function calculateAmount(array $transaction):float + { + + if (array_key_exists('transaction.amount', $transaction) && is_numeric($transaction['transaction.amount'])) { + return abs($this->getFloat($transaction, 'transaction.amount')); + } + + if (array_key_exists('transaction.payment_type_Credit', $transaction) && is_numeric($transaction['transaction.payment_type_Credit'])) { + return abs($this->getFloat($transaction, 'transaction.payment_type_Credit')); + } + + if (array_key_exists('transaction.payment_type_Debit', $transaction) && is_numeric($transaction['transaction.payment_type_Debit'])) { + return abs($this->getFloat($transaction, 'transaction.payment_type_Debit')); + } + + return 0; + } private function calculateType($transaction) { - if (array_key_exists('transaction.base_type', $transaction) && (($transaction['transaction.base_type'] == 'CREDIT') || strtolower($transaction['transaction.base_type']) == 'deposit')) { + + if (array_key_exists('transaction.payment_type_Credit', $transaction) && is_numeric($transaction['transaction.payment_type_Credit'])) { return 'CREDIT'; } + if (array_key_exists('transaction.transaction.payment_type_Debit', $transaction) && is_numeric($transaction['transaction.payment_type_Debit'])) { + return 'DEBIT'; + } + if (array_key_exists('transaction.base_type', $transaction) && (($transaction['transaction.base_type'] == 'DEBIT') || strtolower($transaction['transaction.base_type']) == 'withdrawal')) { return 'DEBIT'; } diff --git a/app/Repositories/SchedulerRepository.php b/app/Repositories/SchedulerRepository.php index 92e0ccd2d36a..54b2da1ea10d 100644 --- a/app/Repositories/SchedulerRepository.php +++ b/app/Repositories/SchedulerRepository.php @@ -30,7 +30,6 @@ class SchedulerRepository extends BaseRepository $scheduler->save(); - /** 18-5-2023 set client specific send times. */ $scheduler->adjustOffset(); return $scheduler->fresh();