Small code cleanup

This commit is contained in:
James Cole
2024-01-04 07:44:52 +01:00
parent ff98f3cc3e
commit 8be27a2201
17 changed files with 1860 additions and 1874 deletions

View File

@@ -226,21 +226,22 @@
}, },
{ {
"name": "friendsofphp/php-cs-fixer", "name": "friendsofphp/php-cs-fixer",
"version": "v3.45.0", "version": "v3.46.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
"reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5" "reference": "be6831c9af1740470d2a773119b9273f8ac1c3d2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/be6831c9af1740470d2a773119b9273f8ac1c3d2",
"reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", "reference": "be6831c9af1740470d2a773119b9273f8ac1c3d2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer/semver": "^3.4", "composer/semver": "^3.4",
"composer/xdebug-handler": "^3.0.3", "composer/xdebug-handler": "^3.0.3",
"ext-filter": "*",
"ext-json": "*", "ext-json": "*",
"ext-tokenizer": "*", "ext-tokenizer": "*",
"php": "^7.4 || ^8.0", "php": "^7.4 || ^8.0",
@@ -304,7 +305,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.45.0" "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.46.0"
}, },
"funding": [ "funding": [
{ {
@@ -312,7 +313,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-12-30T02:07:07+00:00" "time": "2024-01-03T21:38:46+00:00"
}, },
{ {
"name": "psr/container", "name": "psr/container",

View File

@@ -59,9 +59,7 @@ class MoveTransactionsRequest extends FormRequest
/** /**
* Configure the validator instance with special rules for after the basic validation rules. * Configure the validator instance with special rules for after the basic validation rules.
* * TODO this is duplicate.
* @param validator $validator
* TODO this is duplicate
*/ */
public function withValidator(Validator $validator): void public function withValidator(Validator $validator): void
{ {
@@ -81,12 +79,12 @@ class MoveTransactionsRequest extends FormRequest
$data = $validator->getData(); $data = $validator->getData();
$repository = app(AccountRepositoryInterface::class); $repository = app(AccountRepositoryInterface::class);
$repository->setUser(auth()->user()); $repository->setUser(auth()->user());
$original = $repository->find((int)$data['original_account']); $original = $repository->find((int) $data['original_account']);
$destination = $repository->find((int)$data['destination_account']); $destination = $repository->find((int) $data['destination_account']);
// not the same type: // not the same type:
if ($original->accountType->type !== $destination->accountType->type) { if ($original->accountType->type !== $destination->accountType->type) {
$validator->errors()->add('title', (string)trans('validation.same_account_type')); $validator->errors()->add('title', (string) trans('validation.same_account_type'));
return; return;
} }
@@ -96,7 +94,7 @@ class MoveTransactionsRequest extends FormRequest
// check different scenario's. // check different scenario's.
if (null === $originalCurrency xor null === $destinationCurrency) { if (null === $originalCurrency xor null === $destinationCurrency) {
$validator->errors()->add('title', (string)trans('validation.same_account_currency')); $validator->errors()->add('title', (string) trans('validation.same_account_currency'));
return; return;
} }
@@ -105,7 +103,7 @@ class MoveTransactionsRequest extends FormRequest
return; return;
} }
if ($originalCurrency->code !== $destinationCurrency->code) { if ($originalCurrency->code !== $destinationCurrency->code) {
$validator->errors()->add('title', (string)trans('validation.same_account_currency')); $validator->errors()->add('title', (string) trans('validation.same_account_currency'));
} }
} }
} }

View File

@@ -70,9 +70,7 @@ class UpdateRequest extends FormRequest
/** /**
* Configure the validator instance with special rules for after the basic validation rules. * Configure the validator instance with special rules for after the basic validation rules.
* * TODO duplicate code.
* @param Validator $validator
* TODO duplicate code
*/ */
public function withValidator(Validator $validator): void public function withValidator(Validator $validator): void
{ {
@@ -84,7 +82,7 @@ class UpdateRequest extends FormRequest
$start = new Carbon($data['start']); $start = new Carbon($data['start']);
$end = new Carbon($data['end']); $end = new Carbon($data['end']);
if ($end->isBefore($start)) { if ($end->isBefore($start)) {
$validator->errors()->add('end', (string)trans('validation.date_after')); $validator->errors()->add('end', (string) trans('validation.date_after'));
} }
} }
} }

