From d8344d8d45c09e4c6925d6df71ebe2e035d3b5d0 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 29 Nov 2020 07:58:24 +0100 Subject: [PATCH] Export meta data, fix #3717 --- app/Support/Export/ExportDataGenerator.php | 52 ++++++++++++++++++++-- config/firefly.php | 1 + 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/app/Support/Export/ExportDataGenerator.php b/app/Support/Export/ExportDataGenerator.php index e2afd63627..0fec36eaab 100644 --- a/app/Support/Export/ExportDataGenerator.php +++ b/app/Support/Export/ExportDataGenerator.php @@ -48,6 +48,7 @@ use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface; use FireflyIII\Repositories\Rule\RuleRepositoryInterface; use FireflyIII\Repositories\Tag\TagRepositoryInterface; +use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; use FireflyIII\User; use League\Csv\Writer; @@ -656,18 +657,29 @@ class ExportDataGenerator private function exportTransactions(): string { // TODO better place for keys? - $header = ['user_id', 'group_id', 'journal_id', 'created_at', 'updated_at', 'group_title', 'type', 'amount', 'foreign_amount', 'currency_code', - 'foreign_currency_code', 'description', 'date', 'source_name', 'source_iban', 'source_type', 'destination_name', 'destination_iban', - 'destination_type', 'reconciled', 'category', 'budget', 'bill', 'tags', 'notes']; + $header = ['user_id', 'group_id', 'journal_id', 'created_at', 'updated_at', 'group_title', 'type', 'amount', 'foreign_amount', 'currency_code', + 'foreign_currency_code', 'description', 'date', 'source_name', 'source_iban', 'source_type', 'destination_name', 'destination_iban', + 'destination_type', 'reconciled', 'category', 'budget', 'bill', 'tags', 'notes', + // all optional meta fields: + ]; + + $metaFields = config('firefly.journal_meta_fields'); + $header = array_merge($header, $metaFields); + $collector = app(GroupCollectorInterface::class); $collector->setUser($this->user); $collector->setRange($this->start, $this->end)->withAccountInformation()->withCategoryInformation()->withBillInformation() ->withBudgetInformation()->withTagInformation()->withNotes(); $journals = $collector->getExtractedJournals(); + // get repository for meta data: + $repository = app(TransactionGroupRepositoryInterface::class); + $repository->setUser($this->user); + $records = []; /** @var array $journal */ foreach ($journals as $journal) { + $metaData = $repository->getMetaFields($journal['transaction_journal_id'], $metaFields); $records[] = [ $journal['user_id'], $journal['transaction_group_id'], @@ -694,6 +706,40 @@ class ExportDataGenerator $journal['bill_name'], $this->mergeTags($journal['tags']), $journal['notes'], + + // export also the optional fields (ALL) + + // sepa + $metaData['sepa_cc'], + $metaData['sepa_ct_op'], + $metaData['sepa_ct_id'], + $metaData['sepa_db'], + $metaData['sepa_country'], + $metaData['sepa_ep'], + $metaData['sepa_ci'], + $metaData['sepa_batch_id'], + $metaData['external_uri'], + + // dates + $metaData['interest_date'], + $metaData['book_date'], + $metaData['process_date'], + $metaData['due_date'], + $metaData['payment_date'], + $metaData['invoice_date'], + + // others + $metaData['recurrence_id'], + $metaData['internal_reference'], + $metaData['bunq_payment_id'], + $metaData['import_hash'], + $metaData['import_hash_v2'], + $metaData['external_id'], + $metaData['original_source'], + + // recurring transactions + $metaData['recurrence_total'], + $metaData['recurrence_count'], ]; } diff --git a/config/firefly.php b/config/firefly.php index a8f482fa36..e7451f6cc1 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -800,6 +800,7 @@ return [ AccountType::ASSET => [AccountType::RECONCILIATION], ], ], + // if you add fields to this array, dont forget to update the export routine (ExportDataGenerator). 'journal_meta_fields' => [ // sepa 'sepa_cc', 'sepa_ct_op', 'sepa_ct_id',