mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Expand Spectre import code.
This commit is contained in:
parent
f737cb7235
commit
c89486b6d9
@ -23,19 +23,126 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Services\Spectre\Object;
|
||||
|
||||
use Carbon\Carbon;
|
||||
|
||||
/**
|
||||
* Class Transaction
|
||||
*/
|
||||
class Transaction extends SpectreObject
|
||||
{
|
||||
/** @var int */
|
||||
private $accountId;
|
||||
/** @var string */
|
||||
private $amount;
|
||||
/** @var string */
|
||||
private $category;
|
||||
/** @var Carbon */
|
||||
private $createdAt;
|
||||
/** @var string */
|
||||
private $currencyCode;
|
||||
/** @var string */
|
||||
private $description;
|
||||
/** @var bool */
|
||||
private $duplicated;
|
||||
/** @var TransactionExtra */
|
||||
private $extra;
|
||||
/** @var int */
|
||||
private $id;
|
||||
/** @var Carbon */
|
||||
private $madeOn;
|
||||
/** @var string */
|
||||
private $mode;
|
||||
/** @var string */
|
||||
private $status;
|
||||
/** @var Carbon */
|
||||
private $updatedAt;
|
||||
|
||||
/**
|
||||
* Transaction constructor.
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public function __construct(array $data) {
|
||||
var_dump($data);
|
||||
exit;
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->id = $data['id'];
|
||||
$this->mode = $data['mode'];
|
||||
$this->status = $data['status'];
|
||||
$this->madeOn = new Carbon($data['made_on']);
|
||||
$this->amount = $data['amount'];
|
||||
$this->currencyCode = $data['currency_code'];
|
||||
$this->description = $data['description'];
|
||||
$this->category = $data['category'];
|
||||
$this->duplicated = $data['duplicated'];
|
||||
$this->extra = new TransactionExtra($data['extra'] ?? []);
|
||||
$this->accountId = $data['account_id'];
|
||||
$this->createdAt = new Carbon($data['created_at']);
|
||||
$this->updatedAt = new Carbon($data['updated_at']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getAmount(): string
|
||||
{
|
||||
return strval($this->amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getCategory(): string
|
||||
{
|
||||
return $this->category;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getCurrencyCode(): string
|
||||
{
|
||||
return $this->currencyCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getDescription(): string
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getHash(): string
|
||||
{
|
||||
$array = [
|
||||
'id' => $this->id,
|
||||
'mode' => $this->mode,
|
||||
'status' => $this->status,
|
||||
'made_on' => $this->madeOn->toIso8601String(),
|
||||
'amount' => $this->amount,
|
||||
'currency_code' => $this->currencyCode,
|
||||
'description' => $this->description,
|
||||
'category' => $this->category,
|
||||
'duplicated' => $this->duplicated,
|
||||
'extra' => $this->extra->toArray(),
|
||||
'account_id' => $this->accountId,
|
||||
'created_at' => $this->createdAt->toIso8601String(),
|
||||
'updated_at' => $this->updatedAt->toIso8601String(),
|
||||
];
|
||||
$hashed = hash('sha256', json_encode($array));
|
||||
|
||||
return $hashed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Carbon
|
||||
*/
|
||||
public function getMadeOn(): Carbon
|
||||
{
|
||||
return $this->madeOn;
|
||||
}
|
||||
|
||||
|
||||
}
|
168
app/Services/Spectre/Object/TransactionExtra.php
Normal file
168
app/Services/Spectre/Object/TransactionExtra.php
Normal file
@ -0,0 +1,168 @@
|
||||
<?php
|
||||
/**
|
||||
* TransactionExtra.php
|
||||
* Copyright (c) 2018 thegrumpydictator@gmail.com
|
||||
*
|
||||
* This file is part of Firefly III.
|
||||
*
|
||||
* Firefly III is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Firefly III is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Services\Spectre\Object;
|
||||
|
||||
use Carbon\Carbon;
|
||||
|
||||
/**
|
||||
* Class TransactionExtra
|
||||
*/
|
||||
class TransactionExtra extends SpectreObject
|
||||
{
|
||||
/** @var string */
|
||||
private $accountBalanceSnapshot;
|
||||
/** @var string */
|
||||
private $accountNumber;
|
||||
/** @var string */
|
||||
private $additional;
|
||||
/** @var string */
|
||||
private $assetAmount;
|
||||
/** @var string */
|
||||
private $assetCode;
|
||||
/** @var string */
|
||||
private $categorizationConfidence;
|
||||
/** @var string */
|
||||
private $checkNumber;
|
||||
/** @var string */
|
||||
private $customerCategoryCode;
|
||||
/** @var string */
|
||||
private $customerCategoryName;
|
||||
/** @var string */
|
||||
private $id;
|
||||
/** @var string */
|
||||
private $information;
|
||||
/** @var string */
|
||||
private $mcc;
|
||||
/** @var string */
|
||||
private $originalAmount;
|
||||
/** @var string */
|
||||
private $originalCategory;
|
||||
/** @var string */
|
||||
private $originalCurrencyCode;
|
||||
/** @var string */
|
||||
private $originalSubCategory;
|
||||
/** @var string */
|
||||
private $payee;
|
||||
/** @var bool */
|
||||
private $possibleDuplicate;
|
||||
/** @var Carbon */
|
||||
private $postingDate;
|
||||
/** @var Carbon */
|
||||
private $postingTime;
|
||||
/** @var string */
|
||||
private $recordNumber;
|
||||
/** @var array */
|
||||
private $tags;
|
||||
/** @var Carbon */
|
||||
private $time;
|
||||
/** @var string */
|
||||
private $type;
|
||||
/** @var string */
|
||||
private $unitPrice;
|
||||
/** @var string */
|
||||
private $units;
|
||||
|
||||
/**
|
||||
* TransactionExtra constructor.
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->id = $data['id'] ?? null;
|
||||
$this->recordNumber = $data['record_number'] ?? null;
|
||||
$this->information = $data['information'] ?? null;
|
||||
$this->time = isset($data['time']) ? new Carbon($data['time']) : null;
|
||||
$this->postingDate = isset($data['posting_date']) ? new Carbon($data['posting_date']) : null;
|
||||
$this->postingTime = isset($data['posting_time']) ? new Carbon($data['posting_time']) : null;
|
||||
$this->accountNumber = $data['account_number'] ?? null;
|
||||
$this->originalAmount = $data['original_amount'] ?? null;
|
||||
$this->originalCurrencyCode = $data['original_currency_code'] ?? null;
|
||||
$this->assetCode = $data['asset_code'] ?? null;
|
||||
$this->assetAmount = $data['asset_amount'] ?? null;
|
||||
$this->originalCategory = $data['original_category'] ?? null;
|
||||
$this->originalSubCategory = $data['original_subcategory'] ?? null;
|
||||
$this->customerCategoryCode = $data['customer_category_code'] ?? null;
|
||||
$this->customerCategoryName = $data['customer_category_name'] ?? null;
|
||||
$this->possibleDuplicate = $data['possible_duplicate'] ?? null;
|
||||
$this->tags = $data['tags'] ?? null;
|
||||
$this->mcc = $data['mcc'] ?? null;
|
||||
$this->payee = $data['payee'] ?? null;
|
||||
$this->type = $data['type'] ?? null;
|
||||
$this->checkNumber = $data['check_number'] ?? null;
|
||||
$this->units = $data['units'] ?? null;
|
||||
$this->additional = $data['additional'] ?? null;
|
||||
$this->unitPrice = $data['unit_price'] ?? null;
|
||||
$this->accountBalanceSnapshot = $data['account_balance_snapshot'] ?? null;
|
||||
$this->categorizationConfidence = $data['categorization_confidence'] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getId(): ?string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function toArray(): array
|
||||
{
|
||||
|
||||
$array = [
|
||||
'id' => $this->id,
|
||||
'record_number' => $this->recordNumber,
|
||||
'information' => $this->information,
|
||||
'time' => is_null($this->time) ? null : $this->time->toIso8601String(),
|
||||
'posting_date' => is_null($this->postingDate) ? null : $this->postingDate->toIso8601String(),
|
||||
'posting_time' => is_null($this->postingTime) ? null : $this->postingTime->toIso8601String(),
|
||||
'account_number' => $this->accountNumber,
|
||||
'original_amount' => $this->originalAmount,
|
||||
'original_currency_code' => $this->originalCurrencyCode,
|
||||
'asset_code' => $this->assetCode,
|
||||
'asset_amount' => $this->assetAmount,
|
||||
'original_category' => $this->originalCategory,
|
||||
'original_subcategory' => $this->originalSubCategory,
|
||||
'customer_category_code' => $this->customerCategoryCode,
|
||||
'customer_category_name' => $this->customerCategoryName,
|
||||
'possible_duplicate' => $this->possibleDuplicate,
|
||||
'tags' => $this->tags,
|
||||
'mcc' => $this->mcc,
|
||||
'payee' => $this->payee,
|
||||
'type' => $this->type,
|
||||
'check_number' => $this->checkNumber,
|
||||
'units' => $this->units,
|
||||
'additional' => $this->additional,
|
||||
'unit_price' => $this->unitPrice,
|
||||
'account_balance_snapshot' => $this->accountBalanceSnapshot,
|
||||
'categorization_confidence' => $this->categorizationConfidence,
|
||||
];
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -23,9 +23,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Services\Spectre\Request;
|
||||
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Services\Spectre\Exception\SpectreException;
|
||||
use FireflyIII\Services\Spectre\Object\Account;
|
||||
use FireflyIII\Services\Spectre\Object\Transaction;
|
||||
use Log;
|
||||
|
||||
/**
|
||||
* Class ListTransactionsRequest
|
||||
*/
|
||||
@ -37,7 +40,8 @@ class ListTransactionsRequest extends SpectreRequest
|
||||
private $transactions = [];
|
||||
|
||||
/**
|
||||
*
|
||||
* @throws FireflyException
|
||||
* @throws SpectreException
|
||||
*/
|
||||
public function call(): void
|
||||
{
|
||||
@ -45,7 +49,7 @@ class ListTransactionsRequest extends SpectreRequest
|
||||
$nextId = 0;
|
||||
while ($hasNextPage) {
|
||||
Log::debug(sprintf('Now calling ListTransactionsRequest for next_id %d', $nextId));
|
||||
$parameters = ['from_id' => $nextId,'account_id' => $this->account->getId()];
|
||||
$parameters = ['from_id' => $nextId, 'account_id' => $this->account->getId()];
|
||||
$uri = '/api/v3/transactions?' . http_build_query($parameters);
|
||||
$response = $this->sendSignedSpectreGet($uri, []);
|
||||
|
||||
@ -59,7 +63,7 @@ class ListTransactionsRequest extends SpectreRequest
|
||||
$nextId = $response['meta']['next_id'];
|
||||
Log::debug(sprintf('Next ID is now %d.', $nextId));
|
||||
} else {
|
||||
Log::debug('No next page.');
|
||||
Log::debug('No next page, done with ListTransactionsRequest.');
|
||||
}
|
||||
|
||||
// store customers:
|
||||
|
@ -57,7 +57,7 @@
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" value="1" name="do_import[{{ account.id }}]" checked>
|
||||
{{ 'spectre_do_import'|_ }}
|
||||
{{ trans('import.spectre_do_import') }}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user