mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 02:36:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Entry.php
 | |
|  * Copyright (C) 2016 thegrumpydictator@gmail.com
 | |
|  *
 | |
|  * This software may be modified and distributed under the terms of the
 | |
|  * Creative Commons Attribution-ShareAlike 4.0 International License.
 | |
|  *
 | |
|  * See the LICENSE file for details.
 | |
|  */
 | |
| 
 | |
| declare(strict_types=1);
 | |
| 
 | |
| namespace FireflyIII\Export\Entry;
 | |
| 
 | |
| use Steam;
 | |
| 
 | |
| /**
 | |
|  * To extend the exported object, in case of new features in Firefly III for example,
 | |
|  * do the following:
 | |
|  *
 | |
|  * - Add the field(s) to this class. If you add more than one related field, add a new object.
 | |
|  * - Make sure the "fromJournal"-routine fills these fields.
 | |
|  * - Add them to the static function that returns its type (key=value. Remember that the only
 | |
|  *   valid types can be found in config/csv.php (under "roles").
 | |
|  *
 | |
|  * These new entries should be should be strings and numbers as much as possible.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * Class Entry
 | |
|  * @SuppressWarnings(PHPMD.LongVariable)
 | |
|  *
 | |
|  * @package FireflyIII\Export\Entry
 | |
|  */
 | |
| final class Entry
 | |
| {
 | |
|     // @formatter:off
 | |
|     public $journal_id;
 | |
|     public $date;
 | |
|     public $description;
 | |
| 
 | |
|     public $currency_code;
 | |
|     public $amount;
 | |
| 
 | |
|     public $transaction_type;
 | |
| 
 | |
|     public $source_account_id;
 | |
|     public $source_account_name;
 | |
| 
 | |
|     public $destination_account_id;
 | |
|     public $destination_account_name;
 | |
| 
 | |
|     public $budget_id;
 | |
|     public $budget_name;
 | |
|     public $category_id;
 | |
|     public $category_name;
 | |
|     // @formatter:on
 | |
| 
 | |
|     /**
 | |
|      * Entry constructor.
 | |
|      */
 | |
|     private function __construct()
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param $object
 | |
|      *
 | |
|      * @return Entry
 | |
|      */
 | |
|     public static function fromObject($object): Entry
 | |
|     {
 | |
|         $entry                           = new self;
 | |
|         $entry->journal_id               = $object->transaction_journal_id;
 | |
|         $entry->description              = Steam::decrypt(intval($object->journal_encrypted), $object->journal_description);
 | |
|         $entry->amount                   = $object->amount;
 | |
|         $entry->date                     = $object->date;
 | |
|         $entry->transaction_type         = $object->transaction_type;
 | |
|         $entry->currency_code            = $object->transaction_currency_code;
 | |
|         $entry->source_account_id        = $object->account_id;
 | |
|         $entry->source_account_name      = Steam::decrypt(intval($object->account_name_encrypted), $object->account_name);
 | |
|         $entry->destination_account_id   = $object->opposing_account_id;
 | |
|         $entry->destination_account_name = Steam::decrypt(intval($object->opposing_account_encrypted), $object->opposing_account_name);
 | |
|         $entry->category_id              = $object->category_id ?? '';
 | |
|         $entry->category_name            = $object->category_name ?? '';
 | |
|         $entry->budget_id                = $object->budget_id ?? '';
 | |
|         $entry->budget_name              = $object->budget_name ?? '';
 | |
| 
 | |
|         // update description when transaction description is different:
 | |
|         if (!is_null($object->description) && $object->description != $entry->description) {
 | |
|             $entry->description = $entry->description . ' (' . $object->description . ')';
 | |
|         }
 | |
| 
 | |
|         return $entry;
 | |
|     }
 | |
| 
 | |
| 
 | |
| }
 |