Some changes.

This commit is contained in:
James Cole 2015-07-05 21:47:59 +02:00
parent 170aebfe54
commit 1658c666ab
6 changed files with 88 additions and 38 deletions

View File

@ -5,6 +5,7 @@ namespace FireflyIII\Helpers\Csv\Converter;
use Auth;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use Log;
/**
* Class AssetAccountIban
@ -25,27 +26,33 @@ class AssetAccountIban extends BasicConverter implements ConverterInterface
return $account;
}
// find or create new account:
$accountType = AccountType::where('type', 'Asset account')->first();
$set = Auth::user()->accounts()->where('account_type_id', $accountType->id)->get();
/** @var Account $entry */
foreach ($set as $entry) {
if ($entry->iban == $this->value) {
return $entry;
if (strlen($this->value) > 0) {
// find or create new account:
$accountType = AccountType::where('type', 'Asset account')->first();
$set = Auth::user()->accounts()->accountTypeIn(['Default account', 'Asset account'])->get(['accounts.*']);
/** @var Account $entry */
foreach ($set as $entry) {
if ($entry->iban == $this->value) {
Log::debug('AssetAccountIban::convert found an Account (#' . $entry->id . ': ' . $entry->name . ') with IBAN ' . $this->value);
return $entry;
}
}
// create it if doesn't exist.
$account = Account::firstOrCreateEncrypted(
[
'name' => $this->value,
'iban' => $this->value,
'user_id' => Auth::user()->id,
'account_type_id' => $accountType->id,
'active' => 1,
]
);
return $account;
}
// create it if doesnt exist.
$account = Account::firstOrCreateEncrypted(
[
'name' => $this->value,
'iban' => $this->value,
'user_id' => Auth::user()->id,
'account_type_id' => $accountType->id,
'active' => 1,
]
);
return $account;
return null;
}
}

View File