View File

@@ -77,11 +77,8 @@ class BudgetController extends Controller
} }
/** /**
* @param DateRequest $request
*
* TODO see autocomplete/accountcontroller
*
* @throws FireflyException * @throws FireflyException
* TODO see autocomplete/accountcontroller.
*/ */
public function dashboard(DateRequest $request): JsonResponse public function dashboard(DateRequest $request): JsonResponse
{ {

View File

@@ -169,7 +169,6 @@ class StoreRequest extends FormRequest
'transactions.*.invoice_date' => 'date|nullable', 'transactions.*.invoice_date' => 'date|nullable',
// TODO include location and ability to process it. // TODO include location and ability to process it.
]; ];
} }
@@ -226,7 +225,7 @@ class StoreRequest extends FormRequest
*/ */
foreach ($this->get('transactions') as $transaction) { foreach ($this->get('transactions') as $transaction) {
$object = new NullArrayObject($transaction); $object = new NullArrayObject($transaction);
$result= [ $result = [
'type' => $this->clearString($object['type']), 'type' => $this->clearString($object['type']),
'date' => $this->dateFromValue($object['date']), 'date' => $this->dateFromValue($object['date']),
'order' => $this->integerFromValue((string)$object['order']), 'order' => $this->integerFromValue((string)$object['order']),

View File

@@ -374,7 +374,8 @@ class TransactionJournalFactory
->where('transaction_journals.user_id', $this->user->id) ->where('transaction_journals.user_id', $this->user->id)
->where('data', json_encode($hash, JSON_THROW_ON_ERROR)) ->where('data', json_encode($hash, JSON_THROW_ON_ERROR))
->with(['transactionJournal', 'transactionJournal.transactionGroup']) ->with(['transactionJournal', 'transactionJournal.transactionGroup'])
->first(['journal_meta.*']); ->first(['journal_meta.*'])
;
if (null !== $result) { if (null !== $result) {
app('log')->warning(sprintf('Found a duplicate in errorIfDuplicate because hash %s is not unique!', $hash)); app('log')->warning(sprintf('Found a duplicate in errorIfDuplicate because hash %s is not unique!', $hash));
$journal = $result->transactionJournal()->withTrashed()->first(); $journal = $result->transactionJournal()->withTrashed()->first();

View File

@@ -127,10 +127,10 @@ class CreateController extends Controller
'payment_date' => $optionalFields['payment_date'], 'payment_date' => $optionalFields['payment_date'],
'invoice_date' => $optionalFields['invoice_date'], 'invoice_date' => $optionalFields['invoice_date'],
]; ];
// var_dump($optionalFields); // var_dump($optionalFields);
// exit; // exit;
$optionalFields['external_url'] = $optionalFields['external_url'] ?? false; $optionalFields['external_url'] ??= false;
$optionalFields['location'] = $optionalFields['location'] ?? false; $optionalFields['location'] ??= false;
session()->put('preFilled', $preFilled); session()->put('preFilled', $preFilled);
return view( return view(

View File

@@ -72,8 +72,7 @@ class AccountRepository implements AccountRepositoryInterface
/** @var Account $account */ /** @var Account $account */
foreach ($accounts as $account) { foreach ($accounts as $account) {
$byName = $this->user->accounts()->where('name', $account->name) $byName = $this->user->accounts()->where('name', $account->name)
->where('id', '!=', $account->id)->first() ->where('id', '!=', $account->id)->first();
;
if (null !== $byName) { if (null !== $byName) {
$result->push($account); $result->push($account);
$result->push($byName); $result->push($byName);
@@ -82,8 +81,7 @@ class AccountRepository implements AccountRepositoryInterface
} }
if (null !== $account->iban) { if (null !== $account->iban) {
$byIban = $this->user->accounts()->where('iban', $account->iban) $byIban = $this->user->accounts()->where('iban', $account->iban)
->where('id', '!=', $account->id)->first() ->where('id', '!=', $account->id)->first();
;
if (null !== $byIban) { if (null !== $byIban) {
$result->push($account); $result->push($account);
$result->push($byIban); $result->push($byIban);
@@ -109,8 +107,7 @@ class AccountRepository implements AccountRepositoryInterface
$q1->where('account_meta.name', '=', 'account_number'); $q1->where('account_meta.name', '=', 'account_number');
$q1->where('account_meta.data', '=', $json); $q1->where('account_meta.data', '=', $json);
} }
) );
;
if (0 !== count($types)) { if (0 !== count($types)) {
$dbQuery->leftJoin('account_types', 'accounts.account_type_id', '=', 'account_types.id'); $dbQuery->leftJoin('account_types', 'accounts.account_type_id', '=', 'account_types.id');
@@ -234,7 +231,7 @@ class AccountRepository implements AccountRepositoryInterface
return $factory->findOrCreate('Cash account', $type->type); return $factory->findOrCreate('Cash account', $type->type);
} }
public function setUser(null|Authenticatable|User $user): void public function setUser(null | Authenticatable | User $user): void
{ {
if ($user instanceof User) { if ($user instanceof User) {
$this->user = $user; $this->user = $user;
@@ -246,8 +243,7 @@ class AccountRepository implements AccountRepositoryInterface
$journal = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') $journal = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->where('transactions.account_id', $account->id) ->where('transactions.account_id', $account->id)
->transactionTypes([TransactionType::LIABILITY_CREDIT]) ->transactionTypes([TransactionType::LIABILITY_CREDIT])
->first(['transaction_journals.*']) ->first(['transaction_journals.*']);
;
return $journal?->transactionGroup; return $journal?->transactionGroup;
} }
@@ -294,8 +290,7 @@ class AccountRepository implements AccountRepositoryInterface
$journal = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') $journal = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->where('transactions.account_id', $account->id) ->where('transactions.account_id', $account->id)
->transactionTypes([TransactionType::OPENING_BALANCE, TransactionType::LIABILITY_CREDIT]) ->transactionTypes([TransactionType::OPENING_BALANCE, TransactionType::LIABILITY_CREDIT])
->first(['transaction_journals.*']) ->first(['transaction_journals.*']);
;
if (null === $journal) { if (null === $journal) {
return null; return null;
} }
@@ -315,8 +310,7 @@ class AccountRepository implements AccountRepositoryInterface
return TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') return TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->where('transactions.account_id', $account->id) ->where('transactions.account_id', $account->id)
->transactionTypes([TransactionType::OPENING_BALANCE, TransactionType::LIABILITY_CREDIT]) ->transactionTypes([TransactionType::OPENING_BALANCE, TransactionType::LIABILITY_CREDIT])
->first(['transaction_journals.*'])?->date->format('Y-m-d H:i:s') ->first(['transaction_journals.*'])?->date->format('Y-m-d H:i:s');
;
} }
public function getOpeningBalanceGroup(Account $account): ?TransactionGroup public function getOpeningBalanceGroup(Account $account): ?TransactionGroup
@@ -326,13 +320,19 @@ class AccountRepository implements AccountRepositoryInterface
return $journal?->transactionGroup; return $journal?->transactionGroup;
} }
/**
*
*
* @param Account $account
*
* @return TransactionJournal|null
*/
public function getOpeningBalance(Account $account): ?TransactionJournal public function getOpeningBalance(Account $account): ?TransactionJournal
{ {
return TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') return TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->where('transactions.account_id', $account->id) ->where('transactions.account_id', $account->id)
->transactionTypes([TransactionType::OPENING_BALANCE]) ->transactionTypes([TransactionType::OPENING_BALANCE])
->first(['transaction_journals.*']) ->first(['transaction_journals.*']);
;
} }
public function getPiggyBanks(Account $account): Collection public function getPiggyBanks(Account $account): Collection
@@ -357,8 +357,7 @@ class AccountRepository implements AccountRepositoryInterface
/** @var null|Account $current */ /** @var null|Account $current */
$current = $this->user->accounts()->where('account_type_id', $type->id) $current = $this->user->accounts()->where('account_type_id', $type->id)
->where('name', $name) ->where('name', $name)
->first() ->first();
;
if (null !== $current) { if (null !== $current) {
return $current; return $current;
@@ -389,7 +388,7 @@ class AccountRepository implements AccountRepositoryInterface
if (!in_array($type, $list, true)) { if (!in_array($type, $list, true)) {
return null; return null;
} }
$currencyId = (int)$this->getMetaValue($account, 'currency_id'); $currencyId = (int) $this->getMetaValue($account, 'currency_id');
if ($currencyId > 0) { if ($currencyId > 0) {
return TransactionCurrency::find($currencyId); return TransactionCurrency::find($currencyId);
} }
@@ -411,7 +410,7 @@ class AccountRepository implements AccountRepositoryInterface
return null; return null;
} }
if (1 === $result->count()) { if (1 === $result->count()) {
return (string)$result->first()->data; return (string) $result->first()->data;
} }
return null; return null;
@@ -432,8 +431,8 @@ class AccountRepository implements AccountRepositoryInterface
$info = $account->transactions()->get(['transaction_currency_id', 'foreign_currency_id'])->toArray(); $info = $account->transactions()->get(['transaction_currency_id', 'foreign_currency_id'])->toArray();
$currencyIds = []; $currencyIds = [];
foreach ($info as $entry) { foreach ($info as $entry) {
$currencyIds[] = (int)$entry['transaction_currency_id']; $currencyIds[] = (int) $entry['transaction_currency_id'];
$currencyIds[] = (int)$entry['foreign_currency_id']; $currencyIds[] = (int) $entry['foreign_currency_id'];
} }
$currencyIds = array_unique($currencyIds); $currencyIds = array_unique($currencyIds);
@@ -456,14 +455,14 @@ class AccountRepository implements AccountRepositoryInterface
AccountType::MORTGAGE => [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], AccountType::MORTGAGE => [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE],
]; ];
if (array_key_exists(ucfirst($type), $sets)) { if (array_key_exists(ucfirst($type), $sets)) {
$order = (int)$this->getAccountsByType($sets[ucfirst($type)])->max('order'); $order = (int) $this->getAccountsByType($sets[ucfirst($type)])->max('order');
app('log')->debug(sprintf('Return max order of "%s" set: %d', $type, $order)); app('log')->debug(sprintf('Return max order of "%s" set: %d', $type, $order));
return $order; return $order;
} }
$specials = [AccountType::CASH, AccountType::INITIAL_BALANCE, AccountType::IMPORT, AccountType::RECONCILIATION]; $specials = [AccountType::CASH, AccountType::INITIAL_BALANCE, AccountType::IMPORT, AccountType::RECONCILIATION];
$order = (int)$this->getAccountsByType($specials)->max('order'); $order = (int) $this->getAccountsByType($specials)->max('order');
app('log')->debug(sprintf('Return max order of "%s" set (specials!): %d', $type, $order)); app('log')->debug(sprintf('Return max order of "%s" set (specials!): %d', $type, $order));
return $order; return $order;
@@ -517,8 +516,7 @@ class AccountRepository implements AccountRepositoryInterface
->orderBy('transaction_journals.order', 'DESC') ->orderBy('transaction_journals.order', 'DESC')
->where('transaction_journals.user_id', $this->user->id) ->where('transaction_journals.user_id', $this->user->id)
->orderBy('transaction_journals.id', 'ASC') ->orderBy('transaction_journals.id', 'ASC')
->first(['transaction_journals.id']) ->first(['transaction_journals.id']);
;
if (null !== $first) { if (null !== $first) {
return TransactionJournal::find($first->id); return TransactionJournal::find($first->id);
} }
@@ -544,7 +542,7 @@ class AccountRepository implements AccountRepositoryInterface
continue; continue;
} }
if ($index !== (int)$account->order) { if ($index !== (int) $account->order) {
app('log')->debug(sprintf('Account #%d ("%s"): order should %d be but is %d.', $account->id, $account->name, $index, $account->order)); app('log')->debug(sprintf('Account #%d ("%s"): order should %d be but is %d.', $account->id, $account->name, $index, $account->order));
$account->order = $index; $account->order = $index;
$account->save(); $account->save();
@@ -561,8 +559,7 @@ class AccountRepository implements AccountRepositoryInterface
->orderBy('accounts.order', 'ASC') ->orderBy('accounts.order', 'ASC')
->orderBy('accounts.account_type_id', 'ASC') ->orderBy('accounts.account_type_id', 'ASC')
->orderBy('accounts.name', 'ASC') ->orderBy('accounts.name', 'ASC')
->with(['accountType']) ->with(['accountType']);
;
if ('' !== $query) { if ('' !== $query) {
// split query on spaces just in case: // split query on spaces just in case:
$parts = explode(' ', $query); $parts = explode(' ', $query);
@@ -587,8 +584,7 @@ class AccountRepository implements AccountRepositoryInterface
->orderBy('accounts.order', 'ASC') ->orderBy('accounts.order', 'ASC')
->orderBy('accounts.account_type_id', 'ASC') ->orderBy('accounts.account_type_id', 'ASC')
->orderBy('accounts.name', 'ASC') ->orderBy('accounts.name', 'ASC')
->with(['accountType', 'accountMeta']) ->with(['accountType', 'accountMeta']);
;
if ('' !== $query) { if ('' !== $query) {
// split query on spaces just in case: // split query on spaces just in case:
$parts = explode(' ', $query); $parts = explode(' ', $query);

View File

@@ -273,10 +273,6 @@ class CurrencyRepository implements CurrencyRepositoryInterface
return TransactionCurrency::where('code', $currencyCode)->first(); return TransactionCurrency::where('code', $currencyCode)->first();
} }
/**
* @param TransactionCurrency $currency
* Enables a currency
*/
public function enable(TransactionCurrency $currency): void public function enable(TransactionCurrency $currency): void
{ {
$this->userGroup->currencies()->syncWithoutDetaching([$currency->id]); $this->userGroup->currencies()->syncWithoutDetaching([$currency->id]);

View File

@@ -216,10 +216,9 @@ class Preferences
} }
/** /**
* @param null $default * TODO remove me.
* *
* @return null|preference * @param null $default
* TODO remove me
* *
* @throws FireflyException * @throws FireflyException
*/ */

View File

@@ -65,6 +65,23 @@ trait AppendsLocationData
*/ */
abstract public function boolean($key = null, $default = false); abstract public function boolean($key = null, $default = false);
public function addFromromTransactionStore(array $information, array $return): array
{
$return['store_location'] = false;
if (true === $information['store_location']) {
$long = array_key_exists('longitude', $information) ? $information['longitude'] : null;
$lat = array_key_exists('latitude', $information) ? $information['latitude'] : null;
if (null !== $long && null !== $lat && $this->validLongitude($long) && $this->validLatitude($lat)) {
$return['store_location'] = true;
$return['longitude'] = $information['longitude'];
$return['latitude'] = $information['latitude'];
$return['zoom_level'] = $information['zoom_level'];
}
}
return $return;
}
/** /**
* Read the submitted Request data and add new or updated Location data to the array. * Read the submitted Request data and add new or updated Location data to the array.
*/ */
@@ -119,37 +136,17 @@ trait AppendsLocationData
return $data; return $data;
} }
/**
* @param array $information
* @param array $return
*
* @return array
*/
public function addFromromTransactionStore(array $information, array $return): array
{
$return['store_location'] = false;
if (true === $information['store_location']) {
$long = array_key_exists('longitude', $information) ? $information['longitude'] : null;
$lat = array_key_exists('latitude', $information) ? $information['latitude'] : null;
if (null !== $long && null !== $lat && $this->validLongitude($long) && $this->validLatitude($lat)) {
$return['store_location'] = true;
$return['longitude'] = $information['longitude'];
$return['latitude'] = $information['latitude'];
$return['zoom_level'] = $information['zoom_level'];
}
}
return $return;
}
private function validLongitude(string $longitude): bool private function validLongitude(string $longitude): bool
{ {
$number = (float) $longitude; $number = (float) $longitude;
return $number >= -180 && $number <= 180; return $number >= -180 && $number <= 180;
} }
private function validLatitude(string $latitude): bool private function validLatitude(string $latitude): bool
{ {
$number = (float) $latitude; $number = (float) $latitude;
return $number >= -90 && $number <= 90; return $number >= -90 && $number <= 90;
} }

View File

@@ -81,8 +81,7 @@ class AmountFormat extends AbstractExtension
/** /**
* Will format the amount by the currency related to the given account. * Will format the amount by the currency related to the given account.
* *
* @return twigFunction * TODO Remove me when v2 hits.
* TODO remove me when layout v1 is deprecated
*/ */
protected function formatAmountByAccount(): TwigFunction protected function formatAmountByAccount(): TwigFunction
{ {

View File

@@ -346,8 +346,9 @@ class General extends AbstractExtension
} }
/** /**
* @return twigFunction * TODO Remove me when v2 hits.
* TODO remove me when layout v1 is deprecated *
* @return TwigFunction
*/ */
protected function getMetaField(): TwigFunction protected function getMetaField(): TwigFunction
{ {

View File

@@ -199,9 +199,12 @@ class AccountTransformer extends AbstractTransformer
} }
/** /**
* @return array
*
* TODO refactor call to get~OpeningBalanceAmount / Date because it is a lot of queries * TODO refactor call to get~OpeningBalanceAmount / Date because it is a lot of queries
*
* @param Account $account
* @param string $accountType
*
* @return array
*/ */
private function getOpeningBalance(Account $account, string $accountType): array private function getOpeningBalance(Account $account, string $accountType): array
{ {

View File

@@ -103,7 +103,8 @@ class TransactionGroupTransformer extends AbstractTransformer
$tags = DB::table('tag_transaction_journal') $tags = DB::table('tag_transaction_journal')
->leftJoin('tags', 'tags.id', 'tag_transaction_journal.tag_id') ->leftJoin('tags', 'tags.id', 'tag_transaction_journal.tag_id')
->whereIn('tag_transaction_journal.transaction_journal_id', array_keys($journals)) ->whereIn('tag_transaction_journal.transaction_journal_id', array_keys($journals))
->get(['tag_transaction_journal.transaction_journal_id', 'tags.tag']); ->get(['tag_transaction_journal.transaction_journal_id', 'tags.tag'])
;
/** @var \stdClass $tag */ /** @var \stdClass $tag */
foreach ($tags as $tag) { foreach ($tags as $tag) {

View File

@@ -62,7 +62,7 @@ trait CurrencyValidation
} }
// if foreign amount is present, then the currency must be as well. // if foreign amount is present, then the currency must be as well.
if (!(array_key_exists('foreign_currency_id', $transaction) || array_key_exists('foreign_currency_code', $transaction)) && 0 !== bccomp('0', $transaction['foreign_amount'])) { if (!(array_key_exists('foreign_currency_id', $transaction) || array_key_exists('foreign_currency_code', $transaction)) && 0 !== bccomp('0', $transaction['foreign_amount'])) {
$validator->errors()->add('transactions.' . $index . '.foreign_amount', (string) trans('validation.require_currency_info')); $validator->errors()->add('transactions.'.$index.'.foreign_amount', (string) trans('validation.require_currency_info'));
} }
// if the currency is present, then the amount must be present as well. // if the currency is present, then the amount must be present as well.
if ((array_key_exists('foreign_currency_id', $transaction) || array_key_exists('foreign_currency_code', $transaction)) if ((array_key_exists('foreign_currency_id', $transaction) || array_key_exists('foreign_currency_code', $transaction))
@@ -71,7 +71,7 @@ trait CurrencyValidation
$transaction $transaction
)) { )) {
$validator->errors()->add( $validator->errors()->add(
'transactions.' . $index . '.foreign_amount', 'transactions.'.$index.'.foreign_amount',
(string) trans('validation.require_currency_amount') (string) trans('validation.require_currency_amount')
); );
} }