diff --git a/app/Helpers/Bank/Nordigen/Nordigen.php b/app/Helpers/Bank/Nordigen/Nordigen.php index f5f663c1a985..33c62d076c8d 100644 --- a/app/Helpers/Bank/Nordigen/Nordigen.php +++ b/app/Helpers/Bank/Nordigen/Nordigen.php @@ -19,6 +19,7 @@ namespace App\Helpers\Bank\Nordigen; +use App\Models\Company; use App\Services\Email\Email; use App\Models\BankIntegration; use App\Services\Email\EmailObject; @@ -138,11 +139,11 @@ class Nordigen * @param string $dateFrom * @return array */ - public function getTransactions(string $accountId, string $dateFrom = null): array + public function getTransactions(Company $company, string $accountId, string $dateFrom = null): array { $transactionResponse = $this->client->account($accountId)->getAccountTransactions($dateFrom); - $it = new TransactionTransformer(); + $it = new TransactionTransformer($company); return $it->transform($transactionResponse); } diff --git a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php index ebef634daa45..f9874eb1c416 100644 --- a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php +++ b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php @@ -12,7 +12,10 @@ namespace App\Helpers\Bank\Nordigen\Transformer; use App\Helpers\Bank\BankRevenueInterface; -use App\Models\BankIntegration; +use App\Models\Company; +use App\Models\DateFormat; +use App\Models\Timezone; +use Carbon\Carbon; use App\Utils\Traits\AppSetup; use Illuminate\Support\Facades\Cache; use Log; @@ -66,6 +69,13 @@ class TransactionTransformer implements BankRevenueInterface { use AppSetup; + private Company $company; + + function __construct(Company $company) + { + $this->company = $company; + } + public function transform($transactionResponse) { $data = []; @@ -112,8 +122,8 @@ class TransactionTransformer implements BankRevenueInterface // enrich description with currencyExchange informations if (isset($transaction['currencyExchange'])) { foreach ($transaction["currencyExchange"] as $exchangeRate) { - $targetAmount = round($amount * (float) ($exchangeRate["exchangeRate"] ?? 1) , 2); - $description .= '\nexchangeRate: ' . $amount . " " . ($exchangeRate["sourceCurrency"] ?? '?') . " = " . $targetAmount . " " . ($exchangeRate["targetCurrency"] ?? '?') . " (" . ($exchangeRate["quotationDate"] ?? '?') . ")"; + $targetAmount = round($amount * (float) ($exchangeRate["exchangeRate"] ?? 1), 2); + $description .= '\n' . ctrans('texts.exchange_rate') . ' : ' . $amount . " " . ($exchangeRate["sourceCurrency"] ?? '?') . " = " . $targetAmount . " " . ($exchangeRate["targetCurrency"] ?? '?') . " (" . (isset($exchangeRate["quotationDate"]) ? $this->formatDate($exchangeRate["quotationDate"]) : '?') . ")"; } } @@ -164,4 +174,24 @@ class TransactionTransformer implements BankRevenueInterface } + private function formatDate(string $input) + { + $timezone = Timezone::find($this->company->settings->timezone_id); + $timezone_name = 'US/Eastern'; + + if ($timezone) { + $timezone_name = $timezone->name; + } + + $date_format_default = 'Y-m-d'; + + $date_format = DateFormat::find($this->company->settings->date_format_id); + + if ($date_format) { + $date_format_default = $date_format->format; + } + + return Carbon::createFromFormat("d-m-Y", $input)->setTimezone($timezone_name)->format($date_format_default) ?? $input; + } + } diff --git a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php index 2db5effd1016..d23e78659cec 100644 --- a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php +++ b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php @@ -138,7 +138,7 @@ class ProcessBankTransactionsNordigen implements ShouldQueue private function processTransactions() { //Get transaction count object - $transactions = $this->nordigen->getTransactions($this->bank_integration->nordigen_account_id, $this->from_date); + $transactions = $this->nordigen->getTransactions($this->company, $this->bank_integration->nordigen_account_id, $this->from_date); //if no transactions, update the from_date and move on if (count($transactions) == 0) {