This commit is contained in:
James Cole
2020-01-05 08:04:55 +01:00
parent e2bb5c7bfb
commit d116609389
2 changed files with 29 additions and 1 deletions

View File

@@ -90,6 +90,7 @@ class ReconcileController extends Controller
return $this->redirectAccountToAccount($account); // @codeCoverageIgnore return $this->redirectAccountToAccount($account); // @codeCoverageIgnore
} }
if (AccountType::ASSET !== $account->accountType->type) { if (AccountType::ASSET !== $account->accountType->type) {
// @codeCoverageIgnoreStart // @codeCoverageIgnoreStart
session()->flash('error', (string)trans('firefly.must_be_asset_account')); session()->flash('error', (string)trans('firefly.must_be_asset_account'));
@@ -117,6 +118,9 @@ class ReconcileController extends Controller
$end = app('navigation')->endOfPeriod($start, $range); $end = app('navigation')->endOfPeriod($start, $range);
} }
// @codeCoverageIgnoreEnd // @codeCoverageIgnoreEnd
if ($end->lt($start)) {
[$start, $end] = [$end, $start];
}
$startDate = clone $start; $startDate = clone $start;
$startDate->subDay(); $startDate->subDay();
@@ -163,6 +167,11 @@ class ReconcileController extends Controller
} }
Log::debug('Reconciled all transactions.'); Log::debug('Reconciled all transactions.');
// switch dates if necessary
if ($end->lt($start)) {
[$start, $end] = [$end, $start];
}
// create reconciliation transaction (if necessary): // create reconciliation transaction (if necessary):
$result = ''; $result = '';
if ('create' === $data['reconcile']) { if ('create' === $data['reconcile']) {
@@ -182,9 +191,16 @@ class ReconcileController extends Controller
/** /**
* Creates a reconciliation group. * Creates a reconciliation group.
*
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param string $difference
*
* @return string * @return string
* @throws \FireflyIII\Exceptions\DuplicateTransactionException
*/ */
private function createReconciliation(Account $account, Carbon $start, Carbon $end, string $difference): string private function createReconciliation(Account $account, Carbon $start, Carbon $end, string $difference)
{ {
if (!$this->isEditableAccount($account)) { if (!$this->isEditableAccount($account)) {
return $this->redirectAccountToAccount($account); // @codeCoverageIgnore return $this->redirectAccountToAccount($account); // @codeCoverageIgnore
@@ -199,6 +215,10 @@ class ReconcileController extends Controller
$destination = $reconciliation; $destination = $reconciliation;
} }
if ($end->lt($start)) {
[$start, $end] = [$end, $start];
}
// title: // title:
$description = trans('firefly.reconciliation_transaction_title', $description = trans('firefly.reconciliation_transaction_title',
['from' => $start->formatLocalized($this->monthAndDayFormat), 'to' => $end->formatLocalized($this->monthAndDayFormat)]); ['from' => $start->formatLocalized($this->monthAndDayFormat), 'to' => $end->formatLocalized($this->monthAndDayFormat)]);

View File

@@ -93,6 +93,11 @@ class ReconcileController extends Controller
$accountCurrency = $this->accountRepos->getAccountCurrency($account) ?? app('amount')->getDefaultCurrency(); $accountCurrency = $this->accountRepos->getAccountCurrency($account) ?? app('amount')->getDefaultCurrency();
$amount = '0'; $amount = '0';
$clearedAmount = '0'; $clearedAmount = '0';
if ($end->lt($start)) {
[$start, $end] = [$end, $start];
}
$route = route('accounts.reconcile.submit', [$account->id, $start->format('Ymd'), $end->format('Ymd')]); $route = route('accounts.reconcile.submit', [$account->id, $start->format('Ymd'), $end->format('Ymd')]);
$selectedIds = $request->get('journals') ?? []; $selectedIds = $request->get('journals') ?? [];
$clearedJournals = []; $clearedJournals = [];
@@ -171,6 +176,9 @@ class ReconcileController extends Controller
*/ */
public function transactions(Account $account, Carbon $start, Carbon $end) public function transactions(Account $account, Carbon $start, Carbon $end)
{ {
if ($end->lt($start)) {
[$end, $start] = [$start, $end];
}
$startDate = clone $start; $startDate = clone $start;
$startDate->subDay(); $startDate->subDay();