diff --git a/app/Export/Entry/Entry.php b/app/Export/Entry/Entry.php index 1deab7dae8..8819b726fc 100644 --- a/app/Export/Entry/Entry.php +++ b/app/Export/Entry/Entry.php @@ -46,7 +46,7 @@ final class Entry { // @formatter:off /** - * @var + * @var int */ public $journal_id; /** @@ -55,20 +55,20 @@ final class Entry public $transaction_id = 0; /** - * @var + * @var string */ public $date; /** - * @var + * @var string */ public $description; /** - * @var + * @var string */ public $currency_code; /** - * @var + * @var string */ public $amount; /** @@ -81,94 +81,94 @@ final class Entry public $foreign_amount = '0'; /** - * @var + * @var string */ public $transaction_type; /** - * @var + * @var string */ public $asset_account_id; /** - * @var + * @var string */ public $asset_account_name; /** - * @var + * @var string */ public $asset_account_iban; /** - * @var + * @var string */ public $asset_account_bic; /** - * @var + * @var string */ public $asset_account_number; /** - * @var + * @var string */ public $asset_currency_code; /** - * @var + * @var string */ public $opposing_account_id; /** - * @var + * @var string */ public $opposing_account_name; /** - * @var + * @var string */ public $opposing_account_iban; /** - * @var + * @var string */ public $opposing_account_bic; /** - * @var + * @var string */ public $opposing_account_number; /** - * @var + * @var string */ public $opposing_currency_code; /** - * @var + * @var string */ public $budget_id; /** - * @var + * @var string */ public $budget_name; /** - * @var + * @var string */ public $category_id; /** - * @var + * @var string */ public $category_name; /** - * @var + * @var string */ public $bill_id; /** - * @var + * @var string */ public $bill_name; /** - * @var + * @var string */ public $notes; /** - * @var + * @var string */ public $tags; diff --git a/app/Export/ExpandedProcessor.php b/app/Export/ExpandedProcessor.php index 303c87b906..9539dcc3de 100644 --- a/app/Export/ExpandedProcessor.php +++ b/app/Export/ExpandedProcessor.php @@ -32,8 +32,8 @@ use FireflyIII\Helpers\Collector\JournalCollectorInterface; use FireflyIII\Helpers\Filter\InternalTransferFilter; use FireflyIII\Models\AccountMeta; use FireflyIII\Models\ExportJob; +use FireflyIII\Models\Note; use FireflyIII\Models\Transaction; -use FireflyIII\Models\TransactionJournalMeta; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use Illuminate\Support\Collection; use Log; @@ -114,7 +114,7 @@ class ExpandedProcessor implements ProcessorInterface $notes = $this->getNotes($ids); $tags = $this->getTags($ids); /** @var array $ibans */ - $ibans = $this->getIbans($assetIds) + $this->getIbans($opposingIds); + $ibans = array_merge($this->getIbans($assetIds), $this->getIbans($opposingIds)); $currencies = $this->getAccountCurrencies($ibans); $transactions->each( function (Transaction $transaction) use ($notes, $tags, $ibans, $currencies) { @@ -310,17 +310,16 @@ class ExpandedProcessor implements ProcessorInterface private function getNotes(array $array): array { $array = array_unique($array); - $set = TransactionJournalMeta::whereIn('journal_meta.transaction_journal_id', $array) - ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id') - ->where('transaction_journals.user_id', $this->job->user_id) - ->where('journal_meta.name', 'notes')->get( - ['journal_meta.transaction_journal_id', 'journal_meta.data', 'journal_meta.id'] - ); + $notes = Note::where('notes.noteable_type', 'FireflyIII\\Models\\TransactionJournal') + ->whereIn('notes.noteable_id', $array) + ->get(['notes.*']); $return = []; - /** @var TransactionJournalMeta $meta */ - foreach ($set as $meta) { - $id = intval($meta->transaction_journal_id); - $return[$id] = $meta->data; + /** @var Note $note */ + foreach ($notes as $note) { + if (strlen(trim(strval($note->text))) > 0) { + $id = intval($note->noteable_id); + $return[$id] = $note->text; + } } return $return; diff --git a/app/Export/Exporter/CsvExporter.php b/app/Export/Exporter/CsvExporter.php index c45fe3e605..e2703b0d20 100644 --- a/app/Export/Exporter/CsvExporter.php +++ b/app/Export/Exporter/CsvExporter.php @@ -25,6 +25,8 @@ namespace FireflyIII\Export\Exporter; use FireflyIII\Export\Entry\Entry; use League\Csv\Writer; use SplFileObject; +use SplTempFileObject; +use Storage; /** * Class CsvExporter. @@ -62,7 +64,13 @@ class CsvExporter extends BasicExporter implements ExporterInterface // necessary for CSV writer: $fullPath = storage_path('export') . DIRECTORY_SEPARATOR . $this->fileName; - $writer = Writer::createFromPath(new SplFileObject($fullPath, 'a+'), 'w'); + + + + //we create the CSV into memory + //$writer = Writer::createFromFileObject(new SplTempFileObject()); + $writer = Writer::createFromPath($fullPath); + //$writer = Writer::createFromPath(new SplFileObject($fullPath, 'a+'), 'w'); $rows = []; // get field names for header row: @@ -83,6 +91,8 @@ class CsvExporter extends BasicExporter implements ExporterInterface $rows[] = $line; } $writer->insertAll($rows); + //$writer->output($fullPath); + //$writer-> return true; } @@ -90,5 +100,8 @@ class CsvExporter extends BasicExporter implements ExporterInterface private function tempFile() { $this->fileName = $this->job->key . '-records.csv'; + // touch file in export directory: + $disk = Storage::disk('export'); + $disk->put($this->fileName,''); } } diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index 1169e49ead..d7f9d48757 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -305,7 +305,7 @@ class AccountRepository implements AccountRepositoryInterface 'user_id' => $this->user->id, 'account_type_id' => $accountType->id, 'name' => $data['name'], - 'virtual_balance' => $data['virtualBalance'], + 'virtual_balance' => strlen(strval($data['virtualBalance'])) === 0 ? '0' : $data['virtualBalance'], 'active' => true === $data['active'] ? true : false, 'iban' => $data['iban'], ]; diff --git a/public/js/ff/export/index.js b/public/js/ff/export/index.js index 62a6da390e..6bd496b5c0 100644 --- a/public/js/ff/export/index.js +++ b/public/js/ff/export/index.js @@ -44,6 +44,7 @@ $(function () { function startExport() { "use strict"; + console.log('startExport'); hideForm(); showLoading(); hideError(); @@ -95,7 +96,6 @@ function showError(text) { function callExport() { "use strict"; var data = $('#export').serialize(); - data['_token'] = token; // call status, keep calling it until response is "finished"? intervalId = window.setInterval(checkStatus, 500);