This commit is contained in:
James Cole
2018-09-10 16:18:35 +02:00
parent 34202dea1d
commit 155480b335
9 changed files with 128 additions and 48 deletions

View File

@@ -40,7 +40,12 @@ class AssetAccountIbans implements MapperInterface
{ {
/** @var AccountRepositoryInterface $accountRepository */ /** @var AccountRepositoryInterface $accountRepository */
$accountRepository = app(AccountRepositoryInterface::class); $accountRepository = app(AccountRepositoryInterface::class);
$set = $accountRepository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); $set = $accountRepository->getAccountsByType(
[AccountType::DEFAULT, AccountType::ASSET,
AccountType::LOAN, AccountType::DEBT,
AccountType::CREDITCARD, AccountType::MORTGAGE,
]
);
$topList = []; $topList = [];
$list = []; $list = [];
@@ -49,10 +54,22 @@ class AssetAccountIbans implements MapperInterface
$iban = $account->iban ?? ''; $iban = $account->iban ?? '';
$accountId = (int)$account->id; $accountId = (int)$account->id;
if (\strlen($iban) > 0) { if (\strlen($iban) > 0) {
$topList[$accountId] = $account->iban . ' (' . $account->name . ')'; $name = $account->iban . ' (' . $account->name . ')';
// is a liability?
if (\in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) {
$name = $name . ' (' . strtolower(trans('import.import_liability_select')) . ')';
}
$topList[$accountId] = $name;
} }
if ('' === $iban) { if ('' === $iban) {
$list[$accountId] = $account->name; $name = $account->name;
// is a liability?
if (\in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) {
$name = $name . ' (' . strtolower(trans('import.import_liability_select')) . ')';
}
$list[$accountId] = $name;
} }
} }
/** @noinspection AdditionOperationOnArraysInspection */ /** @noinspection AdditionOperationOnArraysInspection */

View File

@@ -40,7 +40,7 @@ class AssetAccounts implements MapperInterface
{ {
/** @var AccountRepositoryInterface $accountRepository */ /** @var AccountRepositoryInterface $accountRepository */
$accountRepository = app(AccountRepositoryInterface::class); $accountRepository = app(AccountRepositoryInterface::class);
$set = $accountRepository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); $set = $accountRepository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE,]);
$list = []; $list = [];
/** @var Account $account */ /** @var Account $account */
@@ -51,6 +51,12 @@ class AssetAccounts implements MapperInterface
if (\strlen($iban) > 0) { if (\strlen($iban) > 0) {
$name .= ' (' . $iban . ')'; $name .= ' (' . $iban . ')';
} }
// is a liability?
if (\in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) {
$name = trans('import.import_liability_select') . ': ' . $name;
}
$list[$accountId] = $name; $list[$accountId] = $name;
} }
asort($list); asort($list);

View File

@@ -44,7 +44,8 @@ class OpposingAccountIbans implements MapperInterface
[ [
AccountType::DEFAULT, AccountType::ASSET, AccountType::DEFAULT, AccountType::ASSET,
AccountType::EXPENSE, AccountType::BENEFICIARY, AccountType::EXPENSE, AccountType::BENEFICIARY,
AccountType::REVENUE, AccountType::REVENUE, AccountType::LOAN, AccountType::DEBT,
AccountType::CREDITCARD, AccountType::MORTGAGE,
] ]
); );
$topList = []; $topList = [];
@@ -55,10 +56,23 @@ class OpposingAccountIbans implements MapperInterface
$iban = $account->iban ?? ''; $iban = $account->iban ?? '';
$accountId = (int)$account->id; $accountId = (int)$account->id;
if (\strlen($iban) > 0) { if (\strlen($iban) > 0) {
$topList[$accountId] = $account->iban . ' (' . $account->name . ')'; $name = $account->iban . ' (' . $account->name . ')';
// is a liability?
if (\in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) {
$name = $name . ' (' . strtolower(trans('import.import_liability_select')) . ')';
}
$topList[$accountId] = $name;
} }
if ('' === $iban) { if ('' === $iban) {
$list[$accountId] = $account->name; $name = $account->name;
// is a liability?
if (\in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) {
$name = $name . ' (' . strtolower(trans('import.import_liability_select')) . ')';
}
$list[$accountId] = $name;
} }
} }
/** @noinspection AdditionOperationOnArraysInspection */ /** @noinspection AdditionOperationOnArraysInspection */

