mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Merge branch 'release/3.5.5'
This commit is contained in:
commit
f013b435ab
@ -2,6 +2,7 @@ APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
APP_KEY=SomeRandomStringOf32CharsExactly
|
||||
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=localhost
|
||||
DB_DATABASE=homestead
|
||||
@ -12,13 +13,17 @@ CACHE_DRIVER=file
|
||||
SESSION_DRIVER=file
|
||||
|
||||
DEFAULT_CURRENCY=EUR
|
||||
DEFAULT_LANGUAGE=en_US
|
||||
|
||||
EMAIL_SMTP=
|
||||
EMAIL_DRIVER=smtp
|
||||
EMAIL_USERNAME=
|
||||
EMAIL_PASSWORD=
|
||||
ANALYTICS_ID=
|
||||
EMAIL_PRETEND=false
|
||||
|
||||
SHOW_INCOMPLETE_TRANSLATIONS=false
|
||||
|
||||
ANALYTICS_ID=
|
||||
RUNCLEANUP=true
|
||||
SITE_OWNER=mail@example.com
|
||||
|
||||
|
@ -19,7 +19,6 @@ their current cashflow. There are tons of ways to save and earn money.
|
||||
|
||||
Firefly works on the principle that if you know where you're money is going, you can stop it from going there.
|
||||
|
||||
|
||||
To get to know Firefly, and to see if it fits you, check out these resources:
|
||||
|
||||
- The screenshots below on this very page.
|
||||
@ -88,7 +87,13 @@ This site always runs the latest version of Firefly III. If you want to use it,
|
||||
|
||||
You should always run Firefly III on a site with TLS enabled (https://). Please note that although some parts of the
|
||||
database are encrypted (transaction descriptions, names, etc.) some parts are _not_ (amounts, dates, etc). If you need
|
||||
more security, you must enable transparent database encryption or a comparable technology.
|
||||
more security, you must enable transparent database encryption or a comparable technology. Please remember that this
|
||||
is open source software under active development, and it is in no way guaranteed to be safe or secure.
|
||||
|
||||
## Translations
|
||||
|
||||
Firefly III is currently available in Dutch and English. Support for other languages is being worked on. I can use
|
||||
your help. Checkout [Crowdin](https://crowdin.com/project/firefly-iii) for more information.
|
||||
|
||||
## Credits
|
||||
|
||||
|
@ -14,15 +14,6 @@ use Illuminate\Support\Collection;
|
||||
interface AccountChartGenerator
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Collection $accounts
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function all(Collection $accounts, Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* @param Collection $accounts
|
||||
* @param Carbon $start
|
||||
|
@ -3,10 +3,8 @@
|
||||
namespace FireflyIII\Generator\Chart\Account;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Config;
|
||||
use FireflyIII\Models\Account;
|
||||
use Illuminate\Support\Collection;
|
||||
use Preferences;
|
||||
use Steam;
|
||||
|
||||
/**
|
||||
@ -17,21 +15,6 @@ use Steam;
|
||||
class ChartJsAccountChartGenerator implements AccountChartGenerator
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param Collection $accounts
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function all(Collection $accounts, Carbon $start, Carbon $end)
|
||||
{
|
||||
return $this->frontpage($accounts, $start, $end);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Collection $accounts
|
||||
* @param Carbon $start
|
||||
@ -42,10 +25,10 @@ class ChartJsAccountChartGenerator implements AccountChartGenerator
|
||||
public function expenseAccounts(Collection $accounts, Carbon $start, Carbon $end)
|
||||
{
|
||||
$data = [
|
||||
'count' => 1,
|
||||
'labels' => [], 'datasets' => [[
|
||||
'label' => trans('firefly.spent'),
|
||||
'data' => []]]];
|
||||
'count' => 1,
|
||||
'labels' => [], 'datasets' => [[
|
||||
'label' => trans('firefly.spent'),
|
||||
'data' => []]]];
|
||||
|
||||
bcscale(2);
|
||||
$start->subDay();
|
||||
@ -105,21 +88,21 @@ class ChartJsAccountChartGenerator implements AccountChartGenerator
|
||||
public function frontpage(Collection $accounts, Carbon $start, Carbon $end)
|
||||
{
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.monthAndDay.' . $language);
|
||||
$data = [
|
||||
$format = trans('config.month_and_day');
|
||||
$data = [
|
||||
'count' => 0,
|
||||
'labels' => [],
|
||||
'datasets' => [],
|
||||
];
|
||||
$current = clone $start;
|
||||
$current = clone $start;
|
||||
while ($current <= $end) {
|
||||
$data['labels'][] = $current->formatLocalized($format);
|
||||
$current->addDay();
|
||||
}
|
||||
|
||||
|
||||
foreach ($accounts as $account) {
|
||||
$set = [
|
||||
$set = [
|
||||
'label' => $account->name,
|
||||
'fillColor' => 'rgba(220,220,220,0.2)',
|
||||
'strokeColor' => 'rgba(220,220,220,1)',
|
||||
@ -129,9 +112,15 @@ class ChartJsAccountChartGenerator implements AccountChartGenerator
|
||||
'pointHighlightStroke' => 'rgba(220,220,220,1)',
|
||||
'data' => [],
|
||||
];
|
||||
$current = clone $start;
|
||||
$current = clone $start;
|
||||
$range = Steam::balanceInRange($account, $start, $end);
|
||||
$previous = array_values($range)[0];
|
||||
while ($current <= $end) {
|
||||
$set['data'][] = Steam::balance($account, $current);
|
||||
$format = $current->format('Y-m-d');
|
||||
$balance = isset($range[$format]) ? $range[$format] : $previous;
|
||||
|
||||
$set['data'][] = $balance;
|
||||
$previous = $balance;
|
||||
$current->addDay();
|
||||
}
|
||||
$data['datasets'][] = $set;
|
||||
@ -151,8 +140,7 @@ class ChartJsAccountChartGenerator implements AccountChartGenerator
|
||||
public function single(Account $account, Carbon $start, Carbon $end)
|
||||
{
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.monthAndDay.' . $language);
|
||||
$format = trans('config.month_and_day');
|
||||
|
||||
$data = [
|
||||
'count' => 1,
|
||||
|
@ -71,8 +71,7 @@ class ChartJsBillChartGenerator implements BillChartGenerator
|
||||
public function single(Bill $bill, Collection $entries)
|
||||
{
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.month.' . $language);
|
||||
$format = trans('config.month');
|
||||
|
||||
$data = [
|
||||
'count' => 3,
|
||||
|
@ -18,13 +18,6 @@ interface BudgetChartGenerator
|
||||
*/
|
||||
public function budget(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function multiYear(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
*
|
||||
@ -39,6 +32,13 @@ interface BudgetChartGenerator
|
||||
*/
|
||||
public function frontpage(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function multiYear(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $budgets
|
||||
* @param Collection $entries
|
||||
|
@ -24,7 +24,7 @@ class ChartJsBudgetChartGenerator implements BudgetChartGenerator
|
||||
public function budget(Collection $entries, $dateFormat = 'month')
|
||||
{
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$language = Preferences::get('language', env('DEFAULT_LANGUAGE', 'en_US'))->data;
|
||||
$format = Config::get('firefly.' . $dateFormat . '.' . $language);
|
||||
|
||||
$data = [
|
||||
@ -33,7 +33,7 @@ class ChartJsBudgetChartGenerator implements BudgetChartGenerator
|
||||
[
|
||||
'label' => 'Amount',
|
||||
'data' => [],
|
||||
]
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@ -115,8 +115,7 @@ class ChartJsBudgetChartGenerator implements BudgetChartGenerator
|
||||
public function year(Collection $budgets, Collection $entries)
|
||||
{
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.month.' . $language);
|
||||
$format = trans('config.month');
|
||||
|
||||
$data = [
|
||||
'labels' => [],
|
||||
|
@ -20,11 +20,12 @@ interface CategoryChartGenerator
|
||||
public function all(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $categories
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function multiYear(Collection $entries);
|
||||
public function earnedInPeriod(Collection $categories, Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
@ -38,8 +39,14 @@ interface CategoryChartGenerator
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function period(Collection $entries);
|
||||
public function multiYear(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function period(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $categories
|
||||
@ -48,12 +55,4 @@ interface CategoryChartGenerator
|
||||
* @return array
|
||||
*/
|
||||
public function spentInYear(Collection $categories, Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $categories
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function earnedInYear(Collection $categories, Collection $entries);
|
||||
}
|
||||
|
@ -2,9 +2,7 @@
|
||||
|
||||
namespace FireflyIII\Generator\Chart\Category;
|
||||
|
||||
use Config;
|
||||
use Illuminate\Support\Collection;
|
||||
use Preferences;
|
||||
|
||||
|
||||
/**
|
||||
@ -101,8 +99,7 @@ class ChartJsCategoryChartGenerator implements CategoryChartGenerator
|
||||
{
|
||||
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.month.' . $language);
|
||||
$format = trans('config.month');
|
||||
|
||||
$data = [
|
||||
'count' => 0,
|
||||
@ -131,12 +128,44 @@ class ChartJsCategoryChartGenerator implements CategoryChartGenerator
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function earnedInYear(Collection $categories, Collection $entries)
|
||||
public function earnedInPeriod(Collection $categories, Collection $entries)
|
||||
{
|
||||
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.month.' . $language);
|
||||
$format = trans('config.month');
|
||||
|
||||
$data = [
|
||||
'count' => 0,
|
||||
'labels' => [],
|
||||
'datasets' => [],
|
||||
];
|
||||
|
||||
foreach ($categories as $category) {
|
||||
$data['labels'][] = $category->name;
|
||||
}
|
||||
|
||||
foreach ($entries as $entry) {
|
||||
$date = $entry[0]->formatLocalized($format);
|
||||
array_shift($entry);
|
||||
$data['count']++;
|
||||
$data['datasets'][] = ['label' => $date, 'data' => $entry];
|
||||
}
|
||||
|
||||
return $data;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Collection $categories
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function spentInPeriod(Collection $categories, Collection $entries)
|
||||
{
|
||||
|
||||
// language:
|
||||
$format = trans('config.month');
|
||||
|
||||
$data = [
|
||||
'count' => 0,
|
||||
|
@ -25,8 +25,7 @@ class ChartJsPiggyBankChartGenerator implements PiggyBankChartGenerator
|
||||
{
|
||||
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.monthAndDay.' . $language);
|
||||
$format = trans('config.month_and_day');
|
||||
|
||||
$data = [
|
||||
'count' => 1,
|
||||
|
@ -22,8 +22,7 @@ class ChartJsReportChartGenerator implements ReportChartGenerator
|
||||
public function yearInOut(Collection $entries)
|
||||
{
|
||||
// language:
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$format = Config::get('firefly.month.' . $language);
|
||||
$format = trans('config.month');
|
||||
|
||||
$data = [
|
||||
'count' => 2,
|
||||
@ -107,9 +106,9 @@ class ChartJsReportChartGenerator implements ReportChartGenerator
|
||||
],
|
||||
];
|
||||
$data['datasets'][0]['data'][] = round($income, 2);
|
||||
$data['datasets'][1]['data'][] = round( $expense, 2);
|
||||
$data['datasets'][1]['data'][] = round($expense, 2);
|
||||
$data['datasets'][0]['data'][] = round(($income / $count), 2);
|
||||
$data['datasets'][1]['data'][] = round(( $expense / $count), 2);
|
||||
$data['datasets'][1]['data'][] = round(($expense / $count), 2);
|
||||
|
||||
return $data;
|
||||
}
|
||||
@ -138,9 +137,9 @@ class ChartJsReportChartGenerator implements ReportChartGenerator
|
||||
],
|
||||
];
|
||||
$data['datasets'][0]['data'][] = round($income, 2);
|
||||
$data['datasets'][1]['data'][] = round( $expense, 2);
|
||||
$data['datasets'][1]['data'][] = round($expense, 2);
|
||||
$data['datasets'][0]['data'][] = round(($income / $count), 2);
|
||||
$data['datasets'][1]['data'][] = round(( $expense / $count), 2);
|
||||
$data['datasets'][1]['data'][] = round(($expense / $count), 2);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
@ -12,13 +12,6 @@ use Illuminate\Support\Collection;
|
||||
interface ReportChartGenerator
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function yearInOut(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
*
|
||||
@ -33,7 +26,14 @@ interface ReportChartGenerator
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function yearInOutSummarized($income, $expense, $count);
|
||||
public function multiYearInOutSummarized($income, $expense, $count);
|
||||
|
||||
/**
|
||||
* @param Collection $entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function yearInOut(Collection $entries);
|
||||
|
||||
/**
|
||||
* @param string $income
|
||||
@ -42,6 +42,6 @@ interface ReportChartGenerator
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function multiYearInOutSummarized($income, $expense, $count);
|
||||
public function yearInOutSummarized($income, $expense, $count);
|
||||
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ class ReportHelper implements ReportHelperInterface
|
||||
$repository = app('FireflyIII\Repositories\Category\CategoryRepositoryInterface');
|
||||
$set = $repository->getCategories();
|
||||
foreach ($set as $category) {
|
||||
$spent = $repository->balanceInPeriodForList($category, $start, $end, $accounts);
|
||||
$spent = $repository->balanceInPeriod($category, $start, $end, $accounts);
|
||||
$category->spent = $spent;
|
||||
$object->addCategory($category);
|
||||
}
|
||||
@ -222,7 +222,7 @@ class ReportHelper implements ReportHelperInterface
|
||||
|
||||
// no repetition(s) for this budget:
|
||||
if ($repetitions->count() == 0) {
|
||||
$spent = $repository->balanceInPeriodForList($budget, $start, $end, $accounts);
|
||||
$spent = $repository->balanceInPeriod($budget, $start, $end, $accounts);
|
||||
$budgetLine = new BudgetLine;
|
||||
$budgetLine->setBudget($budget);
|
||||
$budgetLine->setOverspent($spent);
|
||||
@ -237,7 +237,7 @@ class ReportHelper implements ReportHelperInterface
|
||||
$budgetLine = new BudgetLine;
|
||||
$budgetLine->setBudget($budget);
|
||||
$budgetLine->setRepetition($repetition);
|
||||
$expenses = $repository->balanceInPeriodForList($budget, $start, $end, $accounts);
|
||||
$expenses = $repository->balanceInPeriod($budget, $start, $end, $accounts);
|
||||
|
||||
// 200 en -100 is 100, vergeleken met 0 === 1
|
||||
// 200 en -200 is 0, vergeleken met 0 === 0
|
||||
|
@ -134,7 +134,7 @@ class ReportQuery implements ReportQueryInterface
|
||||
$query->orWhere(
|
||||
function (Builder $q) use ($ids) {
|
||||
$q->where('transaction_types.type', TransactionType::TRANSFER);
|
||||
$q->whereNotIn('ac_from.id',$ids);
|
||||
$q->whereNotIn('ac_from.id', $ids);
|
||||
$q->whereIn('ac_to.id', $ids);
|
||||
}
|
||||
);
|
||||
@ -147,7 +147,11 @@ class ReportQuery implements ReportQueryInterface
|
||||
|
||||
// get everything
|
||||
$data = $query->get(
|
||||
['transaction_journals.*', 'transaction_types.type', 'ac_from.name as name', 'ac_from.id as account_id', 'ac_from.encrypted as account_encrypted']
|
||||
['transaction_journals.*',
|
||||
'transaction_types.type', 'ac_from.name as name',
|
||||
't_from.amount as from_amount',
|
||||
't_to.amount as to_amount',
|
||||
'ac_from.id as account_id', 'ac_from.encrypted as account_encrypted']
|
||||
);
|
||||
|
||||
$data->each(
|
||||
@ -157,15 +161,15 @@ class ReportQuery implements ReportQueryInterface
|
||||
}
|
||||
}
|
||||
);
|
||||
$data = $data->filter(
|
||||
function (TransactionJournal $journal) {
|
||||
if ($journal->amount != 0) {
|
||||
return $journal;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
);
|
||||
// $data = $data->filter(
|
||||
// function (TransactionJournal $journal) {
|
||||
// if ($journal->amount != 0) {
|
||||
// return $journal;
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
// );
|
||||
|
||||
return $data;
|
||||
}
|
||||
@ -220,7 +224,10 @@ class ReportQuery implements ReportQueryInterface
|
||||
|
||||
$query->orderBy('transaction_journals.date');
|
||||
$data = $query->get( // get everything
|
||||
['transaction_journals.*', 'transaction_types.type', 'ac_to.name as name', 'ac_to.id as account_id', 'ac_to.encrypted as account_encrypted']
|
||||
['transaction_journals.*', 'transaction_types.type',
|
||||
't_from.amount as from_amount',
|
||||
't_to.amount as to_amount',
|
||||
'ac_to.name as name', 'ac_to.id as account_id', 'ac_to.encrypted as account_encrypted']
|
||||
);
|
||||
|
||||
$data->each(
|
||||
|
@ -22,8 +22,8 @@ interface ReportQueryInterface
|
||||
* and "ordinary" withdrawals. The query used is almost equal to ReportQueryInterface::journalsByRevenueAccount but it does
|
||||
* not group and returns different fields.
|
||||
*
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
* @param Collection $accounts
|
||||
*
|
||||
* @return Collection
|
||||
|
@ -38,6 +38,8 @@ class AccountController extends Controller
|
||||
*/
|
||||
public function create($what = 'asset')
|
||||
{
|
||||
|
||||
|
||||
$subTitleIcon = Config::get('firefly.subIconsByIdentifier.' . $what);
|
||||
$subTitle = trans('firefly.make_new_' . $what . '_account');
|
||||
|
||||
@ -211,13 +213,14 @@ class AccountController extends Controller
|
||||
'name' => $request->input('name'),
|
||||
'accountType' => $request->input('what'),
|
||||
'virtualBalance' => round($request->input('virtualBalance'), 2),
|
||||
'virtualBalanceCurrency' => intval($request->input('amount_currency_id_virtualBalance')),
|
||||
'active' => true,
|
||||
'user' => Auth::user()->id,
|
||||
'iban' => $request->input('iban'),
|
||||
'accountRole' => $request->input('accountRole'),
|
||||
'openingBalance' => round($request->input('openingBalance'), 2),
|
||||
'openingBalanceDate' => new Carbon((string)$request->input('openingBalanceDate')),
|
||||
'openingBalanceCurrency' => intval($request->input('balance_currency_id')),
|
||||
'openingBalanceCurrency' => intval($request->input('amount_currency_id_openingBalance')),
|
||||
|
||||
];
|
||||
|
||||
|
@ -214,15 +214,17 @@ class AuthController extends Controller
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function getBlockedDomains() {
|
||||
$set = Config::get('mail.blocked_domains');
|
||||
protected function getBlockedDomains()
|
||||
{
|
||||
$set = Config::get('mail.blocked_domains');
|
||||
$domains = [];
|
||||
foreach($set as $entry) {
|
||||
foreach ($set as $entry) {
|
||||
$domain = trim($entry);
|
||||
if(strlen($domain) > 0) {
|
||||
if (strlen($domain) > 0) {
|
||||
$domains[] = $domain;
|
||||
}
|
||||
}
|
||||
|
||||
return $domains;
|
||||
}
|
||||
|
||||
@ -234,6 +236,7 @@ class AuthController extends Controller
|
||||
if (isset($parts[1]) && in_array($parts[1], $blocked)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,12 @@
|
||||
<?php namespace FireflyIII\Http\Controllers\Auth;
|
||||
|
||||
use FireflyIII\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Mail\Message;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
* Class PasswordController
|
||||
*
|
||||
@ -50,6 +49,7 @@ class PasswordController extends Controller
|
||||
* Send a reset link to the given user.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function postEmail(Request $request)
|
||||
@ -61,9 +61,11 @@ class PasswordController extends Controller
|
||||
if (!is_null($user) && intval($user->blocked) === 1) {
|
||||
$response = 'passwords.blocked';
|
||||
} else {
|
||||
$response = Password::sendResetLink($request->only('email'), function (Message $message) {
|
||||
$response = Password::sendResetLink(
|
||||
$request->only('email'), function (Message $message) {
|
||||
$message->subject($this->getEmailSubject());
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
switch ($response) {
|
||||
|
@ -159,7 +159,7 @@ class BudgetController extends Controller
|
||||
// loop the budgets:
|
||||
/** @var Budget $budget */
|
||||
foreach ($budgets as $budget) {
|
||||
$budget->spent = $repository->balanceInPeriodForList($budget, $start, $end, $accounts);
|
||||
$budget->spent = $repository->balanceInPeriod($budget, $start, $end, $accounts);
|
||||
$budget->currentRep = $repository->getCurrentRepetition($budget, $start, $end);
|
||||
if ($budget->currentRep) {
|
||||
$budgeted = bcadd($budgeted, $budget->currentRep->amount);
|
||||
|
@ -34,51 +34,6 @@ class AccountController extends Controller
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Shows the balances for all the user's accounts.
|
||||
*
|
||||
* @param AccountRepositoryInterface $repository
|
||||
*
|
||||
* @param $year
|
||||
* @param $month
|
||||
* @param bool $shared
|
||||
*
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
public function all(AccountRepositoryInterface $repository, $year, $month, $shared = false)
|
||||
{
|
||||
$start = new Carbon($year . '-' . $month . '-01');
|
||||
$end = clone $start;
|
||||
$end->endOfMonth();
|
||||
|
||||
// chart properties for cache:
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty('all');
|
||||
$cache->addProperty('accounts');
|
||||
if ($cache->has()) {
|
||||
return Response::json($cache->get()); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
/** @var Collection $accounts */
|
||||
$accounts = $repository->getAccounts(['Default account', 'Asset account']);
|
||||
if ($shared === false) {
|
||||
/** @var Account $account */
|
||||
foreach ($accounts as $index => $account) {
|
||||
if ($account->getMeta('accountRole') == 'sharedAsset') {
|
||||
$accounts->forget($index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// make chart:
|
||||
$data = $this->generator->all($accounts, $start, $end);
|
||||
$cache->store($data);
|
||||
|
||||
return Response::json($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the balances for a given set of dates and accounts.
|
||||
*
|
||||
|
@ -86,7 +86,7 @@ class BudgetController extends Controller
|
||||
$budgeted = 0;
|
||||
} else {
|
||||
$name = $budget->name;
|
||||
$sum = $repository->balanceInPeriodForList($budget, $currentStart, $currentEnd, $accounts);
|
||||
$sum = $repository->balanceInPeriod($budget, $currentStart, $currentEnd, $accounts);
|
||||
$budgeted = $repository->getBudgetLimitRepetitions($budget, $currentStart, $currentEnd)->sum('amount');
|
||||
}
|
||||
|
||||
@ -144,7 +144,7 @@ class BudgetController extends Controller
|
||||
$end->subDay();
|
||||
$chartDate = clone $end;
|
||||
$chartDate->startOfMonth();
|
||||
$spent = $repository->balanceInPeriodForList($budget, $first, $end, $accounts) * -1;
|
||||
$spent = $repository->balanceInPeriod($budget, $first, $end, $accounts) * -1;
|
||||
$entries->push([$chartDate, $spent]);
|
||||
$first = Navigation::addPeriod($first, $range, 0);
|
||||
}
|
||||
@ -233,13 +233,13 @@ class BudgetController extends Controller
|
||||
foreach ($budgets as $budget) {
|
||||
$repetitions = $repository->getBudgetLimitRepetitions($budget, $start, $end);
|
||||
if ($repetitions->count() == 0) {
|
||||
$expenses = $repository->balanceInPeriodForList($budget, $start, $end, $accounts) * -1;
|
||||
$expenses = $repository->balanceInPeriod($budget, $start, $end, $accounts) * -1;
|
||||
$allEntries->push([$budget->name, 0, 0, $expenses, 0, 0]);
|
||||
continue;
|
||||
}
|
||||
/** @var LimitRepetition $repetition */
|
||||
foreach ($repetitions as $repetition) {
|
||||
$expenses = $repository->balanceInPeriodForList($budget, $repetition->startdate, $repetition->enddate, $accounts) * -1;
|
||||
$expenses = $repository->balanceInPeriod($budget, $repetition->startdate, $repetition->enddate, $accounts) * -1;
|
||||
// $left can be less than zero.
|
||||
// $overspent can be more than zero ( = overspending)
|
||||
|
||||
@ -283,16 +283,17 @@ class BudgetController extends Controller
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty($report_type);
|
||||
$cache->addProperty($accounts);
|
||||
$cache->addProperty('budget');
|
||||
$cache->addProperty('year');
|
||||
if ($cache->has()) {
|
||||
return Response::json($cache->get()); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
// filter empty budgets:
|
||||
|
||||
// filter empty budgets:
|
||||
foreach ($allBudgets as $budget) {
|
||||
$spent = $repository->balanceInPeriodForList($budget, $start, $end, $accounts);
|
||||
$spent = $repository->balanceInPeriod($budget, $start, $end, $accounts);
|
||||
if ($spent != 0) {
|
||||
$budgets->push($budget);
|
||||
}
|
||||
@ -308,14 +309,14 @@ class BudgetController extends Controller
|
||||
|
||||
// each budget, fill the row:
|
||||
foreach ($budgets as $budget) {
|
||||
$spent = $repository->balanceInPeriodForList($budget, $start, $month, $accounts);
|
||||
$spent = $repository->balanceInPeriod($budget, $start, $month, $accounts);
|
||||
$row[] = $spent * -1;
|
||||
}
|
||||
$entries->push($row);
|
||||
$start->endOfMonth()->addDay();
|
||||
}
|
||||
|
||||
$data = $this->generator->year($allBudgets, $entries);
|
||||
$data = $this->generator->year($budgets, $entries);
|
||||
$cache->store($data);
|
||||
|
||||
return Response::json($data);
|
||||
|
@ -303,7 +303,9 @@ class CategoryController extends Controller
|
||||
|
||||
$cache = new CacheProperties; // chart properties for cache:
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($report_type);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty($accounts);
|
||||
$cache->addProperty('category');
|
||||
$cache->addProperty('spent-in-year');
|
||||
if ($cache->has()) {
|
||||
@ -314,7 +316,7 @@ class CategoryController extends Controller
|
||||
$entries = new Collection;
|
||||
$categories = $allCategories->filter(
|
||||
function (Category $category) use ($repository, $start, $end, $accounts) {
|
||||
$spent = $repository->balanceInPeriodForList($category, $start, $end, $accounts);
|
||||
$spent = $repository->balanceInPeriod($category, $start, $end, $accounts);
|
||||
if ($spent < 0) {
|
||||
return $category;
|
||||
}
|
||||
@ -329,7 +331,7 @@ class CategoryController extends Controller
|
||||
$row = [clone $start]; // make a row:
|
||||
|
||||
foreach ($categories as $category) { // each budget, fill the row
|
||||
$spent = $repository->balanceInPeriodForList($category, $start, $month, $accounts);
|
||||
$spent = $repository->balanceInPeriod($category, $start, $month, $accounts);
|
||||
if ($spent < 0) {
|
||||
$row[] = $spent * -1;
|
||||
} else {
|
||||
@ -346,7 +348,8 @@ class CategoryController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* This chart will only show income.
|
||||
* Returns a chart of what has been earned in this period in each category
|
||||
* grouped by month.
|
||||
*
|
||||
* @param CategoryRepositoryInterface $repository
|
||||
* @param $report_type
|
||||
@ -356,49 +359,183 @@ class CategoryController extends Controller
|
||||
*
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function earnedInYear(CategoryRepositoryInterface $repository, $report_type, Carbon $start, Carbon $end, Collection $accounts)
|
||||
public function earnedInPeriod(CategoryRepositoryInterface $repository, $report_type, Carbon $start, Carbon $end, Collection $accounts)
|
||||
{
|
||||
$cache = new CacheProperties; // chart properties for cache:
|
||||
$original = clone $start;
|
||||
$cache = new CacheProperties; // chart properties for cache:
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty($report_type);
|
||||
$cache->addProperty($accounts);
|
||||
$cache->addProperty('category');
|
||||
$cache->addProperty('earned-in-year');
|
||||
$cache->addProperty('earned-in-period');
|
||||
if ($cache->has()) {
|
||||
return Response::json($cache->get()); // @codeCoverageIgnore
|
||||
}
|
||||
$categories = new Collection;
|
||||
$sets = new Collection;
|
||||
$entries = new Collection;
|
||||
|
||||
$allCategories = $repository->getCategories();
|
||||
$allEntries = new Collection;
|
||||
$categories = $allCategories->filter(
|
||||
function (Category $category) use ($repository, $start, $end, $accounts) {
|
||||
$spent = $repository->balanceInPeriodForList($category, $start, $end, $accounts);
|
||||
if ($spent > 0) {
|
||||
return $category;
|
||||
}
|
||||
|
||||
return null;
|
||||
// run a very special query each month:
|
||||
$start = clone $original;
|
||||
while ($start < $end) {
|
||||
$currentEnd = clone $start;
|
||||
$currentStart = clone $start;
|
||||
$currentStart->startOfMonth();
|
||||
$currentEnd->endOfMonth();
|
||||
// get a list of categories, and what the user has earned for that category
|
||||
// (if the user has earned anything)
|
||||
$set = $repository->earnedForAccounts($accounts, $currentStart, $currentEnd);
|
||||
$categories = $categories->merge($set);
|
||||
// save the set combined with the data that is in it:
|
||||
// for example:
|
||||
// [december 2015, salary:1000, bonus:200]
|
||||
$sets->push([$currentStart, $set]);
|
||||
$start->addMonth();
|
||||
}
|
||||
// filter categories into a single bunch. Useful later on.
|
||||
// $categories contains all the categories the user has earned money
|
||||
// in in this period.
|
||||
$categories = $categories->unique('id');
|
||||
$categories = $categories->sortBy(
|
||||
function (Category $category) {
|
||||
return $category->name;
|
||||
}
|
||||
);
|
||||
|
||||
// start looping the time again, this time processing the
|
||||
// data for each month.
|
||||
$start = clone $original;
|
||||
while ($start < $end) {
|
||||
$month = clone $start; // month is the current end of the period
|
||||
$month->endOfMonth();
|
||||
$row = [clone $start]; // make a row:
|
||||
$currentEnd = clone $start;
|
||||
$currentStart = clone $start;
|
||||
$currentStart->startOfMonth();
|
||||
$currentEnd->endOfMonth();
|
||||
|
||||
foreach ($categories as $category) { // each budget, fill the row
|
||||
$spent = $repository->balanceInPeriodForList($category, $start, $month, $accounts);
|
||||
if ($spent > 0) {
|
||||
$row[] = $spent;
|
||||
// in $sets we have saved all the sets of data for each month
|
||||
// so now we need to retrieve the corrent one.
|
||||
// match is on date of course.
|
||||
$currentSet = $sets->first(
|
||||
function ($key, $value) use ($currentStart) {
|
||||
// set for this date.
|
||||
return ($value[0] == $currentStart);
|
||||
}
|
||||
);
|
||||
// create a row used later on.
|
||||
$row = [clone $currentStart];
|
||||
|
||||
// loop all categories:
|
||||
/** @var Category $category */
|
||||
foreach ($categories as $category) {
|
||||
// if entry is not null, we've earned money in this period for this category.
|
||||
$entry = $currentSet[1]->first(
|
||||
function ($key, $value) use ($category) {
|
||||
return $value->id == $category->id;
|
||||
}
|
||||
);
|
||||
// save amount
|
||||
if (!is_null($entry)) {
|
||||
$row[] = $entry->earned;
|
||||
} else {
|
||||
$row[] = 0;
|
||||
}
|
||||
}
|
||||
$allEntries->push($row);
|
||||
$entries->push($row);
|
||||
$start->addMonth();
|
||||
}
|
||||
$data = $this->generator->earnedInYear($categories, $allEntries);
|
||||
|
||||
$data = $this->generator->earnedInPeriod($categories, $entries);
|
||||
$cache->store($data);
|
||||
|
||||
return Response::json($data);
|
||||
return $data;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a chart of what has been spent in this period in each category
|
||||
* grouped by month.
|
||||
*
|
||||
* @param CategoryRepositoryInterface $repository
|
||||
* @param $report_type
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
* @param Collection $accounts
|
||||
*
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function spentInPeriod(CategoryRepositoryInterface $repository, $report_type, Carbon $start, Carbon $end, Collection $accounts)
|
||||
{
|
||||
$original = clone $start;
|
||||
$cache = new CacheProperties; // chart properties for cache:
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty($report_type);
|
||||
$cache->addProperty($accounts);
|
||||
$cache->addProperty('category');
|
||||
$cache->addProperty('spent-in-period');
|
||||
if ($cache->has()) {
|
||||
return Response::json($cache->get()); // @codeCoverageIgnore
|
||||
}
|
||||
$categories = new Collection;
|
||||
$sets = new Collection;
|
||||
$entries = new Collection;
|
||||
|
||||
// run a very special query each month:
|
||||
$start = clone $original;
|
||||
while ($start < $end) {
|
||||
$currentEnd = clone $start;
|
||||
$currentStart = clone $start;
|
||||
$currentStart->startOfMonth();
|
||||
$currentEnd->endOfMonth();
|
||||
$set = $repository->spentForAccounts($accounts, $currentStart, $currentEnd);
|
||||
$categories = $categories->merge($set);
|
||||
$sets->push([$currentStart, $set]);
|
||||
$start->addMonth();
|
||||
}
|
||||
$categories = $categories->unique('id');
|
||||
$categories = $categories->sortBy(
|
||||
function (Category $category) {
|
||||
return $category->name;
|
||||
}
|
||||
);
|
||||
|
||||
$start = clone $original;
|
||||
while ($start < $end) {
|
||||
$currentEnd = clone $start;
|
||||
$currentStart = clone $start;
|
||||
$currentStart->startOfMonth();
|
||||
$currentEnd->endOfMonth();
|
||||
$currentSet = $sets->first(
|
||||
function ($key, $value) use ($currentStart) {
|
||||
// set for this date.
|
||||
return ($value[0] == $currentStart);
|
||||
}
|
||||
);
|
||||
$row = [clone $currentStart];
|
||||
|
||||
/** @var Category $category */
|
||||
foreach ($categories as $category) {
|
||||
/** @var Category $entry */
|
||||
$entry = $currentSet[1]->first(
|
||||
function ($key, $value) use ($category) {
|
||||
return $value->id == $category->id;
|
||||
}
|
||||
);
|
||||
if (!is_null($entry)) {
|
||||
$row[] = $entry->spent;
|
||||
} else {
|
||||
$row[] = 0;
|
||||
}
|
||||
}
|
||||
$entries->push($row);
|
||||
$start->addMonth();
|
||||
}
|
||||
|
||||
$data = $this->generator->spentInPeriod($categories, $entries);
|
||||
$cache->store($data);
|
||||
|
||||
return $data;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -34,14 +34,15 @@ abstract class Controller extends BaseController
|
||||
View::share('hideTags', false);
|
||||
|
||||
if (Auth::check()) {
|
||||
$pref = Preferences::get('language', 'en');
|
||||
$pref = Preferences::get('language', env('DEFAULT_LANGUAGE', 'en_US'));
|
||||
$lang = $pref->data;
|
||||
$this->monthFormat = Config::get('firefly.month.' . $lang);
|
||||
$this->monthAndDayFormat = Config::get('firefly.monthAndDay.' . $lang);
|
||||
$this->monthFormat = trans('config.month');
|
||||
$this->monthAndDayFormat = trans('config.month_and_day');
|
||||
|
||||
View::share('monthFormat', $this->monthFormat);
|
||||
View::share('monthAndDayFormat', $this->monthAndDayFormat);
|
||||
View::share('language', $lang);
|
||||
View::share('localeconv', localeconv());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ class CurrencyController extends Controller
|
||||
public function index(CurrencyRepositoryInterface $repository)
|
||||
{
|
||||
$currencies = $repository->get();
|
||||
$defaultCurrency = $repository->getCurrencyByPreference(Preferences::get('currencyPreference', env('DEFAULT_CURRENCY','EUR')));
|
||||
$defaultCurrency = $repository->getCurrencyByPreference(Preferences::get('currencyPreference', env('DEFAULT_CURRENCY', 'EUR')));
|
||||
|
||||
|
||||
if (!Auth::user()->hasRole('owner')) {
|
||||
|
@ -120,33 +120,4 @@ class HomeController extends Controller
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Http\RedirectResponse|string
|
||||
*/
|
||||
public function routes()
|
||||
{
|
||||
if (!Auth::user()->hasRole('owner')) {
|
||||
Session::flash('warning', 'This page is broken.');
|
||||
|
||||
return redirect(route('index'));
|
||||
}
|
||||
Log::debug('Make log.');
|
||||
|
||||
// get all routes:
|
||||
$routeCollection = Route::getRoutes();
|
||||
/** @var \Illuminate\Routing\Route $value */
|
||||
foreach ($routeCollection as $value) {
|
||||
$name = $value->getName();
|
||||
$methods = $value->getMethods();
|
||||
$isPost = in_array('POST', $methods);
|
||||
$index = str_replace('.', '-', $name);
|
||||
|
||||
if (strlen($name) > 0 && !$isPost) {
|
||||
echo "'" . $index . "' => '" . $name . "',<br />";
|
||||
}
|
||||
}
|
||||
|
||||
return ' ';
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,6 @@ use Illuminate\Support\Collection;
|
||||
use Preferences;
|
||||
use Response;
|
||||
use Session;
|
||||
use Steam;
|
||||
|
||||
/**
|
||||
* Class JsonController
|
||||
@ -72,9 +71,8 @@ class JsonController extends Controller
|
||||
*/
|
||||
public function boxBillsPaid(BillRepositoryInterface $repository, AccountRepositoryInterface $accountRepository)
|
||||
{
|
||||
$start = Session::get('start', Carbon::now()->startOfMonth());
|
||||
$end = Session::get('end', Carbon::now()->endOfMonth());
|
||||
$amount = 0;
|
||||
$start = Session::get('start', Carbon::now()->startOfMonth());
|
||||
$end = Session::get('end', Carbon::now()->endOfMonth());
|
||||
bcscale(2);
|
||||
|
||||
// works for json too!
|
||||
@ -85,21 +83,14 @@ class JsonController extends Controller
|
||||
if ($cache->has()) {
|
||||
return Response::json($cache->get()); // @codeCoverageIgnore
|
||||
}
|
||||
$bills = $repository->getActiveBills(); // these two functions are the same as the chart
|
||||
// get amount from bills
|
||||
$amount = $repository->billsPaidInRange($start, $end)->sum('paid');
|
||||
|
||||
/** @var Bill $bill */
|
||||
foreach ($bills as $bill) {
|
||||
$amount = bcadd($amount, $repository->billPaymentsInRange($bill, $start, $end));
|
||||
}
|
||||
unset($bill, $bills);
|
||||
|
||||
$amount = $amount * -1; // make the amount positive again.
|
||||
|
||||
$creditCards = $accountRepository->getCreditCards(); // Find credit card accounts and possibly unpaid credit card bills.
|
||||
// add credit card bill.
|
||||
$creditCards = $accountRepository->getCreditCards($end); // Find credit card accounts and possibly unpaid credit card bills.
|
||||
/** @var Account $creditCard */
|
||||
foreach ($creditCards as $creditCard) {
|
||||
$balance = Steam::balance($creditCard, $end, true); // if the balance is not zero, the monthly payment is still underway.
|
||||
if ($balance == 0) {
|
||||
if ($creditCard->balance == 0) {
|
||||
// find a transfer TO the credit card which should account for
|
||||
// anything paid. If not, the CC is not yet used.
|
||||
$amount = bcadd($amount, $accountRepository->getTransfersInRange($creditCard, $start, $end)->sum('amount'));
|
||||
@ -149,14 +140,15 @@ class JsonController extends Controller
|
||||
}
|
||||
unset($bill, $bills, $range, $ranges);
|
||||
|
||||
$creditCards = $accountRepository->getCreditCards();
|
||||
$creditCards = $accountRepository->getCreditCards($end);
|
||||
|
||||
/** @var Account $creditCard */
|
||||
foreach ($creditCards as $creditCard) {
|
||||
$balance = Steam::balance($creditCard, $end, true);
|
||||
$date = new Carbon($creditCard->getMeta('ccMonthlyPaymentDate'));
|
||||
if ($balance < 0) {
|
||||
$date = new Carbon($creditCard->getMeta('ccMonthlyPaymentDate'));
|
||||
if ($creditCard->balance < 0) {
|
||||
// unpaid! create a fake bill that matches the amount.
|
||||
$description = $creditCard->name;
|
||||
$fakeAmount = $balance * -1;
|
||||
$fakeAmount = $creditCard->balance * -1;
|
||||
$fakeBill = $repository->createFakeBill($description, $date, $fakeAmount);
|
||||
$unpaid->push([$fakeBill, $date]);
|
||||
}
|
||||
@ -192,7 +184,7 @@ class JsonController extends Controller
|
||||
return Response::json($cache->get()); // @codeCoverageIgnore
|
||||
}
|
||||
$accounts = $accountRepository->getAccounts(['Default account', 'Asset account', 'Cash account']);
|
||||
$amount = $reportQuery->incomeInPeriod($start, $end, $accounts)->sum('amount');
|
||||
$amount = $reportQuery->incomeInPeriod($start, $end, $accounts)->sum('to_amount');
|
||||
|
||||
$data = ['box' => 'in', 'amount' => Amount::format($amount, false), 'amount_raw' => $amount];
|
||||
$cache->store($data);
|
||||
@ -221,8 +213,7 @@ class JsonController extends Controller
|
||||
return Response::json($cache->get()); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
$amount = $reportQuery->expenseInPeriod($start, $end, $accounts)->sum('amount');
|
||||
$amount = $amount * -1;
|
||||
$amount = $reportQuery->expenseInPeriod($start, $end, $accounts)->sum('to_amount');
|
||||
|
||||
$data = ['box' => 'out', 'amount' => Amount::format($amount, false), 'amount_raw' => $amount];
|
||||
$cache->store($data);
|
||||
@ -244,7 +235,6 @@ class JsonController extends Controller
|
||||
foreach ($list as $entry) {
|
||||
$return[] = $entry->name;
|
||||
}
|
||||
sort($return);
|
||||
|
||||
return Response::json($return);
|
||||
}
|
||||
|
@ -49,7 +49,6 @@ class NewUserController extends Controller
|
||||
*/
|
||||
public function submit(NewUserFormRequest $request, AccountRepositoryInterface $repository)
|
||||
{
|
||||
|
||||
// create normal asset account:
|
||||
$assetAccount = [
|
||||
'name' => $request->get('bank_name'),
|
||||
@ -61,7 +60,7 @@ class NewUserController extends Controller
|
||||
'accountRole' => 'defaultAsset',
|
||||
'openingBalance' => round($request->input('bank_balance'), 2),
|
||||
'openingBalanceDate' => new Carbon,
|
||||
'openingBalanceCurrency' => intval($request->input('balance_currency_id')),
|
||||
'openingBalanceCurrency' => intval($request->input('amount_currency_id_bank_balance')),
|
||||
];
|
||||
|
||||
$repository->store($assetAccount);
|
||||
@ -78,7 +77,7 @@ class NewUserController extends Controller
|
||||
'accountRole' => 'savingAsset',
|
||||
'openingBalance' => round($request->input('savings_balance'), 2),
|
||||
'openingBalanceDate' => new Carbon,
|
||||
'openingBalanceCurrency' => intval($request->input('balance_currency_id')),
|
||||
'openingBalanceCurrency' => intval($request->input('amount_currency_id_savings_balance')),
|
||||
];
|
||||
$repository->store($savingsAccount);
|
||||
}
|
||||
@ -96,7 +95,7 @@ class NewUserController extends Controller
|
||||
'accountRole' => 'ccAsset',
|
||||
'openingBalance' => null,
|
||||
'openingBalanceDate' => null,
|
||||
'openingBalanceCurrency' => intval($request->input('balance_currency_id')),
|
||||
'openingBalanceCurrency' => intval($request->input('amount_currency_id_credit_card_limit')),
|
||||
];
|
||||
$creditCard = $repository->store($creditAccount);
|
||||
|
||||
|
@ -37,10 +37,12 @@ class PreferencesController extends Controller
|
||||
$viewRange = $viewRangePref->data;
|
||||
$frontPageAccounts = Preferences::get('frontPageAccounts', []);
|
||||
$budgetMax = Preferences::get('budgetMaximum', 1000);
|
||||
$language = Preferences::get('language', 'en')->data;
|
||||
$language = Preferences::get('language', env('DEFAULT_LANGUAGE', 'en_US'))->data;
|
||||
$budgetMaximum = $budgetMax->data;
|
||||
|
||||
return view('preferences.index', compact('budgetMaximum', 'language', 'accounts', 'frontPageAccounts', 'viewRange'));
|
||||
$showIncomplete = env('SHOW_INCOMPLETE_TRANSLATIONS', 'false') == 'true';
|
||||
|
||||
return view('preferences.index', compact('budgetMaximum', 'language', 'accounts', 'frontPageAccounts', 'viewRange', 'showIncomplete'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -70,7 +72,7 @@ class PreferencesController extends Controller
|
||||
|
||||
// language:
|
||||
$lang = Input::get('language');
|
||||
if (in_array($lang, array_keys(Config::get('firefly.lang')))) {
|
||||
if (in_array($lang, array_keys(Config::get('firefly.languages')))) {
|
||||
Preferences::set('language', $lang);
|
||||
}
|
||||
|
||||
|
@ -42,21 +42,31 @@ class ReportController extends Controller
|
||||
*/
|
||||
public function index(AccountRepositoryInterface $repository)
|
||||
{
|
||||
$start = Session::get('first');
|
||||
$months = $this->helper->listOfMonths($start);
|
||||
$start = Session::get('first');
|
||||
$months = $this->helper->listOfMonths($start);
|
||||
$startOfMonth = clone Session::get('start');
|
||||
$endOfMonth = clone Session::get('start');
|
||||
$startOfYear = clone Session::get('start');
|
||||
$endOfYear = clone Session::get('start');
|
||||
$startOfMonth->startOfMonth();
|
||||
$endOfMonth->endOfMonth();
|
||||
$startOfYear->startOfYear();
|
||||
$endOfYear->endOfYear();
|
||||
|
||||
// does the user have shared accounts?
|
||||
$accounts = $repository->getAccounts(['Default account', 'Asset account']);
|
||||
$accounts = $repository->getAccounts(['Default account', 'Asset account']);
|
||||
// get id's for quick links:
|
||||
$accountIds = [];
|
||||
/** @var Account $account */
|
||||
foreach($accounts as $account) {
|
||||
foreach ($accounts as $account) {
|
||||
$accountIds [] = $account->id;
|
||||
}
|
||||
$accountList = join(',',$accountIds);
|
||||
$accountList = join(',', $accountIds);
|
||||
|
||||
|
||||
return view('reports.index', compact('months', 'accounts', 'start','accountList'));
|
||||
return view('reports.index', compact('months', 'accounts', 'start', 'accountList',
|
||||
'startOfMonth', 'endOfMonth', 'startOfYear', 'endOfYear'
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -194,7 +204,7 @@ class ReportController extends Controller
|
||||
'firefly.report_default',
|
||||
[
|
||||
'start' => $start->formatLocalized($this->monthFormat),
|
||||
'end' => $end->formatLocalized($this->monthFormat)
|
||||
'end' => $end->formatLocalized($this->monthFormat),
|
||||
]
|
||||
)
|
||||
);
|
||||
|
@ -48,7 +48,7 @@ class TransactionController extends Controller
|
||||
*/
|
||||
public function create(AccountRepositoryInterface $repository, $what = TransactionType::DEPOSIT)
|
||||
{
|
||||
$what = strtolower($what);
|
||||
$what = strtolower($what);
|
||||
$maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
|
||||
$maxPostSize = Steam::phpBytes(ini_get('post_max_size'));
|
||||
$uploadSize = min($maxFileSize, $maxPostSize);
|
||||
|
@ -1,13 +1,14 @@
|
||||
<?php namespace FireflyIII\Http\Middleware;
|
||||
|
||||
use App;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use Closure;
|
||||
use Config;
|
||||
use Illuminate\Contracts\Auth\Guard;
|
||||
use Illuminate\Http\Request;
|
||||
use Preferences;
|
||||
use Auth;
|
||||
|
||||
/**
|
||||
* Class Authenticate
|
||||
*
|
||||
@ -55,16 +56,19 @@ class Authenticate
|
||||
|
||||
if (intval($this->auth->user()->blocked) == 1) {
|
||||
Auth::logout();
|
||||
|
||||
return redirect()->route('index');
|
||||
}
|
||||
|
||||
// if logged in, set user language:
|
||||
$pref = Preferences::get('language', 'en');
|
||||
$pref = Preferences::get('language', env('DEFAULT_LANGUAGE','en_US'));
|
||||
App::setLocale($pref->data);
|
||||
Carbon::setLocale($pref->data);
|
||||
Carbon::setLocale(substr($pref->data,0,2));
|
||||
$locale = explode(',', trans('config.locale'));
|
||||
$locale = array_map('trim', $locale);
|
||||
|
||||
setlocale(LC_TIME, Config::get('firefly.locales.' . $pref->data));
|
||||
setlocale(LC_MONETARY, Config::get('firefly.locales.' . $pref->data));
|
||||
setlocale(LC_TIME, $locale);
|
||||
setlocale(LC_MONETARY, $locale);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
@ -41,18 +41,19 @@ class AccountFormRequest extends Request
|
||||
}
|
||||
|
||||
return [
|
||||
'id' => $idRule,
|
||||
'name' => $nameRule,
|
||||
'openingBalance' => 'numeric',
|
||||
'iban' => 'iban',
|
||||
'virtualBalance' => 'numeric',
|
||||
'openingBalanceDate' => 'date',
|
||||
'accountRole' => 'in:' . $accountRoles,
|
||||
'active' => 'boolean',
|
||||
'ccType' => 'in:' . $ccPaymentTypes,
|
||||
'ccMonthlyPaymentDate' => 'date',
|
||||
'balance_currency_id' => 'exists:transaction_currencies,id',
|
||||
'what' => 'in:' . $types
|
||||
'id' => $idRule,
|
||||
'name' => $nameRule,
|
||||
'openingBalance' => 'numeric',
|
||||
'iban' => 'iban',
|
||||
'virtualBalance' => 'numeric',
|
||||
'openingBalanceDate' => 'date',
|
||||
'accountRole' => 'in:' . $accountRoles,
|
||||
'active' => 'boolean',
|
||||
'ccType' => 'in:' . $ccPaymentTypes,
|
||||
'ccMonthlyPaymentDate' => 'date',
|
||||
'amount_currency_id_openingBalance' => 'exists:transaction_currencies,id',
|
||||
'amount_currency_id_virtualBalance' => 'exists:transaction_currencies,id',
|
||||
'what' => 'in:' . $types
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -29,17 +29,18 @@ class BillFormRequest extends Request
|
||||
public function getBillData()
|
||||
{
|
||||
return [
|
||||
'name' => $this->get('name'),
|
||||
'match' => $this->get('match'),
|
||||
'amount_min' => round($this->get('amount_min'), 2),
|
||||
'amount_currency_id' => round($this->get('amount_currency_id'), 2),
|
||||
'amount_max' => round($this->get('amount_max'), 2),
|
||||
'date' => new Carbon($this->get('date')),
|
||||
'user' => Auth::user()->id,
|
||||
'repeat_freq' => $this->get('repeat_freq'),
|
||||
'skip' => intval($this->get('skip')),
|
||||
'automatch' => intval($this->get('automatch')) === 1,
|
||||
'active' => intval($this->get('active')) === 1,
|
||||
'name' => $this->get('name'),
|
||||
'match' => $this->get('match'),
|
||||
'amount_min' => round($this->get('amount_min'), 2),
|
||||
'amount_currency_id_amount_min' => intval($this->get('amount_currency_id_amount_min')),
|
||||
'amount_currency_id_amount_max' => intval($this->get('amount_currency_id_amount_max')),
|
||||
'amount_max' => round($this->get('amount_max'), 2),
|
||||
'date' => new Carbon($this->get('date')),
|
||||
'user' => Auth::user()->id,
|
||||
'repeat_freq' => $this->get('repeat_freq'),
|
||||
'skip' => intval($this->get('skip')),
|
||||
'automatch' => intval($this->get('automatch')) === 1,
|
||||
'active' => intval($this->get('active')) === 1,
|
||||
];
|
||||
}
|
||||
|
||||
@ -56,16 +57,17 @@ class BillFormRequest extends Request
|
||||
}
|
||||
|
||||
$rules = [
|
||||
'name' => $nameRule,
|
||||
'match' => $matchRule,
|
||||
'amount_min' => 'required|numeric|min:0.01',
|
||||
'amount_max' => 'required|numeric|min:0.01',
|
||||
'amount_currency_id' => 'required|exists:transaction_currencies,id',
|
||||
'date' => 'required|date',
|
||||
'repeat_freq' => 'required|in:weekly,monthly,quarterly,half-year,yearly',
|
||||
'skip' => 'required|between:0,31',
|
||||
'automatch' => 'in:1',
|
||||
'active' => 'in:1',
|
||||
'name' => $nameRule,
|
||||
'match' => $matchRule,
|
||||
'amount_min' => 'required|numeric|min:0.01',
|
||||
'amount_max' => 'required|numeric|min:0.01',
|
||||
'amount_currency_id_amount_min' => 'required|exists:transaction_currencies,id',
|
||||
'amount_currency_id_amount_max' => 'required|exists:transaction_currencies,id',
|
||||
'date' => 'required|date',
|
||||
'repeat_freq' => 'required|in:weekly,monthly,quarterly,half-year,yearly',
|
||||
'skip' => 'required|between:0,31',
|
||||
'automatch' => 'in:1',
|
||||
'active' => 'in:1',
|
||||
];
|
||||
|
||||
return $rules;
|
||||
|
@ -31,20 +31,20 @@ class JournalFormRequest extends Request
|
||||
public function getJournalData()
|
||||
{
|
||||
return [
|
||||
'what' => $this->get('what'),
|
||||
'description' => $this->get('description'),
|
||||
'account_id' => intval($this->get('account_id')),
|
||||
'account_from_id' => intval($this->get('account_from_id')),
|
||||
'account_to_id' => intval($this->get('account_to_id')),
|
||||
'expense_account' => $this->get('expense_account'),
|
||||
'revenue_account' => $this->get('revenue_account'),
|
||||
'amount' => round($this->get('amount'), 2),
|
||||
'user' => Auth::user()->id,
|
||||
'amount_currency_id' => intval($this->get('amount_currency_id')),
|
||||
'date' => new Carbon($this->get('date')),
|
||||
'budget_id' => intval($this->get('budget_id')),
|
||||
'category' => $this->get('category'),
|
||||
'tags' => explode(',', $this->get('tags')),
|
||||
'what' => $this->get('what'),
|
||||
'description' => $this->get('description'),
|
||||
'account_id' => intval($this->get('account_id')),
|
||||
'account_from_id' => intval($this->get('account_from_id')),
|
||||
'account_to_id' => intval($this->get('account_to_id')),
|
||||
'expense_account' => $this->get('expense_account'),
|
||||
'revenue_account' => $this->get('revenue_account'),
|
||||
'amount' => round($this->get('amount'), 2),
|
||||
'user' => Auth::user()->id,
|
||||
'amount_currency_id_amount' => intval($this->get('amount_currency_id_amount')),
|
||||
'date' => new Carbon($this->get('date')),
|
||||
'budget_id' => intval($this->get('budget_id')),
|
||||
'category' => $this->get('category'),
|
||||
'tags' => explode(',', $this->get('tags')),
|
||||
];
|
||||
}
|
||||
|
||||
@ -57,11 +57,11 @@ class JournalFormRequest extends Request
|
||||
{
|
||||
$what = Input::get('what');
|
||||
$rules = [
|
||||
'description' => 'required|min:1,max:255',
|
||||
'what' => 'required|in:withdrawal,deposit,transfer',
|
||||
'amount' => 'numeric|required|min:0.01',
|
||||
'date' => 'required|date',
|
||||
'amount_currency_id' => 'required|exists:transaction_currencies,id',
|
||||
'description' => 'required|min:1,max:255',
|
||||
'what' => 'required|in:withdrawal,deposit,transfer',
|
||||
'amount' => 'numeric|required|min:0.01',
|
||||
'date' => 'required|date',
|
||||
'amount_currency_id_amount' => 'required|exists:transaction_currencies,id',
|
||||
|
||||
];
|
||||
|
||||
|
@ -27,11 +27,13 @@ class NewUserFormRequest extends Request
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'bank_name' => 'required|between:1,200',
|
||||
'bank_balance' => 'required|numeric',
|
||||
'savings_balance' => 'numeric',
|
||||
'credit_card_limit' => 'numeric',
|
||||
'balance_currency_id' => 'exists:transaction_currencies,id',
|
||||
'bank_name' => 'required|between:1,200',
|
||||
'bank_balance' => 'required|numeric',
|
||||
'savings_balance' => 'numeric',
|
||||
'credit_card_limit' => 'numeric',
|
||||
'amount_currency_id_bank_balance' => 'exists:transaction_currencies,id',
|
||||
'amount_currency_id_savings_balance' => 'exists:transaction_currencies,id',
|
||||
'amount_currency_id_credit_card_limit' => 'exists:transaction_currencies,id',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -36,13 +36,13 @@ class PiggyBankFormRequest extends Request
|
||||
|
||||
|
||||
$rules = [
|
||||
'name' => $nameRule,
|
||||
'account_id' => 'required|belongsToUser:accounts',
|
||||
'targetamount' => 'required|min:0.01',
|
||||
'amount_currency_id' => 'exists:transaction_currencies,id',
|
||||
'startdate' => 'date',
|
||||
'targetdate' => $targetDateRule,
|
||||
'order' => 'integer|min:1',
|
||||
'name' => $nameRule,
|
||||
'account_id' => 'required|belongsToUser:accounts',
|
||||
'targetamount' => 'required|min:0.01',
|
||||
'amount_currency_id_targetamount' => 'exists:transaction_currencies,id',
|
||||
'startdate' => 'date',
|
||||
'targetdate' => $targetDateRule,
|
||||
'order' => 'integer|min:1',
|
||||
|
||||
];
|
||||
|
||||
|
@ -354,8 +354,7 @@ Breadcrumbs::register(
|
||||
'reports.report', function (Generator $breadcrumbs, Carbon $start, Carbon $end, $reportType, $accountIds) {
|
||||
$breadcrumbs->parent('reports.index');
|
||||
|
||||
$pref = Preferences::get('language', 'en')->data;
|
||||
$monthFormat = Config::get('firefly.monthAndDay.' . $pref);
|
||||
$monthFormat = trans('config.month_and_day');
|
||||
$title = trans('firefly.report_default', ['start' => $start->formatLocalized($monthFormat), 'end' => $end->formatLocalized($monthFormat)]);
|
||||
|
||||
$breadcrumbs->push($title, route('reports.report', ['url' => 'abcde']));
|
||||
|
@ -268,7 +268,7 @@ Route::get('/cron/sendgrid', ['uses' => 'CronController@sendgrid']);
|
||||
|
||||
Route::controllers(
|
||||
[
|
||||
'auth' => 'Auth\AuthController',
|
||||
'auth' => 'Auth\AuthController',
|
||||
'password' => 'Auth\PasswordController',
|
||||
]
|
||||
);
|
||||
@ -284,7 +284,6 @@ Route::group(
|
||||
Route::get('/home', ['uses' => 'HomeController@index', 'as' => 'home']);
|
||||
Route::post('/daterange', ['uses' => 'HomeController@dateRange', 'as' => 'daterange']);
|
||||
Route::get('/flush', ['uses' => 'HomeController@flush', 'as' => 'flush']);
|
||||
Route::get('/routes', ['uses' => 'HomeController@routes']);
|
||||
/**
|
||||
* Account Controller
|
||||
*/
|
||||
@ -390,9 +389,6 @@ Route::group(
|
||||
// accounts:
|
||||
Route::get('/chart/account/frontpage', ['uses' => 'Chart\AccountController@frontpage']);
|
||||
Route::get('/chart/account/expense', ['uses' => 'Chart\AccountController@expenseAccounts']);
|
||||
Route::get('/chart/account/month/{year}/{month}/{shared?}', ['uses' => 'Chart\AccountController@all'])->where(
|
||||
['year' => '[0-9]{4}', 'month' => '[0-9]{1,2}', 'shared' => 'shared']
|
||||
);
|
||||
Route::get('/chart/account/report/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\AccountController@report']);
|
||||
Route::get('/chart/account/{account}', ['uses' => 'Chart\AccountController@single']);
|
||||
|
||||
@ -415,8 +411,8 @@ Route::group(
|
||||
Route::get('/chart/category/frontpage', ['uses' => 'Chart\CategoryController@frontpage']);
|
||||
|
||||
// these three charts are for reports:
|
||||
Route::get('/chart/category/spent-in-year/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\CategoryController@spentInYear']);
|
||||
Route::get('/chart/category/earned-in-year/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\CategoryController@earnedInYear']);
|
||||
Route::get('/chart/category/earned-in-period/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\CategoryController@earnedInPeriod']);
|
||||
Route::get('/chart/category/spent-in-period/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\CategoryController@spentInPeriod']);
|
||||
Route::get(
|
||||
'/chart/category/multi-year/{report_type}/{start_date}/{end_date}/{accountList}/{categoryList}', ['uses' => 'Chart\CategoryController@multiYear']
|
||||
);
|
||||
@ -429,12 +425,8 @@ Route::group(
|
||||
Route::get('/chart/piggyBank/{piggyBank}', ['uses' => 'Chart\PiggyBankController@history']);
|
||||
|
||||
// reports:
|
||||
Route::get('/chart/report/in-out/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\ReportController@yearInOut'])->where(
|
||||
['year' => '[0-9]{4}', 'shared' => 'shared']
|
||||
);
|
||||
Route::get('/chart/report/in-out-sum/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\ReportController@yearInOutSummarized'])->where(
|
||||
['year' => '[0-9]{4}', 'shared' => 'shared']
|
||||
);
|
||||
Route::get('/chart/report/in-out/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\ReportController@yearInOut']);
|
||||
Route::get('/chart/report/in-out-sum/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'Chart\ReportController@yearInOutSummarized']);
|
||||
|
||||
|
||||
/**
|
||||
@ -500,12 +492,7 @@ Route::group(
|
||||
* Report Controller
|
||||
*/
|
||||
Route::get('/reports', ['uses' => 'ReportController@index', 'as' => 'reports.index']);
|
||||
// Route::post('/reports/select', ['uses' => 'ReportController@select', 'as' => 'reports.select']);
|
||||
Route::get('/reports/report/{report_type}/{start_date}/{end_date}/{accountList}', ['uses' => 'ReportController@report', 'as' => 'reports.report']);
|
||||
// Route::get('/reports/{year}/{shared?}', ['uses' => 'ReportController@year', 'as' => 'reports.year'])->where(['year' => '[0-9]{4}', 'shared' => 'shared']);
|
||||
// Route::get('/reports/{year}/{month}/{shared?}', ['uses' => 'ReportController@month', 'as' => 'reports.month'])->where(['year' => '[0-9]{4}', 'month' => '[0-9]{1,2}', 'shared' => 'shared']);
|
||||
|
||||
// pop ups for budget report:
|
||||
|
||||
/**
|
||||
* Search Controller
|
||||
|
@ -39,8 +39,8 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Bill whereSkip($value)
|
||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Bill whereNameEncrypted($value)
|
||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Bill whereMatchEncrypted($value)
|
||||
* @property \Carbon\Carbon $nextExpectedMatch
|
||||
* @property \Carbon\Carbon $lastFoundMatch
|
||||
* @property \Carbon\Carbon $nextExpectedMatch
|
||||
* @property \Carbon\Carbon $lastFoundMatch
|
||||
*/
|
||||
class Bill extends Model
|
||||
{
|
||||
|
@ -25,7 +25,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Category whereUserId($value)
|
||||
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Category whereEncrypted($value)
|
||||
* @property-read float $spent
|
||||
* @property \Carbon\Carbon $lastActivity
|
||||
* @property \Carbon\Carbon $lastActivity
|
||||
*/
|
||||
class Category extends Model
|
||||
{
|
||||
|
@ -68,6 +68,7 @@ use Watson\Validating\ValidatingTrait;
|
||||
* @property-read int $account_id
|
||||
* @property string $name
|
||||
* @property-read string $symbol
|
||||
* @property-read string $type
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Attachment[] $attachments
|
||||
* @property-read mixed $amount_positive
|
||||
*/
|
||||
@ -503,6 +504,10 @@ class TransactionJournal extends Model
|
||||
*/
|
||||
public function isWithdrawal()
|
||||
{
|
||||
if (!is_null($this->type)) {
|
||||
return $this->type == TransactionType::WITHDRAWAL;
|
||||
}
|
||||
|
||||
return $this->transactionType->isWithdrawal();
|
||||
}
|
||||
|
||||
@ -511,6 +516,10 @@ class TransactionJournal extends Model
|
||||
*/
|
||||
public function isDeposit()
|
||||
{
|
||||
if (!is_null($this->type)) {
|
||||
return $this->type == TransactionType::DEPOSIT;
|
||||
}
|
||||
|
||||
return $this->transactionType->isDeposit();
|
||||
}
|
||||
|
||||
@ -519,6 +528,10 @@ class TransactionJournal extends Model
|
||||
*/
|
||||
public function isTransfer()
|
||||
{
|
||||
if (!is_null($this->type)) {
|
||||
return $this->type == TransactionType::TRANSFER;
|
||||
}
|
||||
|
||||
return $this->transactionType->isTransfer();
|
||||
}
|
||||
|
||||
@ -527,6 +540,10 @@ class TransactionJournal extends Model
|
||||
*/
|
||||
public function isOpeningBalance()
|
||||
{
|
||||
if (!is_null($this->type)) {
|
||||
return $this->type == TransactionType::OPENING_BALANCE;
|
||||
}
|
||||
|
||||
return $this->transactionType->isOpeningBalance();
|
||||
}
|
||||
}
|
||||
|
@ -23,9 +23,9 @@ class TransactionType extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
const WITHDRAWAL = 'Withdrawal';
|
||||
const DEPOSIT = 'Deposit';
|
||||
const TRANSFER = 'Transfer';
|
||||
const WITHDRAWAL = 'Withdrawal';
|
||||
const DEPOSIT = 'Deposit';
|
||||
const TRANSFER = 'Transfer';
|
||||
const OPENING_BALANCE = 'Opening balance';
|
||||
|
||||
/**
|
||||
@ -36,22 +36,6 @@ class TransactionType extends Model
|
||||
return ['created_at', 'updated_at', 'deleted_at'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function transactionJournals()
|
||||
{
|
||||
return $this->hasMany('FireflyIII\Models\TransactionJournal');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isWithdrawal()
|
||||
{
|
||||
return $this->type === TransactionType::WITHDRAWAL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
@ -60,6 +44,14 @@ class TransactionType extends Model
|
||||
return $this->type === TransactionType::DEPOSIT;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isOpeningBalance()
|
||||
{
|
||||
return $this->type === TransactionType::OPENING_BALANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
@ -71,8 +63,16 @@ class TransactionType extends Model
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isOpeningBalance()
|
||||
public function isWithdrawal()
|
||||
{
|
||||
return $this->type === TransactionType::OPENING_BALANCE;
|
||||
return $this->type === TransactionType::WITHDRAWAL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function transactionJournals()
|
||||
{
|
||||
return $this->hasMany('FireflyIII\Models\TransactionJournal');
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,16 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
*/
|
||||
public function countAccounts(array $types)
|
||||
{
|
||||
return Auth::user()->accounts()->accountTypeIn($types)->count();
|
||||
$cache = new CacheProperties;
|
||||
$cache->addProperty('user-count-accounts');
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
$count = Auth::user()->accounts()->accountTypeIn($types)->count();
|
||||
$cache->store($count);
|
||||
|
||||
return $count;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,6 +78,14 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
*/
|
||||
public function getAccounts(array $types)
|
||||
{
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty('get-accounts');
|
||||
$cache->addProperty($types);
|
||||
|
||||
if ($cache->has()) {
|
||||
return $cache->get();
|
||||
}
|
||||
|
||||
/** @var Collection $result */
|
||||
$result = Auth::user()->accounts()->with(
|
||||
['accountmeta' => function (HasMany $query) {
|
||||
@ -82,23 +99,39 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
}
|
||||
);
|
||||
|
||||
$cache->store($result);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method returns the users credit cards, along with some basic information about the
|
||||
* balance they have on their CC. To be used in the JSON boxes on the front page that say
|
||||
* how many bills there are still left to pay. The balance will be saved in field "balance".
|
||||
*
|
||||
* To get the balance, the field "date" is necessary.
|
||||
*
|
||||
* @param Carbon $date
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function getCreditCards()
|
||||
public function getCreditCards(Carbon $date)
|
||||
{
|
||||
return Auth::user()->accounts()
|
||||
->hasMetaValue('accountRole', 'ccAsset')
|
||||
->hasMetaValue('ccType', 'monthlyFull')
|
||||
->leftJoin('transactions', 'transactions.account_id', '=', 'accounts.id')
|
||||
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
||||
->whereNull('transactions.deleted_at')
|
||||
->where('transaction_journals.date', '<=', $date->format('Y-m-d'))
|
||||
->groupBy('accounts.id')
|
||||
->get(
|
||||
[
|
||||
'accounts.*',
|
||||
'ccType.data as ccType',
|
||||
'accountRole.data as accountRole'
|
||||
'accountRole.data as accountRole',
|
||||
DB::Raw('SUM(`transactions`.`amount`) AS `balance`')
|
||||
]
|
||||
);
|
||||
}
|
||||
@ -111,8 +144,18 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
*/
|
||||
public function getFirstTransaction(TransactionJournal $journal, Account $account)
|
||||
{
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty('first-transaction');
|
||||
$cache->addProperty($journal->id);
|
||||
$cache->addProperty($account->id);
|
||||
|
||||
return $journal->transactions()->where('account_id', $account->id)->first();
|
||||
if ($cache->has()) {
|
||||
return $cache->get();
|
||||
}
|
||||
$transaction = $journal->transactions()->where('account_id', $account->id)->first();
|
||||
$cache->store($transaction);
|
||||
|
||||
return $transaction;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -123,8 +166,7 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
public function getFrontpageAccounts(Preference $preference)
|
||||
{
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty($preference->data);
|
||||
$cache->addProperty('frontPageaccounts');
|
||||
$cache->addProperty('user-frontpage-accounts');
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
@ -158,6 +200,7 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
$cache->addProperty($account->id);
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty('frontpage-transactions');
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
@ -172,6 +215,7 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
->before($end)
|
||||
->after($start)
|
||||
->orderBy('transaction_journals.date', 'DESC')
|
||||
->orderBy('transaction_journals.order', 'ASC')
|
||||
->orderBy('transaction_journals.id', 'DESC')
|
||||
->take(10)
|
||||
->get(['transaction_journals.*', 'transaction_currencies.symbol', 'transaction_types.type']);
|
||||
@ -227,7 +271,7 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
|
||||
$cache = new CacheProperties;
|
||||
$cache->addProperty($ids);
|
||||
$cache->addProperty('piggyAccounts');
|
||||
$cache->addProperty('user-piggy-bank-accounts');
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
@ -320,13 +364,14 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
*/
|
||||
public function getTransfersInRange(Account $account, Carbon $start, Carbon $end)
|
||||
{
|
||||
$set = TransactionJournal::whereIn(
|
||||
$set = TransactionJournal::whereIn(
|
||||
'id', function (Builder $q) use ($account, $start, $end) {
|
||||
$q->select('transaction_journals.id')
|
||||
->from('transactions')
|
||||
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
||||
->where('transactions.account_id', $account->id)
|
||||
->where('transactions.amount', '>', 0)// this makes the filter unnecessary.
|
||||
->where('transaction_journals.user_id', Auth::user()->id)
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))
|
||||
@ -334,17 +379,8 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
|
||||
}
|
||||
)->get();
|
||||
$filtered = $set->filter(
|
||||
function (TransactionJournal $journal) use ($account) {
|
||||
if ($journal->destination_account->id == $account->id) {
|
||||
return $journal;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
);
|
||||
|
||||
return $filtered;
|
||||
return $set;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -373,12 +409,23 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
*/
|
||||
public function openingBalanceTransaction(Account $account)
|
||||
{
|
||||
return TransactionJournal
|
||||
$cache = new CacheProperties;
|
||||
$cache->addProperty($account->id);
|
||||
$cache->addProperty('opening-balance-journal');
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
|
||||
$journal = TransactionJournal
|
||||
::orderBy('transaction_journals.date', 'ASC')
|
||||
->accountIs($account)
|
||||
->transactionTypes([TransactionType::OPENING_BALANCE])
|
||||
->orderBy('created_at', 'ASC')
|
||||
->first(['transaction_journals.*']);
|
||||
$cache->store($journal);
|
||||
|
||||
return $journal;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -645,6 +692,8 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*
|
||||
* @param $accountId
|
||||
*
|
||||
* @return Account
|
||||
|
@ -27,6 +27,8 @@ interface AccountRepositoryInterface
|
||||
/**
|
||||
* @param $accountId
|
||||
*
|
||||
* @deprecated
|
||||
*
|
||||
* @return Account
|
||||
*/
|
||||
public function find($accountId);
|
||||
@ -55,9 +57,17 @@ interface AccountRepositoryInterface
|
||||
public function getFirstTransaction(TransactionJournal $journal, Account $account);
|
||||
|
||||
/**
|
||||
* This method returns the users credit cards, along with some basic information about the
|
||||
* balance they have on their CC. To be used in the JSON boxes on the front page that say
|
||||
* how many bills there are still left to pay. The balance will be saved in field "balance".
|
||||
*
|
||||
* To get the balance, the field "date" is necessary.
|
||||
*
|
||||
* @param Carbon $date
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function getCreditCards();
|
||||
public function getCreditCards(Carbon $date);
|
||||
|
||||
/**
|
||||
* Get the accounts of a user that have piggy banks connected to them.
|
||||
|
@ -9,6 +9,7 @@ use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Navigation;
|
||||
@ -22,6 +23,7 @@ use Steam;
|
||||
class BillRepository implements BillRepositoryInterface
|
||||
{
|
||||
/**
|
||||
* @deprecated
|
||||
* Returns the sum of all payments connected to this bill between the dates.
|
||||
*
|
||||
* @param Bill $bill
|
||||
@ -84,7 +86,7 @@ class BillRepository implements BillRepositoryInterface
|
||||
public function getActiveBills()
|
||||
{
|
||||
/** @var Collection $set */
|
||||
$set = Auth::user()->bills()->orderBy('name', 'ASC')->where('active', 1)->get()->sortBy('name');
|
||||
$set = Auth::user()->bills()->where('active', 1)->get()->sortBy('name');
|
||||
|
||||
return $set;
|
||||
}
|
||||
@ -496,22 +498,21 @@ class BillRepository implements BillRepositoryInterface
|
||||
{
|
||||
|
||||
$accounts = app('FireflyIII\Repositories\Account\AccountRepositoryInterface');
|
||||
$creditCards = $accounts->getCreditCards();
|
||||
$creditCards = $accounts->getCreditCards($end);
|
||||
$paid = $set->get('paid');
|
||||
$unpaid = $set->get('unpaid');
|
||||
|
||||
foreach ($creditCards as $creditCard) {
|
||||
$balance = Steam::balance($creditCard, $end, true);
|
||||
$date = new Carbon($creditCard->getMeta('ccMonthlyPaymentDate'));
|
||||
if ($balance < 0) {
|
||||
if ($creditCard->balance < 0) {
|
||||
// unpaid! create a fake bill that matches the amount.
|
||||
$description = $creditCard->name;
|
||||
$amount = $balance * -1;
|
||||
$amount = $creditCard->balance * -1;
|
||||
$fakeBill = $this->createFakeBill($description, $date, $amount);
|
||||
unset($description, $amount);
|
||||
$unpaid->push([$fakeBill, $date]);
|
||||
}
|
||||
if ($balance == 0) {
|
||||
if ($creditCard->balance == 0) {
|
||||
// find transfer(s) TO the credit card which should account for
|
||||
// anything paid. If not, the CC is not yet used.
|
||||
$journals = $accounts->getTransfersInRange($creditCard, $start, $end);
|
||||
@ -524,4 +525,32 @@ class BillRepository implements BillRepositoryInterface
|
||||
|
||||
return $set;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns all active bills which have been paid for in the given range,
|
||||
* with the field "paid" indicating how much the bill was for.
|
||||
*
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function billsPaidInRange(Carbon $start, Carbon $end)
|
||||
{
|
||||
$set = Auth::user()->bills()
|
||||
->leftJoin('transaction_journals', 'transaction_journals.bill_id', '=', 'bills.id')
|
||||
->leftJoin(
|
||||
'transactions', function (JoinClause $join) {
|
||||
$join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where('transactions.amount', '>', 0);
|
||||
}
|
||||
)
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))
|
||||
->where('bills.active', 1)
|
||||
->groupBy('bills.id')->get(
|
||||
['bills.*', DB::Raw('SUM(`transactions`.`amount`) as `paid`')]
|
||||
);
|
||||
|
||||
return $set;
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ interface BillRepositoryInterface
|
||||
public function getBillsForChart(Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* Returns the sum of all payments connected to this bill between the dates.
|
||||
*
|
||||
* @param Bill $bill
|
||||
@ -49,6 +50,17 @@ interface BillRepositoryInterface
|
||||
*/
|
||||
public function billPaymentsInRange(Bill $bill, Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* This method returns all active bills which have been paid for in the given range,
|
||||
* with the field "paid" indicating how much the bill was for.
|
||||
*
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function billsPaidInRange(Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* Create a fake bill to help the chart controller.
|
||||
*
|
||||
|
@ -14,7 +14,6 @@ use Illuminate\Database\Query\Builder as QueryBuilder;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
use Illuminate\Support\Collection;
|
||||
use Input;
|
||||
use Log;
|
||||
|
||||
/**
|
||||
* Class BudgetRepository
|
||||
@ -89,10 +88,10 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
/** @var Collection $repetitions */
|
||||
return LimitRepetition::
|
||||
leftJoin('budget_limits', 'limit_repetitions.budget_limit_id', '=', 'budget_limits.id')
|
||||
->where('limit_repetitions.startdate', '<=', $end->format('Y-m-d 00:00:00'))
|
||||
->where('limit_repetitions.startdate', '>=', $start->format('Y-m-d 00:00:00'))
|
||||
->where('budget_limits.budget_id', $budget->id)
|
||||
->get(['limit_repetitions.*']);
|
||||
->where('limit_repetitions.startdate', '<=', $end->format('Y-m-d 00:00:00'))
|
||||
->where('limit_repetitions.startdate', '>=', $start->format('Y-m-d 00:00:00'))
|
||||
->where('budget_limits.budget_id', $budget->id)
|
||||
->get(['limit_repetitions.*']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -141,9 +140,9 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
$data = $budget->limitrepetitions()
|
||||
->where('limit_repetitions.startdate', $start->format('Y-m-d 00:00:00'))
|
||||
->where('limit_repetitions.enddate', $end->format('Y-m-d 00:00:00'))
|
||||
->first(['limit_repetitions.*']);
|
||||
->where('limit_repetitions.startdate', $start->format('Y-m-d 00:00:00'))
|
||||
->where('limit_repetitions.enddate', $end->format('Y-m-d 00:00:00'))
|
||||
->first(['limit_repetitions.*']);
|
||||
//Log::debug('Looking for limit reps for budget #' . $budget->id . ' start [' . $start . '] and end [' . $end . '].');
|
||||
//Log::debug(DB::getQueryLog())
|
||||
$cache->store($data);
|
||||
@ -186,9 +185,9 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
/**
|
||||
* Returns all the transaction journals for a limit, possibly limited by a limit repetition.
|
||||
*
|
||||
* @param Budget $budget
|
||||
* @param Budget $budget
|
||||
* @param LimitRepetition $repetition
|
||||
* @param int $take
|
||||
* @param int $take
|
||||
*
|
||||
* @return LengthAwarePaginator
|
||||
*/
|
||||
@ -205,11 +204,11 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
$offset = intval(Input::get('page')) > 0 ? intval(Input::get('page')) * $take : 0;
|
||||
$setQuery = $budget->transactionJournals()->withRelevantData()->take($take)->offset($offset)
|
||||
->orderBy('transaction_journals.date', 'DESC')
|
||||
->orderBy('transaction_journals.order', 'ASC')
|
||||
->orderBy('transaction_journals.id', 'DESC');
|
||||
$offset = intval(Input::get('page')) > 0 ? intval(Input::get('page')) * $take : 0;
|
||||
$setQuery = $budget->transactionJournals()->withRelevantData()->take($take)->offset($offset)
|
||||
->orderBy('transaction_journals.date', 'DESC')
|
||||
->orderBy('transaction_journals.order', 'ASC')
|
||||
->orderBy('transaction_journals.id', 'DESC');
|
||||
$countQuery = $budget->transactionJournals();
|
||||
|
||||
|
||||
@ -219,7 +218,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
}
|
||||
|
||||
|
||||
$set = $setQuery->get(['transaction_journals.*']);
|
||||
$set = $setQuery->get(['transaction_journals.*']);
|
||||
$count = $countQuery->count();
|
||||
|
||||
|
||||
@ -230,6 +229,8 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*
|
||||
* @param Budget $budget
|
||||
*
|
||||
* @return Carbon
|
||||
@ -245,6 +246,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @param Budget $budget
|
||||
* @param Carbon $date
|
||||
*
|
||||
@ -253,9 +255,9 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
public function getLimitAmountOnDate(Budget $budget, Carbon $date)
|
||||
{
|
||||
$repetition = LimitRepetition::leftJoin('budget_limits', 'limit_repetitions.budget_limit_id', '=', 'budget_limits.id')
|
||||
->where('limit_repetitions.startdate', $date->format('Y-m-d 00:00:00'))
|
||||
->where('budget_limits.budget_id', $budget->id)
|
||||
->first(['limit_repetitions.*']);
|
||||
->where('limit_repetitions.startdate', $date->format('Y-m-d 00:00:00'))
|
||||
->where('budget_limits.budget_id', $budget->id)
|
||||
->first(['limit_repetitions.*']);
|
||||
|
||||
if ($repetition) {
|
||||
return $repetition->amount;
|
||||
@ -273,15 +275,15 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
public function getWithoutBudget(Carbon $start, Carbon $end)
|
||||
{
|
||||
return Auth::user()
|
||||
->transactionjournals()
|
||||
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->whereNull('budget_transaction_journal.id')
|
||||
->before($end)
|
||||
->after($start)
|
||||
->orderBy('transaction_journals.date', 'DESC')
|
||||
->orderBy('transaction_journals.order', 'ASC')
|
||||
->orderBy('transaction_journals.id', 'DESC')
|
||||
->get(['transaction_journals.*']);
|
||||
->transactionjournals()
|
||||
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->whereNull('budget_transaction_journal.id')
|
||||
->before($end)
|
||||
->after($start)
|
||||
->orderBy('transaction_journals.date', 'DESC')
|
||||
->orderBy('transaction_journals.order', 'ASC')
|
||||
->orderBy('transaction_journals.id', 'DESC')
|
||||
->get(['transaction_journals.*']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -293,50 +295,37 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
public function getWithoutBudgetSum(Carbon $start, Carbon $end)
|
||||
{
|
||||
$noBudgetSet = Auth::user()
|
||||
->transactionjournals()
|
||||
->whereNotIn(
|
||||
'transaction_journals.id', function (QueryBuilder $query) use ($start, $end) {
|
||||
$query
|
||||
->select('transaction_journals.id')
|
||||
->from('transaction_journals')
|
||||
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d 00:00:00'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d 00:00:00'))
|
||||
->whereNotNull('budget_transaction_journal.budget_id');
|
||||
}
|
||||
)
|
||||
->after($start)
|
||||
->before($end)
|
||||
->transactionTypes([TransactionType::WITHDRAWAL])
|
||||
->get(['transaction_journals.*'])->sum('amount');
|
||||
->transactionjournals()
|
||||
->whereNotIn(
|
||||
'transaction_journals.id', function (QueryBuilder $query) use ($start, $end) {
|
||||
$query
|
||||
->select('transaction_journals.id')
|
||||
->from('transaction_journals')
|
||||
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d 00:00:00'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d 00:00:00'))
|
||||
->whereNotNull('budget_transaction_journal.budget_id');
|
||||
}
|
||||
)
|
||||
->after($start)
|
||||
->before($end)
|
||||
->transactionTypes([TransactionType::WITHDRAWAL])
|
||||
->get(['transaction_journals.*'])->sum('amount');
|
||||
|
||||
return $noBudgetSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Budget $budget
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
* @param Budget $budget
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
* @param Collection $accounts
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriodForList(Budget $budget, Carbon $start, Carbon $end, Collection $accounts)
|
||||
public function balanceInPeriod(Budget $budget, Carbon $start, Carbon $end, Collection $accounts)
|
||||
{
|
||||
return $this->commonBalanceInPeriodForList($budget, $start, $end, $accounts);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Budget $budget
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
* @param bool $shared
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriod(Budget $budget, Carbon $start, Carbon $end, $shared = true)
|
||||
{
|
||||
return $this->commonBalanceInPeriod($budget, $start, $end, $shared);
|
||||
return $this->commonBalanceInPeriod($budget, $start, $end, $accounts);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -349,7 +338,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
$newBudget = new Budget(
|
||||
[
|
||||
'user_id' => $data['user'],
|
||||
'name' => $data['name'],
|
||||
'name' => $data['name'],
|
||||
]
|
||||
);
|
||||
$newBudget->save();
|
||||
@ -360,14 +349,14 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
|
||||
/**
|
||||
* @param Budget $budget
|
||||
* @param array $data
|
||||
* @param array $data
|
||||
*
|
||||
* @return Budget
|
||||
*/
|
||||
public function update(Budget $budget, array $data)
|
||||
{
|
||||
// update the account:
|
||||
$budget->name = $data['name'];
|
||||
$budget->name = $data['name'];
|
||||
$budget->active = $data['active'];
|
||||
$budget->save();
|
||||
|
||||
@ -391,10 +380,10 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
|
||||
// if not, create one!
|
||||
$limit = new BudgetLimit;
|
||||
$limit->budget()->associate($budget);
|
||||
$limit->startdate = $date;
|
||||
$limit->amount = $amount;
|
||||
$limit->startdate = $date;
|
||||
$limit->amount = $amount;
|
||||
$limit->repeat_freq = 'monthly';
|
||||
$limit->repeats = 0;
|
||||
$limit->repeats = 0;
|
||||
$limit->save();
|
||||
|
||||
// likewise, there should be a limit repetition to match the end date
|
||||
|
@ -96,6 +96,7 @@ interface BudgetRepositoryInterface
|
||||
public function getJournals(Budget $budget, LimitRepetition $repetition = null, $take = 50);
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @param Budget $budget
|
||||
*
|
||||
* @return Carbon
|
||||
@ -103,6 +104,7 @@ interface BudgetRepositoryInterface
|
||||
public function getLastBudgetLimitDate(Budget $budget);
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @param Budget $budget
|
||||
* @param Carbon $date
|
||||
*
|
||||
@ -126,19 +128,6 @@ interface BudgetRepositoryInterface
|
||||
*/
|
||||
public function getWithoutBudgetSum(Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
*
|
||||
* Same as ::spentInPeriod but corrects journals for their amount (tags).
|
||||
*
|
||||
* @param Budget $budget
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
* @param boolean $shared
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriod(Budget $budget, Carbon $start, Carbon $end, $shared = true);
|
||||
|
||||
/**
|
||||
*
|
||||
* Same as ::spentInPeriod but corrects journals for a set of accounts
|
||||
@ -150,7 +139,7 @@ interface BudgetRepositoryInterface
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriodForList(Budget $budget, Carbon $start, Carbon $end, Collection $accounts);
|
||||
public function balanceInPeriod(Budget $budget, Carbon $start, Carbon $end, Collection $accounts);
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
|
@ -5,11 +5,13 @@ namespace FireflyIII\Repositories\Category;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use Crypt;
|
||||
use DB;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Repositories\Shared\ComponentRepository;
|
||||
use FireflyIII\Support\CacheProperties;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
/**
|
||||
@ -48,6 +50,13 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
|
||||
*/
|
||||
public function getCategories()
|
||||
{
|
||||
$cache = new CacheProperties;
|
||||
$cache->addProperty('category-list');
|
||||
|
||||
if($cache->has()) {
|
||||
return $cache->get();
|
||||
}
|
||||
|
||||
/** @var Collection $set */
|
||||
$set = Auth::user()->categories()->orderBy('name', 'ASC')->get();
|
||||
$set = $set->sortBy(
|
||||
@ -56,6 +65,8 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
|
||||
}
|
||||
);
|
||||
|
||||
$cache->store($set);
|
||||
|
||||
return $set;
|
||||
}
|
||||
|
||||
@ -242,20 +253,6 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
|
||||
->get(['transaction_journals.*']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Category $category
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*
|
||||
* @param bool $shared
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriod(Category $category, Carbon $start, Carbon $end, $shared = false)
|
||||
{
|
||||
return $this->commonBalanceInPeriod($category, $start, $end, $shared);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Category $category
|
||||
* @param Carbon $start
|
||||
@ -264,9 +261,9 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriodForList(Category $category, Carbon $start, Carbon $end, Collection $accounts)
|
||||
public function balanceInPeriod(Category $category, Carbon $start, Carbon $end, Collection $accounts)
|
||||
{
|
||||
return $this->commonBalanceInPeriodForList($category, $start, $end, $accounts);
|
||||
return $this->commonBalanceInPeriod($category, $start, $end, $accounts);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -316,6 +313,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* This method returns the sum of the journals in the category, optionally
|
||||
* limited by a start or end date.
|
||||
*
|
||||
@ -478,6 +476,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
|
||||
->transactionTypes([TransactionType::WITHDRAWAL])
|
||||
->get(['transaction_journals.*'])
|
||||
->sum('amount');
|
||||
|
||||
return $sum;
|
||||
|
||||
}
|
||||
@ -508,7 +507,102 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
|
||||
->after($start)
|
||||
->get(['transaction_journals.*'])
|
||||
->sum('amount');
|
||||
|
||||
return $sum;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a collection of Categories appended with the amount of money that has been earned
|
||||
* in these categories, based on the $accounts involved, in period X.
|
||||
* The amount earned in category X in period X is saved in field "earned".
|
||||
*
|
||||
* @param $accounts
|
||||
* @param $start
|
||||
* @param $end
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function earnedForAccounts(Collection $accounts, Carbon $start, Carbon $end)
|
||||
{
|
||||
$accountIds = [];
|
||||
foreach ($accounts as $account) {
|
||||
$accountIds[] = $account->id;
|
||||
}
|
||||
|
||||
|
||||
$collection = Auth::user()->categories()
|
||||
->leftJoin('category_transaction_journal', 'category_transaction_journal.category_id', '=', 'categories.id')
|
||||
->leftJoin('transaction_journals', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
||||
->leftJoin(
|
||||
'transactions AS t_src', function (JoinClause $join) {
|
||||
$join->on('t_src.transaction_journal_id', '=', 'transaction_journals.id')->where('t_src.amount', '<', 0);
|
||||
}
|
||||
)
|
||||
->leftJoin(
|
||||
'transactions AS t_dest', function (JoinClause $join) {
|
||||
$join->on('t_dest.transaction_journal_id', '=', 'transaction_journals.id')->where('t_dest.amount', '>', 0);
|
||||
}
|
||||
)
|
||||
->whereIn('t_dest.account_id', $accountIds)// to these accounts (earned)
|
||||
->whereNotIn('t_src.account_id', $accountIds)//-- but not from these accounts
|
||||
->whereIn(
|
||||
'transaction_types.type', [TransactionType::DEPOSIT, TransactionType::TRANSFER, TransactionType::OPENING_BALANCE]
|
||||
)// earned from these things.
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))
|
||||
->groupBy('categories.id')
|
||||
->get(['categories.*', DB::Raw('SUM(`t_dest`.`amount`) AS `earned`')]);
|
||||
|
||||
return $collection;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a collection of Categories appended with the amount of money that has been spent
|
||||
* in these categories, based on the $accounts involved, in period X.
|
||||
* The amount earned in category X in period X is saved in field "spent".
|
||||
*
|
||||
* @param $accounts
|
||||
* @param $start
|
||||
* @param $end
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function spentForAccounts(Collection $accounts, Carbon $start, Carbon $end)
|
||||
{
|
||||
$accountIds = [];
|
||||
foreach ($accounts as $account) {
|
||||
$accountIds[] = $account->id;
|
||||
}
|
||||
|
||||
|
||||
$collection = Auth::user()->categories()
|
||||
->leftJoin('category_transaction_journal', 'category_transaction_journal.category_id', '=', 'categories.id')
|
||||
->leftJoin('transaction_journals', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
||||
->leftJoin(
|
||||
'transactions AS t_src', function (JoinClause $join) {
|
||||
$join->on('t_src.transaction_journal_id', '=', 'transaction_journals.id')->where('t_src.amount', '<', 0);
|
||||
}
|
||||
)
|
||||
->leftJoin(
|
||||
'transactions AS t_dest', function (JoinClause $join) {
|
||||
$join->on('t_dest.transaction_journal_id', '=', 'transaction_journals.id')->where('t_dest.amount', '>', 0);
|
||||
}
|
||||
)
|
||||
->whereIn('t_src.account_id', $accountIds)// from these accounts (spent)
|
||||
->whereNotIn('t_dest.account_id', $accountIds)//-- but not from these accounts (spent internally)
|
||||
->whereIn(
|
||||
'transaction_types.type', [TransactionType::WITHDRAWAL, TransactionType::TRANSFER, TransactionType::OPENING_BALANCE]
|
||||
)// spent on these things.
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))
|
||||
->groupBy('categories.id')
|
||||
->get(['categories.*', DB::Raw('SUM(`t_dest`.`amount`) AS `spent`')]);
|
||||
|
||||
return $collection;
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,32 @@ interface CategoryRepositoryInterface
|
||||
*/
|
||||
public function destroy(Category $category);
|
||||
|
||||
/**
|
||||
* Returns a collection of Categories appended with the amount of money that has been earned
|
||||
* in these categories, based on the $accounts involved, in period X.
|
||||
* The amount earned in category X in period X is saved in field "earned".
|
||||
*
|
||||
* @param $accounts
|
||||
* @param $start
|
||||
* @param $end
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function earnedForAccounts(Collection $accounts, Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* Returns a collection of Categories appended with the amount of money that has been spent
|
||||
* in these categories, based on the $accounts involved, in period X.
|
||||
* The amount earned in category X in period X is saved in field "spent".
|
||||
*
|
||||
* @param $accounts
|
||||
* @param $start
|
||||
* @param $end
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function spentForAccounts(Collection $accounts, Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* @return Collection
|
||||
*/
|
||||
@ -120,6 +146,7 @@ interface CategoryRepositoryInterface
|
||||
public function getJournalsInRange(Category $category, $page, Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* This method returns the sum of the journals in the category, optionally
|
||||
* limited by a start or end date.
|
||||
*
|
||||
@ -147,21 +174,7 @@ interface CategoryRepositoryInterface
|
||||
public function getWithoutCategory(Carbon $start, Carbon $end);
|
||||
|
||||
/**
|
||||
* Corrected for tags.
|
||||
*
|
||||
* @param Category $category
|
||||
* @param \Carbon\Carbon $start
|
||||
* @param \Carbon\Carbon $end
|
||||
*
|
||||
* @param bool $shared
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriod(Category $category, Carbon $start, Carbon $end, $shared = false);
|
||||
|
||||
|
||||
/**
|
||||
* Corrected for tags.
|
||||
* Corrected for tags and list of accounts.
|
||||
*
|
||||
* @param Category $category
|
||||
* @param \Carbon\Carbon $start
|
||||
@ -170,7 +183,7 @@ interface CategoryRepositoryInterface
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function balanceInPeriodForList(Category $category, Carbon $start, Carbon $end, Collection $accounts);
|
||||
public function balanceInPeriod(Category $category, Carbon $start, Carbon $end, Collection $accounts);
|
||||
|
||||
/**
|
||||
* @param Category $category
|
||||
|
@ -13,6 +13,7 @@ use FireflyIII\Models\Tag;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Support\CacheProperties;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
@ -44,7 +45,16 @@ class JournalRepository implements JournalRepositoryInterface
|
||||
*/
|
||||
public function first()
|
||||
{
|
||||
return Auth::user()->transactionjournals()->orderBy('date', 'ASC')->first(['transaction_journals.*']);
|
||||
$cache = new CacheProperties;
|
||||
$cache->addProperty('user-first-journal');
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
$entry = Auth::user()->transactionjournals()->orderBy('date', 'ASC')->first(['transaction_journals.*']);
|
||||
$cache->store($entry);
|
||||
|
||||
return $entry;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -164,7 +174,7 @@ class JournalRepository implements JournalRepositoryInterface
|
||||
[
|
||||
'user_id' => $data['user'],
|
||||
'transaction_type_id' => $transactionType->id,
|
||||
'transaction_currency_id' => $data['amount_currency_id'],
|
||||
'transaction_currency_id' => $data['amount_currency_id_amount'],
|
||||
'description' => $data['description'],
|
||||
'completed' => 0,
|
||||
'date' => $data['date'],
|
||||
|
@ -1,149 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace FireflyIII\Repositories\PiggyBank;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Models\PiggyBankRepetition;
|
||||
|
||||
/**
|
||||
* Class PiggyBankPart
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @package FireflyIII\Collection
|
||||
*/
|
||||
class PiggyBankPart
|
||||
{
|
||||
/** @var float */
|
||||
public $amountPerBar;
|
||||
/** @var float */
|
||||
public $cumulativeAmount;
|
||||
/** @var float */
|
||||
public $currentamount;
|
||||
|
||||
/** @var PiggyBankRepetition */
|
||||
public $repetition;
|
||||
|
||||
/** @var Carbon */
|
||||
public $startdate;
|
||||
|
||||
/** @var Carbon */
|
||||
public $targetdate;
|
||||
|
||||
/**
|
||||
* @return PiggyBankRepetition
|
||||
*/
|
||||
public function getRepetition()
|
||||
{
|
||||
return $this->repetition;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PiggyBankRepetition $repetition
|
||||
*/
|
||||
public function setRepetition($repetition)
|
||||
{
|
||||
$this->repetition = $repetition;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Carbon
|
||||
*/
|
||||
public function getStartdate()
|
||||
{
|
||||
return $this->startdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Carbon $startdate
|
||||
*/
|
||||
public function setStartdate($startdate)
|
||||
{
|
||||
$this->startdate = $startdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Carbon
|
||||
*/
|
||||
public function getTargetdate()
|
||||
{
|
||||
return $this->targetdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Carbon $targetdate
|
||||
*/
|
||||
public function setTargetdate($targetdate)
|
||||
{
|
||||
$this->targetdate = $targetdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float|int
|
||||
*/
|
||||
public function percentage()
|
||||
{
|
||||
bcscale(2);
|
||||
if ($this->getCurrentamount() < $this->getCumulativeAmount()) {
|
||||
$pct = 0;
|
||||
// calculate halfway point?
|
||||
if (bcsub($this->getCumulativeAmount(), $this->getCurrentamount()) < $this->getAmountPerBar()) {
|
||||
$left = $this->getCurrentamount() % $this->getAmountPerBar();
|
||||
$pct = round($left / $this->getAmountPerBar() * 100);
|
||||
}
|
||||
|
||||
return $pct;
|
||||
} else {
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getCurrentamount()
|
||||
{
|
||||
return $this->currentamount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $currentamount
|
||||
*/
|
||||
public function setCurrentamount($currentamount)
|
||||
{
|
||||
$this->currentamount = $currentamount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getCumulativeAmount()
|
||||
{
|
||||
return $this->cumulativeAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $cumulativeAmount
|
||||
*/
|
||||
public function setCumulativeAmount($cumulativeAmount)
|
||||
{
|
||||
$this->cumulativeAmount = $cumulativeAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getAmountPerBar()
|
||||
{
|
||||
return $this->amountPerBar;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $amountPerBar
|
||||
*/
|
||||
public function setAmountPerBar($amountPerBar)
|
||||
{
|
||||
$this->amountPerBar = $amountPerBar;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -17,55 +17,6 @@ use Illuminate\Support\Collection;
|
||||
class ComponentRepository
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @param $object
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*
|
||||
* @param bool $shared
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function commonBalanceInPeriod($object, Carbon $start, Carbon $end, $shared = false)
|
||||
{
|
||||
$cache = new CacheProperties; // we must cache this.
|
||||
$cache->addProperty($object->id);
|
||||
$cache->addProperty(get_class($object));
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty($shared);
|
||||
$cache->addProperty('balanceInPeriod');
|
||||
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
if ($shared === true) { // shared is true: always ignore transfers between accounts!
|
||||
$sum = $object->transactionjournals()
|
||||
->transactionTypes([TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::OPENING_BALANCE])
|
||||
->before($end)
|
||||
->after($start)
|
||||
->get(['transaction_journals.*'])->sum('amount');
|
||||
} else {
|
||||
// do something else, SEE budgets.
|
||||
// get all journals in this month where the asset account is NOT shared.
|
||||
$sum = $object->transactionjournals()->before($end)->after($start)
|
||||
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
|
||||
->transactionTypes([TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::OPENING_BALANCE])
|
||||
->leftJoin(
|
||||
'account_meta', function (JoinClause $join) {
|
||||
$join->on('account_meta.account_id', '=', 'accounts.id')->where('account_meta.name', '=', 'accountRole');
|
||||
}
|
||||
)->where('account_meta.data', '!=', '"sharedAsset"')->get(['transaction_journals.*'])->sum('amount');
|
||||
}
|
||||
|
||||
$cache->store($sum);
|
||||
|
||||
return $sum;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $object
|
||||
* @param Carbon $start
|
||||
@ -74,7 +25,7 @@ class ComponentRepository
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function commonBalanceInPeriodForList($object, Carbon $start, Carbon $end, Collection $accounts)
|
||||
protected function commonBalanceInPeriod($object, Carbon $start, Carbon $end, Collection $accounts)
|
||||
{
|
||||
$cache = new CacheProperties; // we must cache this.
|
||||
$cache->addProperty($object->id);
|
||||
|
@ -9,6 +9,7 @@ use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Tag;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Support\CacheProperties;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
/**
|
||||
@ -54,6 +55,7 @@ class TagRepository implements TagRepositoryInterface
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* This method scans the transaction journals from or to the given asset account
|
||||
* and checks if these are part of a balancing act. If so, it will sum up the amounts
|
||||
* transferred into the balancing act (if any) and return this amount.
|
||||
@ -77,7 +79,9 @@ class TagRepository implements TagRepositoryInterface
|
||||
|
||||
/** @var Tag $tag */
|
||||
foreach ($tags as $tag) {
|
||||
$journals = $tag->transactionjournals()->after($start)->before($end)->transactionTypes([TransactionType::TRANSFER])->get(['transaction_journals.*']);
|
||||
$journals = $tag->transactionjournals()->after($start)->before($end)->transactionTypes([TransactionType::TRANSFER])->get(
|
||||
['transaction_journals.*']
|
||||
);
|
||||
|
||||
/** @var TransactionJournal $journal */
|
||||
foreach ($journals as $journal) {
|
||||
@ -108,6 +112,13 @@ class TagRepository implements TagRepositoryInterface
|
||||
*/
|
||||
public function get()
|
||||
{
|
||||
$cache = new CacheProperties;
|
||||
$cache->addProperty('tags-list');
|
||||
|
||||
if ($cache->has()) {
|
||||
return $cache->get();
|
||||
}
|
||||
|
||||
/** @var Collection $tags */
|
||||
$tags = Auth::user()->tags()->get();
|
||||
$tags = $tags->sortBy(
|
||||
@ -116,6 +127,8 @@ class TagRepository implements TagRepositoryInterface
|
||||
}
|
||||
);
|
||||
|
||||
$cache->store($tags);
|
||||
|
||||
return $tags;
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,7 @@ interface TagRepositoryInterface
|
||||
public function connect(TransactionJournal $journal, Tag $tag);
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* This method scans the transaction journals from or to the given asset account
|
||||
* and checks if these are part of a balancing act. If so, it will sum up the amounts
|
||||
* transferred into the balancing act (if any) and return this amount.
|
||||
|
@ -40,7 +40,7 @@ class Amount
|
||||
if ($cache->has()) {
|
||||
return $cache->get();
|
||||
} else {
|
||||
$currencyPreference = Prefs::get('currencyPreference', env('DEFAULT_CURRENCY','EUR'));
|
||||
$currencyPreference = Prefs::get('currencyPreference', env('DEFAULT_CURRENCY', 'EUR'));
|
||||
$currency = TransactionCurrency::whereCode($currencyPreference->data)->first();
|
||||
|
||||
$cache->store($currency->symbol);
|
||||
@ -152,7 +152,7 @@ class Amount
|
||||
if ($cache->has()) {
|
||||
return $cache->get();
|
||||
} else {
|
||||
$currencyPreference = Prefs::get('currencyPreference', env('DEFAULT_CURRENCY','EUR'));
|
||||
$currencyPreference = Prefs::get('currencyPreference', env('DEFAULT_CURRENCY', 'EUR'));
|
||||
|
||||
$currency = TransactionCurrency::whereCode($currencyPreference->data)->first();
|
||||
if ($currency) {
|
||||
@ -161,9 +161,9 @@ class Amount
|
||||
|
||||
return $currency->code;
|
||||
}
|
||||
$cache->store(env('DEFAULT_CURRENCY','EUR'));
|
||||
$cache->store(env('DEFAULT_CURRENCY', 'EUR'));
|
||||
|
||||
return env('DEFAULT_CURRENCY','EUR'); // @codeCoverageIgnore
|
||||
return env('DEFAULT_CURRENCY', 'EUR'); // @codeCoverageIgnore
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -72,6 +72,54 @@ class Steam
|
||||
return round($balance, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the balance for the given account during the whole range, using this format:
|
||||
*
|
||||
* [yyyy-mm-dd] => 123,2
|
||||
*
|
||||
* @param Account $account
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*/
|
||||
public function balanceInRange(Account $account, Carbon $start, Carbon $end)
|
||||
{
|
||||
// abuse chart properties:
|
||||
$cache = new CacheProperties;
|
||||
$cache->addProperty($account->id);
|
||||
$cache->addProperty('balance-in-range');
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
if ($cache->has()) {
|
||||
return $cache->get(); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
$balances = [];
|
||||
$start->subDay();
|
||||
$end->addDay();
|
||||
$startBalance = $this->balance($account, $start);
|
||||
$balances[$start->format('Y-m-d')] = $startBalance;
|
||||
$start->addDay();
|
||||
|
||||
// query!
|
||||
$set = $account->transactions()
|
||||
->leftJoin('transaction_journals', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))
|
||||
->groupBy('transaction_journals.date')
|
||||
->get(['transaction_journals.date', DB::Raw('SUM(`transactions`.`amount`) as `modified`')]);
|
||||
$currentBalance = $startBalance;
|
||||
foreach ($set as $entry) {
|
||||
$currentBalance = bcadd($currentBalance, $entry->modified);
|
||||
$balances[$entry->date] = $currentBalance;
|
||||
}
|
||||
|
||||
$cache->store($balances);
|
||||
|
||||
return $balances;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array $ids
|
||||
|
@ -273,7 +273,7 @@ class FireflyValidator extends Validator
|
||||
|
||||
// get entries from table
|
||||
$set = DB::table($table)->where('user_id', Auth::user()->id)
|
||||
->where('id', '!=', $exclude)->get([$field]);
|
||||
->where('id', '!=', $exclude)->get([$field]);
|
||||
|
||||
foreach ($set as $entry) {
|
||||
$fieldValue = $this->tryDecrypt($entry->$field);
|
||||
|
@ -52,7 +52,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'locale' => 'en',
|
||||
'locale' => 'en_US',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@ -65,7 +65,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'fallback_locale' => 'en',
|
||||
'fallback_locale' => 'en_US',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
@ -1,20 +1,20 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'chart' => 'chartjs',
|
||||
'version' => '3.5.4',
|
||||
'index_periods' => ['1D', '1W', '1M', '3M', '6M', '1Y', 'custom'],
|
||||
'budget_periods' => ['daily', 'weekly', 'monthly', 'quarterly', 'half-year', 'yearly'],
|
||||
'csv_import_enabled' => true,
|
||||
'maxUploadSize' => 5242880,
|
||||
'allowedMimes' => ['image/png', 'image/jpeg', 'application/pdf'],
|
||||
'piggy_bank_periods' => [
|
||||
'chart' => 'chartjs',
|
||||
'version' => '3.5.5',
|
||||
'index_periods' => ['1D', '1W', '1M', '3M', '6M', '1Y', 'custom'],
|
||||
'budget_periods' => ['daily', 'weekly', 'monthly', 'quarterly', 'half-year', 'yearly'],
|
||||
'csv_import_enabled' => true,
|
||||
'maxUploadSize' => 5242880,
|
||||
'allowedMimes' => ['image/png', 'image/jpeg', 'application/pdf'],
|
||||
'piggy_bank_periods' => [
|
||||
'week' => 'Week',
|
||||
'month' => 'Month',
|
||||
'quarter' => 'Quarter',
|
||||
'year' => 'Year'
|
||||
],
|
||||
'periods_to_text' => [
|
||||
'periods_to_text' => [
|
||||
'weekly' => 'A week',
|
||||
'monthly' => 'A month',
|
||||
'quarterly' => 'A quarter',
|
||||
@ -22,7 +22,7 @@ return [
|
||||
'yearly' => 'A year',
|
||||
],
|
||||
|
||||
'accountRoles' => [
|
||||
'accountRoles' => [
|
||||
'defaultAsset' => 'Default asset account',
|
||||
'sharedAsset' => 'Shared asset account',
|
||||
'savingAsset' => 'Savings account',
|
||||
@ -98,13 +98,23 @@ return [
|
||||
'Revenue account' => 'revenue',
|
||||
'Cash account' => 'cash',
|
||||
],
|
||||
'languages' => [
|
||||
'en_US' => ['name_locale' => 'English', 'name_english' => 'English', 'complete' => true],
|
||||
'nl_NL' => ['name_locale' => 'Nederlands', 'name_english' => 'Dutch', 'complete' => true],
|
||||
'pt_BR' => ['name_locale' => 'Português do Brasil', 'name_english' => 'Portugese (Brazil)', 'complete' => false],
|
||||
'fr_FR' => ['name_locale' => 'Français', 'name_english' => 'French', 'complete' => false],
|
||||
],
|
||||
'lang' => [
|
||||
'en' => 'English',
|
||||
'nl' => 'Nederlands'
|
||||
'en_US' => 'English',
|
||||
'nl_NL' => 'Nederlands',
|
||||
'fr_FR' => 'Français',
|
||||
'pt_BR' => 'Português do Brasil',
|
||||
],
|
||||
'locales' => [
|
||||
'en' => ['en', 'English', 'en_US', 'en_US.utf8'],
|
||||
'nl' => ['nl', 'Dutch', 'nl_NL', 'nl_NL.utf8'],
|
||||
'en_US' => ['en', 'English', 'en_US', 'en_US.utf8'],
|
||||
'nl_NL' => ['nl', 'Dutch', 'nl_NL', 'nl_NL.utf8'],
|
||||
'pt_BR' => ['pt_BR', 'pt_BR.utf8'],
|
||||
'fr_FR' => ['fr_FR', 'fr_FR.utf8'],
|
||||
],
|
||||
'transactionTypesByWhat' => [
|
||||
'expenses' => ['Withdrawal'],
|
||||
@ -124,13 +134,17 @@ return [
|
||||
|
||||
],
|
||||
|
||||
'month' => [
|
||||
'en' => '%B %Y',
|
||||
'nl' => '%B %Y',
|
||||
'month' => [
|
||||
'en_US' => '%B %Y',
|
||||
'nl_NL' => '%B %Y',
|
||||
'fr_FR' => '%B %Y',
|
||||
'pt_BR' => '%B %Y',
|
||||
],
|
||||
'monthAndDay' => [
|
||||
'en' => '%B %e, %Y',
|
||||
'nl' => '%e %B %Y',
|
||||
'monthAndDay' => [
|
||||
'en_US' => '%B %e, %Y',
|
||||
'nl_NL' => '%e %B %Y',
|
||||
'fr_FR' => '%B %e, %Y',
|
||||
'pt_BR' => '%B %e, %Y',
|
||||
],
|
||||
|
||||
];
|
||||
|
4
public/dist/css/AdminLTE.min.css
vendored
4
public/dist/css/AdminLTE.min.css
vendored
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom-left-radius:2px !important}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0 !important;border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
|
||||
.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
|
BIN
public/dist/img/icons.png
vendored
BIN
public/dist/img/icons.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.1 KiB |
4
public/dist/js/app.min.js
vendored
4
public/dist/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
/* globals $, Chart, currencySymbol */
|
||||
/* globals $, Chart, currencySymbol,mon_decimal_point ,accounting, mon_thousands_sep, frac_digits */
|
||||
|
||||
/*
|
||||
Make some colours:
|
||||
@ -29,16 +29,16 @@ accounting.settings = {
|
||||
currency: {
|
||||
symbol : currencySymbol, // default currency symbol is '$'
|
||||
format: "%s %v", // controls output: %s = symbol, %v = value/number (can be object: see below)
|
||||
decimal : ",", // decimal point separator
|
||||
thousand: ".", // thousands separator
|
||||
precision : 2 // decimal places
|
||||
decimal : mon_decimal_point, // decimal point separator
|
||||
thousand: mon_thousands_sep, // thousands separator
|
||||
precision : frac_digits // decimal places
|
||||
},
|
||||
number: {
|
||||
precision : 0, // default precision on numbers is 0
|
||||
thousand: ",",
|
||||
decimal : "."
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var fillColors = [];
|
||||
|
@ -1,7 +1,9 @@
|
||||
/* globals token, dateRangeConfig, $, */
|
||||
$(function () {
|
||||
"use strict";
|
||||
$('.currencySelect').click(currencySelect);
|
||||
|
||||
// when you click on a currency, this happens:
|
||||
$('.currency-option').click(currencySelect);
|
||||
|
||||
var ranges = {};
|
||||
// range for the current month:
|
||||
@ -62,21 +64,51 @@ $(function () {
|
||||
|
||||
function currencySelect(e) {
|
||||
"use strict";
|
||||
var target = $(e.target);
|
||||
// clicked on
|
||||
var target = $(e.target); // target is the <A> tag.
|
||||
|
||||
// name of the field in question:
|
||||
var name = target.data('name');
|
||||
|
||||
// id of menu button (used later on):
|
||||
var menuID = 'currency_dropdown_' + name;
|
||||
|
||||
// the hidden input with the actual value of the selected currency:
|
||||
var hiddenInputName = 'amount_currency_id_' + target.data('name');
|
||||
|
||||
// span with the current selection (next to the caret):
|
||||
var spanId = 'currency_select_symbol_' + target.data('name');
|
||||
|
||||
// the selected currency symbol:
|
||||
var symbol = target.data('symbol');
|
||||
var code = target.data('code');
|
||||
|
||||
// id of the selected currency.
|
||||
var id = target.data('id');
|
||||
var fieldType = target.data('field');
|
||||
var menu = $('.' + fieldType + 'CurrencyDropdown');
|
||||
|
||||
var symbolHolder = $('#' + fieldType + 'CurrentSymbol');
|
||||
symbolHolder.text(symbol);
|
||||
$('input[name="' + fieldType + '_currency_id"]').val(id);
|
||||
// update the hidden input:
|
||||
$('input[name="' + hiddenInputName + '"]').val(id);
|
||||
|
||||
// close dropdown (hack hack)
|
||||
menu.click();
|
||||
// update the symbol:
|
||||
$('#' + spanId).text(symbol);
|
||||
|
||||
// close the menu (hack hack)
|
||||
$('#' + menuID).click();
|
||||
|
||||
|
||||
return false;
|
||||
|
||||
//var code = target.data('code');
|
||||
//var fieldType = target.data('field');
|
||||
//var menu = $('.' + fieldType + 'CurrencyDropdown');
|
||||
//
|
||||
//var symbolHolder = $('#' + fieldType + 'CurrentSymbol');
|
||||
//symbolHolder.text(symbol);
|
||||
//$('input[name="' + fieldType + '_currency_id"]').val(id);
|
||||
//
|
||||
// close dropdown (hack hack)
|
||||
//menu.click();
|
||||
|
||||
|
||||
//return false;
|
||||
}
|
||||
|
||||
|
@ -115,10 +115,6 @@ function drawChart() {
|
||||
stackedColumnChart('chart/category/earned-in-year/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'categories-earned-in-year');
|
||||
}
|
||||
|
||||
//if (typeof lineChart !== 'undefined' && typeof month !== 'undefined' && typeof reportURL === 'undefined') {
|
||||
// lineChart('/chart/account/month/' + year + '/' + month + shared, 'account-balances-chart');
|
||||
//}
|
||||
|
||||
if (typeof lineChart !== 'undefined' && typeof accountIds !== 'undefined') {
|
||||
lineChart('/chart/account/report/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'account-balances-chart');
|
||||
}
|
||||
|
@ -18,8 +18,8 @@ function drawChart() {
|
||||
columnChart('chart/report/in-out/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'income-expenses-chart');
|
||||
columnChart('chart/report/in-out-sum/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'income-expenses-sum-chart');
|
||||
stackedColumnChart('chart/budget/year/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'budgets');
|
||||
stackedColumnChart('chart/category/spent-in-year/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'categories-spent-in-year');
|
||||
stackedColumnChart('chart/category/earned-in-year/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'categories-earned-in-year');
|
||||
stackedColumnChart('chart/category/spent-in-period/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'categories-spent-in-period');
|
||||
stackedColumnChart('chart/category/earned-in-period/' + reportType + '/' + startDate + '/' + endDate + '/' + accountIds, 'categories-earned-in-period');
|
||||
|
||||
}
|
||||
|
||||
|
@ -27,8 +27,8 @@ return [
|
||||
|
||||
// reports
|
||||
'reports' => 'Reports',
|
||||
'monthly_report' => 'Montly report for :date',
|
||||
'monthly_report_shared' => 'Montly report for :date (including shared accounts)',
|
||||
'monthly_report' => 'Monthly report for :date',
|
||||
'monthly_report_shared' => 'Monthly report for :date (including shared accounts)',
|
||||
'yearly_report' => 'Yearly report for :date',
|
||||
'yearly_report_shared' => 'Yearly report for :date (including shared accounts)',
|
||||
'budget_report' => 'Budget report for :date',
|
8
resources/lang/en_US/config.php
Normal file
8
resources/lang/en_US/config.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'locale' => 'en, English, en_US, en_US.utf8',
|
||||
'month' => '%B %Y',
|
||||
'month_and_day' => '%B %e, %Y',
|
||||
|
||||
];
|
@ -2,6 +2,7 @@
|
||||
|
||||
return [
|
||||
// general stuff:
|
||||
'language_incomplete' => 'This language is not yet fully translated',
|
||||
'test' => 'You have selected English.',
|
||||
'close' => 'Close',
|
||||
'pleaseHold' => 'Please hold...',
|
||||
@ -67,8 +68,7 @@ return [
|
||||
'new_password' => 'New password',
|
||||
'new_password_again' => 'New password (again)',
|
||||
'delete_your_account' => 'Delete your account',
|
||||
'delete_your_account_help' => 'Deleting your account will also delete any accounts, transactions, <em>anything</em> you might have saved' .
|
||||
' into Firefly III. It\'ll be GONE.',
|
||||
'delete_your_account_help' => 'Deleting your account will also delete any accounts, transactions, <em>anything</em> you might have saved into Firefly III. It\'ll be GONE.',
|
||||
'delete_your_account_password' => 'Enter your password to continue.',
|
||||
'password' => 'Password',
|
||||
'are_you_sure' => 'Are you sure? You cannot undo this.',
|
||||
@ -109,23 +109,15 @@ return [
|
||||
'csv_define_column_roles' => 'Define column roles',
|
||||
'csv_map_values' => 'Map found values to existing values',
|
||||
'csv_download_config' => 'Download CSV configuration file.',
|
||||
'csv_index_text' => 'This form allows you to import a CSV file with transactions into Firefly. It is based on the excellent CSV' .
|
||||
' importer made by the folks at <a href="https://www.atlassian.com/">Atlassian</a>. Simply upload your CSV' .
|
||||
' file and follow the instructions. If you would like to learn more, please click on the <i ' .
|
||||
'class="fa fa-question-circle"></i> button at the top of this page.',
|
||||
'csv_index_text' => 'This form allows you to import a CSV file with transactions into Firefly. It is based on the excellent CSV importer made by the folks at <a href="https://www.atlassian.com/">Atlassian</a>. Simply upload your CSV file and follow the instructions. If you would like to learn more, please click on the <i class="fa fa-question-circle"></i> button at the top of this page.',
|
||||
'csv_index_beta_warning' => 'This tool is very much in beta. Please proceed with caution',
|
||||
'csv_header_help' => 'Check this box when your CSV file\'s first row consists of column names, not actual data',
|
||||
'csv_date_help' => 'Date time format in your CSV. Follow the format like <a href="https://secure.php.net/manual/en/' .
|
||||
'datetime.createfromformat.php#refsect1-datetime.createfromformat-parameters">this page</a> ' .
|
||||
'indicates. The default value will parse dates that look like this: ' . date('Ymd'),
|
||||
'csv_date_help' => 'Date time format in your CSV. Follow the format like <a href="https://secure.php.net/manual/en/datetime.createfromformat.php#refsect1-datetime.createfromformat-parameters">this page</a> indicates. The default value will parse dates that look like this: :dateExample.',
|
||||
'csv_csv_file_help' => 'Select the CSV file here. You can only upload one file at a time',
|
||||
'csv_csv_config_file_help' => 'Select your CSV import configuration here. If you do not know what this is, ignore it. It will be explained later.',
|
||||
'csv_upload_button' => 'Start importing CSV',
|
||||
'csv_column_roles_title' => 'Define column roles',
|
||||
'csv_column_roles_text' => 'Firefly does not know what each column means. You need to indicate what every column is. ' .
|
||||
'Please check out the example data if you\'re not sure yourself. Click on the question mark ' .
|
||||
'(top right of the page) to learn what each column means. If you want to map imported data ' .
|
||||
'onto existing data in Firefly, use the checkbox. The next step will show you what this button does.',
|
||||
'csv_column_roles_text' => 'Firefly does not know what each column means. You need to indicate what every column is. Please check out the example data if you\'re not sure yourself. Click on the question mark (top right of the page) to learn what each column means. If you want to map imported data onto existing data in Firefly, use the checkbox. The next step will show you what this button does.',
|
||||
'csv_column_roles_table' => 'Column roles',
|
||||
'csv_column' => 'CSV column',
|
||||
'csv_column_name' => 'CSV column name',
|
||||
@ -135,15 +127,13 @@ return [
|
||||
'csv_continue' => 'Continue to the next step',
|
||||
'csv_go_back' => 'Go back to the previous step',
|
||||
'csv_map_title' => 'Map found values to existing values',
|
||||
'csv_map_text' => 'This page allows you to map the values from the CSV file to existing entries in your ' .
|
||||
'database. This ensures that accounts and other things won\'t be created twice.',
|
||||
'csv_map_text' => 'This page allows you to map the values from the CSV file to existing entries in your database. This ensures that accounts and other things won\'t be created twice.',
|
||||
'csv_field_value' => 'Field value from CSV',
|
||||
'csv_field_mapped_to' => 'Must be mapped to...',
|
||||
'csv_do_not_map' => 'Do not map this value',
|
||||
'csv_download_config_title' => 'Download CSV configuration',
|
||||
'csv_download_config_text' => 'Everything you\'ve just set up can be downloaded as a configuration file. Click the button to do so.',
|
||||
'csv_more_information_text' => 'If the import fails, you can use this configuration file so you don\'t have to start all ' .
|
||||
'over again. But, if the import succeeds, it will be easier to upload similar CSV files.',
|
||||
'csv_more_information_text' => 'If the import fails, you can use this configuration file so you don\'t have to start all over again. But, if the import succeeds, it will be easier to upload similar CSV files.',
|
||||
'csv_do_download_config' => 'Download configuration file.',
|
||||
'csv_empty_description' => '(empty description)',
|
||||
'csv_upload_form' => 'CSV upload form',
|
||||
@ -189,11 +179,9 @@ return [
|
||||
'csv_column_tags-space' => 'Tags (space separated)',
|
||||
'csv_specifix_RabobankDescription' => 'Select this when you\'re importing Rabobank CSV export files.',
|
||||
'csv_specifix_Dummy' => 'Checking this has no effect whatsoever.',
|
||||
'csv_import_account_help' => 'If your CSV file does NOT contain information about your asset account(s), use this dropdown to select to which'
|
||||
. ' account the transactions in the CSV belong to.',
|
||||
'csv_import_account_help' => 'If your CSV file does NOT contain information about your asset account(s), use this dropdown to select to which account the transactions in the CSV belong to.',
|
||||
'csv_date_parse_error' => 'Could not parse a valid date from ":value", using the format ":format". Are you sure your CSV is correct?',
|
||||
|
||||
|
||||
// create new stuff:
|
||||
'create_new_withdrawal' => 'Create new withdrawal',
|
||||
'create_new_deposit' => 'Create new deposit',
|
||||
@ -204,7 +192,6 @@ return [
|
||||
'create_new_piggy_bank' => 'Create new piggy bank',
|
||||
'create_new_bill' => 'Create new bill',
|
||||
|
||||
|
||||
// currencies:
|
||||
'create_currency' => 'Create a new currency',
|
||||
'edit_currency' => 'Edit currency ":name"',
|
||||
@ -369,133 +356,123 @@ return [
|
||||
'profile' => 'Profile',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Default financial report for :start until :end',
|
||||
'quick_link_reports' => 'Quick links',
|
||||
'quick_link_default_report' => 'Default financial report',
|
||||
'report_this_month_quick' => 'Current month, all accounts',
|
||||
'report_this_year_quick' => 'Current year, all accounts',
|
||||
'report_all_time_quick' => 'All-time, all accounts',
|
||||
'reports_can_bookmark' => 'Remember that reports can be bookmarked.',
|
||||
'incomeVsExpenses' => 'Income vs. expenses',
|
||||
'accountBalances' => 'Account balances',
|
||||
'balanceStartOfYear' => 'Balance at start of year',
|
||||
'balanceEndOfYear' => 'Balance at end of year',
|
||||
'balanceStartOfMonth' => 'Balance at start of month',
|
||||
'balanceEndOfMonth' => 'Balance at end of month',
|
||||
'balanceStart' => 'Balance at start of period',
|
||||
'balanceEnd' => 'Balance at end of period',
|
||||
'reportsOwnAccounts' => 'Reports for your own accounts',
|
||||
'reportsOwnAccountsAndShared' => 'Reports for your own accounts and shared accounts',
|
||||
'splitByAccount' => 'Split by account',
|
||||
'balancedByTransfersAndTags' => 'Balanced by transfers and tags',
|
||||
'coveredWithTags' => 'Covered with tags',
|
||||
'leftUnbalanced' => 'Left unbalanced',
|
||||
'expectedBalance' => 'Expected balance',
|
||||
'outsideOfBudgets' => 'Outside of budgets',
|
||||
'leftInBudget' => 'Left in budget',
|
||||
'sumOfSums' => 'Sum of sums',
|
||||
'noCategory' => '(no category)',
|
||||
'notCharged' => 'Not charged (yet)',
|
||||
'inactive' => 'Inactive',
|
||||
'difference' => 'Difference',
|
||||
'in' => 'In',
|
||||
'out' => 'Out',
|
||||
'topX' => 'top :number',
|
||||
'showTheRest' => 'Show everything',
|
||||
'hideTheRest' => 'Show only the top :number',
|
||||
'sum_of_year' => 'Sum of year',
|
||||
'sum_of_years' => 'Sum of years',
|
||||
'average_of_year' => 'Average of year',
|
||||
'average_of_years' => 'Average of years',
|
||||
'categories_earned_in_year' => 'Categories (by earnings)',
|
||||
'categories_spent_in_year' => 'Categories (by spendings)',
|
||||
'report_type' => 'Report type',
|
||||
'report_type_default' => 'Default financial report',
|
||||
'report_included_accounts' => 'Included accounts',
|
||||
'report_date_range' => 'Date range',
|
||||
'report_include_help' => 'In all cases, transfers to shared accounts count as expenses, and transfers from shared accounts count as income.',
|
||||
'report_preset_ranges' => 'Pre-set ranges',
|
||||
'shared' => 'Shared',
|
||||
'report_default' => 'Default financial report for :start until :end',
|
||||
'quick_link_reports' => 'Quick links',
|
||||
'quick_link_default_report' => 'Default financial report',
|
||||
'report_this_month_quick' => 'Current month, all accounts',
|
||||
'report_this_year_quick' => 'Current year, all accounts',
|
||||
'report_all_time_quick' => 'All-time, all accounts',
|
||||
'reports_can_bookmark' => 'Remember that reports can be bookmarked.',
|
||||
'incomeVsExpenses' => 'Income vs. expenses',
|
||||
'accountBalances' => 'Account balances',
|
||||
'balanceStartOfYear' => 'Balance at start of year',
|
||||
'balanceEndOfYear' => 'Balance at end of year',
|
||||
'balanceStartOfMonth' => 'Balance at start of month',
|
||||
'balanceEndOfMonth' => 'Balance at end of month',
|
||||
'balanceStart' => 'Balance at start of period',
|
||||
'balanceEnd' => 'Balance at end of period',
|
||||
'reportsOwnAccounts' => 'Reports for your own accounts',
|
||||
'reportsOwnAccountsAndShared' => 'Reports for your own accounts and shared accounts',
|
||||
'splitByAccount' => 'Split by account',
|
||||
'balancedByTransfersAndTags' => 'Balanced by transfers and tags',
|
||||
'coveredWithTags' => 'Covered with tags',
|
||||
'leftUnbalanced' => 'Left unbalanced',
|
||||
'expectedBalance' => 'Expected balance',
|
||||
'outsideOfBudgets' => 'Outside of budgets',
|
||||
'leftInBudget' => 'Left in budget',
|
||||
'sumOfSums' => 'Sum of sums',
|
||||
'noCategory' => '(no category)',
|
||||
'notCharged' => 'Not charged (yet)',
|
||||
'inactive' => 'Inactive',
|
||||
'difference' => 'Difference',
|
||||
'in' => 'In',
|
||||
'out' => 'Out',
|
||||
'topX' => 'top :number',
|
||||
'showTheRest' => 'Show everything',
|
||||
'hideTheRest' => 'Show only the top :number',
|
||||
'sum_of_year' => 'Sum of year',
|
||||
'sum_of_years' => 'Sum of years',
|
||||
'average_of_year' => 'Average of year',
|
||||
'average_of_years' => 'Average of years',
|
||||
'categories_earned_in_year' => 'Categories (by earnings)',
|
||||
'categories_spent_in_year' => 'Categories (by spendings)',
|
||||
'report_type' => 'Report type',
|
||||
'report_type_default' => 'Default financial report',
|
||||
'report_included_accounts' => 'Included accounts',
|
||||
'report_date_range' => 'Date range',
|
||||
'report_include_help' => 'In all cases, transfers to shared accounts count as expenses, and transfers from shared accounts count as income.',
|
||||
'report_preset_ranges' => 'Pre-set ranges',
|
||||
'shared' => 'Shared',
|
||||
|
||||
// charts:
|
||||
'dayOfMonth' => 'Day of the month',
|
||||
'month' => 'Month',
|
||||
'budget' => 'Budget',
|
||||
'spent' => 'Spent',
|
||||
'earned' => 'Earned',
|
||||
'overspent' => 'Overspent',
|
||||
'left' => 'Left',
|
||||
'noBudget' => '(no budget)',
|
||||
'maxAmount' => 'Maximum amount',
|
||||
'minAmount' => 'Minumum amount',
|
||||
'billEntry' => 'Current bill entry',
|
||||
'name' => 'Name',
|
||||
'date' => 'Date',
|
||||
'paid' => 'Paid',
|
||||
'unpaid' => 'Unpaid',
|
||||
'day' => 'Day',
|
||||
'budgeted' => 'Budgeted',
|
||||
'period' => 'Period',
|
||||
'balance' => 'Balance',
|
||||
'summary' => 'Summary',
|
||||
'sum' => 'Sum',
|
||||
'average' => 'Average',
|
||||
'balanceFor' => 'Balance for :name',
|
||||
'dayOfMonth' => 'Day of the month',
|
||||
'month' => 'Month',
|
||||
'budget' => 'Budget',
|
||||
'spent' => 'Spent',
|
||||
'earned' => 'Earned',
|
||||
'overspent' => 'Overspent',
|
||||
'left' => 'Left',
|
||||
'noBudget' => '(no budget)',
|
||||
'maxAmount' => 'Maximum amount',
|
||||
'minAmount' => 'Minumum amount',
|
||||
'billEntry' => 'Current bill entry',
|
||||
'name' => 'Name',
|
||||
'date' => 'Date',
|
||||
'paid' => 'Paid',
|
||||
'unpaid' => 'Unpaid',
|
||||
'day' => 'Day',
|
||||
'budgeted' => 'Budgeted',
|
||||
'period' => 'Period',
|
||||
'balance' => 'Balance',
|
||||
'summary' => 'Summary',
|
||||
'sum' => 'Sum',
|
||||
'average' => 'Average',
|
||||
'balanceFor' => 'Balance for :name',
|
||||
|
||||
// piggy banks:
|
||||
'piggy_bank' => 'Piggy bank',
|
||||
'new_piggy_bank' => 'Create new piggy bank',
|
||||
'store_piggy_bank' => 'Store new piggy bank',
|
||||
'account_status' => 'Account status',
|
||||
'left_for_piggy_banks' => 'Left for piggy banks',
|
||||
'sum_of_piggy_banks' => 'Sum of piggy banks',
|
||||
'saved_so_far' => 'Saved so far',
|
||||
'left_to_save' => 'Left to save',
|
||||
'add_money_to_piggy_title' => 'Add money to piggy bank ":name"',
|
||||
'remove_money_from_piggy_title' => 'Remove money from piggy bank ":name"',
|
||||
'add' => 'Add',
|
||||
'remove' => 'Remove',
|
||||
'max_amount_add' => 'The maximum amount you can add is',
|
||||
'max_amount_remove' => 'The maximum amount you can remove is',
|
||||
'update_piggy_button' => 'Update piggy bank',
|
||||
'update_piggy_title' => 'Update piggy bank ":name"',
|
||||
'details' => 'Details',
|
||||
'events' => 'Events',
|
||||
'target_amount' => 'Target amount',
|
||||
'start_date' => 'Start date',
|
||||
'target_date' => 'Target date',
|
||||
'no_target_date' => 'No target date',
|
||||
'todo' => 'to do',
|
||||
'table' => 'Table',
|
||||
'piggy_bank_not_exists' => 'Piggy bank no longer exists.',
|
||||
'add_any_amount_to_piggy' => 'Add money to this piggy bank to reach your target of :amount.',
|
||||
'add_set_amount_to_piggy' => 'Add :amount to fill this piggy bank on :date',
|
||||
'delete_piggy_bank' => 'Delete piggy bank ":name"',
|
||||
'piggy_bank' => 'Piggy bank',
|
||||
'new_piggy_bank' => 'Create new piggy bank',
|
||||
'store_piggy_bank' => 'Store new piggy bank',
|
||||
'account_status' => 'Account status',
|
||||
'left_for_piggy_banks' => 'Left for piggy banks',
|
||||
'sum_of_piggy_banks' => 'Sum of piggy banks',
|
||||
'saved_so_far' => 'Saved so far',
|
||||
'left_to_save' => 'Left to save',
|
||||
'add_money_to_piggy_title' => 'Add money to piggy bank ":name"',
|
||||
'remove_money_from_piggy_title' => 'Remove money from piggy bank ":name"',
|
||||
'add' => 'Add',
|
||||
'remove' => 'Remove',
|
||||
'max_amount_add' => 'The maximum amount you can add is',
|
||||
'max_amount_remove' => 'The maximum amount you can remove is',
|
||||
'update_piggy_button' => 'Update piggy bank',
|
||||
'update_piggy_title' => 'Update piggy bank ":name"',
|
||||
'details' => 'Details',
|
||||
'events' => 'Events',
|
||||
'target_amount' => 'Target amount',
|
||||
'start_date' => 'Start date',
|
||||
'target_date' => 'Target date',
|
||||
'no_target_date' => 'No target date',
|
||||
'todo' => 'to do',
|
||||
'table' => 'Table',
|
||||
'piggy_bank_not_exists' => 'Piggy bank no longer exists.',
|
||||
'add_any_amount_to_piggy' => 'Add money to this piggy bank to reach your target of :amount.',
|
||||
'add_set_amount_to_piggy' => 'Add :amount to fill this piggy bank on :date',
|
||||
'delete_piggy_bank' => 'Delete piggy bank ":name"',
|
||||
|
||||
// tags
|
||||
'regular_tag' => 'Just a regular tag.',
|
||||
'balancing_act' => 'The tag takes at most two transactions; an expense and a transfer. They\'ll balance each other out.',
|
||||
'advance_payment' => 'The tag accepts one expense and any number of deposits aimed to repay the original expense.',
|
||||
|
||||
'delete_tag' => 'Delete tag ":tag"',
|
||||
'new_tag' => 'Make new tag',
|
||||
'edit_tag' => 'Edit tag ":tag"',
|
||||
'no_year' => 'No year set',
|
||||
'no_month' => 'No month set',
|
||||
'tag_title_nothing' => 'Default tags',
|
||||
'tag_title_balancingAct' => 'Balancing act tags',
|
||||
'tag_title_advancePayment' => 'Advance payment tags',
|
||||
'tags_introduction' => 'Usually tags are singular words, designed to quickly band items together using things like' .
|
||||
' <span class="label label-info">expensive</span>, <span class="label label-info">bill</span>' .
|
||||
' or <span class="label label-info">for-party</span>. In Firefly III, tags can have more properties' .
|
||||
' such as a date, description and location. This allows you to join transactions together in a more' .
|
||||
' meaningful way. For example, you could make a tag called <span class="label label-success">' .
|
||||
'Christmas dinner with friends</span> and add information about the restaurant. Such tags are "singular",' .
|
||||
' you would only use them for a single occasion, perhaps with multiple transactions.',
|
||||
'tags_group' => 'Tags group transactions together, which makes it possible to store reimbursements (in case you front money' .
|
||||
' for others) and other "balancing acts" where expenses are summed up (the payments on your new TV) or where ' .
|
||||
'expenses and deposits are cancelling each other out (buying something with saved money). It\'s all up to you.' .
|
||||
' Using tags the old-fashioned way is of course always possible. ',
|
||||
'tags_start' => 'Create a tag to get started or enter tags when creating new transactions.',
|
||||
'regular_tag' => 'Just a regular tag.',
|
||||
'balancing_act' => 'The tag takes at most two transactions; an expense and a transfer. They\'ll balance each other out.',
|
||||
'advance_payment' => 'The tag accepts one expense and any number of deposits aimed to repay the original expense.',
|
||||
'delete_tag' => 'Delete tag ":tag"',
|
||||
'new_tag' => 'Make new tag',
|
||||
'edit_tag' => 'Edit tag ":tag"',
|
||||
'no_year' => 'No year set',
|
||||
'no_month' => 'No month set',
|
||||
'tag_title_nothing' => 'Default tags',
|
||||
'tag_title_balancingAct' => 'Balancing act tags',
|
||||
'tag_title_advancePayment' => 'Advance payment tags',
|
||||
'tags_introduction' => 'Usually tags are singular words, designed to quickly band items together using things like <span class="label label-info">expensive</span>, <span class="label label-info">bill</span> or <span class="label label-info">for-party</span>. In Firefly III, tags can have more properties such as a date, description and location. This allows you to join transactions together in a more meaningful way. For example, you could make a tag called <span class="label label-success"> Christmas dinner with friends</span> and add information about the restaurant. Such tags are "singular", you would only use them for a single occasion, perhaps with multiple transactions.',
|
||||
'tags_group' => 'Tags group transactions together, which makes it possible to store reimbursements (in case you front money for others) and other "balancing acts" where expenses are summed up (the payments on your new TV) or where expenses and deposits are cancelling each other out (buying something with saved money). It\'s all up to you. Using tags the old-fashioned way is of course always possible.',
|
||||
'tags_start' => 'Create a tag to get started or enter tags when creating new transactions.',
|
||||
|
||||
];
|
@ -88,16 +88,10 @@ return [
|
||||
'tag_areYouSure' => 'Are you sure you want to delete the tag ":tag"?',
|
||||
|
||||
'permDeleteWarning' => 'Deleting stuff from Firely is permanent and cannot be undone.',
|
||||
'also_delete_transactions' => 'The only transaction connected to this account will be deleted as well.' .
|
||||
'|All :count transactions connected to this account will be deleted as well.',
|
||||
'also_delete_piggyBanks' => 'The only piggy bank connected to this account will be deleted as well.' .
|
||||
'|All :count piggy bank connected to this account will be deleted as well.',
|
||||
'bill_keep_transactions' => 'The only transaction connected to this bill will not be deleted.' .
|
||||
'|All :count transactions connected to this bill will spared deletion.',
|
||||
'budget_keep_transactions' => 'The only transaction connected to this budget will not be deleted.' .
|
||||
'|All :count transactions connected to this budget will spared deletion.',
|
||||
'category_keep_transactions' => 'The only transaction connected to this category will not be deleted.' .
|
||||
'|All :count transactions connected to this category will spared deletion.',
|
||||
'tag_keep_transactions' => 'The only transaction connected to this tag will not be deleted.' .
|
||||
'|All :count transactions connected to this tag will spared deletion.',
|
||||
'also_delete_transactions' => 'The only transaction connected to this account will be deleted as well.|All :count transactions connected to this account will be deleted as well.',
|
||||
'also_delete_piggyBanks' => 'The only piggy bank connected to this account will be deleted as well.|All :count piggy bank connected to this account will be deleted as well.',
|
||||
'bill_keep_transactions' => 'The only transaction connected to this bill will not be deleted.|All :count transactions connected to this bill will spared deletion.',
|
||||
'budget_keep_transactions' => 'The only transaction connected to this budget will not be deleted.|All :count transactions connected to this budget will spared deletion.',
|
||||
'category_keep_transactions' => 'The only transaction connected to this category will not be deleted.|All :count transactions connected to this category will spared deletion.',
|
||||
'tag_keep_transactions' => 'The only transaction connected to this tag will not be deleted.|All :count transactions connected to this tag will spared deletion.',
|
||||
];
|
84
resources/lang/en_US/help.php
Normal file
84
resources/lang/en_US/help.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
return [
|
||||
|
||||
// tour!
|
||||
'main-content-title' => 'Welcome to Firefly III',
|
||||
'main-content-text' => 'Do yourself a favor and follow this short guide to make sure you know your way around.',
|
||||
'sidebar-toggle-title' => 'Sidebar to create stuff',
|
||||
'sidebar-toggle-text' => 'Hidden under the plus icon are all the buttons to create new stuff. Accounts, transactions, everything!',
|
||||
'account-menu-title' => 'All your accounts',
|
||||
'account-menu-text' => 'Here you can find all the accounts you\'ve made.',
|
||||
'budget-menu-title' => 'Budgets',
|
||||
'budget-menu-text' => 'Use this page to organise your finances and limit spending.',
|
||||
'report-menu-title' => 'Reports',
|
||||
'report-menu-text' => 'Check this out when you want a solid overview of your fiances.',
|
||||
'transaction-menu-title' => 'Transactions',
|
||||
'transaction-menu-text' => 'All transactions you\'ve created can be found here.',
|
||||
'option-menu-title' => 'Options',
|
||||
'option-menu-text' => 'This is pretty self-explanatory.',
|
||||
'main-content-end-title' => 'The end!',
|
||||
'main-content-end-text' => 'Remember that every page has a small question mark at the right top. Click it to get help about the page you\'re on.',
|
||||
|
||||
|
||||
'index' => 'index',
|
||||
'home' => 'home',
|
||||
'accounts-index' => 'accounts.index',
|
||||
'accounts-create' => 'accounts.create',
|
||||
'accounts-edit' => 'accounts.edit',
|
||||
'accounts-delete' => 'accounts.delete',
|
||||
'accounts-show' => 'accounts.show',
|
||||
'attachments-edit' => 'attachments.edit',
|
||||
'attachments-delete' => 'attachments.delete',
|
||||
'attachments-show' => 'attachments.show',
|
||||
'attachments-preview' => 'attachments.preview',
|
||||
'bills-index' => 'bills.index',
|
||||
'bills-create' => 'bills.create',
|
||||
'bills-edit' => 'bills.edit',
|
||||
'bills-delete' => 'bills.delete',
|
||||
'bills-show' => 'bills.show',
|
||||
'budgets-index' => 'budgets.index',
|
||||
'budgets-create' => 'budgets.create',
|
||||
'budgets-edit' => 'budgets.edit',
|
||||
'budgets-delete' => 'budgets.delete',
|
||||
'budgets-show' => 'budgets.show',
|
||||
'budgets-noBudget' => 'budgets.noBudget',
|
||||
'categories-index' => 'categories.index',
|
||||
'categories-create' => 'categories.create',
|
||||
'categories-edit' => 'categories.edit',
|
||||
'categories-delete' => 'categories.delete',
|
||||
'categories-show' => 'categories.show',
|
||||
'categories-show-date' => 'categories.show.date',
|
||||
'categories-noCategory' => 'categories.noCategory',
|
||||
'csv-index' => 'csv.index',
|
||||
'csv-column-roles' => 'csv.column-roles',
|
||||
'csv-map' => 'csv.map',
|
||||
'csv-download-config-page' => 'csv.download-config-page',
|
||||
'csv-process' => 'csv.process',
|
||||
'currency-index' => 'currency.index',
|
||||
'currency-create' => 'currency.create',
|
||||
'currency-edit' => 'currency.edit',
|
||||
'currency-delete' => 'currency.delete',
|
||||
'new-user-index' => 'new-user.index',
|
||||
'piggy-banks-index' => 'piggy-banks.index',
|
||||
'piggy-banks-create' => 'piggy-banks.create',
|
||||
'piggy-banks-edit' => 'piggy-banks.edit',
|
||||
'piggy-banks-delete' => 'piggy-banks.delete',
|
||||
'piggy-banks-show' => 'piggy-banks.show',
|
||||
'preferences' => 'preferences',
|
||||
'profile' => 'profile',
|
||||
'profile-change-password' => 'profile.change-password',
|
||||
'profile-delete-account' => 'profile.delete-account',
|
||||
'reports-index' => 'reports.index',
|
||||
'reports-report' => 'reports.report',
|
||||
'search' => 'search',
|
||||
'tags-index' => 'tags.index',
|
||||
'tags-create' => 'tags.create',
|
||||
'tags-show' => 'tags.show',
|
||||
'tags-edit' => 'tags.edit',
|
||||
'tags-delete' => 'tags.delete',
|
||||
'transactions-index' => 'transactions.index',
|
||||
'transactions-create' => 'transactions.create',
|
||||
'transactions-edit' => 'transactions.edit',
|
||||
'transactions-delete' => 'transactions.delete',
|
||||
'transactions-show' => 'transactions.show',
|
||||
];
|
@ -14,7 +14,7 @@ return [
|
||||
'matchingAmount' => 'Amount',
|
||||
'lastMatch' => 'Last match',
|
||||
'expectedMatch' => 'Expected match',
|
||||
'automatch' => 'Automatch?',
|
||||
'automatch' => 'Auto match?',
|
||||
'repeat_freq' => 'Repeats',
|
||||
'description' => 'Description',
|
||||
'amount' => 'Amount',
|
@ -1,18 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'invalid_domain' => 'Due to security constraints, you cannot register from this domain.',
|
||||
'file_already_attached' => 'Uploaded file ":name" is already attached to this object.',
|
||||
'file_attached' => 'Succesfully uploaded file ":name".',
|
||||
@ -47,6 +35,7 @@ return [
|
||||
"in" => "The selected :attribute is invalid.",
|
||||
"integer" => "The :attribute must be an integer.",
|
||||
"ip" => "The :attribute must be a valid IP address.",
|
||||
'json' => 'The :attribute must be a valid JSON string.',
|
||||
"max.numeric" => "The :attribute may not be greater than :max.",
|
||||
"max.file" => "The :attribute may not be greater than :max kilobytes.",
|
||||
"max.string" => "The :attribute may not be greater than :max characters.",
|
||||
@ -61,6 +50,7 @@ return [
|
||||
"regex" => "The :attribute format is invalid.",
|
||||
"required" => "The :attribute field is required.",
|
||||
"required_if" => "The :attribute field is required when :other is :value.",
|
||||
'required_unless' => 'The :attribute field is required unless :other is in :values.',
|
||||
"required_with" => "The :attribute field is required when :values is present.",
|
||||
"required_with_all" => "The :attribute field is required when :values is present.",
|
||||
"required_without" => "The :attribute field is required when :values is not present.",
|
||||
@ -71,8 +61,7 @@ return [
|
||||
"size.string" => "The :attribute must be :size characters.",
|
||||
"size.array" => "The :attribute must contain :size items.",
|
||||
"unique" => "The :attribute has already been taken.",
|
||||
'string' => 'The :attribute must be a string.',
|
||||
"url" => "The :attribute format is invalid.",
|
||||
"timezone" => "The :attribute must be a valid zone.",
|
||||
'attributes' => [],
|
||||
|
||||
];
|
60
resources/lang/fr_FR/breadcrumbs.php
Normal file
60
resources/lang/fr_FR/breadcrumbs.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
return [
|
||||
'home' => 'Accueil',
|
||||
|
||||
// accounts
|
||||
'cash_accounts' => 'Cash accounts',
|
||||
'edit_account' => 'Editer le compte : ":name"',
|
||||
|
||||
// currencies
|
||||
'edit_currency' => 'Editer la devise : ";name"',
|
||||
'delete_currency' => 'Supprimer la devise ":name"',
|
||||
|
||||
// piggy banks
|
||||
'newPiggyBank' => 'Create a new piggy bank',
|
||||
'edit_piggyBank' => 'Edit piggy bank ":name"',
|
||||
|
||||
// top menu
|
||||
'preferences' => 'Preferences',
|
||||
'profile' => 'Profil',
|
||||
'changePassword' => 'Modifier le mot de passe',
|
||||
|
||||
// bills
|
||||
'bills' => 'Factures',
|
||||
'newBill' => 'Nouvelle facture',
|
||||
'edit_bill' => 'Editer la facture : ":name"',
|
||||
'delete_bill' => 'Supprimer la facture ":name"',
|
||||
|
||||
// reports
|
||||
'reports' => 'Rapport',
|
||||
'monthly_report' => 'Rapport mensuel pour :date',
|
||||
'monthly_report_shared' => 'Rapport mensuel pour :date (avec les comptes joints)',
|
||||
'yearly_report' => 'Rapport annuel pour :date',
|
||||
'yearly_report_shared' => 'Rapport annuel pour :date (avec les comptes joints)',
|
||||
'budget_report' => 'Rapport budgetaire pour :date',
|
||||
|
||||
// search
|
||||
'searchResult' => 'Resultat de recherche pour ":query"',
|
||||
|
||||
// transaction lists.
|
||||
'withdrawal_list' => 'Dépenses',
|
||||
'deposit_list' => 'Revenue, Salaire et depots ',
|
||||
'transfer_list' => 'Transferts',
|
||||
'transfers_list' => 'Transferts',
|
||||
|
||||
// create transactions
|
||||
'create_withdrawal' => 'Creer un nouveau retrait',
|
||||
'create_deposit' => 'Create new deposit',
|
||||
'create_transfer' => 'Creer un nouveau transfert',
|
||||
|
||||
// edit transactions
|
||||
'edit_journal' => 'Editer la transaction ":description"',
|
||||
'delete_journal' => 'Supprimer la transaction ":description"',
|
||||
|
||||
// tags
|
||||
'tags' => 'Tags',
|
||||
'createTag' => 'Créer un nouveau tag',
|
||||
'edit_tag' => 'Editer le tag ":tag"',
|
||||
'delete_tag' => 'Supprimer le tag ":tag"',
|
||||
|
||||
];
|
8
resources/lang/fr_FR/config.php
Normal file
8
resources/lang/fr_FR/config.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'locale' => 'fr, French, fr_FR, fr_FR.utf8',
|
||||
'month' => '%B %Y',
|
||||
'month_and_day' => '%e %B %Y',
|
||||
|
||||
];
|
487
resources/lang/fr_FR/firefly.php
Normal file
487
resources/lang/fr_FR/firefly.php
Normal file
@ -0,0 +1,487 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// general stuff
|
||||
'test' => 'Vous avez choisi Anglais',
|
||||
'close' => 'Fermer',
|
||||
'pleaseHold' => 'Veuillew patienter...',
|
||||
'actions' => 'Actions',
|
||||
'edit' => 'Editer',
|
||||
'delete' => 'Supprimer',
|
||||
'welcomeBack' => 'What\'s playing?',
|
||||
'everything' => 'Everything',
|
||||
'customRange' => 'Custom range',
|
||||
'apply' => 'Apply',
|
||||
'cancel' => 'Cancel',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'total_sum' => 'Total sum',
|
||||
'period_sum' => 'Sum for period',
|
||||
'showEverything' => 'Show everything',
|
||||
'never' => 'Never',
|
||||
'search_results_for' => 'Search results for ":query"',
|
||||
'bounced_error' => 'The message sent to :email bounced, so no access for you.',
|
||||
'deleted_error' => 'These credentials do not match our records.',
|
||||
'general_blocked_error' => 'Your account has been disabled, so you cannot login.',
|
||||
'removed_amount' => 'Removed :amount',
|
||||
'added_amount' => 'Added :amount',
|
||||
'asset_account_role_help' => 'Any extra options resulting from your choice can be set later.',
|
||||
'Opening balance' => 'Opening balance',
|
||||
'create_new_stuff' => 'Create new stuff',
|
||||
'new_withdrawal' => 'New withdrawal',
|
||||
'new_deposit' => 'New deposit',
|
||||
'new_transfer' => 'New transfer',
|
||||
'new_asset_account' => 'New asset account',
|
||||
'new_expense_account' => 'New expense account',
|
||||
'new_revenue_account' => 'New revenue account',
|
||||
'new_budget' => 'New budget',
|
||||
'new_bill' => 'New bill',
|
||||
|
||||
// tags
|
||||
'store_new_tag' => 'Store new tag',
|
||||
'update_tag' => 'Update tag',
|
||||
'no_location_set' => 'No location set.',
|
||||
'meta_data' => 'Meta data',
|
||||
'location' => 'Location',
|
||||
|
||||
// preferences
|
||||
'pref_home_screen_accounts' => 'Home screen accounts',
|
||||
'pref_home_screen_accounts_help' => 'Which accounts should be displayed on the home page?',
|
||||
'pref_budget_settings' => 'Budget settings',
|
||||
'pref_budget_settings_help' => 'What\'s the maximum amount of money a budget envelope may contain?',
|
||||
'pref_view_range' => 'View range',
|
||||
'pref_view_range_help' => 'Some charts are automatically grouped in periods. What period would you prefer?',
|
||||
'pref_1D' => 'One day',
|
||||
'pref_1W' => 'One week',
|
||||
'pref_1M' => 'One month',
|
||||
'pref_3M' => 'Three months (quarter)',
|
||||
'pref_6M' => 'Six months',
|
||||
'pref_languages' => 'Languages',
|
||||
'pref_languages_help' => 'Firefly III supports several languages. Which one do you prefer?',
|
||||
'pref_save_settings' => 'Save settings',
|
||||
|
||||
// profile
|
||||
'change_your_password' => 'Change your password',
|
||||
'delete_account' => 'Delete account',
|
||||
'current_password' => 'Current password',
|
||||
'new_password' => 'New password',
|
||||
'new_password_again' => 'New password (again)',
|
||||
'delete_your_account' => 'Delete your account',
|
||||
'delete_your_account_help' => 'Deleting your account will also delete any accounts, transactions, <em>anything</em> you might have saved into Firefly III. It\'ll be GONE.',
|
||||
'delete_your_account_password' => 'Enter your password to continue.',
|
||||
'password' => 'Password',
|
||||
'are_you_sure' => 'Are you sure? You cannot undo this.',
|
||||
'delete_account_button' => 'DELETE your account',
|
||||
'invalid_current_password' => 'Invalid current password!',
|
||||
'password_changed' => 'Password changed!',
|
||||
'should_change' => 'The idea is to change your password.',
|
||||
'invalid_password' => 'Invalid password!',
|
||||
|
||||
|
||||
// attachments
|
||||
'nr_of_attachments' => 'One attachment|:count attachments',
|
||||
'attachments' => 'Attachments',
|
||||
'edit_attachment' => 'Edit attachment ":name"',
|
||||
'update_attachment' => 'Update attachment',
|
||||
'delete_attachment' => 'Delete attachment ":name"',
|
||||
'attachment_deleted' => 'Deleted attachment ":name"',
|
||||
'upload_max_file_size' => 'Maximum file size: :size',
|
||||
|
||||
// tour
|
||||
'prev' => 'Prev',
|
||||
'next' => 'Next',
|
||||
'end-tour' => 'End tour',
|
||||
'pause' => 'Pause',
|
||||
|
||||
// transaction index
|
||||
'title_expenses' => 'Expenses',
|
||||
'title_withdrawal' => 'Expenses',
|
||||
'title_revenue' => 'Revenue / income',
|
||||
'title_deposit' => 'Revenue / income',
|
||||
'title_transfer' => 'Transferts',
|
||||
'title_transfers' => 'Transferts',
|
||||
|
||||
// csv import
|
||||
'csv_import' => 'Import CSV file',
|
||||
'csv' => 'CSV',
|
||||
'csv_index_title' => 'Upload and import a CSV file',
|
||||
'csv_define_column_roles' => 'Define column roles',
|
||||
'csv_map_values' => 'Map found values to existing values',
|
||||
'csv_download_config' => 'Download CSV configuration file.',
|
||||
'csv_index_text' => 'This form allows you to import a CSV file with transactions into Firefly. It is based on the excellent CSV importer made by the folks at <a href="https://www.atlassian.com/">Atlassian</a>. Simply upload your CSV file and follow the instructions. If you would like to learn more, please click on the <i class="fa fa-question-circle"></i> button at the top of this page.',
|
||||
'csv_index_beta_warning' => 'This tool is very much in beta. Please proceed with caution',
|
||||
'csv_header_help' => 'Check this box when your CSV file\'s first row consists of column names, not actual data',
|
||||
'csv_date_help' => 'Date time format in your CSV. Follow the format like <a href="https://secure.php.net/manual/en/datetime.createfromformat.php#refsect1-datetime.createfromformat-parameters">this page</a> indicates. The default value will parse dates that look like this: 20151201',
|
||||
'csv_csv_file_help' => 'Select the CSV file here. You can only upload one file at a time',
|
||||
'csv_csv_config_file_help' => 'Select your CSV import configuration here. If you do not know what this is, ignore it. It will be explained later.',
|
||||
'csv_upload_button' => 'Start importing CSV',
|
||||
'csv_column_roles_title' => 'Define column roles',
|
||||
'csv_column_roles_text' => 'Firefly does not know what each column means. You need to indicate what every column is. Please check out the example data if you\'re not sure yourself. Click on the question mark (top right of the page) to learn what each column means. If you want to map imported data onto existing data in Firefly, use the checkbox. The next step will show you what this button does.',
|
||||
'csv_column_roles_table' => 'Column roles',
|
||||
'csv_column' => 'CSV column',
|
||||
'csv_column_name' => 'CSV column name',
|
||||
'csv_column_example' => 'Column example data',
|
||||
'csv_column_role' => 'Column contains?',
|
||||
'csv_do_map_value' => 'Map value?',
|
||||
'csv_continue' => 'Continue to the next step',
|
||||
'csv_go_back' => 'Go back to the previous step',
|
||||
'csv_map_title' => 'Map found values to existing values',
|
||||
'csv_map_text' => 'This page allows you to map the values from the CSV file to existing entries in your database. This ensures that accounts and other things won\'t be created twice.',
|
||||
'csv_field_value' => 'Field value from CSV',
|
||||
'csv_field_mapped_to' => 'Must be mapped to...',
|
||||
'csv_do_not_map' => 'Do not map this value',
|
||||
'csv_download_config_title' => 'Download CSV configuration',
|
||||
'csv_download_config_text' => 'Everything you\'ve just set up can be downloaded as a configuration file. Click the button to do so.',
|
||||
'csv_more_information_text' => 'If the import fails, you can use this configuration file so you don\'t have to start all over again. But, if the import succeeds, it will be easier to upload similar CSV files.',
|
||||
'csv_do_download_config' => 'Download configuration file.',
|
||||
'csv_empty_description' => '(empty description)',
|
||||
'csv_upload_form' => 'CSV upload form',
|
||||
'csv_index_unsupported_warning' => 'The CSV importer is yet incapable of doing the following:',
|
||||
'csv_unsupported_map' => 'The importer cannot map the column ":columnRole" to existing values in the database.',
|
||||
'csv_unsupported_value' => 'The importer does not know how to handle values in columns marked as ":columnRole".',
|
||||
'csv_cannot_store_value' => 'The importer has not reserved space for columns marked ":columnRole" and will be incapable of processing them.',
|
||||
'csv_process_title' => 'CSV import finished!',
|
||||
'csv_process_text' => 'The CSV importer has finished and has processed :rows rows',
|
||||
'csv_row' => 'Row',
|
||||
'csv_import_with_errors' => 'There was one error.|There were :errors errors.',
|
||||
'csv_error_see_logs' => 'Check the log files to see details.',
|
||||
'csv_process_new_entries' => 'Firefly has created :imported new transaction(s).',
|
||||
'csv_start_over' => 'Import again',
|
||||
'csv_to_index' => 'Back home',
|
||||
'csv_upload_not_writeable' => 'Cannot write to the path mentioned here. Cannot upload',
|
||||
'csv_column__ignore' => '(ignore this column)',
|
||||
'csv_column_account-iban' => 'Asset account (IBAN)',
|
||||
'csv_column_account-id' => 'Asset account ID (matching Firefly)',
|
||||
'csv_column_account-name' => 'Asset account (name)',
|
||||
'csv_column_amount' => 'Amount',
|
||||
'csv_column_bill-id' => 'Bill ID (matching Firefly)',
|
||||
'csv_column_bill-name' => 'Bill name',
|
||||
'csv_column_budget-id' => 'Budget ID (matching Firefly)',
|
||||
'csv_column_budget-name' => 'Budget name',
|
||||
'csv_column_category-id' => 'Category ID (matching Firefly)',
|
||||
'csv_column_category-name' => 'Category name',
|
||||
'csv_column_currency-code' => 'Currency code (ISO 4217)',
|
||||
'csv_column_currency-id' => 'Currency ID (matching Firefly)',
|
||||
'csv_column_currency-name' => 'Currency name (matching Firefly)',
|
||||
'csv_column_currency-symbol' => 'Currency symbol (matching Firefly)',
|
||||
'csv_column_date-rent' => 'Rent calculation date',
|
||||
'csv_column_date-transaction' => 'Date',
|
||||
'csv_column_description' => 'Description',
|
||||
'csv_column_opposing-iban' => 'Opposing account (IBAN)',
|
||||
'csv_column_opposing-id' => 'Opposing account ID (matching Firefly)',
|
||||
'csv_column_opposing-name' => 'Opposing account (name)',
|
||||
'csv_column_rabo-debet-credit' => 'Rabobank specific debet/credit indicator',
|
||||
'csv_column_sepa-ct-id' => 'SEPA Credit Transfer end-to-end ID',
|
||||
'csv_column_sepa-ct-op' => 'SEPA Credit Transfer opposing account',
|
||||
'csv_column_sepa-db' => 'SEPA Direct Debet',
|
||||
'csv_column_tags-comma' => 'Tags (comma separated)',
|
||||
'csv_column_tags-space' => 'Tags (space separated)',
|
||||
'csv_specifix_RabobankDescription' => 'Select this when you\'re importing Rabobank CSV export files.',
|
||||
'csv_specifix_Dummy' => 'Checking this has no effect whatsoever.',
|
||||
'csv_import_account_help' => 'If your CSV file does NOT contain information about your asset account(s), use this dropdown to select to which account the transactions in the CSV belong to.',
|
||||
'csv_date_parse_error' => 'Could not parse a valid date from ":value", using the format ":format". Are you sure your CSV is correct?',
|
||||
|
||||
|
||||
// create new stuff
|
||||
'create_new_withdrawal' => 'Creer un nouveau retrait',
|
||||
'create_new_deposit' => 'Create new deposit',
|
||||
'create_new_transfer' => 'Creer un nouveau transfert',
|
||||
'create_new_asset' => 'Create new asset account',
|
||||
'create_new_expense' => 'Create new expense account',
|
||||
'create_new_revenue' => 'Create new revenue account',
|
||||
'create_new_piggy_bank' => 'Create new piggy bank',
|
||||
'create_new_bill' => 'Create new bill',
|
||||
|
||||
|
||||
// currencies
|
||||
'create_currency' => 'Create a new currency',
|
||||
'edit_currency' => 'Edit currency ":name"',
|
||||
'store_currency' => 'Store new currency',
|
||||
'update_currency' => 'Update currency',
|
||||
|
||||
// new user
|
||||
'submit' => 'Submit',
|
||||
'getting_started' => 'Getting started',
|
||||
'to_get_started' => 'To get started with Firefly, please enter your current bank\'s name, and the balance of your checking account:',
|
||||
'savings_balance_text' => 'If you have a savings account, please enter the current balance of your savings account:',
|
||||
'cc_balance_text' => 'If you have a credit card, please enter your credit card\'s limit.',
|
||||
|
||||
// forms
|
||||
'mandatoryFields' => 'Mandatory fields',
|
||||
'optionalFields' => 'Optional fields',
|
||||
'options' => 'Options',
|
||||
'something' => 'Something!',
|
||||
|
||||
// budgets
|
||||
'create_new_budget' => 'Create a new budget',
|
||||
'store_new_budget' => ' Store new budget',
|
||||
'availableIn' => 'Available in :date',
|
||||
'transactionsWithoutBudget' => 'Expenses without budget',
|
||||
'transactionsWithoutBudgetDate' => 'Expenses without budget in :date',
|
||||
'createBudget' => 'New budget',
|
||||
'inactiveBudgets' => 'Inactive budgets',
|
||||
'without_budget_between' => 'Transactions without a budget between :start and :end',
|
||||
'budget_in_month' => ':name in :month',
|
||||
'delete_budget' => 'Delete budget ":name"',
|
||||
'edit_budget' => 'Edit budget ":name"',
|
||||
'update_amount' => 'Update amount',
|
||||
'update_budget' => 'Update budget',
|
||||
|
||||
// bills
|
||||
'delete_bill' => 'Delete bill ":name"',
|
||||
'edit_bill' => 'Edit bill ":name"',
|
||||
'update_bill' => 'Update bill',
|
||||
'store_new_bill' => 'Store new bill',
|
||||
|
||||
// accounts
|
||||
'details_for_asset' => 'Details for asset account ":name"',
|
||||
'details_for_expense' => 'Details for expense account ":name"',
|
||||
'details_for_revenue' => 'Details for revenue account ":name"',
|
||||
'details_for_cash' => 'Details for cash account ":name"',
|
||||
|
||||
'store_new_asset_account' => 'Store new asset account',
|
||||
'store_new_expense_account' => 'Store new expense account',
|
||||
'store_new_revenue_account' => 'Store new revenue account',
|
||||
|
||||
'edit_asset_account' => 'Edit asset account ":name"',
|
||||
'edit_expense_account' => 'Edit expense account ":name"',
|
||||
'edit_revenue_account' => 'Edit revenue account ":name"',
|
||||
|
||||
'delete_asset_account' => 'Delete asset account ":name"',
|
||||
'delete_expense_account' => 'Delete expense account ":name"',
|
||||
'delete_revenue_account' => 'Delete revenue account ":name"',
|
||||
|
||||
'asset_deleted' => 'Successfully deleted asset account ":name"',
|
||||
'expense_deleted' => 'Successfully deleted expense account ":name"',
|
||||
'revenue_deleted' => 'Successfully deleted revenue account ":name"',
|
||||
|
||||
'update_asset_account' => 'Update asset account',
|
||||
'update_expense_account' => 'Update expense account',
|
||||
'update_revenue_account' => 'Update revenue account',
|
||||
|
||||
'make_new_asset_account' => 'Create a new asset account',
|
||||
'make_new_expense_account' => 'Create a new expense account',
|
||||
'make_new_revenue_account' => 'Create a new revenue account',
|
||||
|
||||
'asset_accounts' => 'Asset accounts',
|
||||
'expense_accounts' => 'Expense accounts',
|
||||
'revenue_accounts' => 'Revenue accounts',
|
||||
|
||||
'accountExtraHelp_asset' => '',
|
||||
'accountExtraHelp_expense' => '',
|
||||
'accountExtraHelp_revenue' => '',
|
||||
'account_type' => 'Account type',
|
||||
'save_transactions_by_moving' => 'Save these transaction(s) by moving them to another account:',
|
||||
|
||||
// categories
|
||||
'new_category' => 'New category',
|
||||
'create_new_category' => 'Create a new category',
|
||||
'without_category' => 'Without a category',
|
||||
'update_category' => 'Wijzig categorie',
|
||||
'categories' => 'Categories',
|
||||
'edit_category' => 'Edit category ":name"',
|
||||
'no_category' => '(no category)',
|
||||
'category' => 'Category',
|
||||
'delete_category' => 'Delete category ":name"',
|
||||
'store_category' => 'Store new category',
|
||||
|
||||
// transactions
|
||||
'update_withdrawal' => 'Update withdrawal',
|
||||
'update_deposit' => 'Update deposit',
|
||||
'update_transfer' => 'Update transfer',
|
||||
'delete_withdrawal' => 'Delete withdrawal ":description"',
|
||||
'delete_deposit' => 'Delete deposit ":description"',
|
||||
'delete_transfer' => 'Delete transfer ":description"',
|
||||
|
||||
// new user
|
||||
'welcome' => 'Welcome to Firefly!',
|
||||
'createNewAsset' => 'Create a new asset account to get started. This will allow you to create transactions and start your financial management',
|
||||
'createNewAssetButton' => 'Create new asset account',
|
||||
|
||||
// home page
|
||||
'yourAccounts' => 'Your accounts',
|
||||
'budgetsAndSpending' => 'Budgets and spending',
|
||||
'savings' => 'Savings',
|
||||
'markAsSavingsToContinue' => 'Mark your asset accounts as "Savings account" to fill this panel',
|
||||
'createPiggyToContinue' => 'Create piggy banks to fill this panel.',
|
||||
'newWithdrawal' => 'New expense',
|
||||
'newDeposit' => 'New deposit',
|
||||
'newTransfer' => 'New transfer',
|
||||
'moneyIn' => 'Money in',
|
||||
'moneyOut' => 'Money out',
|
||||
'billsToPay' => 'Bills to pay',
|
||||
'billsPaid' => 'Bills paid',
|
||||
'viewDetails' => 'View details',
|
||||
'divided' => 'divided',
|
||||
'toDivide' => 'left to divide',
|
||||
|
||||
// menu and titles, should be recycled as often as possible
|
||||
'toggleNavigation' => 'Toggle navigation',
|
||||
'currency' => 'Currency',
|
||||
'preferences' => 'Preferences',
|
||||
'logout' => 'Logout',
|
||||
'searchPlaceholder' => 'Search...',
|
||||
'dashboard' => 'Dashboard',
|
||||
'currencies' => 'Currencies',
|
||||
'accounts' => 'Accounts',
|
||||
'Asset account' => 'Asset account',
|
||||
'Default account' => 'Asset account',
|
||||
'Expense account' => 'Expense account',
|
||||
'Revenue account' => 'Revenue account',
|
||||
'Initial balance account' => 'Initial balance account',
|
||||
'budgets' => 'Budgets',
|
||||
'tags' => 'Tags',
|
||||
'reports' => 'Reports',
|
||||
'transactions' => 'Transactions',
|
||||
'expenses' => 'Expenses',
|
||||
'income' => 'Revenue / income',
|
||||
'transfers' => 'Transferts',
|
||||
'moneyManagement' => 'Money management',
|
||||
'piggyBanks' => 'Piggy banks',
|
||||
'bills' => 'Bills',
|
||||
'createNew' => 'Create new',
|
||||
'withdrawal' => 'Withdrawal',
|
||||
'deposit' => 'Deposit',
|
||||
'account' => 'Account',
|
||||
'transfer' => 'Transfer',
|
||||
'Withdrawal' => 'Withdrawal',
|
||||
'Deposit' => 'Deposit',
|
||||
'Transfer' => 'Transfer',
|
||||
'bill' => 'Bill',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'amount' => 'Amount',
|
||||
'newBalance' => 'New balance',
|
||||
'overview' => 'Overview',
|
||||
'saveOnAccount' => 'Save on account',
|
||||
'unknown' => 'Unknown',
|
||||
'daily' => 'Daily',
|
||||
'weekly' => 'Weekly',
|
||||
'monthly' => 'Monthly',
|
||||
'quarterly' => 'Quarterly',
|
||||
'half-year' => 'Every six months',
|
||||
'yearly' => 'Yearly',
|
||||
'profile' => 'Profile',
|
||||
|
||||
// reports
|
||||
'report_default' => 'Default financial report for :start until :end',
|
||||
'quick_link_reports' => 'Quick links',
|
||||
'quick_link_default_report' => 'Default financial report',
|
||||
'report_this_month_quick' => 'Current month, all accounts',
|
||||
'report_this_year_quick' => 'Current year, all accounts',
|
||||
'report_all_time_quick' => 'All-time, all accounts',
|
||||
'reports_can_bookmark' => 'Remember that reports can be bookmarked.',
|
||||
'incomeVsExpenses' => 'Income vs. expenses',
|
||||
'accountBalances' => 'Account balances',
|
||||
'balanceStartOfYear' => 'Balance at start of year',
|
||||
'balanceEndOfYear' => 'Balance at end of year',
|
||||
'balanceStartOfMonth' => 'Balance at start of month',
|
||||
'balanceEndOfMonth' => 'Balance at end of month',
|
||||
'balanceStart' => 'Balance at start of period',
|
||||
'balanceEnd' => 'Balance at end of period',
|
||||
'reportsOwnAccounts' => 'Reports for your own accounts',
|
||||
'reportsOwnAccountsAndShared' => 'Reports for your own accounts and shared accounts',
|
||||
'splitByAccount' => 'Split by account',
|
||||
'balancedByTransfersAndTags' => 'Balanced by transfers and tags',
|
||||
'coveredWithTags' => 'Covered with tags',
|
||||
'leftUnbalanced' => 'Left unbalanced',
|
||||
'expectedBalance' => 'Expected balance',
|
||||
'outsideOfBudgets' => 'Outside of budgets',
|
||||
'leftInBudget' => 'Left in budget',
|
||||
'sumOfSums' => 'Sum of sums',
|
||||
'noCategory' => '(no category)',
|
||||
'notCharged' => 'Not charged (yet)',
|
||||
'inactive' => 'Inactive',
|
||||
'difference' => 'Difference',
|
||||
'in' => 'In',
|
||||
'out' => 'Out',
|
||||
'topX' => 'top :number',
|
||||
'showTheRest' => 'Show everything',
|
||||
'hideTheRest' => 'Show only the top :number',
|
||||
'sum_of_year' => 'Sum of year',
|
||||
'sum_of_years' => 'Sum of years',
|
||||
'average_of_year' => 'Average of year',
|
||||
'average_of_years' => 'Average of years',
|
||||
'categories_earned_in_year' => 'Categories (by earnings)',
|
||||
'categories_spent_in_year' => 'Categories (by spendings)',
|
||||
'report_type' => 'Report type',
|
||||
'report_type_default' => 'Default financial report',
|
||||
'report_included_accounts' => 'Included accounts',
|
||||
'report_date_range' => 'Date range',
|
||||
'report_include_help' => 'In all cases, transfers to shared accounts count as expenses, and transfers from shared accounts count as income.',
|
||||
'report_preset_ranges' => 'Pre-set ranges',
|
||||
'shared' => 'Shared',
|
||||
|
||||
// charts
|
||||
'dayOfMonth' => 'Day of the month',
|
||||
'month' => 'Month',
|
||||
'budget' => 'Budget',
|
||||
'spent' => 'Spent',
|
||||
'earned' => 'Earned',
|
||||
'overspent' => 'Overspent',
|
||||
'left' => 'Left',
|
||||
'noBudget' => '(no budget)',
|
||||
'maxAmount' => 'Maximum amount',
|
||||
'minAmount' => 'Minumum amount',
|
||||
'billEntry' => 'Current bill entry',
|
||||
'name' => 'Name',
|
||||
'date' => 'Date',
|
||||
'paid' => 'Paid',
|
||||
'unpaid' => 'Unpaid',
|
||||
'day' => 'Day',
|
||||
'budgeted' => 'Budgeted',
|
||||
'period' => 'Period',
|
||||
'balance' => 'Balance',
|
||||
'summary' => 'Summary',
|
||||
'sum' => 'Sum',
|
||||
'average' => 'Average',
|
||||
'balanceFor' => 'Balance for :name',
|
||||
|
||||
// piggy banks
|
||||
'piggy_bank' => 'Piggy bank',
|
||||
'new_piggy_bank' => 'Create new piggy bank',
|
||||
'store_piggy_bank' => 'Store new piggy bank',
|
||||
'account_status' => 'Account status',
|
||||
'left_for_piggy_banks' => 'Left for piggy banks',
|
||||
'sum_of_piggy_banks' => 'Sum of piggy banks',
|
||||
'saved_so_far' => 'Saved so far',
|
||||
'left_to_save' => 'Left to save',
|
||||
'add_money_to_piggy_title' => 'Add money to piggy bank ":name"',
|
||||
'remove_money_from_piggy_title' => 'Remove money from piggy bank ":name"',
|
||||
'add' => 'Add',
|
||||
'remove' => 'Remove',
|
||||
'max_amount_add' => 'The maximum amount you can add is',
|
||||
'max_amount_remove' => 'The maximum amount you can remove is',
|
||||
'update_piggy_button' => 'Update piggy bank',
|
||||
'update_piggy_title' => 'Update piggy bank ":name"',
|
||||
'details' => 'Details',
|
||||
'events' => 'Events',
|
||||
'target_amount' => 'Target amount',
|
||||
'start_date' => 'Start date',
|
||||
'target_date' => 'Target date',
|
||||
'no_target_date' => 'No target date',
|
||||
'todo' => 'to do',
|
||||
'table' => 'Table',
|
||||
'piggy_bank_not_exists' => 'Piggy bank no longer exists.',
|
||||
'add_any_amount_to_piggy' => 'Add money to this piggy bank to reach your target of :amount.',
|
||||
'add_set_amount_to_piggy' => 'Add :amount to fill this piggy bank on :date',
|
||||
'delete_piggy_bank' => 'Delete piggy bank ":name"',
|
||||
|
||||
// tags
|
||||
'regular_tag' => 'Just a regular tag.',
|
||||
'balancing_act' => 'The tag takes at most two transactions; an expense and a transfer. They\'ll balance each other out.',
|
||||
'advance_payment' => 'The tag accepts one expense and any number of deposits aimed to repay the original expense.',
|
||||
|
||||
'delete_tag' => 'Supprimer le tag ":tag"',
|
||||
'new_tag' => 'Make new tag',
|
||||
'edit_tag' => 'Editer le tag ":tag"',
|
||||
'no_year' => 'No year set',
|
||||
'no_month' => 'No month set',
|
||||
'tag_title_nothing' => 'Default tags',
|
||||
'tag_title_balancingAct' => 'Balancing act tags',
|
||||
'tag_title_advancePayment' => 'Advance payment tags',
|
||||
'tags_introduction' => 'Usually tags are singular words, designed to quickly band items together using things like <span class="label label-info">expensive</span>, <span class="label label-info">bill</span> or <span class="label label-info">for-party</span>. In Firefly III, tags can have more properties such as a date, description and location. This allows you to join transactions together in a more meaningful way. For example, you could make a tag called <span class="label label-success">Christmas dinner with friends</span> and add information about the restaurant. Such tags are "singular", you would only use them for a single occasion, perhaps with multiple transactions.',
|
||||
'tags_group' => 'Tags group transactions together, which makes it possible to store reimbursements (in case you front money for others) and other "balancing acts" where expenses are summed up (the payments on your new TV) or where expenses and deposits are cancelling each other out (buying something with saved money). It\'s all up to you. Using tags the old-fashioned way is of course always possible. ',
|
||||
'tags_start' => 'Create a tag to get started or enter tags when creating new transactions.',
|
||||
|
||||
];
|
96
resources/lang/fr_FR/form.php
Normal file
96
resources/lang/fr_FR/form.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
return [
|
||||
|
||||
// new user:
|
||||
'bank_name' => 'Bank name',
|
||||
'bank_balance' => 'Balance',
|
||||
'savings_balance' => 'Savings balance',
|
||||
'credit_card_limit' => 'Credit card limit',
|
||||
'automatch' => 'Match automatically',
|
||||
'skip' => 'Skip',
|
||||
'name' => 'Name',
|
||||
'active' => 'Active',
|
||||
'amount_min' => 'Minimum amount',
|
||||
'amount_max' => 'Maximum amount',
|
||||
'match' => 'Matches on',
|
||||
'repeat_freq' => 'Repeats',
|
||||
'account_from_id' => 'From account',
|
||||
'account_to_id' => 'To account',
|
||||
'account_id' => 'Asset account',
|
||||
'budget_id' => 'Budget',
|
||||
'openingBalance' => 'Opening balance',
|
||||
'tagMode' => 'Tag mode',
|
||||
'tagPosition' => 'Tag location',
|
||||
'virtualBalance' => 'Virtual balance',
|
||||
'longitude_latitude' => 'Location',
|
||||
'targetamount' => 'Target amount',
|
||||
'accountRole' => 'Account role',
|
||||
'openingBalanceDate' => 'Opening balance date',
|
||||
'ccType' => 'Credit card payment plan',
|
||||
'ccMonthlyPaymentDate' => 'Credit card monthly payment date',
|
||||
'piggy_bank_id' => 'Piggy bank',
|
||||
'returnHere' => 'Return here',
|
||||
'returnHereExplanation' => 'After storing, return here to create another one.',
|
||||
'returnHereUpdateExplanation' => 'After updating, return here.',
|
||||
'description' => 'Description',
|
||||
'expense_account' => 'Expense account',
|
||||
'revenue_account' => 'Revenue account',
|
||||
'amount' => 'Amount',
|
||||
'date' => 'Date',
|
||||
'category' => 'Category',
|
||||
'tags' => 'Tags',
|
||||
'deletePermanently' => 'Delete permanently',
|
||||
'cancel' => 'Cancel',
|
||||
'targetdate' => 'Target date',
|
||||
'tag' => 'Tag',
|
||||
'under' => 'Under',
|
||||
'symbol' => 'Symbol',
|
||||
'code' => 'Code',
|
||||
'iban' => 'IBAN',
|
||||
'csv' => 'CSV file',
|
||||
'has_headers' => 'Headers',
|
||||
'date_format' => 'Date format',
|
||||
'csv_config' => 'CSV import configuration',
|
||||
'specifix' => 'Bank- or file specific fixes',
|
||||
'csv_import_account' => 'Default import account',
|
||||
'attachments[]' => 'Attachments',
|
||||
'store_new_withdrawal' => 'Store new withdrawal',
|
||||
'store_new_deposit' => 'Store new deposit',
|
||||
'store_new_transfer' => 'Store new transfer',
|
||||
'add_new_withdrawal' => 'Add a new withdrawal',
|
||||
'add_new_deposit' => 'Add a new deposit',
|
||||
'add_new_transfer' => 'Add a new transfer',
|
||||
'noPiggybank' => '(no piggy bank)',
|
||||
'noBudget' => '(no budget)',
|
||||
'title' => 'Title',
|
||||
'notes' => 'Notes',
|
||||
'filename' => 'File name',
|
||||
'mime' => 'Mime type',
|
||||
'size' => 'Size',
|
||||
|
||||
'delete_account' => 'Delete account ":name"',
|
||||
'delete_bill' => 'Supprimer la facture ":name"',
|
||||
'delete_budget' => 'Delete budget ":name"',
|
||||
'delete_category' => 'Delete category ":name"',
|
||||
'delete_currency' => 'Delete currency ":name"',
|
||||
'delete_journal' => 'Delete transaction with description ":description"',
|
||||
'delete_attachment' => 'Delete attachment ":name"',
|
||||
|
||||
'attachment_areYouSure' => 'Are you sure you want to delete the attachment named ":name"?',
|
||||
'account_areYouSure' => 'Are you sure you want to delete the account named ":name"?',
|
||||
'bill_areYouSure' => 'Are you sure you want to delete the bill named ":name"?',
|
||||
'budget_areYouSure' => 'Are you sure you want to delete the budget named ":name"?',
|
||||
'category_areYouSure' => 'Are you sure you want to delete the category named ":name"?',
|
||||
'currency_areYouSure' => 'Are you sure you want to delete the currency named ":name"?',
|
||||
'piggyBank_areYouSure' => 'Are you sure you want to delete the piggy bank named ":name"?',
|
||||
'journal_areYouSure' => 'Are you sure you want to delete the transaction described ":description"?',
|
||||
'tag_areYouSure' => 'Are you sure you want to delete the tag ":tag"?',
|
||||
|
||||
'permDeleteWarning' => 'Deleting stuff from Firely is permanent and cannot be undone.',
|
||||
'also_delete_transactions' => 'The only transaction connected to this account will be deleted as well.|All :count transactions connected to this account will be deleted as well.',
|
||||
'also_delete_piggyBanks' => 'The only piggy bank connected to this account will be deleted as well.|All :count piggy bank connected to this account will be deleted as well.',
|
||||
'bill_keep_transactions' => 'The only transaction connected to this bill will not be deleted.|All :count transactions connected to this bill will spared deletion.',
|
||||
'budget_keep_transactions' => 'The only transaction connected to this budget will not be deleted.|All :count transactions connected to this budget will spared deletion.',
|
||||
'category_keep_transactions' => 'The only transaction connected to this category will not be deleted.|All :count transactions connected to this category will spared deletion.',
|
||||
'tag_keep_transactions' => 'The only transaction connected to this tag will not be deleted.|All :count transactions connected to this tag will spared deletion.',
|
||||
];
|
@ -2,22 +2,22 @@
|
||||
return [
|
||||
|
||||
// tour!
|
||||
'main-content-title' => 'Welcome to Firefly III',
|
||||
'main-content-text' => 'Do yourself a favor and follow this short guide to make sure you know your way around.',
|
||||
'sidebar-toggle-title' => 'Sidebar to create stuff',
|
||||
'sidebar-toggle-text' => 'Hidden under the plus icon are all the buttons to create new stuff. Accounts, transactions, everything!',
|
||||
'account-menu-title' => 'All your accounts',
|
||||
'account-menu-text' => 'Here you can find all the accounts you\'ve made.',
|
||||
'budget-menu-title' => 'Budgets',
|
||||
'budget-menu-text' => 'Use this page to organise your finances and limit spending.',
|
||||
'report-menu-title' => 'Reports',
|
||||
'report-menu-text' => 'Check this out when you want a solid overview of your fiances.',
|
||||
'transaction-menu-title' => 'Transactions',
|
||||
'transaction-menu-text' => 'All transactions you\'ve created can be found here.',
|
||||
'option-menu-title' => 'Options',
|
||||
'option-menu-text' => 'This is pretty self-explanatory.',
|
||||
'main-content-end-title' => 'The end!',
|
||||
'main-content-end-text' => 'Remember that every page has a small question mark at the right top. Click it to get help about the page you\'re on.',
|
||||
'main-content-title' => 'Welcome to Firefly III',
|
||||
'main-content-text' => 'Do yourself a favor and follow this short guide to make sure you know your way around.',
|
||||
'sidebar-toggle-title' => 'Sidebar to create stuff',
|
||||
'sidebar-toggle-text' => 'Hidden under the plus icon are all the buttons to create new stuff. Accounts, transactions, everything!',
|
||||
'account-menu-title' => 'All your accounts',
|
||||
'account-menu-text' => 'Here you can find all the accounts you\'ve made.',
|
||||
'budget-menu-title' => 'Budgets',
|
||||
'budget-menu-text' => 'Use this page to organise your finances and limit spending.',
|
||||
'report-menu-title' => 'Rapport',
|
||||
'report-menu-text' => 'Check this out when you want a solid overview of your fiances.',
|
||||
'transaction-menu-title' => 'Transactions',
|
||||
'transaction-menu-text' => 'All transactions you\'ve created can be found here.',
|
||||
'option-menu-title' => 'Options',
|
||||
'option-menu-text' => 'This is pretty self-explanatory.',
|
||||
'main-content-end-title' => 'The end!',
|
||||
'main-content-end-text' => 'Remember that every page has a small question mark at the right top. Click it to get help about the page you\'re on.',
|
||||
|
||||
|
||||
'register' => 'register',
|
33
resources/lang/fr_FR/list.php
Normal file
33
resources/lang/fr_FR/list.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
// all table headers.
|
||||
|
||||
return [
|
||||
'name' => 'Name',
|
||||
'role' => 'Role',
|
||||
'currentBalance' => 'Current balance',
|
||||
'active' => 'Is active?',
|
||||
'lastActivity' => 'Last activity',
|
||||
'balanceDiff' => 'Balance difference between :start and :end',
|
||||
'matchedOn' => 'Matched on',
|
||||
'matchesOn' => 'Matched on',
|
||||
'matchingAmount' => 'Amount',
|
||||
'lastMatch' => 'Last match',
|
||||
'expectedMatch' => 'Expected match',
|
||||
'automatch' => 'Auto match?',
|
||||
'repeat_freq' => 'Repeats',
|
||||
'description' => 'Description',
|
||||
'amount' => 'Amount',
|
||||
'date' => 'Date',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'budget' => 'Budget',
|
||||
'category' => 'Category',
|
||||
'bill' => 'Bill',
|
||||
'withdrawal' => 'Withdrawal',
|
||||
'deposit' => 'Deposit',
|
||||
'transfer' => 'Transfer',
|
||||
'type' => 'Type',
|
||||
'completed' => 'Completed',
|
||||
'iban' => 'IBAN',
|
||||
];
|
19
resources/lang/fr_FR/pagination.php
Normal file
19
resources/lang/fr_FR/pagination.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Previous',
|
||||
'next' => 'Next »',
|
||||
|
||||
];
|
21
resources/lang/fr_FR/passwords.php
Normal file
21
resources/lang/fr_FR/passwords.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
"password" => "Passwords must be at least six characters and match the confirmation.",
|
||||
"user" => "We can't find a user with that e-mail address.",
|
||||
"token" => "This password reset token is invalid.",
|
||||
"sent" => "We have e-mailed your password reset link!",
|
||||
"reset" => "Your password has been reset!",
|
||||
'blocked' => 'Nice try though.'
|
||||
];
|
78
resources/lang/fr_FR/validation.php
Normal file
78
resources/lang/fr_FR/validation.php
Normal file
@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| such as the size rules. Feel free to tweak each of these messages.
|
||||
|
|
||||
*/
|
||||
'invalid_domain' => 'Due to security constraints, you cannot register from this domain.',
|
||||
'file_already_attached' => 'Uploaded file ":name" is already attached to this object.',
|
||||
'file_attached' => 'Succesfully uploaded file ":name".',
|
||||
'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.',
|
||||
'file_too_large' => 'File ":name" is too large.',
|
||||
'accepted' => 'Le champ :attribute doit être accepté.',
|
||||
"unique_for_user" => "There already is an entry with this :attribute.",
|
||||
'unique_object_for_user' => 'This name is already in use',
|
||||
'unique_account_for_user' => 'This account name is already in use',
|
||||
'active_url' => "Le champ :attribute n'est pas une URL valide.",
|
||||
'after' => 'Le champ :attribute doit être une date postérieure au :date.',
|
||||
'alpha' => 'Le champ :attribute doit seulement contenir des lettres.',
|
||||
'alpha_dash' => 'Le champ :attribute doit seulement contenir des lettres, des chiffres et des tirets.',
|
||||
'alpha_num' => 'Le champ :attribute doit seulement contenir des chiffres et des lettres.',
|
||||
'array' => 'Le champ :attribute doit être un tableau.',
|
||||
'before' => 'Le champ :attribute doit être une date antérieure au :date.',
|
||||
'between.numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.',
|
||||
'between.file' => 'Le fichier :attribute doit avoir une taille entre :min et :max kilo-octets.',
|
||||
'between.string' => 'Le texte :attribute doit avoir entre :min et :max caractères.',
|
||||
'between.array' => 'Le tableau :attribute doit avoir entre :min et :max éléments.',
|
||||
'boolean' => 'Le champ :attribute doit être vrai ou faux.',
|
||||
'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.',
|
||||
'date' => "Le champ :attribute n'est pas une date valide.",
|
||||
'date_format' => 'Le champ :attribute ne correspond pas au format :format.',
|
||||
'different' => 'Les champs :attribute et :other doivent être différents.',
|
||||
'digits' => 'Le champ :attribute doit avoir :digits chiffres.',
|
||||
'digits_between' => 'Le champ :attribute doit avoir entre :min et :max chiffres.',
|
||||
'email' => 'Le champ :attribute doit être une adresse email valide.',
|
||||
'exists' => 'Le champ :attribute sélectionné est invalide.',
|
||||
'filled' => 'Le champ :attribute est obligatoire.',
|
||||
'image' => 'Le champ :attribute doit être une image.',
|
||||
'in' => 'Le champ :attribute est invalide.',
|
||||
'integer' => 'Le champ :attribute doit être un entier.',
|
||||
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
|
||||
'json' => 'Le champ :attribute doit être un document JSON valide.',
|
||||
'max.numeric' => 'La valeur de :attribute ne peut être supérieure à :max.',
|
||||
'max.file' => 'Le fichier :attribute ne peut être plus gros que :max kilo-octets.',
|
||||
'max.string' => 'Le texte de :attribute ne peut contenir plus de :max caractères.',
|
||||
'max.array' => 'Le tableau :attribute ne peut avoir plus de :max éléments.',
|
||||
'mimes' => 'Le champ :attribute doit être un fichier de type : :values.',
|
||||
'min.numeric' => 'La valeur de :attribute doit être supérieure à :min.',
|
||||
'min.file' => 'Le fichier :attribute doit être plus gros que :min kilo-octets.',
|
||||
'min.string' => 'Le texte :attribute doit contenir au moins :min caractères.',
|
||||
'min.array' => 'Le tableau :attribute doit avoir au moins :min éléments.',
|
||||
'not_in' => "Le champ :attribute sélectionné n'est pas valide.",
|
||||
'numeric' => 'Le champ :attribute doit contenir un nombre.',
|
||||
'regex' => 'Le format du champ :attribute est invalide.',
|
||||
'required' => 'Le champ :attribute est obligatoire.',
|
||||
'required_if' => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.',
|
||||
'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.',
|
||||
'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.',
|
||||
'required_with_all' => 'Le champ :attribute est obligatoire quand :values est présent.',
|
||||
'required_without' => "Le champ :attribute est obligatoire quand :values n'est pas présent.",
|
||||
'required_without_all' => "Le champ :attribute est requis quand aucun de :values n'est présent.",
|
||||
'same' => 'Les champs :attribute et :other doivent être identiques.',
|
||||
'size.numeric' => 'La valeur de :attribute doit être :size.',
|
||||
'size.file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.',
|
||||
'size.string' => 'Le texte de :attribute doit contenir :size caractères.',
|
||||
'size.array' => 'Le tableau :attribute doit contenir :size éléments.',
|
||||
'string' => 'Le champ :attribute doit être une chaîne de caractères.',
|
||||
'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.',
|
||||
'unique' => 'La valeur du champ :attribute est déjà utilisée.',
|
||||
'url' => "Le format de l'URL de :attribute n'est pas valide.",
|
||||
];
|
@ -1,516 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// general stuff:
|
||||
'test' => 'Nederlands geselecteerd!',
|
||||
'close' => 'Sluiten',
|
||||
'pleaseHold' => 'Momentje...',
|
||||
'actions' => 'Acties',
|
||||
'edit' => 'Wijzig',
|
||||
'delete' => 'Verwijder',
|
||||
'welcomeBack' => 'Hoe staat het er voor?',
|
||||
'everything' => 'Alles',
|
||||
'customRange' => 'Zelf bereik kiezen',
|
||||
'apply' => 'Go',
|
||||
'cancel' => 'Annuleren',
|
||||
'from' => 'Van',
|
||||
'to' => 'Tot',
|
||||
'total_sum' => 'Totale som',
|
||||
'period_sum' => 'Som van periode',
|
||||
'showEverything' => 'Laat alles zien',
|
||||
'never' => 'Nooit',
|
||||
'search_results_for' => 'Zoekresultaten voor ":query"',
|
||||
'bounced_error' => 'Het emailtje naar :email kwam nooit aan.',
|
||||
'deleted_error' => 'Deze gegevens zijn niet correct.',
|
||||
'general_blocked_error' => 'Je account is uitgeschakeld, je kan helaas niet inloggen.',
|
||||
'removed_amount' => ':amount weggehaald',
|
||||
'added_amount' => ':amount toegevoegd',
|
||||
'asset_account_role_help' => 'Voorkeuren die voortkomen uit je keuze hier kan je later aangeven.',
|
||||
'Opening balance' => 'Startsaldo',
|
||||
'create_new_stuff' => 'Nieuw',
|
||||
'new_withdrawal' => 'Nieuwe uitgave',
|
||||
'new_deposit' => 'Nieuwe inkomsten',
|
||||
'new_transfer' => 'Nieuwe overschrijving',
|
||||
'new_asset_account' => 'Nieuwe betaalrekening',
|
||||
'new_expense_account' => 'Nieuwe crediteur',
|
||||
'new_revenue_account' => 'Nieuwe debiteur',
|
||||
'new_budget' => 'Nieuw budget',
|
||||
'new_bill' => 'Nieuw contract',
|
||||
|
||||
// tags
|
||||
'store_new_tag' => 'Sla tag op',
|
||||
'update_tag' => 'Sla wijzigingen op',
|
||||
'no_location_set' => 'Zonder plaats',
|
||||
'location' => 'Plaats',
|
||||
'meta_data' => 'Metagegevens',
|
||||
|
||||
// preferences
|
||||
'pref_home_screen_accounts' => 'Voorpaginarekeningen',
|
||||
'pref_home_screen_accounts_help' => 'Welke betaalrekeningen wil je op de voorpagina zien?',
|
||||
'pref_budget_settings' => 'Budgetinstellingen',
|
||||
'pref_budget_settings_help' => 'Wat is het maximale bedrag dat je voor een budget kan instellen?',
|
||||
'pref_view_range' => 'Bereik',
|
||||
'pref_view_range_help' => 'Sommige pagina\'s springen naar een standaard bereik. Welk bereik heeft jouw voorkeur?',
|
||||
'pref_1D' => 'Eén dag',
|
||||
'pref_1W' => 'Eén week',
|
||||
'pref_1M' => 'Eén maand',
|
||||
'pref_3M' => 'Drie maanden (kwartaal)',
|
||||
'pref_6M' => 'Zes maanden',
|
||||
'pref_languages' => 'Talen',
|
||||
'pref_languages_help' => 'Firefly III ondersteunt meerdere talen. Welke heeft jouw voorkeur?',
|
||||
'pref_save_settings' => 'Instellingen opslaan',
|
||||
|
||||
// profile:
|
||||
'change_your_password' => 'Verander je wachtwoord',
|
||||
'delete_account' => 'Verwijder je account',
|
||||
'current_password' => 'Huidige wachtwoord',
|
||||
'new_password' => 'Nieuw wachtwoord',
|
||||
'new_password_again' => 'Nieuw wachtwoord (bevestiging)',
|
||||
'delete_your_account' => 'Verwijder je account',
|
||||
'delete_your_account_help' => 'Als je je account verwijderd worden ook al je rekeningen, transacties en <em>alle andere zaken</em> verwijderd.' .
|
||||
' Alles is dan WEG.',
|
||||
'delete_your_account_password' => 'Voer je wachtwoord in om door te gaan.',
|
||||
'password' => 'Wachtwoord',
|
||||
'are_you_sure' => 'Zeker weten? Je kan niet meer terug!',
|
||||
'delete_account_button' => 'VERWIJDER je account',
|
||||
'invalid_current_password' => 'Huidige wachtwoord is niet geldig!',
|
||||
'password_changed' => 'Je wachtwoord is veranderd!',
|
||||
'should_change' => 'Vul ook echt een ander wachtwoord in.',
|
||||
'invalid_password' => 'Ongeldig wachtwoord!',
|
||||
|
||||
// attach
|
||||
'nr_of_attachments' => 'Eén bijlage|:count bijlagen',
|
||||
'attachments' => 'Bijlagen',
|
||||
'edit_attachment' => 'Wijzig bijlage ":name"',
|
||||
'update_attachment' => 'Update bijlage',
|
||||
'delete_attachment' => 'Verwijder bijlage ":name"',
|
||||
'attachment_deleted' => 'Bijlage ":name" verwijderd',
|
||||
'upload_max_file_size' => 'Maximale grootte: :size',
|
||||
|
||||
// tour:
|
||||
'prev' => 'Vorige',
|
||||
'next' => 'Volgende',
|
||||
'end-tour' => 'Einde',
|
||||
'pause' => 'Pauze',
|
||||
|
||||
// transaction index
|
||||
'title_expenses' => 'Uitgaven',
|
||||
'title_withdrawal' => 'Uitgaven',
|
||||
'title_revenue' => 'Inkomsten',
|
||||
'title_deposit' => 'Inkomsten',
|
||||
'title_transfer' => 'Overboekingen',
|
||||
'title_transfers' => 'Overboekingen',
|
||||
|
||||
// csv import:
|
||||
'csv_import' => 'Importeer CSV-bestand',
|
||||
'csv' => 'CSV',
|
||||
'csv_index_title' => 'Upload en importeer een kommagescheiden tekstbestand',
|
||||
'csv_define_column_roles' => 'Bepaal kolominhoud',
|
||||
'csv_map_values' => 'Leg relaties met kolomwaardes',
|
||||
'csv_download_config' => 'Download CSV configuratiebestand.',
|
||||
'csv_index_text' => 'Met deze (en de komende) pagina\'s kan je kommagescheiden tekstbestanden importeren. Deze tool is gebaseerd '
|
||||
. 'op de prachtige tool van <a href="https://www.atlassian.com/">Atlassian</a>. Om te beginnen selecteer'
|
||||
. ' je jouw tekstbestand bij "CSV-bestand". '
|
||||
. 'Als je hulp nodig hebt, klik dan op het <i class="fa fa-question-circle"></i>-icoontje rechtsboven.',
|
||||
'csv_index_beta_warning' => 'Deze tool is nog erg experimenteel. Wees dus voorzichtig.',
|
||||
'csv_header_help' => 'Zet hier een vinkje als de eerste rij van je tekstbestand bestaat uit kolomnamen,'
|
||||
. 'en niet uit daadwerkelijke gegevens.',
|
||||
'csv_date_help' => 'Het gebruikte datumformaat in jouw bestand. Gebruik het formaat zoals <a href="https://secure.'
|
||||
. 'php.net/manual/en/datetime.createfromformat.php#refsect1-datetime.createfromformat-parameters">deze'
|
||||
. ' pagina</a> het uitlegt (Engels). Het standaardformaat kan omgaan met data zoals deze: ' . date('Ymd'),
|
||||
'csv_csv_file_help' => 'Voer hier je kommagescheiden tekstbestand in. Je kan er maar één tegelijkertijd invoeren.',
|
||||
'csv_csv_config_file_help' => 'Voer hier je configuratiebestand in. Als je deze niet hebt, geen zorgen. Latere stappen leggen dit uit.',
|
||||
'csv_upload_button' => 'Begin de import',
|
||||
'csv_column_roles_title' => 'Bepaal de inhoud van elke kolom',
|
||||
'csv_column_roles_text' => 'Firefly kan niet automatisch ontdekken wat elke kolom betekent. Je moet het zelf aangeven. Gebruik de'
|
||||
. ' voorbeeldgegevens als je het ook niet zeker weet. Klik op het <i class="fa fa-question-circle"></i>-icoontje '
|
||||
. 'rechtsboven om te ontdekken wat elke kolomsoort precies is. Als de kolominhoud een directe'
|
||||
. ' relatie heeft met gegevens'
|
||||
. ' die al in Firefly staan, gebruik dan het vinkje. Tijdens de volgende stap komt Firefly hier dan op terug.',
|
||||
'csv_column_roles_table' => 'Kolominhoud',
|
||||
'csv_column' => 'CSV-kolom',
|
||||
'csv_column_name' => 'CSV-kolomnaam',
|
||||
'csv_column_example' => 'Voorbeeldgegevens',
|
||||
'csv_column_role' => 'Kolom bevat?',
|
||||
'csv_do_map_value' => 'Directe relatie?',
|
||||
'csv_continue' => 'Naar de volgende stap',
|
||||
'csv_go_back' => 'Terug naar de vorige stap',
|
||||
'csv_map_title' => 'Leg relaties met kolomwaardes',
|
||||
'csv_map_text' => 'Sommige kolommen bevatten waardes die misschien al in Firefly bestaan. Selecteer hier de juiste combinaties'
|
||||
. 'zodat het importeren netjes aansluit bij je huidige gegevens.',
|
||||
'csv_field_value' => 'Veldwaarde',
|
||||
'csv_field_mapped_to' => 'Is gelijk aan',
|
||||
'csv_do_not_map' => 'Geen relatie',
|
||||
'csv_download_config_title' => 'Download importconfiguratie',
|
||||
'csv_download_config_text' => 'Firefly is klaar om je bestand te importeren. De instellingen en selecties die je zojuist hebt gemaakt' .
|
||||
' kan je downloaden en opslaan. Bij de volgende keer kan je dit bestand ook uploaden. Als je' .
|
||||
' kommagescheiden bestand dezelfde indeling heeft, zullen alle selecties goed staan. Dat scheelt weer!',
|
||||
'csv_more_information_text' => 'Ook als het importeren fout gaat is dit bestand handig. Na het importeren krijg je nogmaals' .
|
||||
' de gelegenheid dit bestand te downloaden.',
|
||||
'csv_do_download_config' => 'Download het configuratiebestand',
|
||||
'csv_empty_description' => '(geen beschrijving)',
|
||||
'csv_upload_form' => 'CSV upload formulier',
|
||||
'csv_index_unsupported_warning' => 'Het volgende wordt nog niet ondersteund:',
|
||||
'csv_unsupported_map' => 'The importer cannot map the column ":columnRole" to existing values in the database.',
|
||||
'csv_unsupported_value' => 'The importer does not know how to handle values in columns marked as ":columnRole".',
|
||||
'csv_cannot_store_value' => 'The importer has not reserved space for columns marked ":columnRole" and will be incapable of processing them.',
|
||||
'csv_process_title' => 'Het importeren is klaar',
|
||||
'csv_process_text' => ':rows rijen zijn verwerkt.',
|
||||
'csv_row' => 'Rij',
|
||||
'csv_import_with_errors' => 'Er was één fout. Deze foutmelding is mogelijk in het Engels.|Er zijn :errors fouten opgetreden. De foutmeldingen'
|
||||
. ' zijn mogelijk in het Engels.',
|
||||
'csv_error_see_logs' => 'De logboeken bevatten mogelijk meer details.',
|
||||
'csv_process_new_entries' => 'Firefly heeft :imported nieuwe transactie(s) gemaakt.',
|
||||
'csv_start_over' => 'Begin opnieuw',
|
||||
'csv_to_index' => 'Naar de index',
|
||||
'csv_upload_not_writeable' => 'Kan niet naar onderstaand pad schrijven. Kan dus niet uploaden.',
|
||||
'csv_column__ignore' => '(negeer deze kolom)',
|
||||
'csv_column_account-iban' => 'Betaalrekening (IBAN)',
|
||||
'csv_column_account-id' => 'Betaalrekening (ID gelijk aan Firefly)',
|
||||
'csv_column_account-name' => 'Betaalrekeningnaam',
|
||||
'csv_column_amount' => 'Bedrag',
|
||||
'csv_column_bill-id' => 'Contract (ID gelijk aan Firefly)',
|
||||
'csv_column_bill-name' => 'Contractnaam',
|
||||
'csv_column_budget-id' => 'Budget (ID gelijk aan Firefly)',
|
||||
'csv_column_budget-name' => 'Budgetnaam',
|
||||
'csv_column_category-id' => 'Categorie (ID gelijk aan Firefly)',
|
||||
'csv_column_category-name' => 'Categorienaam',
|
||||
'csv_column_currency-code' => 'Valutacode (ISO 4217)',
|
||||
'csv_column_currency-id' => 'Valuta (ID gelijk aan Firefly)',
|
||||
'csv_column_currency-name' => 'Valutanaam',
|
||||
'csv_column_currency-symbol' => 'Valuta',
|
||||
'csv_column_date-rent' => 'Datum (renteberekening)',
|
||||
'csv_column_date-transaction' => 'Datum (transactie)',
|
||||
'csv_column_description' => 'Beschrijving',
|
||||
'csv_column_opposing-iban' => 'Tegenrekening (IBAN)',
|
||||
'csv_column_opposing-id' => 'Tegenrekening (ID gelijk aan Firefly)',
|
||||
'csv_column_opposing-name' => 'Tegenrekeningnaam',
|
||||
'csv_column_rabo-debet-credit' => 'Rabobankspecifiek bij/af indicator',
|
||||
'csv_column_sepa-ct-id' => 'SEPA transactienummer',
|
||||
'csv_column_sepa-ct-op' => 'SEPA tegenrekeningnummer',
|
||||
'csv_column_sepa-db' => 'SEPA "direct debet"-nummer',
|
||||
'csv_column_tags-comma' => 'Tags (kommagescheiden)',
|
||||
'csv_column_tags-space' => 'Tags (spatiegescheiden)',
|
||||
'csv_specifix_RabobankDescription' => 'Vink dit aan als je Rabobank bestanden importeert.',
|
||||
'csv_specifix_Dummy' => 'Dit vinkje doet niks (dummy).',
|
||||
'csv_import_account_help' => 'Als jouw CSV bestand geen referenties bevat naar jouw rekening(en), geef dan hier aan om welke rekening het gaat.',
|
||||
'csv_date_parse_error' => 'Kan geen chocola maken van ":value" (met hulp van configuratie ":format").' .
|
||||
' Weet je zeker dat je CSV bestand geen fouten bevat?',
|
||||
|
||||
// create new stuff:
|
||||
'create_new_withdrawal' => 'Nieuwe uitgave',
|
||||
'create_new_deposit' => 'Nieuwe inkomsten',
|
||||
'create_new_transfer' => 'Nieuwe overschrijving',
|
||||
'create_new_asset' => 'Nieuwe betaalrekening',
|
||||
'create_new_expense' => 'Nieuwe crediteur',
|
||||
'create_new_revenue' => 'Nieuwe debiteur',
|
||||
'create_new_piggy_bank' => 'Nieuw spaarpotje',
|
||||
'create_new_bill' => 'Nieuw contract',
|
||||
|
||||
// currencies:
|
||||
'create_currency' => 'Voeg nieuwe valuta toe',
|
||||
'edit_currency' => 'Wijzig valuta ":name"',
|
||||
'store_currency' => 'Sla nieuwe valuta op',
|
||||
'update_currency' => 'Wijzig valuta',
|
||||
|
||||
// new user:
|
||||
'submit' => 'Invoeren',
|
||||
'getting_started' => 'Aan de start!',
|
||||
'to_get_started' => 'Begin met de naam van de bank waar je je betaalrekening hebt, en het saldo van die rekening.',
|
||||
'savings_balance_text' => 'Voer ook het saldo van je spaarrekening in, als je die hebt.',
|
||||
'cc_balance_text' => 'Als je een credit card hebt, vul dan hier je credit cardlimiet in.',
|
||||
|
||||
// forms:
|
||||
'mandatoryFields' => 'Verplichte velden',
|
||||
'optionalFields' => 'Optionele velden',
|
||||
'options' => 'Opties',
|
||||
'something' => 'Iets!',
|
||||
|
||||
// budgets:
|
||||
'create_new_budget' => 'Maak een nieuw budget',
|
||||
'store_new_budget' => 'Sla nieuw budget op',
|
||||
'availableIn' => 'Beschikbaar in :date',
|
||||
'transactionsWithoutBudget' => 'Uitgaven zonder budget',
|
||||
'transactionsWithoutBudgetDate' => 'Uitgaven zonder budget in :date',
|
||||
'createBudget' => 'Maak nieuw budget',
|
||||
'inactiveBudgets' => 'Inactieve budgetten',
|
||||
'without_budget_between' => 'Transacties zonder budget tussen :start en :end',
|
||||
'budget_in_month' => ':name in :month',
|
||||
'delete_budget' => 'Verwijder budget ":name"',
|
||||
'edit_budget' => 'Wijzig budget ":name"',
|
||||
'update_amount' => 'Bedrag bijwerken',
|
||||
'update_budget' => 'Budget bijwerken',
|
||||
|
||||
// bills:
|
||||
'delete_bill' => 'Verwijder contract ":name"',
|
||||
'update_bill' => 'Wijzig contract',
|
||||
'edit_bill' => 'Wijzig contract ":name"',
|
||||
'store_new_bill' => 'Sla nieuw contract op',
|
||||
|
||||
// accounts:
|
||||
'details_for_asset' => 'Overzicht voor betaalrekening ":name"',
|
||||
'details_for_expense' => 'Overzicht voor crediteur ":name"',
|
||||
'details_for_revenue' => 'Overzicht voor debiteur ":name"',
|
||||
'details_for_cash' => 'Overzicht voor contant geldrekening ":name"',
|
||||
|
||||
'store_new_asset_account' => 'Sla nieuwe betaalrekening op',
|
||||
'store_new_expense_account' => 'Sla nieuwe crediteur op',
|
||||
'store_new_revenue_account' => 'Sla nieuwe debiteur op',
|
||||
|
||||
'edit_asset_account' => 'Wijzig betaalrekening ":name"',
|
||||
'edit_expense_account' => 'Wijzig crediteur ":name"',
|
||||
'edit_revenue_account' => 'Wijzig debiteur ":name"',
|
||||
|
||||
'delete_asset_account' => 'Verwijder betaalrekening ":name"',
|
||||
'delete_expense_account' => 'Verwijder crediteur ":name"',
|
||||
'delete_revenue_account' => 'Verwijder debiteur ":name"',
|
||||
|
||||
'asset_deleted' => 'Betaalrekening ":name" is verwijderd.',
|
||||
'expense_deleted' => 'Crediteur ":name" is verwijderd.',
|
||||
'revenue_deleted' => 'Debiteur ":name" is verwijderd.',
|
||||
|
||||
'update_asset_account' => 'Wijzig betaalrekening',
|
||||
'update_expense_account' => 'Wijzig crediteur',
|
||||
'update_revenue_account' => 'Wijzig debiteur',
|
||||
|
||||
'make_new_asset_account' => 'Nieuwe betaalrekening',
|
||||
'make_new_expense_account' => 'Nieuwe crediteur',
|
||||
'make_new_revenue_account' => 'Nieuwe debiteur',
|
||||
|
||||
'asset_accounts' => 'Betaalrekeningen',
|
||||
'expense_accounts' => 'Crediteuren',
|
||||
'revenue_accounts' => 'Debiteuren',
|
||||
'account_type' => 'Account type',
|
||||
|
||||
// some extra help:
|
||||
'accountExtraHelp_asset' => '',
|
||||
'accountExtraHelp_expense' =>
|
||||
'Een crediteur is een persoon of een bedrijf waar je geld aan moet betalen. Je staat bij ze in het krijt. Een verwarrende' .
|
||||
' term misschien, maar zo werkt het nou eenmaal. De supermarkt, je huurbaas of de bank zijn crediteuren. Jouw ' .
|
||||
'geld (krediet) gaat naar hen toe. De term komt uit de wereld van de boekhouding. De uitgaves die je hier ziet zijn ' .
|
||||
'positief, want je kijkt uit hun perspectief. Zodra jij afrekent in een winkel, komt het geld er bij hen bij (positief).',
|
||||
'accountExtraHelp_revenue' => 'Als je geld krijgt van een bedrijf of een persoon is dat een debiteur. ' .
|
||||
'Dat kan salaris zijn, of een andere betaling. ' .
|
||||
' Ze hebben een schuld (debet) aan jou. De term komt uit de wereld van de boekhouding.' .
|
||||
' De inkomsten die je hier ziet zijn negatief, want je kijkt uit hun perspectief. Zodra een debiteur geld naar jou ' .
|
||||
'overmaakt gaat het er bij hen af (negatief).',
|
||||
'save_transactions_by_moving' => 'Bewaar deze transacties door ze aan een andere rekening te koppelen:',
|
||||
|
||||
// categories:
|
||||
'new_category' => 'Nieuwe categorie',
|
||||
'create_new_category' => 'Nieuwe categorie',
|
||||
'without_category' => 'Zonder categorie',
|
||||
'update_category' => 'Wijzig categorie',
|
||||
'edit_category' => 'Wijzig categorie ":name"',
|
||||
'categories' => 'Categorieën',
|
||||
'no_category' => '(geen categorie)',
|
||||
'category' => 'Categorie',
|
||||
'delete_category' => 'Verwijder categorie ":name"',
|
||||
'store_category' => 'Sla nieuwe categorie op',
|
||||
|
||||
// transactions:
|
||||
'update_withdrawal' => 'Wijzig uitgave',
|
||||
'update_deposit' => 'Wijzig inkomsten',
|
||||
'update_transfer' => 'Wijzig overschrijving',
|
||||
'delete_withdrawal' => 'Verwijder uitgave ":description"',
|
||||
'delete_deposit' => 'Verwijder inkomsten ":description"',
|
||||
'delete_transfer' => 'Verwijder overschrijving ":description"',
|
||||
|
||||
// new user:
|
||||
'welcome' => 'Welkom bij Firefly!',
|
||||
'createNewAsset' => 'Maak om te beginnen een nieuwe betaalrekening. Dit is je start van je financiële beheer.',
|
||||
'createNewAssetButton' => 'Maak een nieuwe betaalrekening',
|
||||
|
||||
|
||||
// home page:
|
||||
'yourAccounts' => 'Je betaalrekeningen',
|
||||
'budgetsAndSpending' => 'Budgetten en uitgaven',
|
||||
'savings' => 'Sparen',
|
||||
'markAsSavingsToContinue' => 'Om hier wat te zien stel je je betaalrekeningen in als "spaarrekening".',
|
||||
'createPiggyToContinue' => 'Maak spaarpotjes om hier iets te zien.',
|
||||
'newWithdrawal' => 'Nieuwe uitgave',
|
||||
'newDeposit' => 'Nieuwe inkomsten',
|
||||
'newTransfer' => 'Nieuwe overschrijving',
|
||||
'moneyIn' => 'Inkomsten',
|
||||
'moneyOut' => 'Uitgaven',
|
||||
'billsToPay' => 'Openstaande contracten',
|
||||
'billsPaid' => 'Betaalde contracten',
|
||||
'viewDetails' => 'Meer info',
|
||||
'divided' => 'verdeeld',
|
||||
'toDivide' => 'te verdelen',
|
||||
|
||||
// menu and titles, should be recycled as often as possible:
|
||||
'toggleNavigation' => 'Navigatie aan of uit',
|
||||
'currency' => 'Valuta',
|
||||
'preferences' => 'Voorkeuren',
|
||||
'logout' => 'Uitloggen',
|
||||
'searchPlaceholder' => 'Zoeken...',
|
||||
'dashboard' => 'Dashboard',
|
||||
'currencies' => 'Valuta',
|
||||
'accounts' => 'Rekeningen',
|
||||
'Asset account' => 'Betaalrekening',
|
||||
'Default account' => 'Betaalrekening',
|
||||
'Expense account' => 'Crediteur',
|
||||
'Revenue account' => 'Debiteur',
|
||||
'Initial balance account' => 'Startbalansrekening',
|
||||
'budgets' => 'Budgetten',
|
||||
'tags' => 'Tags',
|
||||
'reports' => 'Overzichten',
|
||||
'transactions' => 'Transacties',
|
||||
'expenses' => 'Uitgaven',
|
||||
'income' => 'Inkomsten',
|
||||
'transfers' => 'Overschrijvingen',
|
||||
'moneyManagement' => 'Geldbeheer',
|
||||
'piggyBanks' => 'Spaarpotjes',
|
||||
'bills' => 'Contracten',
|
||||
'createNew' => 'Nieuw',
|
||||
'withdrawal' => 'Uitgave',
|
||||
'deposit' => 'Inkomsten',
|
||||
'account' => 'Rekening',
|
||||
'transfer' => 'Overschrijving',
|
||||
'Withdrawal' => 'Uitgave',
|
||||
'Deposit' => 'Inkomsten',
|
||||
'Transfer' => 'Overschrijving',
|
||||
'profile' => 'Profiel',
|
||||
'bill' => 'Contract',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nee',
|
||||
'amount' => 'Bedrag',
|
||||
'newBalance' => 'Nieuw saldo',
|
||||
'overview' => 'Overzicht',
|
||||
'saveOnAccount' => 'Sparen op rekening',
|
||||
'unknown' => 'Onbekend',
|
||||
'daily' => 'Dagelijks',
|
||||
'weekly' => 'Wekelijks',
|
||||
'monthly' => 'Maandelijks',
|
||||
'quarterly' => 'Elk kwartaal',
|
||||
'half-year' => 'Elk half jaar',
|
||||
'yearly' => 'Jaarlijks',
|
||||
'sum_of_year' => 'Som van jaar',
|
||||
'average_of_year' => 'Gemiddelde in jaar',
|
||||
'sum_of_years' => 'Som van jaren',
|
||||
'average_of_years' => 'Gemiddelde in jaren',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Standaard financieel rapport (:start tot :end)',
|
||||
'quick_link_reports' => 'Snelle links',
|
||||
'quick_link_default_report' => 'Standaard financieel rapport',
|
||||
'report_this_month_quick' => 'Deze maand, alle rekeningen',
|
||||
'report_this_year_quick' => 'Dit jaar, alle rekeningen',
|
||||
'report_all_time_quick' => 'Gehele periode, alle rekeningen',
|
||||
'reports_can_bookmark' => 'Je kan rapporten aan je favorieten toevoegen.',
|
||||
'incomeVsExpenses' => 'Inkomsten tegenover uitgaven',
|
||||
'accountBalances' => 'Rekeningsaldi',
|
||||
'balanceStartOfYear' => 'Saldo aan het begin van het jaar',
|
||||
'balanceEndOfYear' => 'Saldo aan het einde van het jaar',
|
||||
'balanceStartOfMonth' => 'Saldo aan het begin van de maand',
|
||||
'balanceEndOfMonth' => 'Saldo aan het einde van de maand',
|
||||
'balanceStart' => 'Saldo aan het begin van de periode',
|
||||
'balanceEnd' => 'Saldo aan het einde van de periode',
|
||||
'reportsOwnAccounts' => 'Overzichten voor je eigen betaalrekeningen',
|
||||
'reportsOwnAccountsAndShared' => 'Overzichten voor je eigen betaalrekeningen en gedeelde rekeningen',
|
||||
'splitByAccount' => 'Per betaalrekening',
|
||||
'balancedByTransfersAndTags' => 'Gecorrigeerd met overschrijvingen en tags',
|
||||
'coveredWithTags' => 'Gecorrigeerd met tags',
|
||||
'leftUnbalanced' => 'Ongecorrigeerd',
|
||||
'expectedBalance' => 'Verwacht saldo',
|
||||
'outsideOfBudgets' => 'Buiten budgetten',
|
||||
'leftInBudget' => 'Over van budget',
|
||||
'sumOfSums' => 'Alles bij elkaar',
|
||||
'noCategory' => '(zonder categorie)',
|
||||
'notCharged' => '(Nog) niet betaald',
|
||||
'inactive' => 'Niet actief',
|
||||
'difference' => 'Verschil',
|
||||
'in' => 'In',
|
||||
'out' => 'Uit',
|
||||
'topX' => 'top :number',
|
||||
'showTheRest' => 'Laat alles zien',
|
||||
'hideTheRest' => 'Laat alleen de top :number zien',
|
||||
'categories_earned_in_year' => 'Categorieën (inkomsten)',
|
||||
'categories_spent_in_year' => 'Categorieën (uitgaven)',
|
||||
'report_type' => 'Rapporttype',
|
||||
'report_type_default' => 'Standard financieel rapport',
|
||||
'report_included_accounts' => 'Accounts in rapport',
|
||||
'report_date_range' => 'Datumbereik',
|
||||
'report_include_help' => 'Overboekingen naar gedeelde rekeningen tellen als uitgave. Overboekingen van gedeelde rekeningen tellen als inkomsten.',
|
||||
'report_preset_ranges' => 'Standaardbereik',
|
||||
'shared' => 'Gedeeld',
|
||||
|
||||
|
||||
// charts:
|
||||
'dayOfMonth' => 'Dag vd maand',
|
||||
'month' => 'Maand',
|
||||
'budget' => 'Budget',
|
||||
'spent' => 'Uitgegeven',
|
||||
'earned' => 'Verdiend',
|
||||
'overspent' => 'Teveel uitgegeven',
|
||||
'left' => 'Over',
|
||||
'noBudget' => '(geen budget)',
|
||||
'maxAmount' => 'Maximaal bedrag',
|
||||
'minAmount' => 'Minimaal bedrag',
|
||||
'billEntry' => 'Bedrag voor dit contract',
|
||||
'name' => 'Naam',
|
||||
'date' => 'Datum',
|
||||
'paid' => 'Betaald',
|
||||
'unpaid' => 'Niet betaald',
|
||||
'day' => 'Dag',
|
||||
'budgeted' => 'Gebudgetteerd',
|
||||
'period' => 'Periode',
|
||||
'balance' => 'Saldo',
|
||||
'summary' => 'Samenvatting',
|
||||
'sum' => 'Som',
|
||||
'average' => 'Gemiddeld',
|
||||
'balanceFor' => 'Saldo op :name',
|
||||
|
||||
// piggy banks:
|
||||
'piggy_bank' => 'Spaarpotje',
|
||||
'new_piggy_bank' => 'Nieuw spaarpotje',
|
||||
'store_piggy_bank' => 'Sla spaarpotje op',
|
||||
'account_status' => 'Rekeningoverzicht',
|
||||
'left_for_piggy_banks' => 'Over voor spaarpotjes',
|
||||
'sum_of_piggy_banks' => 'Som van spaarpotjes',
|
||||
'saved_so_far' => 'Gespaard',
|
||||
'left_to_save' => 'Te sparen',
|
||||
'add_money_to_piggy_title' => 'Stop geld in spaarpotje ":name"',
|
||||
'remove_money_from_piggy_title' => 'Haal geld uit spaarpotje ":name"',
|
||||
'add' => 'Toevoegen',
|
||||
'remove' => 'Verwijderen',
|
||||
'max_amount_add' => 'Hooguit toe te voegen',
|
||||
'max_amount_remove' => 'Hooguit te verwijderen',
|
||||
'update_piggy_button' => 'Wijzig spaarpotje',
|
||||
'update_piggy_title' => 'Wijzig spaarpotje ":name"',
|
||||
'details' => 'Details',
|
||||
'events' => 'Gebeurtenissen',
|
||||
'target_amount' => 'Doelbedrag',
|
||||
'start_date' => 'Startdatum',
|
||||
'target_date' => 'Doeldatum',
|
||||
'no_target_date' => 'Geen doeldatum',
|
||||
'todo' => 'te doen',
|
||||
'table' => 'Tabel',
|
||||
'piggy_bank_not_exists' => 'Dit spaarpotje bestaat niet meer.',
|
||||
'add_any_amount_to_piggy' => 'Stop geld in dit spaarpotje om het doel van :amount te halen.',
|
||||
'add_set_amount_to_piggy' => 'Stop voor :date :amount in dit spaarpotje om hem op tijd te vullen.',
|
||||
'delete_piggy_bank' => 'Verwijder spaarpotje ":name"',
|
||||
|
||||
// tags
|
||||
'regular_tag' => 'Een gewone tag.',
|
||||
'balancing_act' => 'Er kunnen maar twee transacties worden getagged; een uitgaven en inkomsten. Ze balanceren elkaar.',
|
||||
'advance_payment' => 'Je kan een uitgave taggen en zoveel inkomsten om de uitgave (helemaal) te compenseren.',
|
||||
'delete_tag' => 'Verwijder tag ":tag"',
|
||||
'new_tag' => 'Maak nieuwe tag',
|
||||
'edit_tag' => 'Wijzig tag ":tag"',
|
||||
'no_year' => 'Zonder jaar',
|
||||
'no_month' => 'Zonder maand',
|
||||
'tag_title_nothing' => 'Standaard tags',
|
||||
'tag_title_balancingAct' => 'Balancerende tags',
|
||||
'tag_title_advancePayment' => 'Vooruitbetaalde tags',
|
||||
'tags_introduction' => 'Normaal gesproken zijn tags enkele woorden, gebruikt om gerelateerde zaken snel aan elkaar te plakken. ' .
|
||||
'<span class="label label-info">dure-aanschaf</span>, <span class="label label-info">rekening</span>, ' .
|
||||
'<span class="label label-info">feestje</span>. In Firefly III hebben tags meer betekenis en kan je er een datum' .
|
||||
', beschrijving en locatie aan geven. Daarmee kan je je transacties op een wat zinvollere manier aan elkaar ' .
|
||||
'koppelen. Je kan bijvoorbeeld een tag <span class="label label-success">Kerstdiner</span> maken en informatie over' .
|
||||
' het restaurant meenemen. Zulke tags zijn enkelvoudig; je gebruikt ze maar bij één gelegenheid.',
|
||||
'tags_group' => 'Omdat tags transacties groeperen kan je er teruggaves, vergoedingen en andere geldzaken mee aanduiden, zolang' .
|
||||
' de transacties elkaar "opheffen". Hoe je dit aanpakt is aan jou. De gewone manier kan natuurlijk ook.',
|
||||
'tags_start' => 'Maak hieronder een tag, of voer nieuwe tags in als je nieuwe transacties maakt.',
|
||||
];
|
@ -1,78 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'invalid_domain' => 'Kan niet registereren vanaf dit domein.',
|
||||
'file_already_attached' => 'Het geuploade bestand ":name" is al gelinkt aan deze transactie.',
|
||||
'file_attached' => 'Bestand met naam ":name" is met succes geuploaded.',
|
||||
'file_invalid_mime' => 'Bestand ":name" is van het type ":mime", en die kan je niet uploaden.',
|
||||
'file_too_large' => 'Bestand ":name" is te groot.',
|
||||
"accepted" => "The :attribute must be accepted.",
|
||||
"active_url" => "The :attribute is not a valid URL.",
|
||||
"after" => "The :attribute must be a date after :date.",
|
||||
"alpha" => "The :attribute may only contain letters.",
|
||||
"alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
|
||||
"alpha_num" => "The :attribute may only contain letters and numbers.",
|
||||
"array" => "The :attribute must be an array.",
|
||||
"unique_for_user" => "There already is an entry with this :attribute.",
|
||||
"before" => "The :attribute must be a date before :date.",
|
||||
'unique_object_for_user' => 'Deze naam is al in gebruik',
|
||||
'unique_account_for_user' => 'This rekeningnaam is already in use',
|
||||
"between.numeric" => "The :attribute must be between :min and :max.",
|
||||
"between.file" => "The :attribute must be between :min and :max kilobytes.",
|
||||
"between.string" => "The :attribute must be between :min and :max characters.",
|
||||
"between.array" => "The :attribute must have between :min and :max items.",
|
||||
"boolean" => "The :attribute field must be true or false.",
|
||||
"confirmed" => "The :attribute confirmation does not match.",
|
||||
"date" => "The :attribute is not a valid date.",
|
||||
"date_format" => "The :attribute does not match the format :format.",
|
||||
"different" => "The :attribute and :other must be different.",
|
||||
"digits" => "The :attribute must be :digits digits.",
|
||||
"digits_between" => "The :attribute must be between :min and :max digits.",
|
||||
"email" => "The :attribute must be a valid email address.",
|
||||
"filled" => "The :attribute field is required.",
|
||||
"exists" => "The selected :attribute is invalid.",
|
||||
"image" => "The :attribute must be an image.",
|
||||
"in" => "The selected :attribute is invalid.",
|
||||
"integer" => "The :attribute must be an integer.",
|
||||
"ip" => "The :attribute must be a valid IP address.",
|
||||
"max.numeric" => "The :attribute may not be greater than :max.",
|
||||
"max.file" => "The :attribute may not be greater than :max kilobytes.",
|
||||
"max.string" => "The :attribute may not be greater than :max characters.",
|
||||
"max.array" => "The :attribute may not have more than :max items.",
|
||||
"mimes" => "The :attribute must be a file of type: :values.",
|
||||
"min.numeric" => "The :attribute must be at least :min.",
|
||||
"min.file" => "The :attribute must be at least :min kilobytes.",
|
||||
"min.string" => "The :attribute must be at least :min characters.",
|
||||
"min.array" => "The :attribute must have at least :min items.",
|
||||
"not_in" => "The selected :attribute is invalid.",
|
||||
"numeric" => "The :attribute must be a number.",
|
||||
"regex" => "The :attribute format is invalid.",
|
||||
"required" => "The :attribute field is required.",
|
||||
"required_if" => "The :attribute field is required when :other is :value.",
|
||||
"required_with" => "The :attribute field is required when :values is present.",
|
||||
"required_with_all" => "The :attribute field is required when :values is present.",
|
||||
"required_without" => "The :attribute field is required when :values is not present.",
|
||||
"required_without_all" => "The :attribute field is required when none of :values are present.",
|
||||
"same" => "The :attribute and :other must match.",
|
||||
"size.numeric" => "The :attribute must be :size.",
|
||||
"size.file" => "The :attribute must be :size kilobytes.",
|
||||
"size.string" => "The :attribute must be :size characters.",
|
||||
"size.array" => "The :attribute must contain :size items.",
|
||||
"unique" => "The :attribute has already been taken.",
|
||||
"url" => "The :attribute format is invalid.",
|
||||
"timezone" => "The :attribute must be a valid zone.",
|
||||
'attributes' => [],
|
||||
|
||||
];
|
8
resources/lang/nl_NL/config.php
Normal file
8
resources/lang/nl_NL/config.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'locale' => 'nl, Dutch, nl_NL, nl_NL.utf8',
|
||||
'month' => '%B %Y',
|
||||
'month_and_day' => '%e %B %Y',
|
||||
|
||||
];
|
477
resources/lang/nl_NL/firefly.php
Normal file
477
resources/lang/nl_NL/firefly.php
Normal file
@ -0,0 +1,477 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// general stuff:
|
||||
'test' => 'Nederlands geselecteerd!',
|
||||
'close' => 'Sluiten',
|
||||
'pleaseHold' => 'Momentje...',
|
||||
'actions' => 'Acties',
|
||||
'edit' => 'Wijzig',
|
||||
'delete' => 'Verwijder',
|
||||
'welcomeBack' => 'Hoe staat het er voor?',
|
||||
'everything' => 'Alles',
|
||||
'customRange' => 'Zelf bereik kiezen',
|
||||
'apply' => 'Go',
|
||||
'cancel' => 'Annuleren',
|
||||
'from' => 'Van',
|
||||
'to' => 'Tot',
|
||||
'total_sum' => 'Totale som',
|
||||
'period_sum' => 'Som van periode',
|
||||
'showEverything' => 'Laat alles zien',
|
||||
'never' => 'Nooit',
|
||||
'search_results_for' => 'Zoekresultaten voor ":query"',
|
||||
'bounced_error' => 'Het emailtje naar :email kwam nooit aan.',
|
||||
'deleted_error' => 'Deze gegevens zijn niet correct.',
|
||||
'general_blocked_error' => 'Je account is uitgeschakeld, je kan helaas niet inloggen.',
|
||||
'removed_amount' => ':amount weggehaald',
|
||||
'added_amount' => ':amount toegevoegd',
|
||||
'asset_account_role_help' => 'Voorkeuren die voortkomen uit je keuze hier kan je later aangeven.',
|
||||
'Opening balance' => 'Startsaldo',
|
||||
'create_new_stuff' => 'Nieuw',
|
||||
'new_withdrawal' => 'Nieuwe uitgave',
|
||||
'new_deposit' => 'Nieuwe inkomsten',
|
||||
'new_transfer' => 'Nieuwe overschrijving',
|
||||
'new_asset_account' => 'Nieuwe betaalrekening',
|
||||
'new_expense_account' => 'Nieuwe crediteur',
|
||||
'new_revenue_account' => 'Nieuwe debiteur',
|
||||
'new_budget' => 'Nieuw budget',
|
||||
'new_bill' => 'Nieuw contract',
|
||||
|
||||
// tags
|
||||
'store_new_tag' => 'Sla tag op',
|
||||
'update_tag' => 'Sla wijzigingen op',
|
||||
'no_location_set' => 'Zonder plaats',
|
||||
'meta_data' => 'Metagegevens',
|
||||
'location' => 'Plaats',
|
||||
|
||||
// preferences
|
||||
'pref_home_screen_accounts' => 'Voorpaginarekeningen',
|
||||
'pref_home_screen_accounts_help' => 'Welke betaalrekeningen wil je op de voorpagina zien?',
|
||||
'pref_budget_settings' => 'Budgetinstellingen',
|
||||
'pref_budget_settings_help' => 'Wat is het maximale bedrag dat je voor een budget kan instellen?',
|
||||
'pref_view_range' => 'Bereik',
|
||||
'pref_view_range_help' => 'Sommige pagina\'s springen naar een standaard bereik. Welk bereik heeft jouw voorkeur?',
|
||||
'pref_1D' => 'Eén dag',
|
||||
'pref_1W' => 'Eén week',
|
||||
'pref_1M' => 'Eén maand',
|
||||
'pref_3M' => 'Drie maanden (kwartaal)',
|
||||
'pref_6M' => 'Zes maanden',
|
||||
'pref_languages' => 'Talen',
|
||||
'pref_languages_help' => 'Firefly III ondersteunt meerdere talen. Welke heeft jouw voorkeur?',
|
||||
'pref_save_settings' => 'Instellingen opslaan',
|
||||
|
||||
// profile:
|
||||
'change_your_password' => 'Verander je wachtwoord',
|
||||
'delete_account' => 'Verwijder je account',
|
||||
'current_password' => 'Huidige wachtwoord',
|
||||
'new_password' => 'Nieuw wachtwoord',
|
||||
'new_password_again' => 'Nieuw wachtwoord (bevestiging)',
|
||||
'delete_your_account' => 'Verwijder je account',
|
||||
'delete_your_account_help' => 'Als je je account verwijdert worden ook al je rekeningen, transacties en <em>alle andere zaken</em> verwijderd. Alles is dan WEG.',
|
||||
'delete_your_account_password' => 'Voer je wachtwoord in om door te gaan.',
|
||||
'password' => 'Wachtwoord',
|
||||
'are_you_sure' => 'Zeker weten? Je kan niet meer terug!',
|
||||
'delete_account_button' => 'VERWIJDER je account',
|
||||
'invalid_current_password' => 'Huidige wachtwoord is niet geldig!',
|
||||
'password_changed' => 'Je wachtwoord is veranderd!',
|
||||
'should_change' => 'Vul ook echt een ander wachtwoord in.',
|
||||
'invalid_password' => 'Ongeldig wachtwoord!',
|
||||
|
||||
|
||||
// attachments
|
||||
'nr_of_attachments' => 'Eén bijlage|:count bijlagen',
|
||||
'attachments' => 'Bijlagen',
|
||||
'edit_attachment' => 'Wijzig bijlage ":name"',
|
||||
'update_attachment' => 'Update bijlage',
|
||||
'delete_attachment' => 'Verwijder bijlage ":name"',
|
||||
'attachment_deleted' => 'Bijlage ":name" verwijderd',
|
||||
'upload_max_file_size' => 'Maximale grootte: :size',
|
||||
|
||||
// tour:
|
||||
'prev' => 'Vorige',
|
||||
'next' => 'Volgende',
|
||||
'end-tour' => 'Einde',
|
||||
'pause' => 'Pauze',
|
||||
|
||||
// transaction index
|
||||
'title_expenses' => 'Uitgaven',
|
||||
'title_withdrawal' => 'Uitgaven',
|
||||
'title_revenue' => 'Inkomsten',
|
||||
'title_deposit' => 'Inkomsten',
|
||||
'title_transfer' => 'Overboekingen',
|
||||
'title_transfers' => 'Overboekingen',
|
||||
|
||||
// csv import:
|
||||
'csv_import' => 'Importeer CSV-bestand',
|
||||
'csv' => 'CSV',
|
||||
'csv_index_title' => 'Upload en importeer een kommagescheiden tekstbestand',
|
||||
'csv_define_column_roles' => 'Bepaal kolominhoud',
|
||||
'csv_map_values' => 'Leg relaties met kolomwaardes',
|
||||
'csv_download_config' => 'Download CSV configuratiebestand.',
|
||||
'csv_index_text' => 'Met deze (en de komende) pagina\'s kan je kommagescheiden tekstbestanden importeren. Deze tool is gebaseerd op de prachtige tool van <a href="https://www.atlassian.com/">Atlassian</a>. Om te beginnen selecteer je jouw tekstbestand bij "CSV-bestand". Als je hulp nodig hebt, klik dan op het <i class="fa fa-question-circle"></i>-icoontje rechtsboven.',
|
||||
'csv_index_beta_warning' => 'Deze tool is nog erg experimenteel. Wees dus voorzichtig.',
|
||||
'csv_header_help' => 'Zet hier een vinkje als de eerste rij van het CSV-bestand de namen van de kolommen bevat',
|
||||
'csv_date_help' => 'Het gebruikte datumformaat in jouw bestand. Gebruik het formaat zoals <a href="https://secure.php.net/manual/en/datetime.createfromformat.php#refsect1-datetime.createfromformat-parameters">deze pagina</a> het uitlegt (Engels). Het standaardformaat kan omgaan met data zoals deze: :dateExample.',
|
||||
'csv_csv_file_help' => 'Voer hier je kommagescheiden tekstbestand in. Je kan er maar één tegelijkertijd invoeren.',
|
||||
'csv_csv_config_file_help' => 'Voer hier je configuratiebestand in. Als je deze niet hebt, geen zorgen. Latere stappen leggen dit uit.',
|
||||
'csv_upload_button' => 'Begin de import',
|
||||
'csv_column_roles_title' => 'Bepaal de inhoud van elke kolom',
|
||||
'csv_column_roles_text' => 'Firefly kan niet automatisch ontdekken wat elke kolom betekent. Je moet het zelf aangeven. Gebruik de voorbeeldgegevens als je het ook niet zeker weet. Klik op het vraagteken-icoontje (rechtsboven) om te ontdekken wat elke kolomsoort precies is. Als de kolominhoud een directe relatie heeft met gegevens die al in Firefly staan, gebruik dan het vinkje. Tijdens de volgende stap komt Firefly hier dan op terug.',
|
||||
'csv_column_roles_table' => 'Kolominhoud',
|
||||
'csv_column' => 'CSV-kolom',
|
||||
'csv_column_name' => 'CSV-kolomnaam',
|
||||
'csv_column_example' => 'Voorbeeldgegevens',
|
||||
'csv_column_role' => 'Kolom bevat?',
|
||||
'csv_do_map_value' => 'Directe relatie?',
|
||||
'csv_continue' => 'Naar de volgende stap',
|
||||
'csv_go_back' => 'Terug naar de vorige stap',
|
||||
'csv_map_title' => 'Leg relaties met kolomwaardes',
|
||||
'csv_map_text' => 'Sommige kolommen bevatten waardes die misschien al in Firefly bestaan. Selecteer hier de juiste combinaties zodat het importeren netjes aansluit bij je huidige gegevens.',
|
||||
'csv_field_value' => 'Veldwaarde',
|
||||
'csv_field_mapped_to' => 'Is gelijk aan',
|
||||
'csv_do_not_map' => 'Geen relatie',
|
||||
'csv_download_config_title' => 'Download importconfiguratie',
|
||||
'csv_download_config_text' => 'Alles wat je nu hebt zitten instellen kan je downloaden als configuratiebestand voor de volgende keer. Klik op de knop om dit te doen.',
|
||||
'csv_more_information_text' => 'Ook als het importeren fout gaat is dit bestand handig. Na het importeren krijg je nogmaals de gelegenheid dit bestand te downloaden.',
|
||||
'csv_do_download_config' => 'Download het configuratiebestand',
|
||||
'csv_empty_description' => '(geen beschrijving)',
|
||||
'csv_upload_form' => 'CSV upload formulier',
|
||||
'csv_index_unsupported_warning' => 'Het volgende wordt nog niet ondersteund:',
|
||||
'csv_unsupported_map' => 'De tool kan de kolom ":columnRole" niet koppelen aan bestaande gegevens in de database.',
|
||||
'csv_unsupported_value' => 'Firefly kan niet omgaan met kolommen gemarkeerd als ":columnRole".',
|
||||
'csv_cannot_store_value' => 'Firefly heeft geen ruimte gereserveerd voor kolommen gemarkeert als ":columnRole" en kan ze helaas niet verwerken.',
|
||||
'csv_process_title' => 'Het importeren is klaar',
|
||||
'csv_process_text' => ':rows rijen zijn verwerkt.',
|
||||
'csv_row' => 'Rij',
|
||||
'csv_import_with_errors' => 'Er ging één ding fout.|Er gingen :errors dingen fout.',
|
||||
'csv_error_see_logs' => 'De logboeken bevatten mogelijk meer details.',
|
||||
'csv_process_new_entries' => 'Firefly heeft :imported nieuwe transactie(s) gemaakt.',
|
||||
'csv_start_over' => 'Begin opnieuw',
|
||||
'csv_to_index' => 'Naar de index',
|
||||
'csv_upload_not_writeable' => 'Kan niet naar onderstaand pad schrijven. Kan dus niet uploaden.',
|
||||
'csv_column__ignore' => '(negeer deze kolom)',
|
||||
'csv_column_account-iban' => 'Betaalrekening (IBAN)',
|
||||
'csv_column_account-id' => 'Betaalrekening (ID gelijk aan Firefly)',
|
||||
'csv_column_account-name' => 'Betaalrekeningnaam',
|
||||
'csv_column_amount' => 'Bedrag',
|
||||
'csv_column_bill-id' => 'Contract (ID gelijk aan Firefly)',
|
||||
'csv_column_bill-name' => 'Contractnaam',
|
||||
'csv_column_budget-id' => 'Budget (ID gelijk aan Firefly)',
|
||||
'csv_column_budget-name' => 'Budgetnaam',
|
||||
'csv_column_category-id' => 'Categorie (ID gelijk aan Firefly)',
|
||||
'csv_column_category-name' => 'Categorienaam',
|
||||
'csv_column_currency-code' => 'Valutacode (ISO 4217)',
|
||||
'csv_column_currency-id' => 'Valuta (ID gelijk aan Firefly)',
|
||||
'csv_column_currency-name' => 'Valutanaam',
|
||||
'csv_column_currency-symbol' => 'Valuta',
|
||||
'csv_column_date-rent' => 'Datum (renteberekening)',
|
||||
'csv_column_date-transaction' => 'Datum (transactie)',
|
||||
'csv_column_description' => 'Beschrijving',
|
||||
'csv_column_opposing-iban' => 'Tegenrekening (IBAN)',
|
||||
'csv_column_opposing-id' => 'Tegenrekening (ID gelijk aan Firefly)',
|
||||
'csv_column_opposing-name' => 'Tegenrekeningnaam',
|
||||
'csv_column_rabo-debet-credit' => 'Rabobankspecifiek bij/af indicator',
|
||||
'csv_column_sepa-ct-id' => 'SEPA transactienummer',
|
||||
'csv_column_sepa-ct-op' => 'SEPA tegenrekeningnummer',
|
||||
'csv_column_sepa-db' => 'SEPA "direct debet"-nummer',
|
||||
'csv_column_tags-comma' => 'Tags (kommagescheiden)',
|
||||
'csv_column_tags-space' => 'Tags (spatiegescheiden)',
|
||||
'csv_specifix_RabobankDescription' => 'Vink dit aan als je Rabobank bestanden importeert.',
|
||||
'csv_specifix_Dummy' => 'Dit vinkje doet niks (dummy).',
|
||||
'csv_import_account_help' => 'Als jouw CSV bestand geen referenties bevat naar jouw rekening(en), geef dan hier aan om welke rekening het gaat.',
|
||||
'csv_date_parse_error' => 'Firefly kan van ":value" geen datum maken, gegeven het formaat ":format". Weet je zeker dat je CSV goed is?',
|
||||
|
||||
// create new stuff:
|
||||
'create_new_withdrawal' => 'Nieuwe uitgave',
|
||||
'create_new_deposit' => 'Nieuwe inkomsten',
|
||||
'create_new_transfer' => 'Nieuwe overschrijving',
|
||||
'create_new_asset' => 'Nieuwe betaalrekening',
|
||||
'create_new_expense' => 'Nieuwe crediteur',
|
||||
'create_new_revenue' => 'Nieuwe debiteur',
|
||||
'create_new_piggy_bank' => 'Nieuw spaarpotje',
|
||||
'create_new_bill' => 'Nieuw contract',
|
||||
|
||||
// currencies:
|
||||
'create_currency' => 'Voeg nieuwe valuta toe',
|
||||
'edit_currency' => 'Wijzig valuta ":name"',
|
||||
'store_currency' => 'Sla nieuwe valuta op',
|
||||
'update_currency' => 'Wijzig valuta',
|
||||
|
||||
// new user:
|
||||
'submit' => 'Invoeren',
|
||||
'getting_started' => 'Aan de start!',
|
||||
'to_get_started' => 'Begin met de naam van de bank waar je je betaalrekening hebt, en het saldo van die rekening.',
|
||||
'savings_balance_text' => 'Voer ook het saldo van je spaarrekening in, als je die hebt.',
|
||||
'cc_balance_text' => 'Als je een credit card hebt, vul dan hier je credit cardlimiet in.',
|
||||
|
||||
// forms:
|
||||
'mandatoryFields' => 'Verplichte velden',
|
||||
'optionalFields' => 'Optionele velden',
|
||||
'options' => 'Opties',
|
||||
'something' => 'Iets!',
|
||||
|
||||
// budgets:
|
||||
'create_new_budget' => 'Maak een nieuw budget',
|
||||
'store_new_budget' => 'Sla nieuw budget op',
|
||||
'availableIn' => 'Beschikbaar in :date',
|
||||
'transactionsWithoutBudget' => 'Uitgaven zonder budget',
|
||||
'transactionsWithoutBudgetDate' => 'Uitgaven zonder budget in :date',
|
||||
'createBudget' => 'Maak nieuw budget',
|
||||
'inactiveBudgets' => 'Inactieve budgetten',
|
||||
'without_budget_between' => 'Transacties zonder budget tussen :start en :end',
|
||||
'budget_in_month' => ':naam in :maand',
|
||||
'delete_budget' => 'Verwijder budget ":name"',
|
||||
'edit_budget' => 'Wijzig budget ":name"',
|
||||
'update_amount' => 'Bedrag bijwerken',
|
||||
'update_budget' => 'Budget bijwerken',
|
||||
|
||||
// bills:
|
||||
'delete_bill' => 'Verwijder contract ":name"',
|
||||
'edit_bill' => 'Wijzig contract ":name"',
|
||||
'update_bill' => 'Wijzig contract',
|
||||
'store_new_bill' => 'Sla nieuw contract op',
|
||||
|
||||
// accounts:
|
||||
'details_for_asset' => 'Overzicht voor betaalrekening ":name"',
|
||||
'details_for_expense' => 'Overzicht voor crediteur ":name"',
|
||||
'details_for_revenue' => 'Overzicht voor debiteur ":name"',
|
||||
'details_for_cash' => 'Overzicht voor contant geldrekening ":name"',
|
||||
'store_new_asset_account' => 'Sla nieuwe betaalrekening op',
|
||||
'store_new_expense_account' => 'Sla nieuwe crediteur op',
|
||||
'store_new_revenue_account' => 'Sla nieuwe debiteur op',
|
||||
'edit_asset_account' => 'Wijzig betaalrekening ":name"',
|
||||
'edit_expense_account' => 'Wijzig crediteur ":name"',
|
||||
'edit_revenue_account' => 'Wijzig debiteur ":name"',
|
||||
'delete_asset_account' => 'Verwijder betaalrekening ":name"',
|
||||
'delete_expense_account' => 'Verwijder crediteur ":name"',
|
||||
'delete_revenue_account' => 'Verwijder debiteur ":name"',
|
||||
'asset_deleted' => 'Betaalrekening ":name" is verwijderd.',
|
||||
'expense_deleted' => 'Crediteur ":name" is verwijderd.',
|
||||
'revenue_deleted' => 'Debiteur ":name" is verwijderd.',
|
||||
'update_asset_account' => 'Wijzig betaalrekening',
|
||||
'update_expense_account' => 'Wijzig crediteur',
|
||||
'update_revenue_account' => 'Wijzig debiteur',
|
||||
'make_new_asset_account' => 'Nieuwe betaalrekening',
|
||||
'make_new_expense_account' => 'Nieuwe crediteur',
|
||||
'make_new_revenue_account' => 'Nieuwe debiteur',
|
||||
'asset_accounts' => 'Betaalrekeningen',
|
||||
'expense_accounts' => 'Crediteuren',
|
||||
'revenue_accounts' => 'Debiteuren',
|
||||
'accountExtraHelp_asset' => '',
|
||||
'accountExtraHelp_expense' => '',
|
||||
'accountExtraHelp_revenue' => '',
|
||||
'account_type' => 'Rekeningtype',
|
||||
'save_transactions_by_moving' => 'Bewaar deze transacties door ze aan een andere rekening te koppelen:',
|
||||
|
||||
// categories:
|
||||
'new_category' => 'Nieuwe categorie',
|
||||
'create_new_category' => 'Nieuwe categorie',
|
||||
'without_category' => 'Zonder categorie',
|
||||
'update_category' => 'Wijzig categorie',
|
||||
'categories' => 'Categorieën',
|
||||
'edit_category' => 'Wijzig categorie ":name"',
|
||||
'no_category' => '(geen categorie)',
|
||||
'category' => 'Categorie',
|
||||
'delete_category' => 'Verwijder categorie ":name"',
|
||||
'store_category' => 'Sla nieuwe categorie op',
|
||||
|
||||
// transactions:
|
||||
'update_withdrawal' => 'Wijzig uitgave',
|
||||
'update_deposit' => 'Wijzig inkomsten',
|
||||
'update_transfer' => 'Wijzig overschrijving',
|
||||
'delete_withdrawal' => 'Verwijder uitgave ":description"',
|
||||
'delete_deposit' => 'Verwijder inkomsten ":description"',
|
||||
'delete_transfer' => 'Verwijder overschrijving ":description"',
|
||||
|
||||
// new user:
|
||||
'welcome' => 'Welkom bij Firefly!',
|
||||
'createNewAsset' => 'Maak om te beginnen een nieuwe betaalrekening .' .
|
||||
'Hiermee kan je nieuwe transacties opslaan en beginnen met het beheren van je geld',
|
||||
'createNewAssetButton' => 'Maak een nieuwe betaalrekening',
|
||||
|
||||
// home page:
|
||||
'yourAccounts' => 'Je betaalrekeningen',
|
||||
'budgetsAndSpending' => 'Budgetten en uitgaven',
|
||||
'savings' => 'Sparen',
|
||||
'markAsSavingsToContinue' => 'Om hier wat te zien stel je je betaalrekeningen in als "spaarrekening".',
|
||||
'createPiggyToContinue' => 'Maak spaarpotjes om hier iets te zien.',
|
||||
'newWithdrawal' => 'Nieuwe uitgave',
|
||||
'newDeposit' => 'Nieuwe inkomsten',
|
||||
'newTransfer' => 'Nieuwe overschrijving',
|
||||
'moneyIn' => 'Inkomsten',
|
||||
'moneyOut' => 'Uitgaven',
|
||||
'billsToPay' => 'Openstaande contracten',
|
||||
'billsPaid' => 'Betaalde contracten',
|
||||
'viewDetails' => 'Meer info',
|
||||
'divided' => 'verdeeld',
|
||||
'toDivide' => 'te verdelen',
|
||||
|
||||
// menu and titles, should be recycled as often as possible:
|
||||
'toggleNavigation' => 'Navigatie aan of uit',
|
||||
'currency' => 'Valuta',
|
||||
'preferences' => 'Voorkeuren',
|
||||
'logout' => 'Uitloggen',
|
||||
'searchPlaceholder' => 'Zoeken...',
|
||||
'dashboard' => 'Dashboard',
|
||||
'currencies' => 'Valuta',
|
||||
'accounts' => 'Rekeningen',
|
||||
'Asset account' => 'Betaalrekening',
|
||||
'Default account' => 'Betaalrekening',
|
||||
'Expense account' => 'Crediteur',
|
||||
'Revenue account' => 'Debiteur',
|
||||
'Initial balance account' => 'Startbalansrekening',
|
||||
'budgets' => 'Budgetten',
|
||||
'tags' => 'Tags',
|
||||
'reports' => 'Overzichten',
|
||||
'transactions' => 'Transacties',
|
||||
'expenses' => 'Uitgaven',
|
||||
'income' => 'Inkomsten',
|
||||
'transfers' => 'Overschrijvingen',
|
||||
'moneyManagement' => 'Geldbeheer',
|
||||
'piggyBanks' => 'Spaarpotjes',
|
||||
'bills' => 'Contracten',
|
||||
'createNew' => 'Nieuw',
|
||||
'withdrawal' => 'Uitgave',
|
||||
'deposit' => 'Inkomsten',
|
||||
'account' => 'Rekening',
|
||||
'transfer' => 'Overschrijving',
|
||||
'Withdrawal' => 'Uitgave',
|
||||
'Deposit' => 'Inkomsten',
|
||||
'Transfer' => 'Overschrijving',
|
||||
'bill' => 'Contract',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nee',
|
||||
'amount' => 'Bedrag',
|
||||
'newBalance' => 'Nieuw saldo',
|
||||
'overview' => 'Overzicht',
|
||||
'saveOnAccount' => 'Sparen op rekening',
|
||||
'unknown' => 'Onbekend',
|
||||
'daily' => 'Dagelijks',
|
||||
'weekly' => 'Wekelijks',
|
||||
'monthly' => 'Maandelijks',
|
||||
'quarterly' => 'Elk kwartaal',
|
||||
'half-year' => 'Elk half jaar',
|
||||
'yearly' => 'Jaarlijks',
|
||||
'profile' => 'Profiel',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Standaard financieel rapport (:start tot :end)',
|
||||
'quick_link_reports' => 'Snelle links',
|
||||
'quick_link_default_report' => 'Standaard financieel rapport',
|
||||
'report_this_month_quick' => 'Deze maand, alle rekeningen',
|
||||
'report_this_year_quick' => 'Dit jaar, alle rekeningen',
|
||||
'report_all_time_quick' => 'Gehele periode, alle rekeningen',
|
||||
'reports_can_bookmark' => 'Je kan rapporten aan je favorieten toevoegen.',
|
||||
'incomeVsExpenses' => 'Inkomsten tegenover uitgaven',
|
||||
'accountBalances' => 'Rekeningsaldi',
|
||||
'balanceStartOfYear' => 'Saldo aan het begin van het jaar',
|
||||
'balanceEndOfYear' => 'Saldo aan het einde van het jaar',
|
||||
'balanceStartOfMonth' => 'Saldo aan het begin van de maand',
|
||||
'balanceEndOfMonth' => 'Saldo aan het einde van de maand',
|
||||
'balanceStart' => 'Saldo aan het begin van de periode',
|
||||
'balanceEnd' => 'Saldo aan het einde van de periode',
|
||||
'reportsOwnAccounts' => 'Overzichten voor je eigen betaalrekeningen',
|
||||
'reportsOwnAccountsAndShared' => 'Overzichten voor je eigen betaalrekeningen en gedeelde rekeningen',
|
||||
'splitByAccount' => 'Per betaalrekening',
|
||||
'balancedByTransfersAndTags' => 'Gecorrigeerd met overschrijvingen en tags',
|
||||
'coveredWithTags' => 'Gecorrigeerd met tags',
|
||||
'leftUnbalanced' => 'Ongecorrigeerd',
|
||||
'expectedBalance' => 'Verwacht saldo',
|
||||
'outsideOfBudgets' => 'Buiten budgetten',
|
||||
'leftInBudget' => 'Over van budget',
|
||||
'sumOfSums' => 'Alles bij elkaar',
|
||||
'noCategory' => '(zonder categorie)',
|
||||
'notCharged' => '(Nog) niet betaald',
|
||||
'inactive' => 'Niet actief',
|
||||
'difference' => 'Verschil',
|
||||
'in' => 'In',
|
||||
'out' => 'Uit',
|
||||
'topX' => 'top :number',
|
||||
'showTheRest' => 'Laat alles zien',
|
||||
'hideTheRest' => 'Laat alleen de top :number zien',
|
||||
'sum_of_year' => 'Som van jaar',
|
||||
'sum_of_years' => 'Som van jaren',
|
||||
'average_of_year' => 'Gemiddelde in jaar',
|
||||
'average_of_years' => 'Gemiddelde in jaren',
|
||||
'categories_earned_in_year' => 'Categorieën (inkomsten)',
|
||||
'categories_spent_in_year' => 'Categorieën (uitgaven)',
|
||||
'report_type' => 'Rapporttype',
|
||||
'report_type_default' => 'Standard financieel rapport',
|
||||
'report_included_accounts' => 'Accounts in rapport',
|
||||
'report_date_range' => 'Datumbereik',
|
||||
'report_include_help' => 'Overboekingen naar gedeelde rekeningen tellen als uitgave. Overboekingen van gedeelde rekeningen tellen als inkomsten.',
|
||||
'report_preset_ranges' => 'Standaardbereik',
|
||||
'shared' => 'Gedeeld',
|
||||
|
||||
// charts:
|
||||
'dayOfMonth' => 'Dag vd maand',
|
||||
'month' => 'Maand',
|
||||
'budget' => 'Budget',
|
||||
'spent' => 'Uitgegeven',
|
||||
'earned' => 'Verdiend',
|
||||
'overspent' => 'Teveel uitgegeven',
|
||||
'left' => 'Over',
|
||||
'noBudget' => '(geen budget)',
|
||||
'maxAmount' => 'Maximaal bedrag',
|
||||
'minAmount' => 'Minimaal bedrag',
|
||||
'billEntry' => 'Bedrag voor dit contract',
|
||||
'name' => 'Naam',
|
||||
'date' => 'Datum',
|
||||
'paid' => 'Betaald',
|
||||
'unpaid' => 'Niet betaald',
|
||||
'day' => 'Dag',
|
||||
'budgeted' => 'Gebudgetteerd',
|
||||
'period' => 'Periode',
|
||||
'balance' => 'Saldo',
|
||||
'summary' => 'Samenvatting',
|
||||
'sum' => 'Som',
|
||||
'average' => 'Gemiddeld',
|
||||
'balanceFor' => 'Saldo op :name',
|
||||
|
||||
// piggy banks:
|
||||
'piggy_bank' => 'Spaarpotje',
|
||||
'new_piggy_bank' => 'Nieuw spaarpotje',
|
||||
'store_piggy_bank' => 'Sla spaarpotje op',
|
||||
'account_status' => 'Rekeningoverzicht',
|
||||
'left_for_piggy_banks' => 'Over voor spaarpotjes',
|
||||
'sum_of_piggy_banks' => 'Som van spaarpotjes',
|
||||
'saved_so_far' => 'Gespaard',
|
||||
'left_to_save' => 'Te sparen',
|
||||
'add_money_to_piggy_title' => 'Stop geld in spaarpotje ":name"',
|
||||
'remove_money_from_piggy_title' => 'Haal geld uit spaarpotje ":name"',
|
||||
'add' => 'Toevoegen',
|
||||
'remove' => 'Verwijderen',
|
||||
'max_amount_add' => 'Hooguit toe te voegen',
|
||||
'max_amount_remove' => 'Hooguit te verwijderen',
|
||||
'update_piggy_button' => 'Wijzig spaarpotje',
|
||||
'update_piggy_title' => 'Wijzig spaarpotje ":name"',
|
||||
'details' => 'Details',
|
||||
'events' => 'Gebeurtenissen',
|
||||
'target_amount' => 'Doelbedrag',
|
||||
'start_date' => 'Startdatum',
|
||||
'target_date' => 'Doeldatum',
|
||||
'no_target_date' => 'Geen doeldatum',
|
||||
'todo' => 'te doen',
|
||||
'table' => 'Tabel',
|
||||
'piggy_bank_not_exists' => 'Dit spaarpotje bestaat niet meer.',
|
||||
'add_any_amount_to_piggy' => 'Stop geld in dit spaarpotje om het doel van :amount te halen.',
|
||||
'add_set_amount_to_piggy' => 'Stop voor :date :amount in dit spaarpotje om hem op tijd te vullen.',
|
||||
'delete_piggy_bank' => 'Verwijder spaarpotje ":name"',
|
||||
|
||||
// tags
|
||||
'regular_tag' => 'Een gewone tag.',
|
||||
'balancing_act' => 'Er kunnen maar twee transacties worden getagged; een uitgaven en inkomsten. Ze balanceren elkaar.',
|
||||
'advance_payment' => 'Je kan een uitgave taggen en zoveel inkomsten om de uitgave (helemaal) te compenseren.',
|
||||
'delete_tag' => 'Verwijder tag ":tag"',
|
||||
'new_tag' => 'Maak nieuwe tag',
|
||||
'edit_tag' => 'Wijzig tag ":tag"',
|
||||
'no_year' => 'Zonder jaar',
|
||||
'no_month' => 'Zonder maand',
|
||||
'tag_title_nothing' => 'Standaard tags',
|
||||
'tag_title_balancingAct' => 'Balancerende tags',
|
||||
'tag_title_advancePayment' => 'Vooruitbetaalde tags',
|
||||
'tags_introduction' => 'Normaal gesproken zijn tags enkele woorden, gebruikt om gerelateerde zaken snel aan elkaar te plakken. <span class="label label-info">dure-aanschaf</span>, <span class="label label-info">rekening</span>, <span class="label label-info">feestje</span>. In Firefly III hebben tags meer betekenis en kan je er een datum, beschrijving en locatie aan geven. Daarmee kan je je transacties op een wat zinvollere manier aan elkaar koppelen. Je kan bijvoorbeeld een tag <span class="label label-success">Kerstdiner</span> maken en informatie over het restaurant meenemen. Zulke tags zijn enkelvoudig; je gebruikt ze maar bij één gelegenheid.',
|
||||
'tags_group' => 'Omdat tags transacties groeperen kan je er teruggaves, vergoedingen en andere geldzaken mee aanduiden, zolang de transacties elkaar "opheffen". Hoe je dit aanpakt is aan jou. De gewone manier kan natuurlijk ook.',
|
||||
'tags_start' => 'Maak hieronder een tag, of voer nieuwe tags in als je nieuwe transacties maakt.',
|
||||
|
||||
];
|
@ -54,13 +54,6 @@ return [
|
||||
'specifix' => 'Bank- or of bestandsspecifieke opties',
|
||||
'csv_import_account' => 'Standaard rekening voor importeren',
|
||||
'attachments[]' => 'Bijlagen',
|
||||
|
||||
'title' => 'Titel',
|
||||
'notes' => 'Notities',
|
||||
'filename' => 'Bestandsnaam',
|
||||
'mime' => 'Bestandstype',
|
||||
'size' => 'Grootte',
|
||||
|
||||
'store_new_withdrawal' => 'Nieuwe uitgave opslaan',
|
||||
'store_new_deposit' => 'Nieuwe inkomsten opslaan',
|
||||
'store_new_transfer' => 'Nieuwe overschrijving opslaan',
|
||||
@ -69,36 +62,36 @@ return [
|
||||
'add_new_transfer' => 'Maak nieuwe overschrijving',
|
||||
'noPiggybank' => '(geen spaarpotje)',
|
||||
'noBudget' => '(geen budget)',
|
||||
'title' => 'Titel',
|
||||
'notes' => 'Notities',
|
||||
'filename' => 'Bestandsnaam',
|
||||
'mime' => 'Bestandstype',
|
||||
'size' => 'Grootte',
|
||||
|
||||
'delete_account' => 'Verwijder rekening ":name"',
|
||||
'delete_bill' => 'Verwijder contract ":name"',
|
||||
'delete_budget' => 'Verwijder budget ":name"',
|
||||
'delete_category' => 'Verwijder categorie ":name"',
|
||||
'delete_currency' => 'Verwijder valuta ":name"',
|
||||
'delete_journal' => 'Verwijder transactie met omschrijving ":description"',
|
||||
'delete_attachment' => 'Verwijder bijlage ":name"',
|
||||
|
||||
'tag_areYouSure' => 'Weet je zeker dat je de tag met naam ":tag" wilt verwijderen?',
|
||||
'attachment_areYouSure' => 'Weet je zeker dat je de bijlage met naam ":name" wilt verwijderen?',
|
||||
'account_areYouSure' => 'Weet je zeker dat je de rekening met naam ":name" wilt verwijderen?',
|
||||
'bill_areYouSure' => 'Weet je zeker dat je het contract met naam ":name" wilt verwijderen?',
|
||||
'budget_areYouSure' => 'Weet je zeker dat je het budget met naam ":name" wilt verwijderen?',
|
||||
'category_areYouSure' => 'Weet je zeker dat je het category met naam ":name" wilt verwijderen?',
|
||||
'currency_areYouSure' => 'Weet je zeker dat je de valuta met naam ":name" wilt verwijderen?',
|
||||
'piggyBank_areYouSure' => 'Weet je zeker dat je het spaarpotje met naam ":name" wilt verwijderen?',
|
||||
'journal_areYouSure' => 'Weet je zeker dat je de transactie met naam ":description" wilt verwijderen?',
|
||||
'delete_account' => 'Verwijder rekening ":name"',
|
||||
'delete_bill' => 'Verwijder contract ":name"',
|
||||
'delete_budget' => 'Verwijder budget ":name"',
|
||||
'delete_category' => 'Verwijder categorie ":name"',
|
||||
'delete_currency' => 'Verwijder valuta ":name"',
|
||||
'delete_journal' => 'Verwijder transactie met omschrijving ":description"',
|
||||
'delete_attachment' => 'Verwijder bijlage ":name"',
|
||||
|
||||
'permDeleteWarning' => 'Dingen verwijderen uit Firefly is permanent en kan niet ongedaan gemaakt worden.',
|
||||
'also_delete_transactions' => 'Ook de enige transactie verbonden aan deze rekening wordt verwijderd.' .
|
||||
'|Ook alle :count transacties verbonden aan deze rekening worden verwijderd.',
|
||||
'also_delete_piggyBanks' => 'Ook het spaarpotje verbonden aan deze rekening wordt verwijderd.' .
|
||||
'|Ook alle :count spaarpotjes verbonden aan deze rekening worden verwijderd.',
|
||||
'bill_keep_transactions' => 'De transactie verbonden aan dit contract blijft bewaard.' .
|
||||
'|De :count transacties verbonden aan dit contract blijven bewaard.',
|
||||
'budget_keep_transactions' => 'De transactie verbonden aan dit budget blijft bewaard.' .
|
||||
'|De :count transacties verbonden aan dit budget blijven bewaard.',
|
||||
'category_keep_transactions' => 'De transactie verbonden aan deze categorie blijft bewaard.' .
|
||||
'|De :count transacties verbonden aan deze categorie blijven bewaard.',
|
||||
'tag_keep_transactions' => 'De transactie verbonden aan deze tag blijft bewaard.' .
|
||||
'|De :count transacties verbonden aan deze tag blijven bewaard.',
|
||||
'attachment_areYouSure' => 'Weet je zeker dat je de bijlage met naam ":name" wilt verwijderen?',
|
||||
'account_areYouSure' => 'Weet je zeker dat je de rekening met naam ":name" wilt verwijderen?',
|
||||
'bill_areYouSure' => 'Weet je zeker dat je het contract met naam ":name" wilt verwijderen?',
|
||||
'budget_areYouSure' => 'Weet je zeker dat je het budget met naam ":name" wilt verwijderen?',
|
||||
'category_areYouSure' => 'Weet je zeker dat je het category met naam ":name" wilt verwijderen?',
|
||||
'currency_areYouSure' => 'Weet je zeker dat je de valuta met naam ":name" wilt verwijderen?',
|
||||
'piggyBank_areYouSure' => 'Weet je zeker dat je het spaarpotje met naam ":name" wilt verwijderen?',
|
||||
'journal_areYouSure' => 'Weet je zeker dat je de transactie met naam ":description" wilt verwijderen?',
|
||||
'tag_areYouSure' => 'Weet je zeker dat je de tag met naam ":tag" wilt verwijderen?',
|
||||
|
||||
'permDeleteWarning' => 'Dingen verwijderen uit Firefly is permanent en kan niet ongedaan gemaakt worden.',
|
||||
'also_delete_transactions' => 'Ook de enige transactie verbonden aan deze rekening wordt verwijderd.|Ook alle :count transacties verbonden aan deze rekening worden verwijderd.',
|
||||
'also_delete_piggyBanks' => 'Ook het spaarpotje verbonden aan deze rekening wordt verwijderd.|Ook alle :count spaarpotjes verbonden aan deze rekening worden verwijderd.',
|
||||
'bill_keep_transactions' => 'De transactie verbonden aan dit contract blijft bewaard.|De :count transacties verbonden aan dit contract blijven bewaard.',
|
||||
'budget_keep_transactions' => 'De transactie verbonden aan dit budget blijft bewaard.|De :count transacties verbonden aan dit budget blijven bewaard.',
|
||||
'category_keep_transactions' => 'De transactie verbonden aan deze categorie blijft bewaard.|De :count transacties verbonden aan deze categorie blijven bewaard.',
|
||||
'tag_keep_transactions' => 'De transactie verbonden aan deze tag blijft bewaard.|De :count transacties verbonden aan deze tag blijven bewaard.',
|
||||
];
|
@ -2,24 +2,24 @@
|
||||
return [
|
||||
|
||||
// tour!
|
||||
'main-content-title' => 'Welkom bij Firefly III',
|
||||
'main-content-text' => 'Doe jezelf een lol en volg deze korte tour. Je weet dan precies hoe alles werkt.',
|
||||
'sidebar-toggle-title' => 'Sidebar om nieuwe dingen te maken',
|
||||
'sidebar-toggle-text' => 'Verstopt onder het plusje vind je de knoppen die je nodig hebt om nieuwe dingen te maken.',
|
||||
'account-menu-title' => 'Alle rekeningen',
|
||||
'account-menu-text' => 'Hier vind je al je rekeningen.',
|
||||
'budget-menu-title' => 'Budgetten',
|
||||
'budget-menu-text' => 'Gebruik deze pagina voor budgetten.',
|
||||
'report-menu-title' => 'Overzichten',
|
||||
'report-menu-text' => 'Hier vind je allerlei financiele rapportages.',
|
||||
'transaction-menu-title' => 'Transacties',
|
||||
'transaction-menu-text' => 'Hier vind je al je bijschrijvingen, afschrijvingen en overboekingen.',
|
||||
'option-menu-title' => 'Opties',
|
||||
'option-menu-text' => 'Hier vind je alle opties.',
|
||||
'main-content-end-title' => 'Einde!',
|
||||
'main-content-end-text' => 'Elke pagina heeft een vraagtekentje rechtsboven. Gebruik deze voor meer hulp. Veel plezier!',
|
||||
'main-content-title' => 'Welkom bij Firefly III',
|
||||
'main-content-text' => 'Doe jezelf een lol en volg deze korte tour. Je weet dan precies hoe alles werkt.',
|
||||
'sidebar-toggle-title' => 'Sidebar om nieuwe dingen te maken',
|
||||
'sidebar-toggle-text' => 'Verstopt onder het plusje vind je de knoppen die je nodig hebt om nieuwe dingen te maken.',
|
||||
'account-menu-title' => 'Alle rekeningen',
|
||||
'account-menu-text' => 'Hier vind je al je rekeningen.',
|
||||
'budget-menu-title' => 'Budgetten',
|
||||
'budget-menu-text' => 'Gebruik deze pagina voor budgetten.',
|
||||
'report-menu-title' => 'Overzichten',
|
||||
'report-menu-text' => 'Hier vind je allerlei financiele rapportages.',
|
||||
'transaction-menu-title' => 'Transacties',
|
||||
'transaction-menu-text' => 'Hier vind je al je bijschrijvingen, afschrijvingen en overboekingen.',
|
||||
'option-menu-title' => 'Opties',
|
||||
'option-menu-text' => 'Hier vind je alle opties.',
|
||||
'main-content-end-title' => 'Einde!',
|
||||
'main-content-end-text' => 'Elke pagina heeft een vraagtekentje rechtsboven. Gebruik deze voor meer hulp. Veel plezier!',
|
||||
|
||||
|
||||
'csv-index' => 'csv-index',
|
||||
'register' => 'register',
|
||||
'index' => 'index',
|
||||
'home' => 'home',
|
||||
@ -48,6 +48,7 @@ return [
|
||||
'categories-delete' => 'categories.delete',
|
||||
'categories-show' => 'categories.show',
|
||||
'categories-noCategory' => 'categories.noCategory',
|
||||
'csv-index' => 'csv-index',
|
||||
'currency-index' => 'currency.index',
|
||||
'currency-create' => 'currency.create',
|
||||
'currency-edit' => 'currency.edit',
|
67
resources/lang/nl_NL/validation.php
Normal file
67
resources/lang/nl_NL/validation.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'invalid_domain' => 'Kan niet registereren vanaf dit domein.',
|
||||
'file_already_attached' => 'Het geuploade bestand ":name" is al gelinkt aan deze transactie.',
|
||||
'file_attached' => 'Bestand met naam ":name" is met succes geuploaded.',
|
||||
'file_invalid_mime' => 'Bestand ":name" is van het type ":mime", en die kan je niet uploaden.',
|
||||
'file_too_large' => 'Bestand ":name" is te groot.',
|
||||
"accepted" => ":attribute moet geaccepteerd zijn.",
|
||||
"active_url" => ":attribute is geen geldige URL.",
|
||||
"after" => ":attribute moet een datum na :date zijn.",
|
||||
"alpha" => ":attribute mag alleen letters bevatten.",
|
||||
"alpha_dash" => ":attribute mag alleen letters, nummers, onderstreep(_) en strepen(-) bevatten.",
|
||||
"alpha_num" => ":attribute mag alleen letters en nummers bevatten.",
|
||||
"array" => ":attribute moet geselecteerde elementen bevatten.",
|
||||
"unique_for_user" => "Er is al een entry met deze :attribute.",
|
||||
"before" => ":attribute moet een datum voor :date zijn.",
|
||||
'unique_object_for_user' => 'Deze naam is al in gebruik',
|
||||
'unique_account_for_user' => 'This rekeningnaam is already in use',
|
||||
"between.numeric" => ":attribute moet tussen :min en :max zijn.",
|
||||
"between.file" => ":attribute moet tussen :min en :max kilobytes zijn.",
|
||||
"between.string" => ":attribute moet tussen :min en :max karakters zijn.",
|
||||
"between.array" => ":attribute moet tussen :min en :max items bevatten.",
|
||||
"boolean" => ":attribute moet true of false zijn.",
|
||||
"confirmed" => ":attribute bevestiging komt niet overeen.",
|
||||
"date" => ":attribute moet een datum bevatten.",
|
||||
"date_format" => ":attribute moet een geldig datum formaat bevatten.",
|
||||
"different" => ":attribute en :other moeten verschillend zijn.",
|
||||
"digits" => ":attribute moet bestaan uit :digits cijfers.",
|
||||
"digits_between" => ":attribute moet bestaan uit minimaal :min en maximaal :max cijfers.",
|
||||
"email" => ":attribute is geen geldig e-mailadres.",
|
||||
"filled" => ":attribute is verplicht.",
|
||||
"exists" => ":attribute bestaat niet.",
|
||||
"image" => ":attribute moet een afbeelding zijn.",
|
||||
"in" => ":attribute is ongeldig.",
|
||||
"integer" => ":attribute moet een getal zijn.",
|
||||
"ip" => ":attribute moet een geldig IP-adres zijn.",
|
||||
'json' => 'De :attribute moet een JSON tekst zijn.',
|
||||
"max.numeric" => ":attribute mag niet hoger dan :max zijn.",
|
||||
"max.file" => ":attribute mag niet meer dan :max kilobytes zijn.",
|
||||
"max.string" => ":attribute mag niet uit meer dan :max karakters bestaan.",
|
||||
"max.array" => ":attribute mag niet meer dan :max items bevatten.",
|
||||
"mimes" => ":attribute moet een bestand zijn van het bestandstype :values.",
|
||||
"min.numeric" => ":attribute moet minimaal :min zijn.",
|
||||
"min.file" => ":attribute moet minimaal :min kilobytes zijn.",
|
||||
"min.string" => ":attribute moet minimaal :min karakters zijn.",
|
||||
"min.array" => ":attribute moet minimaal :min items bevatten.",
|
||||
"not_in" => "Het formaat van :attribute is ongeldig.",
|
||||
"numeric" => ":attribute moet een nummer zijn.",
|
||||
"regex" => ":attribute formaat is ongeldig.",
|
||||
"required" => ":attribute is verplicht.",
|
||||
"required_if" => ":attribute is verplicht indien :other gelijk is aan :value.",
|
||||
'required_unless' => ':attribute is verplicht tenzij :other gelijk is aan :values.',
|
||||
"required_with" => ":attribute is verplicht i.c.m. :values",
|
||||
"required_with_all" => ":attribute is verplicht i.c.m. :values",
|
||||
"required_without" => ":attribute is verplicht als :values niet ingevuld is.",
|
||||
"required_without_all" => ":attribute is verplicht als :values niet ingevuld zijn.",
|
||||
"same" => ":attribute en :other moeten overeenkomen.",
|
||||
"size.numeric" => ":attribute moet :size zijn.",
|
||||
"size.file" => ":attribute moet :size kilobyte zijn.",
|
||||
"size.string" => ":attribute moet :size karakters zijn.",
|
||||
"size.array" => ":attribute moet :size items bevatten.",
|
||||
"unique" => ":attribute is al in gebruik.",
|
||||
'string' => 'Het :attribute moet een tekenreeks zijn.',
|
||||
"url" => ":attribute is geen geldige URL.",
|
||||
"timezone" => "Het :attribute moet een geldige zone zijn.",
|
||||
];
|
60
resources/lang/pt_BR/breadcrumbs.php
Normal file
60
resources/lang/pt_BR/breadcrumbs.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
return [
|
||||
'home' => 'Início',
|
||||
|
||||
// accounts
|
||||
'cash_accounts' => 'Contas Correntes',
|
||||
'edit_account' => 'Editar conta ":name"',
|
||||
|
||||
// currencies
|
||||
'edit_currency' => 'Editar moedas ":name"',
|
||||
'delete_currency' => 'Apagar moedas ":name"',
|
||||
|
||||
// piggy banks
|
||||
'newPiggyBank' => 'Criar um novo cofrinho',
|
||||
'edit_piggyBank' => 'Editar cofrinho ":name"',
|
||||
|
||||
// top menu
|
||||
'preferences' => 'Preferências',
|
||||
'profile' => 'Perfil',
|
||||
'changePassword' => 'Alterar sua senha',
|
||||
|
||||
// bills
|
||||
'bills' => 'Faturas',
|
||||
'newBill' => 'Nova fatura',
|
||||
'edit_bill' => 'Editar fatura ":name"',
|
||||
'delete_bill' => 'Apagar fatura ":name"',
|
||||
|
||||
// reports
|
||||
'reports' => 'Relatórios',
|
||||
'monthly_report' => 'Relatório Mensal para :date',
|
||||
'monthly_report_shared' => 'Relatório mensal para :date (incluindo contas compartilhadas)',
|
||||
'yearly_report' => 'Relatório Anual para :date',
|
||||
'yearly_report_shared' => 'Relatório anual para :date (incluindo contas compartilhadas)',
|
||||
'budget_report' => 'Relatório Orçamentário para :date',
|
||||
|
||||
// search
|
||||
'searchResult' => 'Pesquisa por ":query"',
|
||||
|
||||
// transaction lists.
|
||||
'withdrawal_list' => 'Despesas',
|
||||
'deposit_list' => 'Receitas, renda e depósitos',
|
||||
'transfer_list' => 'Transferências',
|
||||
'transfers_list' => 'Transferências',
|
||||
|
||||
// create transactions
|
||||
'create_withdrawal' => 'Criar uma nova retirada',
|
||||
'create_deposit' => 'Criar um novo depósito',
|
||||
'create_transfer' => 'Criar nova transferência',
|
||||
|
||||
// edit transactions
|
||||
'edit_journal' => 'Editar transação ":description"',
|
||||
'delete_journal' => 'Apagar transação ":description"',
|
||||
|
||||
// tags
|
||||
'tags' => 'Etiquetas',
|
||||
'createTag' => 'Criar nova etiqueta',
|
||||
'edit_tag' => 'Editar etiqueta ":tag"',
|
||||
'delete_tag' => 'Apagar etiqueta ":tag"',
|
||||
|
||||
];
|
8
resources/lang/pt_BR/config.php
Normal file
8
resources/lang/pt_BR/config.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'locale' => 'pt_BR, pt_BR.utf8',
|
||||
'month' => '%B %Y',
|
||||
'month_and_day' => '%e de %B de %Y',
|
||||
|
||||
];
|
477
resources/lang/pt_BR/firefly.php
Normal file
477
resources/lang/pt_BR/firefly.php
Normal file
@ -0,0 +1,477 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// general stuff:
|
||||
'test' => 'Você selecionou Inglês',
|
||||
'close' => 'Fechar',
|
||||
'pleaseHold' => 'Por favor espere...',
|
||||
'actions' => 'Ações',
|
||||
'edit' => 'Editar',
|
||||
'delete' => 'Apagar',
|
||||
'welcomeBack' => 'What\'s playing?',
|
||||
'everything' => 'Tudo',
|
||||
'customRange' => 'Intervalo Personalizado',
|
||||
'apply' => 'Aplicar',
|
||||
'cancel' => 'Cancelar',
|
||||
'from' => 'De',
|
||||
'to' => 'Até',
|
||||
'total_sum' => 'Soma Total',
|
||||
'period_sum' => 'Soma por período',
|
||||
'showEverything' => 'Mostrar tudo',
|
||||
'never' => 'Never',
|
||||
'search_results_for' => 'Pesquisar resultados por ":query"',
|
||||
'bounced_error' => 'A mensagem enviado para :email ressaltado, não tem acesso para você.',
|
||||
'deleted_error' => 'Estas credenciais não correspondem aos nossos registros.',
|
||||
'general_blocked_error' => 'Sua conta foi desativada, você não pode entrar.',
|
||||
'removed_amount' => ':amount removido',
|
||||
'added_amount' => ':amount adicionada',
|
||||
'asset_account_role_help' => 'Quaisquer opções extras resultantes da sua escolha pode ser definido mais tarde.',
|
||||
'Opening balance' => 'Saldo inicial',
|
||||
'create_new_stuff' => 'Criar novas coisas',
|
||||
'new_withdrawal' => 'Nova retirada',
|
||||
'new_deposit' => 'Novo depósito',
|
||||
'new_transfer' => 'Nova transferência',
|
||||
'new_asset_account' => 'Nova conta de ativo',
|
||||
'new_expense_account' => 'Nova conta de despesa',
|
||||
'new_revenue_account' => 'Nova conta de receita',
|
||||
'new_budget' => 'Novo orçamento',
|
||||
'new_bill' => 'Nova fatura',
|
||||
|
||||
// tags
|
||||
'store_new_tag' => 'Armazenar nova tag',
|
||||
'update_tag' => 'Atualizar tag',
|
||||
'no_location_set' => 'Nenhuma localização.',
|
||||
'meta_data' => 'Meta dados',
|
||||
'location' => 'Localização',
|
||||
|
||||
// preferences
|
||||
'pref_home_screen_accounts' => 'Conta da tela inicial',
|
||||
'pref_home_screen_accounts_help' => 'Que conta deve ser exibida na tela inicial?',
|
||||
'pref_budget_settings' => 'Definições de Orçamento',
|
||||
'pref_budget_settings_help' => 'Qual a quantidade máxima de dinheiro um envelope orçamental pode conter?',
|
||||
'pref_view_range' => 'Ver intervalo',
|
||||
'pref_view_range_help' => 'Alguns gráficos são agrupados automaticamente em períodos. Qual período você prefere?',
|
||||
'pref_1D' => 'Um dia',
|
||||
'pref_1W' => 'Uma semana',
|
||||
'pref_1M' => 'Um mês',
|
||||
'pref_3M' => 'Trimestral',
|
||||
'pref_6M' => 'Semestral',
|
||||
'pref_languages' => 'Idiomas',
|
||||
'pref_languages_help' => 'Firefly III suporta muitos idiomas. Qual você prefere?',
|
||||
'pref_save_settings' => 'Salvar definições',
|
||||
|
||||
// profile:
|
||||
'change_your_password' => 'Alterar sua senha',
|
||||
'delete_account' => 'Apagar conta',
|
||||
'current_password' => 'Senha atual',
|
||||
'new_password' => 'Nova senha',
|
||||
'new_password_again' => 'Nova senha (novamente)',
|
||||
'delete_your_account' => 'Apagar sua conta',
|
||||
'delete_your_account_help' => 'Deleting your account will also delete any accounts, transactions, <em>anything</em> you might have saved into Firefly III. It\'ll be GONE.',
|
||||
'delete_your_account_password' => 'Coloque sua senha para continuar.',
|
||||
'password' => 'Senha',
|
||||
'are_you_sure' => 'Você tem certeza? Você não poderá desfazer isso.',
|
||||
'delete_account_button' => 'Apagar sua conta',
|
||||
'invalid_current_password' => 'Senha atual inválida!',
|
||||
'password_changed' => 'Senha alterada!',
|
||||
'should_change' => 'A idéia é alterar sua senha.',
|
||||
'invalid_password' => 'Senha inválida!',
|
||||
|
||||
|
||||
// attachments
|
||||
'nr_of_attachments' => 'Um anexo|:count anexos',
|
||||
'attachments' => 'Anexos',
|
||||
'edit_attachment' => 'Editar anexo ":name"',
|
||||
'update_attachment' => 'Atualizar anexo',
|
||||
'delete_attachment' => 'Apagar anexo ":name"',
|
||||
'attachment_deleted' => 'Anexo apagado ":name"',
|
||||
'upload_max_file_size' => 'Tamanho máximo do arquivo: :size',
|
||||
|
||||
// tour:
|
||||
'prev' => 'Anterior',
|
||||
'next' => 'Próximo',
|
||||
'end-tour' => 'Fim do Tour',
|
||||
'pause' => 'Parar',
|
||||
|
||||
// transaction index
|
||||
'title_expenses' => 'Despesas',
|
||||
'title_withdrawal' => 'Despesas',
|
||||
'title_revenue' => 'Receitas / Renda',
|
||||
'title_deposit' => 'Receita / Renda',
|
||||
'title_transfer' => 'Transferências',
|
||||
'title_transfers' => 'Transferências',
|
||||
|
||||
// csv import:
|
||||
'csv_import' => 'Importar arquivo CSV',
|
||||
'csv' => 'CSV',
|
||||
'csv_index_title' => 'Carregar e importar um arquivo CSV',
|
||||
'csv_define_column_roles' => 'Definir papeis da coluna',
|
||||
'csv_map_values' => 'Valores mapeados encontrados para valores existentes',
|
||||
'csv_download_config' => 'Download do arquivo CSV de configuração.',
|
||||
'csv_index_text' => 'This form allows you to import a CSV file with transactions into Firefly. It is based on the excellent CSV importer made by the folks at <a href="https://www.atlassian.com/">Atlassian</a>. Simply upload your CSV file and follow the instructions. If you would like to learn more, please click on the <i class="fa fa-question-circle"></i> button at the top of this page.',
|
||||
'csv_index_beta_warning' => 'Esta ferramenta está em beta. Por favor proceder com cautela',
|
||||
'csv_header_help' => 'Check this box when your CSV file\'s first row consists of column names, not actual data',
|
||||
'csv_date_help' => 'Date time format in your CSV. Follow the format like <a href="https://secure.php.net/manual/en/datetime.createfromformat.php#refsect1-datetime.createfromformat-parameters">this page</a> indicates. The default value will parse dates that look like this: :dateExample.',
|
||||
'csv_csv_file_help' => 'Select the CSV file here. You can only upload one file at a time',
|
||||
'csv_csv_config_file_help' => 'Select your CSV import configuration here. If you do not know what this is, ignore it. It will be explained later.',
|
||||
'csv_upload_button' => 'Iniciando importação do CSV',
|
||||
'csv_column_roles_title' => 'Definir papeis da coluna',
|
||||
'csv_column_roles_text' => 'Firefly does not know what each column means. You need to indicate what every column is. Please check out the example data if you\'re not sure yourself. Click on the question mark (top right of the page) to learn what each column means. If you want to map imported data onto existing data in Firefly, use the checkbox. The next step will show you what this button does.',
|
||||
'csv_column_roles_table' => 'Papéis da Coluna',
|
||||
'csv_column' => 'Coluna CSV',
|
||||
'csv_column_name' => 'Nome da coluna do CSV',
|
||||
'csv_column_example' => 'Exemplo de dados da coluna',
|
||||
'csv_column_role' => 'Coluna contém?',
|
||||
'csv_do_map_value' => 'Valor mapeado?',
|
||||
'csv_continue' => 'Continuar para o próximo passo',
|
||||
'csv_go_back' => 'Voltar para o passo anterior',
|
||||
'csv_map_title' => 'Valores mapeados encontrados para valores existentes',
|
||||
'csv_map_text' => 'This page allows you to map the values from the CSV file to existing entries in your database. This ensures that accounts and other things won\'t be created twice.',
|
||||
'csv_field_value' => 'Valor do campo do CSV',
|
||||
'csv_field_mapped_to' => 'Deve ser mapeado para...',
|
||||
'csv_do_not_map' => 'Não mapear este valor',
|
||||
'csv_download_config_title' => 'Download do CSV de configuração ',
|
||||
'csv_download_config_text' => 'Everything you\'ve just set up can be downloaded as a configuration file. Click the button to do so.',
|
||||
'csv_more_information_text' => 'If the import fails, you can use this configuration file so you don\'t have to start all over again. But, if the import succeeds, it will be easier to upload similar CSV files.',
|
||||
'csv_do_download_config' => 'Download do arquivo de configuração.',
|
||||
'csv_empty_description' => '(descrição vazia)',
|
||||
'csv_upload_form' => 'Formulário de Upload do CSV',
|
||||
'csv_index_unsupported_warning' => 'O importador de CSV está incapaz de fazer o seguinte:',
|
||||
'csv_unsupported_map' => 'The importer cannot map the column ":columnRole" to existing values in the database.',
|
||||
'csv_unsupported_value' => 'The importer does not know how to handle values in columns marked as ":columnRole".',
|
||||
'csv_cannot_store_value' => 'The importer has not reserved space for columns marked ":columnRole" and will be incapable of processing them.',
|
||||
'csv_process_title' => 'Importação do CSV terminou!',
|
||||
'csv_process_text' => 'O importador do CSV terminou e processou :rows linhas',
|
||||
'csv_row' => 'Linha',
|
||||
'csv_import_with_errors' => 'Houve um erro.|Houve :errors erros.',
|
||||
'csv_error_see_logs' => 'Verifique o arquivo de log para ver detalhes.',
|
||||
'csv_process_new_entries' => 'Firefly criou :imported nova(s) transação(ões)',
|
||||
'csv_start_over' => 'Importar novamente',
|
||||
'csv_to_index' => 'Voltar para tela inicial',
|
||||
'csv_upload_not_writeable' => 'Cannot write to the path mentioned here. Cannot upload',
|
||||
'csv_column__ignore' => '(ignorar esta coluna)',
|
||||
'csv_column_account-iban' => 'Conta de Ativo (IBAN)',
|
||||
'csv_column_account-id' => 'ID da Conta de Ativo (correspondente Firefly)',
|
||||
'csv_column_account-name' => 'Conta de Ativo (nome)',
|
||||
'csv_column_amount' => 'Valor',
|
||||
'csv_column_bill-id' => 'ID Fatura (correspondente Firefly)',
|
||||
'csv_column_bill-name' => 'Nom da Fatura',
|
||||
'csv_column_budget-id' => 'ID do Orçamento (correspondente Firefly)',
|
||||
'csv_column_budget-name' => 'Nome do Orçamento',
|
||||
'csv_column_category-id' => 'ID da Categoria (correspondente Firefly)',
|
||||
'csv_column_category-name' => 'Nome da Categoria',
|
||||
'csv_column_currency-code' => 'Código da Moeda (ISO 4217)',
|
||||
'csv_column_currency-id' => 'ID da Moeda (correspondente Firefly)',
|
||||
'csv_column_currency-name' => 'Nome da Moeda (correspondente Firefly)',
|
||||
'csv_column_currency-symbol' => 'Símbolo da Moeda (correspondente Firefly)',
|
||||
'csv_column_date-rent' => 'Rent calculation date',
|
||||
'csv_column_date-transaction' => 'Data',
|
||||
'csv_column_description' => 'Descrição',
|
||||
'csv_column_opposing-iban' => 'Opposing account (IBAN)',
|
||||
'csv_column_opposing-id' => 'Opposing account ID (matching Firefly)',
|
||||
'csv_column_opposing-name' => 'Opposing account (name)',
|
||||
'csv_column_rabo-debet-credit' => 'Rabobank specific debet/credit indicator',
|
||||
'csv_column_sepa-ct-id' => 'SEPA Credit Transfer end-to-end ID',
|
||||
'csv_column_sepa-ct-op' => 'SEPA Credit Transfer opposing account',
|
||||
'csv_column_sepa-db' => 'SEPA Direct Debet',
|
||||
'csv_column_tags-comma' => 'Tags (separadas por vírgula)',
|
||||
'csv_column_tags-space' => 'Tags (separadas por espaço)',
|
||||
'csv_specifix_RabobankDescription' => 'Select this when you\'re importing Rabobank CSV export files.',
|
||||
'csv_specifix_Dummy' => 'Checking this has no effect whatsoever.',
|
||||
'csv_import_account_help' => 'If your CSV file does NOT contain information about your asset account(s), use this dropdown to select to which account the transactions in the CSV belong to.',
|
||||
'csv_date_parse_error' => 'Could not parse a valid date from ":value", using the format ":format". Are you sure your CSV is correct?',
|
||||
|
||||
// create new stuff:
|
||||
'create_new_withdrawal' => 'Criar nova retirada',
|
||||
'create_new_deposit' => 'Criar um novo depósito',
|
||||
'create_new_transfer' => 'Criar nova transferência',
|
||||
'create_new_asset' => 'Criar nova conta de ativo',
|
||||
'create_new_expense' => 'Criar nova conta de despesa',
|
||||
'create_new_revenue' => 'Criar nova conta de receita',
|
||||
'create_new_piggy_bank' => 'Criar novo cofrinho',
|
||||
'create_new_bill' => 'Criar nova fatura',
|
||||
|
||||
// currencies:
|
||||
'create_currency' => 'Criar uma nova moeda',
|
||||
'edit_currency' => 'Editar moeda ":name"',
|
||||
'store_currency' => 'Armazenar nova moeda',
|
||||
'update_currency' => 'Atualizar moeda',
|
||||
|
||||
// new user:
|
||||
'submit' => 'Enviar',
|
||||
'getting_started' => 'Iniciar',
|
||||
'to_get_started' => 'To get started with Firefly, please enter your current bank\'s name, and the balance of your checking account:',
|
||||
'savings_balance_text' => 'If you have a savings account, please enter the current balance of your savings account:',
|
||||
'cc_balance_text' => 'If you have a credit card, please enter your credit card\'s limit.',
|
||||
|
||||
// forms:
|
||||
'mandatoryFields' => 'Campos obrigatórios',
|
||||
'optionalFields' => 'Campos opcionais',
|
||||
'options' => 'Opções',
|
||||
'something' => 'Qualquer coisa!',
|
||||
|
||||
// budgets:
|
||||
'create_new_budget' => 'Criar um novo orçamento',
|
||||
'store_new_budget' => 'Armazenar novo orçamento',
|
||||
'availableIn' => 'Disponível em :date',
|
||||
'transactionsWithoutBudget' => 'Despesas sem orçamentos',
|
||||
'transactionsWithoutBudgetDate' => 'Despesas sem orçamentos em :date',
|
||||
'createBudget' => 'Novo orçamento',
|
||||
'inactiveBudgets' => 'Orçamentos inativos',
|
||||
'without_budget_between' => 'Transactions without a budget between :start and :end',
|
||||
'budget_in_month' => ':name no :month',
|
||||
'delete_budget' => 'Delete budget ":name"',
|
||||
'edit_budget' => 'Edit budget ":name"',
|
||||
'update_amount' => 'Update amount',
|
||||
'update_budget' => 'Update budget',
|
||||
|
||||
// bills:
|
||||
'delete_bill' => 'Delete bill ":name"',
|
||||
'edit_bill' => 'Edit bill ":name"',
|
||||
'update_bill' => 'Update bill',
|
||||
'store_new_bill' => 'Store new bill',
|
||||
|
||||
// accounts:
|
||||
'details_for_asset' => 'Details for asset account ":name"',
|
||||
'details_for_expense' => 'Details for expense account ":name"',
|
||||
'details_for_revenue' => 'Details for revenue account ":name"',
|
||||
'details_for_cash' => 'Details for cash account ":name"',
|
||||
'store_new_asset_account' => 'Store new asset account',
|
||||
'store_new_expense_account' => 'Store new expense account',
|
||||
'store_new_revenue_account' => 'Store new revenue account',
|
||||
'edit_asset_account' => 'Edit asset account ":name"',
|
||||
'edit_expense_account' => 'Edit expense account ":name"',
|
||||
'edit_revenue_account' => 'Edit revenue account ":name"',
|
||||
'delete_asset_account' => 'Delete asset account ":name"',
|
||||
'delete_expense_account' => 'Delete expense account ":name"',
|
||||
'delete_revenue_account' => 'Delete revenue account ":name"',
|
||||
'asset_deleted' => 'Successfully deleted asset account ":name"',
|
||||
'expense_deleted' => 'Successfully deleted expense account ":name"',
|
||||
'revenue_deleted' => 'Successfully deleted revenue account ":name"',
|
||||
'update_asset_account' => 'Update asset account',
|
||||
'update_expense_account' => 'Update expense account',
|
||||
'update_revenue_account' => 'Update revenue account',
|
||||
'make_new_asset_account' => 'Create a new asset account',
|
||||
'make_new_expense_account' => 'Create a new expense account',
|
||||
'make_new_revenue_account' => 'Create a new revenue account',
|
||||
'asset_accounts' => 'Asset accounts',
|
||||
'expense_accounts' => 'Expense accounts',
|
||||
'revenue_accounts' => 'Revenue accounts',
|
||||
'accountExtraHelp_asset' => '',
|
||||
'accountExtraHelp_expense' => '',
|
||||
'accountExtraHelp_revenue' => '',
|
||||
'account_type' => 'Account type',
|
||||
'save_transactions_by_moving' => 'Save these transaction(s) by moving them to another account:',
|
||||
|
||||
// categories:
|
||||
'new_category' => 'New category',
|
||||
'create_new_category' => 'Create a new category',
|
||||
'without_category' => 'Without a category',
|
||||
'update_category' => 'Wijzig categorie',
|
||||
'categories' => 'Categories',
|
||||
'edit_category' => 'Edit category ":name"',
|
||||
'no_category' => '(no category)',
|
||||
'category' => 'Category',
|
||||
'delete_category' => 'Delete category ":name"',
|
||||
'store_category' => 'Store new category',
|
||||
|
||||
// transactions:
|
||||
'update_withdrawal' => 'Update withdrawal',
|
||||
'update_deposit' => 'Update deposit',
|
||||
'update_transfer' => 'Update transfer',
|
||||
'delete_withdrawal' => 'Delete withdrawal ":description"',
|
||||
'delete_deposit' => 'Delete deposit ":description"',
|
||||
'delete_transfer' => 'Delete transfer ":description"',
|
||||
|
||||
// new user:
|
||||
'welcome' => 'Welcome to Firefly!',
|
||||
'createNewAsset' => 'Create a new asset account to get started. ' .
|
||||
'This will allow you to create transactions and start your financial management',
|
||||
'createNewAssetButton' => 'Criar nova conta de ativo',
|
||||
|
||||
// home page:
|
||||
'yourAccounts' => 'Your accounts',
|
||||
'budgetsAndSpending' => 'Budgets and spending',
|
||||
'savings' => 'Savings',
|
||||
'markAsSavingsToContinue' => 'Mark your asset accounts as "Savings account" to fill this panel',
|
||||
'createPiggyToContinue' => 'Create piggy banks to fill this panel.',
|
||||
'newWithdrawal' => 'New expense',
|
||||
'newDeposit' => 'Novo depósito',
|
||||
'newTransfer' => 'Nova transferência',
|
||||
'moneyIn' => 'Money in',
|
||||
'moneyOut' => 'Money out',
|
||||
'billsToPay' => 'Bills to pay',
|
||||
'billsPaid' => 'Bills paid',
|
||||
'viewDetails' => 'View details',
|
||||
'divided' => 'divided',
|
||||
'toDivide' => 'left to divide',
|
||||
|
||||
// menu and titles, should be recycled as often as possible:
|
||||
'toggleNavigation' => 'Toggle navigation',
|
||||
'currency' => 'Currency',
|
||||
'preferences' => 'Preferences',
|
||||
'logout' => 'Logout',
|
||||
'searchPlaceholder' => 'Search...',
|
||||
'dashboard' => 'Dashboard',
|
||||
'currencies' => 'Currencies',
|
||||
'accounts' => 'Accounts',
|
||||
'Asset account' => 'Asset account',
|
||||
'Default account' => 'Asset account',
|
||||
'Expense account' => 'Conta de Despesa',
|
||||
'Revenue account' => 'Conta de Receita',
|
||||
'Initial balance account' => 'Initial balance account',
|
||||
'budgets' => 'Budgets',
|
||||
'tags' => 'Tags',
|
||||
'reports' => 'Relatórios',
|
||||
'transactions' => 'Transações',
|
||||
'expenses' => 'Despesas',
|
||||
'income' => 'Receita / Renda',
|
||||
'transfers' => 'Transferências',
|
||||
'moneyManagement' => 'Gerenciamento de Dinheiro',
|
||||
'piggyBanks' => 'Cofrinhos',
|
||||
'bills' => 'Faturas',
|
||||
'createNew' => 'Criar nova(o)',
|
||||
'withdrawal' => 'Retirada',
|
||||
'deposit' => 'Depósito',
|
||||
'account' => 'Conta',
|
||||
'transfer' => 'Transferência',
|
||||
'Withdrawal' => 'Retirada',
|
||||
'Deposit' => 'Depósito',
|
||||
'Transfer' => 'Transferência',
|
||||
'bill' => 'Fatura',
|
||||
'yes' => 'Sim',
|
||||
'no' => 'Não',
|
||||
'amount' => 'Valor',
|
||||
'newBalance' => 'Novo saldo',
|
||||
'overview' => 'Visão Geral',
|
||||
'saveOnAccount' => 'Salvar na conta',
|
||||
'unknown' => 'Desconhecido',
|
||||
'daily' => 'Diário',
|
||||
'weekly' => 'Semanal',
|
||||
'monthly' => 'Mensal',
|
||||
'quarterly' => 'Trimestral',
|
||||
'half-year' => 'Semestral',
|
||||
'yearly' => 'Anual',
|
||||
'profile' => 'Perfil',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Default financial report for :start until :end',
|
||||
'quick_link_reports' => 'Quick links',
|
||||
'quick_link_default_report' => 'Default financial report',
|
||||
'report_this_month_quick' => 'Current month, all accounts',
|
||||
'report_this_year_quick' => 'Current year, all accounts',
|
||||
'report_all_time_quick' => 'All-time, all accounts',
|
||||
'reports_can_bookmark' => 'Remember that reports can be bookmarked.',
|
||||
'incomeVsExpenses' => 'Renda vs. Despesas',
|
||||
'accountBalances' => 'Saldos de Contas',
|
||||
'balanceStartOfYear' => 'Balance at start of year',
|
||||
'balanceEndOfYear' => 'Balance at end of year',
|
||||
'balanceStartOfMonth' => 'Balance at start of month',
|
||||
'balanceEndOfMonth' => 'Balance at end of month',
|
||||
'balanceStart' => 'Balance at start of period',
|
||||
'balanceEnd' => 'Balance at end of period',
|
||||
'reportsOwnAccounts' => 'Reports for your own accounts',
|
||||
'reportsOwnAccountsAndShared' => 'Reports for your own accounts and shared accounts',
|
||||
'splitByAccount' => 'Split by account',
|
||||
'balancedByTransfersAndTags' => 'Balanced by transfers and tags',
|
||||
'coveredWithTags' => 'Covered with tags',
|
||||
'leftUnbalanced' => 'Left unbalanced',
|
||||
'expectedBalance' => 'Saldo Experado',
|
||||
'outsideOfBudgets' => 'Fora do orçamento',
|
||||
'leftInBudget' => 'Deixou no orçamento',
|
||||
'sumOfSums' => 'Soma dos montantes',
|
||||
'noCategory' => '(no category)',
|
||||
'notCharged' => 'Não cobrado (ainda)',
|
||||
'inactive' => 'Inativo',
|
||||
'difference' => 'Diferente',
|
||||
'in' => 'Entrada',
|
||||
'out' => 'Saída',
|
||||
'topX' => 'top :number',
|
||||
'showTheRest' => 'Mostrar tudo',
|
||||
'hideTheRest' => 'Mostrar apenas os top :number',
|
||||
'sum_of_year' => 'Soma do ano',
|
||||
'sum_of_years' => 'Sum of years',
|
||||
'average_of_year' => 'Média do ano',
|
||||
'average_of_years' => 'Average of years',
|
||||
'categories_earned_in_year' => 'Categories (by earnings)',
|
||||
'categories_spent_in_year' => 'Categories (by spendings)',
|
||||
'report_type' => 'Report type',
|
||||
'report_type_default' => 'Default financial report',
|
||||
'report_included_accounts' => 'Included accounts',
|
||||
'report_date_range' => 'Date range',
|
||||
'report_include_help' => 'In all cases, transfers to shared accounts count as expenses, and transfers from shared accounts count as income.',
|
||||
'report_preset_ranges' => 'Pre-set ranges',
|
||||
'shared' => 'Shared',
|
||||
|
||||
// charts:
|
||||
'dayOfMonth' => 'Dia do mês',
|
||||
'month' => 'Mês',
|
||||
'budget' => 'Orçamento',
|
||||
'spent' => 'Gasto',
|
||||
'earned' => 'Ganho',
|
||||
'overspent' => 'Gasto excedido',
|
||||
'left' => 'Left',
|
||||
'noBudget' => '(sem orçamento)',
|
||||
'maxAmount' => 'Valor Máximo',
|
||||
'minAmount' => 'Valor Mínimo',
|
||||
'billEntry' => 'Current bill entry',
|
||||
'name' => 'Nome',
|
||||
'date' => 'Data',
|
||||
'paid' => 'Pago',
|
||||
'unpaid' => 'Não pago',
|
||||
'day' => 'Dia',
|
||||
'budgeted' => 'Orçado',
|
||||
'period' => 'Período',
|
||||
'balance' => 'Saldo',
|
||||
'summary' => 'Sumário',
|
||||
'sum' => 'Soma',
|
||||
'average' => 'Média',
|
||||
'balanceFor' => 'Saldo para ":name"',
|
||||
|
||||
// piggy banks:
|
||||
'piggy_bank' => 'Cofrinho',
|
||||
'new_piggy_bank' => 'Criar novo cofrinho',
|
||||
'store_piggy_bank' => 'Store new piggy bank',
|
||||
'account_status' => 'Account status',
|
||||
'left_for_piggy_banks' => 'Left for piggy banks',
|
||||
'sum_of_piggy_banks' => 'Sum of piggy banks',
|
||||
'saved_so_far' => 'Saved so far',
|
||||
'left_to_save' => 'Left to save',
|
||||
'add_money_to_piggy_title' => 'Add money to piggy bank ":name"',
|
||||
'remove_money_from_piggy_title' => 'Remove money from piggy bank ":name"',
|
||||
'add' => 'Adicionar',
|
||||
'remove' => 'Remover',
|
||||
'max_amount_add' => 'The maximum amount you can add is',
|
||||
'max_amount_remove' => 'The maximum amount you can remove is',
|
||||
'update_piggy_button' => 'Update piggy bank',
|
||||
'update_piggy_title' => 'Update piggy bank ":name"',
|
||||
'details' => 'Detalhes',
|
||||
'events' => 'Eventos',
|
||||
'target_amount' => 'Valor alvo',
|
||||
'start_date' => 'Data de Início',
|
||||
'target_date' => 'Data Alvo',
|
||||
'no_target_date' => 'Nenhum data',
|
||||
'todo' => 'A fazer',
|
||||
'table' => 'Tabela',
|
||||
'piggy_bank_not_exists' => 'Piggy bank no longer exists.',
|
||||
'add_any_amount_to_piggy' => 'Add money to this piggy bank to reach your target of :amount.',
|
||||
'add_set_amount_to_piggy' => 'Add :amount to fill this piggy bank on :date',
|
||||
'delete_piggy_bank' => 'Apagar cofrinho ":name"',
|
||||
|
||||
// tags
|
||||
'regular_tag' => 'Just a regular tag.',
|
||||
'balancing_act' => 'The tag takes at most two transactions; an expense and a transfer. They\'ll balance each other out.',
|
||||
'advance_payment' => 'The tag accepts one expense and any number of deposits aimed to repay the original expense.',
|
||||
'delete_tag' => 'Apagar tag ":tag"',
|
||||
'new_tag' => 'Fazer nova tag',
|
||||
'edit_tag' => 'Editar tag ":tag"',
|
||||
'no_year' => 'Nenhum ano definido',
|
||||
'no_month' => 'Nenhum mês definido',
|
||||
'tag_title_nothing' => 'Tags padrões',
|
||||
'tag_title_balancingAct' => 'Balancing act tags',
|
||||
'tag_title_advancePayment' => 'Advance payment tags',
|
||||
'tags_introduction' => 'Usually tags are singular words, designed to quickly band items together using things like <span class="label label-info">expensive</span>, <span class="label label-info">bill</span> or <span class="label label-info">for-party</span>. In Firefly III, tags can have more properties such as a date, description and location. This allows you to join transactions together in a more meaningful way. For example, you could make a tag called <span class="label label-success"> Christmas dinner with friends</span> and add information about the restaurant. Such tags are "singular", you would only use them for a single occasion, perhaps with multiple transactions.',
|
||||
'tags_group' => 'Tags group transactions together, which makes it possible to store reimbursements (in case you front money for others) and other "balancing acts" where expenses are summed up (the payments on your new TV) or where expenses and deposits are cancelling each other out (buying something with saved money). It\'s all up to you. Using tags the old-fashioned way is of course always possible. ',
|
||||
'tags_start' => 'Create a tag to get started or enter tags when creating new transactions.',
|
||||
|
||||
];
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user