mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Update for bug fix release.
This commit is contained in:
parent
5846431b34
commit
bcdb849b46
@ -117,7 +117,8 @@ class ReconcileController extends Controller
|
||||
* @param Carbon|null $end
|
||||
*
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public function reconcile(Account $account, Carbon $start = null, Carbon $end = null)
|
||||
@ -201,6 +202,9 @@ class ReconcileController extends Controller
|
||||
*
|
||||
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
|
||||
* @throws FireflyException
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
*/
|
||||
public function submit(ReconciliationStoreRequest $request, Account $account, Carbon $start, Carbon $end)
|
||||
{
|
||||
@ -217,16 +221,13 @@ class ReconcileController extends Controller
|
||||
if ('create' === $data['reconcile']) {
|
||||
// get "opposing" account.
|
||||
$reconciliation = $this->accountRepos->getReconciliation($account);
|
||||
|
||||
|
||||
$difference = $data['difference'];
|
||||
$source = $reconciliation;
|
||||
$destination = $account;
|
||||
$difference = $data['difference'];
|
||||
$source = $reconciliation;
|
||||
$destination = $account;
|
||||
if (1 === bccomp($difference, '0')) {
|
||||
// amount is positive. Add it to reconciliation?
|
||||
$source = $account;
|
||||
$destination = $reconciliation;
|
||||
|
||||
}
|
||||
|
||||
// data for journal
|
||||
@ -271,9 +272,7 @@ class ReconcileController extends Controller
|
||||
$this->repository->store($journalData);
|
||||
}
|
||||
Log::debug('End of routine.');
|
||||
|
||||
app('preferences')->mark();
|
||||
|
||||
session()->flash('success', trans('firefly.reconciliation_stored'));
|
||||
|
||||
return redirect(route('accounts.show', [$account->id]));
|
||||
|
11
changelog.md
11
changelog.md
@ -2,6 +2,17 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
|
||||
## [4.7.5.1] - 2018-07-13
|
||||
### Fixed
|
||||
- #1531, the database routine incorrectly reports empty categories.
|
||||
- #1532, broken dropdown for autosuggest things.
|
||||
- #1533, fix where the import could not import category names.
|
||||
- #1538, fix a bug where Spectre would not work when ignoring rules.
|
||||
- #1542, fix a bug where the importer was incapable of generating new currencies.
|
||||
- #1541, no longer ignore composer.lock in Docker ignore.
|
||||
- Bills are stored inactive.
|
||||
|
||||
## [4.7.5] - 2018-07-02
|
||||
### Added
|
||||
- A new feature called "recurring transactions" that will make Firefly III automatically create transactions for you.
|
||||
|
@ -88,8 +88,8 @@ return [
|
||||
'is_demo_site' => false,
|
||||
],
|
||||
'encryption' => null === env('USE_ENCRYPTION') || env('USE_ENCRYPTION') === true,
|
||||
'version' => '4.7.5',
|
||||
'api_version' => '0.4',
|
||||
'version' => '4.7.5.1',
|
||||
'api_version' => '0.5',
|
||||
'db_version' => 4,
|
||||
'maxUploadSize' => 15242880,
|
||||
'allowedMimes' => [
|
||||
|
@ -163,7 +163,7 @@ class CurrencyControllerTest extends TestCase
|
||||
'code' => 'ABC',
|
||||
'symbol' => 'A',
|
||||
'decimal_places' => 2,
|
||||
'default' => 'false',
|
||||
'default' => '0',
|
||||
];
|
||||
|
||||
// test API
|
||||
@ -200,7 +200,7 @@ class CurrencyControllerTest extends TestCase
|
||||
'code' => 'ABC',
|
||||
'symbol' => 'A',
|
||||
'decimal_places' => 2,
|
||||
'default' => 'true',
|
||||
'default' => '1',
|
||||
];
|
||||
|
||||
// test API
|
||||
@ -232,7 +232,7 @@ class CurrencyControllerTest extends TestCase
|
||||
'code' => 'ABC',
|
||||
'symbol' => '$E',
|
||||
'decimal_places' => '2',
|
||||
'default' => 'false',
|
||||
'default' => '0',
|
||||
];
|
||||
|
||||
// test API
|
||||
@ -270,7 +270,7 @@ class CurrencyControllerTest extends TestCase
|
||||
'code' => 'ABC',
|
||||
'symbol' => '$E',
|
||||
'decimal_places' => '2',
|
||||
'default' => 'true',
|
||||
'default' => '1',
|
||||
];
|
||||
|
||||
// test API
|
||||
|
@ -28,6 +28,7 @@ use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use FireflyIII\User;
|
||||
use Laravel\Passport\Passport;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@ -94,6 +95,7 @@ class UserControllerTest extends TestCase
|
||||
$users = factory(User::class, 10)->create();
|
||||
// mock stuff:
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->once()->andReturn(true);
|
||||
|
||||
// mock calls:
|
||||
$repository->shouldReceive('all')->withAnyArgs()->andReturn($users)->once();
|
||||
@ -116,7 +118,9 @@ class UserControllerTest extends TestCase
|
||||
*/
|
||||
public function testShow(): void
|
||||
{
|
||||
$user = User::first();
|
||||
$user = User::first();
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->once()->andReturn(true);
|
||||
|
||||
// test API
|
||||
$response = $this->get('/api/v1/users/' . $user->id);
|
||||
@ -139,7 +143,7 @@ class UserControllerTest extends TestCase
|
||||
|
||||
// mock
|
||||
$userRepos = $this->mock(UserRepositoryInterface::class);
|
||||
$userRepos->shouldReceive('hasRole')->once()->andReturn(true);
|
||||
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->twice()->andReturn(true);
|
||||
$userRepos->shouldReceive('store')->once()->andReturn($this->user());
|
||||
|
||||
// test API
|
||||
@ -163,7 +167,7 @@ class UserControllerTest extends TestCase
|
||||
|
||||
// mock
|
||||
$userRepos = $this->mock(UserRepositoryInterface::class);
|
||||
$userRepos->shouldReceive('hasRole')->once()->andReturn(true);
|
||||
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->twice()->andReturn(true);
|
||||
// test API
|
||||
$response = $this->post('/api/v1/users', $data, ['Accept' => 'application/json']);
|
||||
$response->assertStatus(422);
|
||||
@ -199,7 +203,7 @@ class UserControllerTest extends TestCase
|
||||
// mock
|
||||
$userRepos = $this->mock(UserRepositoryInterface::class);
|
||||
$userRepos->shouldReceive('update')->once()->andReturn($user);
|
||||
$userRepos->shouldReceive('hasRole')->once()->andReturn(true);
|
||||
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->twice()->andReturn(true);
|
||||
|
||||
// call API
|
||||
$response = $this->put('/api/v1/users/' . $user->id, $data);
|
||||
|
@ -24,6 +24,7 @@ namespace Tests\Unit\TransactionRules\Triggers;
|
||||
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Triggers\FromAccountStarts;
|
||||
use Log;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@ -31,19 +32,35 @@ use Tests\TestCase;
|
||||
*/
|
||||
class FromAccountStartsTest extends TestCase
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
Log::debug(sprintf('Now in %s.', \get_class($this)));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Triggers\FromAccountStarts::triggered
|
||||
*/
|
||||
public function testTriggered(): void
|
||||
{
|
||||
$count = 0;
|
||||
Log::debug('In testTriggered()');
|
||||
$loops = 0; // FINAL LOOP METHOD.
|
||||
do {
|
||||
$journal = $this->user()->transactionJournals()->inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$transaction = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$transactionCount = $journal->transactions()->count();
|
||||
$account = $transaction->account;
|
||||
$count++;
|
||||
} while ($account === null && $count < 30 && $transactionCount !== 2);
|
||||
/** @var TransactionJournal $journal */
|
||||
$journal = $this->user()->transactionJournals()->inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$transaction = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$account = $transaction->account;
|
||||
$count = $journal->transactions()->count();
|
||||
|
||||
Log::debug(sprintf('Loop: %d, transaction count: %d, account is null: %d', $loops, $count, (int)null===$account));
|
||||
|
||||
$loops++;
|
||||
|
||||
// do this until: account is not null, journal has two transactions, loops is below 30
|
||||
} while (!(null !== $account && 2 === $count && $loops < 30));
|
||||
|
||||
$trigger = FromAccountStarts::makeFromStrings(substr($account->name, 0, -3), false);
|
||||
$result = $trigger->triggered($journal);
|
||||
@ -55,14 +72,21 @@ class FromAccountStartsTest extends TestCase
|
||||
*/
|
||||
public function testTriggeredLonger(): void
|
||||
{
|
||||
$count = 0;
|
||||
Log::debug('In testTriggeredLonger()');
|
||||
$loops = 0; // FINAL LOOP METHOD.
|
||||
do {
|
||||
$journal = $this->user()->transactionJournals()->inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$transaction = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$transactionCount = $journal->transactions()->count();
|
||||
$account = $transaction->account;
|
||||
$count++;
|
||||
} while ($account === null && $count < 30 && $transactionCount !== 2);
|
||||
/** @var TransactionJournal $journal */
|
||||
$journal = $this->user()->transactionJournals()->inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$transaction = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$account = $transaction->account;
|
||||
$count = $journal->transactions()->count();
|
||||
|
||||
Log::debug(sprintf('Loop: %d, transaction count: %d, account is null: %d', $loops, $count, (int)null===$account));
|
||||
|
||||
$loops++;
|
||||
|
||||
// do this until: account is not null, journal has two transactions, loops is below 30
|
||||
} while (!(null !== $account && 2 === $count && $loops < 30));
|
||||
|
||||
$trigger = FromAccountStarts::makeFromStrings('bla-bla-bla' . $account->name, false);
|
||||
$result = $trigger->triggered($journal);
|
||||
|
@ -38,19 +38,20 @@ class ToAccountStartsTest extends TestCase
|
||||
public function testTriggered(): void
|
||||
{
|
||||
Log::debug('Now in testTriggered');
|
||||
|
||||
$loopCount = 0;
|
||||
$account = null;
|
||||
do {
|
||||
Log::debug(sprintf('Count of loop: %d', $loopCount));
|
||||
|
||||
$journal = $this->user()->transactionJournals()->inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$count = $journal->transactions()->where('amount', '>', 0)->count();
|
||||
$transaction = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$account = null === $transaction ? null : $transaction->account;
|
||||
|
||||
Log::debug(sprintf('Journal with id #%d', $journal->id));
|
||||
Log::debug(sprintf('Count of transactions is %d', $count));
|
||||
Log::debug(sprintf('Account is null: %s', var_export(null === $account, true)));
|
||||
} while ($loopCount < 30 && $count !== 1 && null !== $account);
|
||||
} while ($loopCount < 30 && $count < 1 && null !== $account);
|
||||
|
||||
|
||||
$trigger = ToAccountStarts::makeFromStrings(substr($account->name, 0, -3), false);
|
||||
|
Loading…
Reference in New Issue
Block a user