View File

@@ -44,7 +44,8 @@ class OpposingAccounts implements MapperInterface
[ [
AccountType::DEFAULT, AccountType::ASSET, AccountType::DEFAULT, AccountType::ASSET,
AccountType::EXPENSE, AccountType::BENEFICIARY, AccountType::EXPENSE, AccountType::BENEFICIARY,
AccountType::REVENUE, AccountType::REVENUE, AccountType::LOAN, AccountType::DEBT,
AccountType::CREDITCARD, AccountType::MORTGAGE,
] ]
); );
$list = []; $list = [];
@@ -57,6 +58,10 @@ class OpposingAccounts implements MapperInterface
if (\strlen($iban) > 0) { if (\strlen($iban) > 0) {
$name .= ' (' . $iban . ')'; $name .= ' (' . $iban . ')';
} }
// is a liability?
if (\in_array($account->accountType->type, [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], true)) {
$name = trans('import.import_liability_select') . ': ' . $name;
}
$list[$accountId] = $name; $list[$accountId] = $name;
} }
asort($list); asort($list);

View File

@@ -37,6 +37,7 @@ return [
// index page: // index page:
'general_index_title' => 'Import a file', 'general_index_title' => 'Import a file',
'general_index_intro' => 'Welcome to Firefly III\'s import routine. There are a few ways of importing data into Firefly III, displayed here as buttons.', 'general_index_intro' => 'Welcome to Firefly III\'s import routine. There are a few ways of importing data into Firefly III, displayed here as buttons.',
// import provider strings (index): // import provider strings (index):
'button_fake' => 'Fake an import', 'button_fake' => 'Fake an import',
'button_file' => 'Import a file', 'button_file' => 'Import a file',
@@ -110,6 +111,7 @@ return [
'job_config_file_upload_type_help' => 'Select the type of file you will upload', 'job_config_file_upload_type_help' => 'Select the type of file you will upload',
'job_config_file_upload_submit' => 'Upload files', 'job_config_file_upload_submit' => 'Upload files',
'import_file_type_csv' => 'CSV (comma separated values)', 'import_file_type_csv' => 'CSV (comma separated values)',
'import_file_type_ofx' => 'OFX',
'file_not_utf8' => 'The file you have uploaded is not encoded as UTF-8 or ASCII. Firefly III cannot handle such files. Please use Notepad++ or Sublime to convert your file to UTF-8.', 'file_not_utf8' => 'The file you have uploaded is not encoded as UTF-8 or ASCII. Firefly III cannot handle such files. Please use Notepad++ or Sublime to convert your file to UTF-8.',
'job_config_uc_title' => 'Import setup (2/4) - Basic file setup', 'job_config_uc_title' => 'Import setup (2/4) - Basic file setup',
'job_config_uc_text' => 'To be able to import your file correctly, please validate the options below.', 'job_config_uc_text' => 'To be able to import your file correctly, please validate the options below.',
@@ -123,6 +125,7 @@ return [
'job_config_uc_specifics_txt' => 'Some banks deliver badly formatted files. Firefly III can fix those automatically. If your bank delivers such files but it\'s not listed here, please open an issue on GitHub.', 'job_config_uc_specifics_txt' => 'Some banks deliver badly formatted files. Firefly III can fix those automatically. If your bank delivers such files but it\'s not listed here, please open an issue on GitHub.',
'job_config_uc_submit' => 'Continue', 'job_config_uc_submit' => 'Continue',
'invalid_import_account' => 'You have selected an invalid account to import into.', 'invalid_import_account' => 'You have selected an invalid account to import into.',
'import_liability_select' => 'Liability',
// job configuration for Spectre: // job configuration for Spectre:
'job_config_spectre_login_title' => 'Choose your login', 'job_config_spectre_login_title' => 'Choose your login',
'job_config_spectre_login_text' => 'Firefly III has found :count existing login(s) in your Spectre account. Which one would you like to use to import from?', 'job_config_spectre_login_text' => 'Firefly III has found :count existing login(s) in your Spectre account. Which one would you like to use to import from?',

View File

@@ -28,8 +28,8 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Tests\TestCase;
use Log; use Log;
use Tests\TestCase;
/** /**
* Class AssetAccountIbansTest * Class AssetAccountIbansTest
@@ -51,17 +51,25 @@ class AssetAccountIbansTest extends TestCase
*/ */
public function testGetMapBasic(): void public function testGetMapBasic(): void
{ {
$asset = AccountType::where('type', AccountType::ASSET)->first();
$loan = AccountType::where('type', AccountType::LOAN)->first();
$one = new Account; $one = new Account;
$one->id = 17; $one->id = 17;
$one->name = 'Something'; $one->name = 'Something';
$one->iban = 'IBAN'; $one->iban = 'IBAN';
$one->account_type_id = $asset->id;
$two = new Account; $two = new Account;
$two->id = 53; $two->id = 53;
$two->name = 'Else'; $two->name = 'Else';
$two->account_type_id = $loan->id;
$collection = new Collection([$one, $two]); $collection = new Collection([$one, $two]);
$repository = $this->mock(AccountRepositoryInterface::class); $repository = $this->mock(AccountRepositoryInterface::class);
$repository->shouldReceive('getAccountsByType')->withArgs([[AccountType::DEFAULT, AccountType::ASSET]])->andReturn($collection)->once(); $repository->shouldReceive('getAccountsByType')->withArgs(
[[AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE,]]
)->andReturn($collection)->once();
$mapper = new AssetAccountIbans(); $mapper = new AssetAccountIbans();
$mapping = $mapper->getMap(); $mapping = $mapper->getMap();
@@ -69,7 +77,7 @@ class AssetAccountIbansTest extends TestCase
// assert this is what the result looks like: // assert this is what the result looks like:
$result = [ $result = [
0 => (string)trans('import.map_do_not_map'), 0 => (string)trans('import.map_do_not_map'),
53 => 'Else', 53 => 'Else (liability)',
17 => 'IBAN (Something)', 17 => 'IBAN (Something)',
]; ];
$this->assertEquals($result, $mapping); $this->assertEquals($result, $mapping);

View File

@@ -28,8 +28,8 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Tests\TestCase;
use Log; use Log;
use Tests\TestCase;
/** /**
* Class AssetAccountsTest * Class AssetAccountsTest
@@ -51,17 +51,26 @@ class AssetAccountsTest extends TestCase
*/ */
public function testGetMapBasic(): void public function testGetMapBasic(): void
{ {
$asset = AccountType::where('type', AccountType::ASSET)->first();
$loan = AccountType::where('type', AccountType::LOAN)->first();
$one = new Account; $one = new Account;
$one->id = 23; $one->id = 23;
$one->name = 'Something'; $one->name = 'Something';
$one->iban = 'IBAN'; $one->iban = 'IBAN';
$one->account_type_id = $asset->id;
$two = new Account; $two = new Account;
$two->id = 19; $two->id = 19;
$two->name = 'Else'; $two->name = 'Else';
$two->account_type_id = $loan->id;
$collection = new Collection([$one, $two]); $collection = new Collection([$one, $two]);
$repository = $this->mock(AccountRepositoryInterface::class); $repository = $this->mock(AccountRepositoryInterface::class);
$repository->shouldReceive('getAccountsByType')->withArgs([[AccountType::DEFAULT, AccountType::ASSET]])->andReturn($collection)->once(); $repository->shouldReceive('getAccountsByType')->withArgs(
[[AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE,]]
)->andReturn($collection)->once();
$mapper = new AssetAccounts(); $mapper = new AssetAccounts();
$mapping = $mapper->getMap(); $mapping = $mapper->getMap();
@@ -69,7 +78,7 @@ class AssetAccountsTest extends TestCase
// assert this is what the result looks like: // assert this is what the result looks like:
$result = [ $result = [
0 => (string)trans('import.map_do_not_map'), 0 => (string)trans('import.map_do_not_map'),
19 => 'Else', 19 => 'Liability: Else',
23 => 'Something (IBAN)', 23 => 'Something (IBAN)',
]; ];

View File

@@ -28,8 +28,8 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Tests\TestCase;
use Log; use Log;
use Tests\TestCase;
/** /**
* Class OpposingAccountIbansTest * Class OpposingAccountIbansTest
@@ -51,18 +51,25 @@ class OpposingAccountIbansTest extends TestCase
*/ */
public function testGetMapBasic(): void public function testGetMapBasic(): void
{ {
$asset = AccountType::where('type', AccountType::ASSET)->first();
$loan = AccountType::where('type', AccountType::LOAN)->first();
$one = new Account; $one = new Account;
$one->id = 21; $one->id = 21;
$one->name = 'Something'; $one->name = 'Something';
$one->iban = 'IBAN'; $one->iban = 'IBAN';
$one->account_type_id = $asset->id;
$two = new Account; $two = new Account;
$two->id = 17; $two->id = 17;
$two->name = 'Else'; $two->name = 'Else';
$two->account_type_id = $loan->id;
$collection = new Collection([$one, $two]); $collection = new Collection([$one, $two]);
$repository = $this->mock(AccountRepositoryInterface::class); $repository = $this->mock(AccountRepositoryInterface::class);
$repository->shouldReceive('getAccountsByType')->withArgs( $repository->shouldReceive('getAccountsByType')->withArgs(
[[AccountType::DEFAULT, AccountType::ASSET, AccountType::EXPENSE, AccountType::BENEFICIARY, AccountType::REVENUE,]] [[AccountType::DEFAULT, AccountType::ASSET, AccountType::EXPENSE, AccountType::BENEFICIARY, AccountType::REVENUE, AccountType::LOAN,
AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE,]]
)->andReturn($collection)->once(); )->andReturn($collection)->once();
$mapper = new OpposingAccountIbans(); $mapper = new OpposingAccountIbans();
@@ -71,7 +78,7 @@ class OpposingAccountIbansTest extends TestCase
// assert this is what the result looks like: // assert this is what the result looks like:
$result = [ $result = [
0 => (string)trans('import.map_do_not_map'), 0 => (string)trans('import.map_do_not_map'),
17 => 'Else', 17 => 'Else (liability)',
21 => 'IBAN (Something)', 21 => 'IBAN (Something)',
]; ];
$this->assertEquals($result, $mapping); $this->assertEquals($result, $mapping);

View File

@@ -28,8 +28,8 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Tests\TestCase;
use Log; use Log;
use Tests\TestCase;
/** /**
* Class OpposingAccountsTest * Class OpposingAccountsTest
@@ -51,18 +51,29 @@ class OpposingAccountsTest extends TestCase
*/ */
public function testGetMapBasic(): void public function testGetMapBasic(): void
{ {
$asset = AccountType::where('type', AccountType::ASSET)->first();
$loan = AccountType::where('type', AccountType::LOAN)->first();
$one = new Account; $one = new Account;
$one->id = 13; $one->id = 13;
$one->name = 'Something'; $one->name = 'Something';
$one->iban = 'IBAN'; $one->iban = 'IBAN';
$one->account_type_id = $asset->id;
$two = new Account; $two = new Account;
$two->id = 9; $two->id = 9;
$two->name = 'Else'; $two->name = 'Else';
$two->account_type_id = $loan->id;
$collection = new Collection([$one, $two]); $collection = new Collection([$one, $two]);
$repository = $this->mock(AccountRepositoryInterface::class); $repository = $this->mock(AccountRepositoryInterface::class);
$repository->shouldReceive('getAccountsByType')->withArgs( $repository->shouldReceive('getAccountsByType')->withArgs(
[[AccountType::DEFAULT, AccountType::ASSET, AccountType::EXPENSE, AccountType::BENEFICIARY, AccountType::REVENUE,]] [[
AccountType::DEFAULT, AccountType::ASSET,
AccountType::EXPENSE, AccountType::BENEFICIARY,
AccountType::REVENUE, AccountType::LOAN, AccountType::DEBT,
AccountType::CREDITCARD, AccountType::MORTGAGE,
]]
)->andReturn($collection)->once(); )->andReturn($collection)->once();
$mapper = new OpposingAccounts(); $mapper = new OpposingAccounts();
@@ -71,7 +82,7 @@ class OpposingAccountsTest extends TestCase
// assert this is what the result looks like: // assert this is what the result looks like:
$result = [ $result = [
0 => (string)trans('import.map_do_not_map'), 0 => (string)trans('import.map_do_not_map'),
9 => 'Else', 9 => 'Liability: Else',
13 => 'Something (IBAN)', 13 => 'Something (IBAN)',
]; ];
$this->assertEquals($result, $mapping); $this->assertEquals($result, $mapping);