mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Some fixes in csv importer.
This commit is contained in:
parent
28f601b54b
commit
9c9fc2b5dc
@ -88,6 +88,7 @@ class Importer
|
|||||||
|
|
||||||
foreach ($this->data->getReader() as $index => $row) {
|
foreach ($this->data->getReader() as $index => $row) {
|
||||||
if ($this->parseRow($index)) {
|
if ($this->parseRow($index)) {
|
||||||
|
Log::debug('--- Importing row ' . $index);
|
||||||
$this->rows++;
|
$this->rows++;
|
||||||
$result = $this->importRow($row);
|
$result = $this->importRow($row);
|
||||||
if (!($result === true)) {
|
if (!($result === true)) {
|
||||||
@ -96,6 +97,7 @@ class Importer
|
|||||||
} else {
|
} else {
|
||||||
$this->imported++;
|
$this->imported++;
|
||||||
}
|
}
|
||||||
|
Log::debug('---');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -118,13 +120,14 @@ class Importer
|
|||||||
*/
|
*/
|
||||||
protected function importRow($row)
|
protected function importRow($row)
|
||||||
{
|
{
|
||||||
|
|
||||||
$data = $this->getFiller(); // These fields are necessary to create a new transaction journal. Some are optional
|
$data = $this->getFiller(); // These fields are necessary to create a new transaction journal. Some are optional
|
||||||
foreach ($row as $index => $value) {
|
foreach ($row as $index => $value) {
|
||||||
$role = isset($this->roles[$index]) ? $this->roles[$index] : '_ignore';
|
$role = isset($this->roles[$index]) ? $this->roles[$index] : '_ignore';
|
||||||
$class = Config::get('csv.roles.' . $role . '.converter');
|
$class = Config::get('csv.roles.' . $role . '.converter');
|
||||||
$field = Config::get('csv.roles.' . $role . '.field');
|
$field = Config::get('csv.roles.' . $role . '.field');
|
||||||
|
|
||||||
Log::debug('For column ' . $index . ' (role: ' . $role . ') : converter ' . $class . ' into field ' . $field);
|
Log::debug('Column #' . $index . ' (role: ' . $role . ') : converter ' . $class . ' stores its data into field ' . $field . ':');
|
||||||
|
|
||||||
/** @var ConverterInterface $converter */
|
/** @var ConverterInterface $converter */
|
||||||
$converter = app('FireflyIII\Helpers\Csv\Converter\\' . $class);
|
$converter = app('FireflyIII\Helpers\Csv\Converter\\' . $class);
|
||||||
@ -135,7 +138,6 @@ class Importer
|
|||||||
$converter->setValue($value);
|
$converter->setValue($value);
|
||||||
$converter->setRole($role);
|
$converter->setRole($role);
|
||||||
$data[$field] = $converter->convert();
|
$data[$field] = $converter->convert();
|
||||||
|
|
||||||
}
|
}
|
||||||
// move to class vars.
|
// move to class vars.
|
||||||
$this->importData = $data;
|
$this->importData = $data;
|
||||||
@ -192,6 +194,7 @@ class Importer
|
|||||||
$specifix = app('FireflyIII\Helpers\Csv\Specifix\\' . $className);
|
$specifix = app('FireflyIII\Helpers\Csv\Specifix\\' . $className);
|
||||||
$specifix->setData($this->importData);
|
$specifix->setData($this->importData);
|
||||||
$specifix->setRow($this->importRow);
|
$specifix->setRow($this->importRow);
|
||||||
|
Log::debug('Now post-process specifix named ' . $className . ':');
|
||||||
$this->importData = $specifix->fix();
|
$this->importData = $specifix->fix();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,6 +204,7 @@ class Importer
|
|||||||
/** @var PostProcessorInterface $postProcessor */
|
/** @var PostProcessorInterface $postProcessor */
|
||||||
$postProcessor = app('FireflyIII\Helpers\Csv\PostProcessing\\' . $className);
|
$postProcessor = app('FireflyIII\Helpers\Csv\PostProcessing\\' . $className);
|
||||||
$postProcessor->setData($this->importData);
|
$postProcessor->setData($this->importData);
|
||||||
|
Log::debug('Now post-process processor named ' . $className . ':');
|
||||||
$this->importData = $postProcessor->process();
|
$this->importData = $postProcessor->process();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,6 +231,10 @@ class Importer
|
|||||||
return 'Opposing account is null';
|
return 'Opposing account is null';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!($this->importData['asset-account-object'] instanceof Account)) {
|
||||||
|
return 'No asset account to import into.';
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,9 +250,6 @@ class Importer
|
|||||||
$date = $this->importData['date-rent'];
|
$date = $this->importData['date-rent'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($this->importData['asset-account-object'] instanceof Account)) {
|
|
||||||
return 'No asset account to import into.';
|
|
||||||
}
|
|
||||||
|
|
||||||
$transactionType = $this->getTransactionType(); // defaults to deposit
|
$transactionType = $this->getTransactionType(); // defaults to deposit
|
||||||
$errors = new MessageBag;
|
$errors = new MessageBag;
|
||||||
@ -277,6 +282,25 @@ class Importer
|
|||||||
$this->saveCategory($journal);
|
$this->saveCategory($journal);
|
||||||
$this->saveTags($journal);
|
$this->saveTags($journal);
|
||||||
|
|
||||||
|
// some debug info:
|
||||||
|
$id = $journal->id;
|
||||||
|
$type = $journal->transactionType->type;
|
||||||
|
/** @var Account $asset */
|
||||||
|
$asset = $this->importData['asset-account-object'];
|
||||||
|
/** @var Account $opposing */
|
||||||
|
$opposing = $this->importData['opposing-account-object'];
|
||||||
|
|
||||||
|
Log::info('Created journal #' . $id . ' of type ' . $type . '!');
|
||||||
|
Log::info('Asset account ' . $asset->name . ' (#' . $asset->id . ') lost/gained: ' . $this->importData['amount']);
|
||||||
|
Log::info($opposing->accountType->type . ' ' . $opposing->name . ' (#' . $opposing->id . ') lost/gained: ' . bcmul($this->importData['amount'], -1));
|
||||||
|
|
||||||
|
//.
|
||||||
|
//' [' . $asset->name . ' (#' .$asset->id . ')] <--> ' .
|
||||||
|
//' [' . $this->importData['opposing-account-object']->name . ' (' . $this->importData['opposing-account-object']->accountType->type . ') (#'
|
||||||
|
//. $this->importData['opposing-account-object']->id . ')]'
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
|
||||||
return $journal;
|
return $journal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ return [
|
|||||||
'Currency',
|
'Currency',
|
||||||
'Bill',
|
'Bill',
|
||||||
'OpposingAccount', // must be after Amount!
|
'OpposingAccount', // must be after Amount!
|
||||||
|
'AssetAccount',
|
||||||
|
|
||||||
],
|
],
|
||||||
'roles' => [
|
'roles' => [
|
||||||
|
@ -101,6 +101,7 @@ class TestDataSeeder extends Seeder
|
|||||||
protected function createAssetAccounts()
|
protected function createAssetAccounts()
|
||||||
{
|
{
|
||||||
$assets = ['MyBank Checking Account', 'Savings', 'Shared', 'Creditcard', 'Emergencies', 'STE'];
|
$assets = ['MyBank Checking Account', 'Savings', 'Shared', 'Creditcard', 'Emergencies', 'STE'];
|
||||||
|
$ibans = ['NL47JDYU6179706202', 'NL51WGBP5832453599', 'NL81RCQZ7160379858', 'NL19NRAP2367994221', 'NL40UKBK3619908726', 'NL38SRMN4325934708'];
|
||||||
$assetMeta = [
|
$assetMeta = [
|
||||||
[
|
[
|
||||||
'accountRole' => 'defaultAsset',
|
'accountRole' => 'defaultAsset',
|
||||||
@ -134,7 +135,7 @@ class TestDataSeeder extends Seeder
|
|||||||
'name' => $name,
|
'name' => $name,
|
||||||
'active' => 1,
|
'active' => 1,
|
||||||
'encrypted' => 1,
|
'encrypted' => 1,
|
||||||
'iban' => 'GB82WEST12345698765432'
|
'iban' => $ibans[$index],
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
foreach ($assetMeta[$index] as $name => $value) {
|
foreach ($assetMeta[$index] as $name => $value) {
|
||||||
|
Loading…
Reference in New Issue
Block a user