@ -1,6 +1,7 @@
<?php
namespace FireflyIII\Helpers\Csv\Converter;
use Auth;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
@ -10,7 +11,7 @@ use FireflyIII\Models\AccountType;
*
* @package FireflyIII\Helpers\Csv\Converter
*/
class AssetAccountName extends BasicConverter implements ConverterInterface
class AssetAccountName extends BasicConverter implements ConverterInterface
{
/**
@ -26,7 +27,7 @@ class AssetAccountName extends BasicConverter implements ConverterInterface
}
// find or create new account:
$accountType = AccountType::where('type', 'Asset account')->first();
$set = Auth::user()->accounts()->where('account_type_id', $accountType->id)->get();
$set = Auth::user()->accounts()->accountTypeIn(['Asset account', 'Default account'])->get();
/** @var Account $entry */
foreach ($set as $entry) {
if ($entry->name == $this->value) {

View File

@ -4,6 +4,7 @@ namespace FireflyIII\Helpers\Csv\Converter;
use Auth;
use FireflyIII\Models\Account;
use Log;
/**
* Class OpposingAccountIban
@ -25,11 +26,15 @@ class OpposingAccountIban extends BasicConverter implements ConverterInterface
return $account;
} else {
$set = Auth::user()->accounts()->get();
/** @var Account $account */
foreach ($set as $account) {
if ($account->iban == $this->value) {
return $account;
if (strlen($this->value) > 0) {
$set = Auth::user()->accounts()->get();
/** @var Account $account */
foreach ($set as $account) {
if ($account->iban == $this->value) {
Log::debug('OpposingAccountIban::convert found an Account (#' . $account->id . ': ' . $account->name . ') with IBAN ' . $this->value);
return $account;
}
}
}

View File

@ -239,7 +239,7 @@ class Importer
$transactionType = TransactionType::where('type', 'Withdrawal')->first();
}
if ($data['opposing-account-object']->accountType->type == 'Asset account') {
if (in_array($data['opposing-account-object']->accountType->type, ['Asset account', 'Default account'])) {
$transactionType = TransactionType::where('type', 'Transfer')->first();
}

View File

@ -1,10 +1,11 @@
<?php
namespace FireflyIII\Helpers\Csv\PostProcessing;
use Auth;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use Auth;
use FireflyIII\Validation\FireflyValidator;
use Log;
use Validator;
/**
@ -23,17 +24,25 @@ class OpposingAccount implements PostProcessorInterface
*/
public function process()
{
Log::debug('Start post processing opposing account');
// first priority. try to find the account based on ID,
// if any.
if ($this->data['opposing-account-id'] instanceof Account) {
Log::debug('opposing-account-id is an account (#' . $this->data['opposing-account-id']->id . ': ' . $this->data['opposing-account-id']->name . ')');
$this->data['opposing-account-object'] = $this->data['opposing-account-id'];
Log::debug('Done post processing opposing account.');
return $this->data;
}
// second: try to find the account based on IBAN, if any.
if ($this->data['opposing-account-iban'] instanceof Account) {
Log::debug(
'opposing-account-iban is an account (#' .
$this->data['opposing-account-iban']->id . ': ' . $this->data['opposing-account-iban']->name . ')'
);
$this->data['opposing-account-object'] = $this->data['opposing-account-iban'];
Log::debug('Done post processing opposing account.');
return $this->data;
}
@ -41,27 +50,44 @@ class OpposingAccount implements PostProcessorInterface
$rules = ['iban' => 'iban'];
$check = ['iban' => $this->data['opposing-account-iban']];
$validator = Validator::make($check, $rules);
$result = !$validator->fails();
if (is_string($this->data['opposing-account-iban']) && $validator->valid()) {
$this->data['opposing-account-object'] = $this->parseIbanString();
if (is_string($this->data['opposing-account-iban']) && strlen($this->data['opposing-account-iban']) > 0) {
Log::debug('opposing-account-iban is an IBAN string (' . $this->data['opposing-account-iban'] . ')');
if ($result) {
Log::debug('opposing-account-iban is a valid IBAN string!');
Log::debug('Go to parseIbanString()');
$this->data['opposing-account-object'] = $this->parseIbanString();
Log::debug('Done post processing opposing account.');
return $this->data;
return $this->data;
} else {
Log::debug('opposing-account-iban is NOT a valid IBAN string!');
}
}
// third: try to find account based on name, if any.
if ($this->data['opposing-account-name'] instanceof Account) {
Log::debug(
'opposing-account-name is an Account (#' .
$this->data['opposing-account-name']->id . ': ' . $this->data['opposing-account-name']->name . ') '
);
$this->data['opposing-account-object'] = $this->data['opposing-account-name'];
Log::debug('Done post processing opposing account.');
return $this->data;
}
if (is_string($this->data['opposing-account-name'])) {
Log::debug('Opposing account name is a string: ' . $this->data['opposing-account-name']);
Log::debug('Go to parseNameString');
$this->data['opposing-account-object'] = $this->parseNameString();
Log::debug('Done post processing opposing account.');
return $this->data;
}
Log::debug('Done post processing opposing account.');
return null;
@ -81,26 +107,30 @@ class OpposingAccount implements PostProcessorInterface
*/
protected function parseIbanString()
{
Log::debug('Parse IBAN string!');
// create by name and/or iban.
$accountType = $this->getAccountType();
$accounts = Auth::user()->accounts()->where('account_type_id', $accountType->id)->get();
$accounts = Auth::user()->accounts()->get();
foreach ($accounts as $entry) {
if ($entry->iban == $this->data['opposing-account-iban']) {
Log::debug('Found existing account with this IBAN: (#' . $entry->id . ': ' . $entry->name . ')');
return $entry;
}
}
// create if not exists:
$name = is_string($this->data['opposing-account-name']) && strlen($this->data['opposing-account-name']) > 0 ? $this->data['opposing-account-name']
: $this->data['opposing-account-iban'];
$account = Account::firstOrCreateEncrypted(
[
'user_id' => Auth::user()->id,
'account_type_id' => $accountType->id,
'name' => $this->data['opposing-account-iban'],
'name' => $name,
'iban' => $this->data['opposing-account-iban'],
'active' => true,
]
);
Log::debug('Created new (' . $accountType->type . ')B account with this IBAN: (#' . $account->id . ': ' . $account->name . ')');
return $account;
}
@ -120,6 +150,8 @@ class OpposingAccount implements PostProcessorInterface
// create revenue account:
return AccountType::where('type', 'Revenue account')->first();
}
}
@ -132,6 +164,8 @@ class OpposingAccount implements PostProcessorInterface
$accounts = Auth::user()->accounts()->where('account_type_id', $accountType->id)->get();
foreach ($accounts as $entry) {
if ($entry->name == $this->data['opposing-account-name']) {
Log::debug('Found an account with this name (#' . $entry->id . ': ' . $entry->name . ')');
return $entry;
}
}
@ -146,6 +180,9 @@ class OpposingAccount implements PostProcessorInterface
]
);
Log::debug('Created a new (' . $accountType->type . ')A account with this name (#' . $account->id . ': ' . $account->name . ')');
return $account;
}
}

View File

@ -4,11 +4,11 @@ return [
'RabobankDescription'
],
'post_processors' => [
'OpposingAccount',
'Description',
'Amount',
'Currency',
'Bill'
'Bill',
'OpposingAccount', // must be after Amount!
],
'roles' => [