mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-21 03:42:54 +00:00
Compare commits
48 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
cf00922ad2 | ||
|
d07b2e773b | ||
|
506ef7b0b9 | ||
|
2cd5dae8e2 | ||
|
a1cd49c111 | ||
|
aca2973aef | ||
|
0a7a691c95 | ||
|
72906a7afd | ||
|
d1a4a83570 | ||
|
e0396b29e8 | ||
|
536833cfe0 | ||
|
317b02d1b9 | ||
|
75e279ea0d | ||
|
dc2ad21f4c | ||
|
484d49aae1 | ||
|
ca39438ad4 | ||
|
49a65ebff4 | ||
|
befdc05084 | ||
|
1fbffe761b | ||
|
36aad379ff | ||
|
540cfa072e | ||
|
3b049c15cc | ||
|
3e93ed0a17 | ||
|
d7d9358136 | ||
|
5cf0939ff9 | ||
|
8dc6f91d3c | ||
|
a3a25db230 | ||
|
c06f18c815 | ||
|
6802f04036 | ||
|
beeccdf345 | ||
|
58241ed39d | ||
|
31128020f0 | ||
|
6c48afc37b | ||
|
7a2f169dfc | ||
|
ed910b99a7 | ||
|
54195c0826 | ||
|
cefbbcd1df | ||
|
cc01592085 | ||
|
5a98a5252d | ||
|
184e8b1132 | ||
|
2b6b896c2e | ||
|
96d06b7a93 | ||
|
f54f1611b5 | ||
|
69ad757e8b | ||
|
e0beb796ad | ||
|
f331e7d820 | ||
|
cbb62d3d78 | ||
|
c85bc59c1d |
@@ -8,8 +8,8 @@ DB_DATABASE=homestead
|
|||||||
DB_USERNAME=homestead
|
DB_USERNAME=homestead
|
||||||
DB_PASSWORD=secret
|
DB_PASSWORD=secret
|
||||||
|
|
||||||
CACHE_DRIVER=file
|
CACHE_DRIVER=array
|
||||||
SESSION_DRIVER=file
|
SESSION_DRIVER=array
|
||||||
|
|
||||||
EMAIL_SMTP=
|
EMAIL_SMTP=
|
||||||
EMAIL_USERNAME=
|
EMAIL_USERNAME=
|
||||||
|
@@ -16,7 +16,7 @@ install:
|
|||||||
- mv -v .env.testing .env
|
- mv -v .env.testing .env
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- phpunit --debug
|
- phpunit
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
- php vendor/bin/coveralls
|
- php vendor/bin/coveralls
|
||||||
|
106
README.md
106
README.md
@@ -1,46 +1,62 @@
|
|||||||
Firefly III (v3.4.0.1)
|
# Firefly III
|
||||||
===========
|
#### v3.4.0.4
|
||||||
|
|
||||||
[](https://travis-ci.org/JC5/firefly-iii)
|
[](https://travis-ci.org/JC5/firefly-iii)
|
||||||
[](http://stillmaintained.com/JC5/firefly-iii)
|
[](http://stillmaintained.com/JC5/firefly-iii)
|
||||||
[](https://insight.sensiolabs.com/projects/d44c7012-5f50-41ad-add8-8445330e4102)
|
[](https://insight.sensiolabs.com/projects/d44c7012-5f50-41ad-add8-8445330e4102)
|
||||||
[](https://codeclimate.com/github/JC5/firefly-iii)
|
[](https://codeclimate.com/github/JC5/firefly-iii)
|
||||||
[](https://coveralls.io/r/JC5/firefly-iii?branch=master)
|
[](https://coveralls.io/r/JC5/firefly-iii?branch=master)
|
||||||
[](https://coveralls.io/r/JC5/firefly-iii?branch=develop)
|
|
||||||
|
|
||||||
[](https://packagist.org/packages/grumpydictator/firefly-iii)
|
[](https://packagist.org/packages/grumpydictator/firefly-iii)
|
||||||
[](https://packagist.org/packages/grumpydictator/firefly-iii)
|

|
||||||
[](https://packagist.org/packages/grumpydictator/firefly-iii)
|
## About
|
||||||
[](https://packagist.org/packages/grumpydictator/firefly-iii)
|
|
||||||
|
|
||||||
Firefly III is a tool to help you manage your finances. Please read the full description [in the wiki](https://github.com/JC5/firefly-iii/wiki/full-description).
|
"Firefly III" is a financial manager. It can help you keep track of expenses, income, budgets and everything in between. It even supports credit cards, shared
|
||||||
|
household accounts and savings accounts! It's pretty fancy. You should use it to save and organise money.
|
||||||
Firefly Mark III is a new version of Firefly built upon best practices and lessons learned
|
|
||||||
from building [Firefly](https://github.com/JC5/Firefly). It's Mark III since the original Firefly never made it outside of my
|
|
||||||
laptop and [Firefly II](https://github.com/JC5/Firefly) is live.
|
|
||||||
|
|
||||||
If you're not sure if this tool is for you, please read the [full description](https://github.com/JC5/firefly-iii/wiki/full-description).
|
|
||||||
|
|
||||||
To install and use Firefly III, please read [the installation guide](https://github.com/JC5/firefly-iii/wiki/Installation),
|
|
||||||
[the upgrade guide](https://github.com/JC5/firefly-iii/wiki/Upgrade-instructions) (if applicable) and the **[first use guide](https://github.com/JC5/firefly-iii/wiki/First-use)**.
|
|
||||||
|
|
||||||
If you want to try out Firefly III, you can do so on [this dedicated website](https://geld.nder.be/). This site always runs the latest version of Firefly III. If you want to use it, please read the [privacy considerations](https://github.com/JC5/firefly-iii/wiki/Privacy-on-demo-site) for this demo-site.
|
Firefly is a system you'll have install yourself on webhosting of your choosing.
|
||||||
|
|
||||||
|
Personal financial management is pretty difficult, and everybody has their own approach to it. Some people
|
||||||
|
make budgets, other people limit their cashflow by throwing away their credit cards, others get a better job.
|
||||||
|
There are tons of ways to save and earn money.
|
||||||
|
|
||||||
|
|
||||||
|
To get to know Firefly, and to see if it fits you, check out these resources:
|
||||||
|
|
||||||
|
- The screenshots below on this very page.
|
||||||
|
- The featurelist below, also on this very page.
|
||||||
|
- The [full description](https://github.com/JC5/firefly-iii/wiki/full-description), which will tell you how Firefly works,
|
||||||
|
and the philosophy behind it.
|
||||||
|
|
||||||
|
|
||||||
|
### About the name (if you care)
|
||||||
|
|
||||||
|
It's III, or 3, because [version 2](https://github.com/JC5/Firefly) and version 1 (not online) preceded it. It has been growing steadily ever since.
|
||||||
|
|
||||||
|
## Running and installing
|
||||||
|
|
||||||
|
If you're still interested please read [the installation guide](https://github.com/JC5/firefly-iii/wiki/Installation),
|
||||||
|
[the upgrade guide](https://github.com/JC5/firefly-iii/wiki/Upgrade-instructions) (if applicable)
|
||||||
|
and the **[first use guide](https://github.com/JC5/firefly-iii/wiki/First-use)**.
|
||||||
|
|
||||||
|
If you want to try out Firefly III, you can do so on [this dedicated website](https://geld.nder.be/).
|
||||||
|
This site always runs the latest version of Firefly III. If you want to use it, please read the [privacy considerations](https://github.com/JC5/firefly-iii/wiki/Privacy-on-demo-site) for this demo-site.
|
||||||
|
|
||||||
## Current features
|
## Current features
|
||||||
|
|
||||||
- [A double-entry bookkeeping system](https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system);
|
- [A double-entry bookkeeping system](https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system);
|
||||||
- You can store, edit and remove withdrawals, deposits and transfers. This allows you full financial management;
|
- You can store, edit and remove [withdrawals, deposits and transfers](https://en.wikipedia.org/wiki/Financial_transaction). This allows you full financial management;
|
||||||
- You can manage different types of accounts
|
- You can manage different types of accounts
|
||||||
- Asset accounts
|
- [Asset](https://en.wikipedia.org/wiki/Asset) accounts
|
||||||
- Shared asset accounts (household accounts)
|
- Shared [asset accounts](https://en.wikipedia.org/wiki/Asset) ([household accounts](https://en.wikipedia.org/wiki/Household))
|
||||||
- Saving accounts
|
- Saving accounts
|
||||||
- Credit cards
|
- Credit cards
|
||||||
- It's possible to create, change and manage money using _[budgets](https://en.wikipedia.org/wiki/Envelope_system)_;
|
- It's possible to create, change and manage money using _[budgets](https://en.wikipedia.org/wiki/Envelope_system)_;
|
||||||
- Organize transactions using categories;
|
- Organize transactions using categories;
|
||||||
- Save towards a goal using piggy banks;
|
- Save towards a goal using [piggy banks](https://en.wikipedia.org/wiki/Piggy_bank);
|
||||||
- Predict and anticipate bills;
|
- Predict and anticipate [bills](https://en.wikipedia.org/wiki/Invoice);
|
||||||
- View income / expense reports;
|
- View income / expense [reports](https://en.wikipedia.org/wiki/Financial_statement);
|
||||||
- Lots of help text in case you don't get it;
|
- Organize expenses using tags;
|
||||||
|
- Lots of help text in case you don't get it.
|
||||||
|
|
||||||
Everything is organised:
|
Everything is organised:
|
||||||
|
|
||||||
@@ -50,33 +66,29 @@ Everything is organised:
|
|||||||
- Lots of charts because we all love them.
|
- Lots of charts because we all love them.
|
||||||
- Financial reporting showing you how well you are doing;
|
- Financial reporting showing you how well you are doing;
|
||||||
|
|
||||||
## Changes
|
|
||||||
|
|
||||||
Firefly III will feature, but does not feature yet:
|
|
||||||
|
|
||||||
|
|
||||||
- More control over other resources outside of personal finance
|
|
||||||
- Debts
|
|
||||||
- More test-coverage;
|
|
||||||
- Firefly will be able to split transactions; a single purchase can be split in multiple entries, for more fine-grained control.
|
|
||||||
- Firefly will be able to join transactions.
|
|
||||||
- Any other features I might not have thought of.
|
|
||||||
|
|
||||||
Some stuff has been removed:
|
|
||||||
|
|
||||||
- The nesting of budgets, categories and beneficiaries is removed because it was pretty pointless.
|
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||

|
_Please note that everything in these screenshots is fictional and may not be realistic._
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Current state
|
## Current state
|
||||||
I have the basics up and running. Test coverage is currently coming, slowly.
|
|
||||||
|
|
||||||
Questions, ideas or other things to contribute? [Let me know](https://github.com/JC5/firefly-iii/issues/new)!
|
Firefly III is pretty much all grown up. Full test coverage (nerd alert!) is coming. One of the things on the todo-list
|
||||||
|
is adding translations.
|
||||||
|
|
||||||
|
Questions, ideas, bugs or other things to contribute? [Let me know](https://github.com/JC5/firefly-iii/issues/new)!
|
||||||
|
|
||||||
|
If you like this tool, feel free to [donate me some beer money](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=2ZMV952UUSCLU&lc=NL&item_name=Development%20of%20Firefly¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted).
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
use FireflyIII\Events\JournalSaved;
|
use FireflyIII\Events\JournalSaved;
|
||||||
use FireflyIII\Models\PiggyBankEvent;
|
use FireflyIII\Models\PiggyBankEvent;
|
||||||
use FireflyIII\Models\Transaction;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateJournalConnection
|
* Class UpdateJournalConnection
|
||||||
|
@@ -84,4 +84,4 @@ class Help implements HelpInterface
|
|||||||
{
|
{
|
||||||
return Cache::has('help.' . $route . '.title') && Cache::has('help.' . $route . '.text');
|
return Cache::has('help.' . $route . '.title') && Cache::has('help.' . $route . '.text');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -45,4 +45,4 @@ interface HelpInterface
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function putInCache($route, array $content);
|
public function putInCache($route, array $content);
|
||||||
}
|
}
|
||||||
|
@@ -136,7 +136,7 @@ class ReportHelper implements ReportHelperInterface
|
|||||||
$end = clone $date;
|
$end = clone $date;
|
||||||
$sharedAccounts = [];
|
$sharedAccounts = [];
|
||||||
if ($showSharedReports === false) {
|
if ($showSharedReports === false) {
|
||||||
$sharedCollection = \Auth::user()->accounts()
|
$sharedCollection = Auth::user()->accounts()
|
||||||
->leftJoin('account_meta', 'account_meta.account_id', '=', 'accounts.id')
|
->leftJoin('account_meta', 'account_meta.account_id', '=', 'accounts.id')
|
||||||
->where('account_meta.name', '=', 'accountRole')
|
->where('account_meta.name', '=', 'accountRole')
|
||||||
->where('account_meta.data', '=', json_encode('sharedAsset'))
|
->where('account_meta.data', '=', json_encode('sharedAsset'))
|
||||||
|
@@ -4,7 +4,6 @@ use Config;
|
|||||||
use FireflyIII\Http\Requests;
|
use FireflyIII\Http\Requests;
|
||||||
use FireflyIII\Http\Requests\BillFormRequest;
|
use FireflyIII\Http\Requests\BillFormRequest;
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\AccountType;
|
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
use FireflyIII\Models\Transaction;
|
use FireflyIII\Models\Transaction;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
|
@@ -5,7 +5,6 @@ use Carbon\Carbon;
|
|||||||
use FireflyIII\Http\Requests;
|
use FireflyIII\Http\Requests;
|
||||||
use FireflyIII\Http\Requests\BudgetFormRequest;
|
use FireflyIII\Http\Requests\BudgetFormRequest;
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Models\BudgetLimit;
|
|
||||||
use FireflyIII\Models\LimitRepetition;
|
use FireflyIII\Models\LimitRepetition;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
use Input;
|
use Input;
|
||||||
|
@@ -149,6 +149,7 @@ class GoogleChartController extends Controller
|
|||||||
{
|
{
|
||||||
$chart->addColumn('Budget', 'string');
|
$chart->addColumn('Budget', 'string');
|
||||||
$chart->addColumn('Left', 'number');
|
$chart->addColumn('Left', 'number');
|
||||||
|
$chart->addColumn('Spent', 'number');
|
||||||
$chart->addColumn('Overspent', 'number');
|
$chart->addColumn('Overspent', 'number');
|
||||||
|
|
||||||
$budgets = $repository->getBudgets();
|
$budgets = $repository->getBudgets();
|
||||||
@@ -160,31 +161,43 @@ class GoogleChartController extends Controller
|
|||||||
$repetitions = $repository->getBudgetLimitRepetitions($budget, $start, $end);
|
$repetitions = $repository->getBudgetLimitRepetitions($budget, $start, $end);
|
||||||
if ($repetitions->count() == 0) {
|
if ($repetitions->count() == 0) {
|
||||||
$expenses = $repository->sumBudgetExpensesInPeriod($budget, $start, $end);
|
$expenses = $repository->sumBudgetExpensesInPeriod($budget, $start, $end);
|
||||||
$allEntries->push([$budget->name, 0, $expenses]);
|
$allEntries->push([$budget->name, 0, 0, $expenses]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/** @var LimitRepetition $repetition */
|
/** @var LimitRepetition $repetition */
|
||||||
foreach ($repetitions as $repetition) {
|
foreach ($repetitions as $repetition) {
|
||||||
$expenses = $repository->sumBudgetExpensesInPeriod($budget, $repetition->startdate, $repetition->enddate);
|
$expenses = $repository->sumBudgetExpensesInPeriod($budget, $repetition->startdate, $repetition->enddate);
|
||||||
$allEntries->push([$budget->name . ' (' . $repetition->startdate->format('j M Y') . ')', floatval($repetition->amount), $expenses]);
|
$left = $expenses < floatval($repetition->amount) ? floatval($repetition->amount) - $expenses : 0;
|
||||||
|
$spent = $expenses > floatval($repetition->amount) ? 0 : $expenses;
|
||||||
|
$overspent = $expenses > floatval($repetition->amount) ? $expenses - floatval($repetition->amount) : 0;
|
||||||
|
$allEntries->push(
|
||||||
|
[$budget->name . ' (' . $repetition->startdate->format('j M Y') . ')',
|
||||||
|
$left,
|
||||||
|
$spent,
|
||||||
|
$overspent
|
||||||
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$noBudgetExpenses = $repository->getWithoutBudgetSum($start, $end);
|
$noBudgetExpenses = $repository->getWithoutBudgetSum($start, $end);
|
||||||
$allEntries->push(['(no budget)', 0, $noBudgetExpenses]);
|
$allEntries->push(['(no budget)', 0, 0, $noBudgetExpenses]);
|
||||||
|
|
||||||
foreach ($allEntries as $entry) {
|
foreach ($allEntries as $entry) {
|
||||||
if ($entry[2] > 0) {
|
if ($entry[1] != 0 || $entry[2] != 0 || $entry[3] != 0) {
|
||||||
$left = $entry[1] - $entry[2];
|
$chart->addRow($entry[0], $entry[1], $entry[2], $entry[3]);
|
||||||
if ($left > 0) {
|
|
||||||
$chart->addRow($entry[0], $left, null);
|
|
||||||
} else {
|
|
||||||
if ($left < 0) {
|
|
||||||
$chart->addRow($entry[0], null, $left);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// if ($entry[2] > 0) {
|
||||||
|
// $left = $entry[1] - $entry[2];
|
||||||
|
// if ($left > 0) {
|
||||||
|
// $chart->addRow($entry[0], $left, null);
|
||||||
|
// } else {
|
||||||
|
// if ($left < 0) {
|
||||||
|
// $chart->addRow($entry[0], null, $left);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
$chart->generate();
|
$chart->generate();
|
||||||
|
@@ -6,8 +6,6 @@ use FireflyIII\Helpers\Report\ReportQueryInterface;
|
|||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
use FireflyIII\Models\Preference;
|
use FireflyIII\Models\Preference;
|
||||||
use FireflyIII\Models\Transaction;
|
|
||||||
use FireflyIII\Models\TransactionType;
|
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
||||||
@@ -187,25 +185,6 @@ class JsonController extends Controller
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a JSON list of all beneficiaries.
|
|
||||||
*
|
|
||||||
* @param TagRepositoryInterface $tagRepository
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
|
||||||
public function tags(TagRepositoryInterface $tagRepository)
|
|
||||||
{
|
|
||||||
$list = $tagRepository->get();
|
|
||||||
$return = [];
|
|
||||||
foreach ($list as $entry) {
|
|
||||||
$return[] = $entry->tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Response::json($return);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param AccountRepositoryInterface $accountRepository
|
* @param AccountRepositoryInterface $accountRepository
|
||||||
*
|
*
|
||||||
@@ -247,6 +226,25 @@ class JsonController extends Controller
|
|||||||
return Response::json(['value' => $pref->data]);
|
return Response::json(['value' => $pref->data]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a JSON list of all beneficiaries.
|
||||||
|
*
|
||||||
|
* @param TagRepositoryInterface $tagRepository
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Http\JsonResponse
|
||||||
|
*/
|
||||||
|
public function tags(TagRepositoryInterface $tagRepository)
|
||||||
|
{
|
||||||
|
$list = $tagRepository->get();
|
||||||
|
$return = [];
|
||||||
|
foreach ($list as $entry) {
|
||||||
|
$return[] = $entry->tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Response::json($return);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param JournalRepositoryInterface $repository
|
* @param JournalRepositoryInterface $repository
|
||||||
* @param $what
|
* @param $what
|
||||||
|
@@ -6,9 +6,7 @@ use Config;
|
|||||||
use ExpandedForm;
|
use ExpandedForm;
|
||||||
use FireflyIII\Http\Requests;
|
use FireflyIII\Http\Requests;
|
||||||
use FireflyIII\Http\Requests\PiggyBankFormRequest;
|
use FireflyIII\Http\Requests\PiggyBankFormRequest;
|
||||||
use FireflyIII\Models\Account;
|
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Models\PiggyBankEvent;
|
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
@@ -22,10 +22,10 @@ use View;
|
|||||||
* Remember: a balancingAct takes at most one expense and one transfer.
|
* Remember: a balancingAct takes at most one expense and one transfer.
|
||||||
* an advancePayment takes at most one expense, infinite deposits and NO transfers.
|
* an advancePayment takes at most one expense, infinite deposits and NO transfers.
|
||||||
*
|
*
|
||||||
* TODO transaction can only have one advancePayment OR balancingAct.
|
* transaction can only have one advancePayment OR balancingAct.
|
||||||
* TODO Other attempts to put in such a tag are blocked.
|
* Other attempts to put in such a tag are blocked.
|
||||||
* TODO also show an error when editing a tag and it becomes either
|
* also show an error when editing a tag and it becomes either
|
||||||
* TODO of these two types. Or rather, block editing of the tag.
|
* of these two types. Or rather, block editing of the tag.
|
||||||
*
|
*
|
||||||
* @package FireflyIII\Http\Controllers
|
* @package FireflyIII\Http\Controllers
|
||||||
*/
|
*/
|
||||||
@@ -322,4 +322,4 @@ class TagController extends Controller
|
|||||||
// redirect to previous URL.
|
// redirect to previous URL.
|
||||||
return Redirect::to(Session::get('tags.edit.url'));
|
return Redirect::to(Session::get('tags.edit.url'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,4 +50,4 @@ class TagFormRequest extends Request
|
|||||||
'tagMode' => 'required|in:nothing,balancingAct,advancePayment'
|
'tagMode' => 'required|in:nothing,balancingAct,advancePayment'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -415,4 +415,4 @@ Breadcrumbs::register(
|
|||||||
$breadcrumbs->parent('tags.index');
|
$breadcrumbs->parent('tags.index');
|
||||||
$breadcrumbs->push(e($tag->tag), route('tags.show', $tag->id));
|
$breadcrumbs->push(e($tag->tag), route('tags.show', $tag->id));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@@ -60,6 +60,31 @@ class Account extends Model
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $fields
|
||||||
|
*
|
||||||
|
* @return Account|null
|
||||||
|
*/
|
||||||
|
public static function firstOrNullEncrypted(array $fields)
|
||||||
|
{
|
||||||
|
// everything but the name:
|
||||||
|
$query = Account::orderBy('id');
|
||||||
|
foreach ($fields as $name => $value) {
|
||||||
|
if ($name != 'name') {
|
||||||
|
$query->where($name, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$set = $query->get(['accounts.*']);
|
||||||
|
/** @var Account $account */
|
||||||
|
foreach ($set as $account) {
|
||||||
|
if ($account->name == $fields['name']) {
|
||||||
|
return $account;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||||
*/
|
*/
|
||||||
|
@@ -12,6 +12,8 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
class PiggyBankRepetition extends Model
|
class PiggyBankRepetition extends Model
|
||||||
{
|
{
|
||||||
|
|
||||||
|
protected $fillable = ['piggy_bank_id', 'startdate', 'targetdate', 'currentamount'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
|
@@ -125,4 +125,4 @@ class Tag extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsTo('FireflyIII\User');
|
return $this->belongsTo('FireflyIII\User');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -230,7 +230,7 @@ class TransactionJournal extends Model
|
|||||||
*/
|
*/
|
||||||
public function setDescriptionAttribute($value)
|
public function setDescriptionAttribute($value)
|
||||||
{
|
{
|
||||||
$this->attributes['description'] = \Crypt::encrypt($value);
|
$this->attributes['description'] = Crypt::encrypt($value);
|
||||||
$this->attributes['encrypted'] = true;
|
$this->attributes['encrypted'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
<?php namespace FireflyIII\Providers;
|
<?php namespace FireflyIII\Providers;
|
||||||
|
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\Bill;
|
|
||||||
use FireflyIII\Models\BudgetLimit;
|
use FireflyIII\Models\BudgetLimit;
|
||||||
use FireflyIII\Models\LimitRepetition;
|
use FireflyIII\Models\LimitRepetition;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
@@ -118,8 +117,8 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
try {
|
try {
|
||||||
$repetition->save();
|
$repetition->save();
|
||||||
} catch (QueryException $e) {
|
} catch (QueryException $e) {
|
||||||
\Log::error('Trying to save new LimitRepetition failed!');
|
Log::error('Trying to save new LimitRepetition failed!');
|
||||||
\Log::error($e->getMessage());
|
Log::error($e->getMessage());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($set->count() == 1) {
|
if ($set->count() == 1) {
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
namespace FireflyIII\Providers;
|
namespace FireflyIII\Providers;
|
||||||
|
|
||||||
use App;
|
use App;
|
||||||
use FireflyIII\Models\Account;
|
|
||||||
use FireflyIII\Support\Amount;
|
use FireflyIII\Support\Amount;
|
||||||
use FireflyIII\Support\ExpandedForm;
|
use FireflyIII\Support\ExpandedForm;
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
|
@@ -16,12 +16,14 @@ use FireflyIII\Models\Transaction;
|
|||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Models\TransactionType;
|
use FireflyIII\Models\TransactionType;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
use Illuminate\Database\Query\Builder;
|
||||||
use Illuminate\Pagination\LengthAwarePaginator;
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Log;
|
use Log;
|
||||||
use Session;
|
use Session;
|
||||||
use Steam;
|
use Steam;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class AccountRepository
|
* Class AccountRepository
|
||||||
*
|
*
|
||||||
@@ -224,7 +226,7 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
// then, percentage.
|
// then, percentage.
|
||||||
$difference = $account->endBalance - $account->piggyBalance;
|
$difference = $account->endBalance - $account->piggyBalance;
|
||||||
$account->difference = $difference;
|
$account->difference = $difference;
|
||||||
$account->percentage = $difference != 0 ? round((($difference / $account->endBalance) * 100)) : 100;
|
$account->percentage = $difference != 0 && $account->endBalance != 0 ? round((($difference / $account->endBalance) * 100)) : 100;
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -269,6 +271,7 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
$pct = $pct > 100 ? 100 : $pct;
|
$pct = $pct > 100 ? 100 : $pct;
|
||||||
$account->difference = $diff;
|
$account->difference = $diff;
|
||||||
$account->percentage = round($pct);
|
$account->percentage = round($pct);
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -287,7 +290,7 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
public function getTransfersInRange(Account $account, Carbon $start, Carbon $end)
|
public function getTransfersInRange(Account $account, Carbon $start, Carbon $end)
|
||||||
{
|
{
|
||||||
return TransactionJournal::whereIn(
|
return TransactionJournal::whereIn(
|
||||||
'id', function ($q) use ($account, $start, $end) {
|
'id', function (Builder $q) use ($account, $start, $end) {
|
||||||
$q->select('transaction_journals.id')
|
$q->select('transaction_journals.id')
|
||||||
->from('transactions')
|
->from('transactions')
|
||||||
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
||||||
@@ -310,7 +313,7 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function leftOnAccount(Account $account)
|
public function leftOnAccount(Account $account)
|
||||||
{
|
{
|
||||||
$balance = \Steam::balance($account, null, true);
|
$balance = Steam::balance($account, null, true);
|
||||||
/** @var PiggyBank $p */
|
/** @var PiggyBank $p */
|
||||||
foreach ($account->piggybanks()->get() as $p) {
|
foreach ($account->piggybanks()->get() as $p) {
|
||||||
$balance -= $p->currentRelevantRep()->currentamount;
|
$balance -= $p->currentRelevantRep()->currentamount;
|
||||||
@@ -440,13 +443,20 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
|
|
||||||
if (!$newAccount->isValid()) {
|
if (!$newAccount->isValid()) {
|
||||||
// does the account already exist?
|
// does the account already exist?
|
||||||
$existingAccount = Account::where('user_id', $data['user'])->where('account_type_id', $accountType->id)->where('name', $data['name'])->first();
|
$searchData = [
|
||||||
|
'user_id' => $data['user'],
|
||||||
|
'account_type_id' => $accountType->id,
|
||||||
|
'name' => $data['name']
|
||||||
|
];
|
||||||
|
$existingAccount = Account::firstOrNullEncrypted($searchData);
|
||||||
if (!$existingAccount) {
|
if (!$existingAccount) {
|
||||||
Log::error('Account create error: ' . $newAccount->getErrors()->toJson());
|
Log::error('Account create error: ' . $newAccount->getErrors()->toJson());
|
||||||
App::abort(500);
|
App::abort(500);
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
}
|
}
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
$newAccount = $existingAccount;
|
$newAccount = $existingAccount;
|
||||||
|
|
||||||
}
|
}
|
||||||
$newAccount->save();
|
$newAccount->save();
|
||||||
|
|
||||||
@@ -500,9 +510,6 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
'encrypted' => true
|
'encrypted' => true
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
if (!$journal->isValid()) {
|
|
||||||
App::abort(500);
|
|
||||||
}
|
|
||||||
$journal->save();
|
$journal->save();
|
||||||
|
|
||||||
|
|
||||||
@@ -526,9 +533,6 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
'amount' => $firstAmount
|
'amount' => $firstAmount
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
if (!$one->isValid()) {
|
|
||||||
App::abort(500);
|
|
||||||
}
|
|
||||||
$one->save();
|
$one->save();
|
||||||
|
|
||||||
// second transaction: to
|
// second transaction: to
|
||||||
@@ -539,9 +543,6 @@ class AccountRepository implements AccountRepositoryInterface
|
|||||||
'amount' => $secondAmount
|
'amount' => $secondAmount
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
if (!$two->isValid()) {
|
|
||||||
App::abort(500);
|
|
||||||
}
|
|
||||||
$two->save();
|
$two->save();
|
||||||
|
|
||||||
return $journal;
|
return $journal;
|
||||||
|
@@ -4,6 +4,7 @@ namespace FireflyIII\Repositories\Bill;
|
|||||||
|
|
||||||
use Auth;
|
use Auth;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use DB;
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\AccountType;
|
use FireflyIII\Models\AccountType;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
@@ -119,7 +120,7 @@ class BillRepository implements BillRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function getPossiblyRelatedJournals(Bill $bill)
|
public function getPossiblyRelatedJournals(Bill $bill)
|
||||||
{
|
{
|
||||||
$set = \DB::table('transactions')->where('amount', '>', 0)->where('amount', '>=', $bill->amount_min)->where('amount', '<=', $bill->amount_max)->get(
|
$set = DB::table('transactions')->where('amount', '>', 0)->where('amount', '>=', $bill->amount_min)->where('amount', '<=', $bill->amount_max)->get(
|
||||||
['transaction_journal_id']
|
['transaction_journal_id']
|
||||||
);
|
);
|
||||||
$ids = [];
|
$ids = [];
|
||||||
@@ -212,7 +213,7 @@ class BillRepository implements BillRepositoryInterface
|
|||||||
* when the current period has a transaction journal.
|
* when the current period has a transaction journal.
|
||||||
*/
|
*/
|
||||||
/** @var \Carbon\Carbon $obj */
|
/** @var \Carbon\Carbon $obj */
|
||||||
$obj = new Carbon;
|
$obj = new Carbon;
|
||||||
$today = Navigation::addPeriod($obj, $bill->repeat_freq, 0);
|
$today = Navigation::addPeriod($obj, $bill->repeat_freq, 0);
|
||||||
|
|
||||||
$skip = $bill->skip + 1;
|
$skip = $bill->skip + 1;
|
||||||
@@ -261,11 +262,8 @@ class BillRepository implements BillRepositoryInterface
|
|||||||
/*
|
/*
|
||||||
* Attach expense account to description for more narrow matching.
|
* Attach expense account to description for more narrow matching.
|
||||||
*/
|
*/
|
||||||
if (count($journal->transactions) < 2) {
|
$transactions = $journal->transactions()->get();
|
||||||
$transactions = $journal->transactions()->get();
|
|
||||||
} else {
|
|
||||||
$transactions = $journal->transactions;
|
|
||||||
}
|
|
||||||
/** @var Transaction $transaction */
|
/** @var Transaction $transaction */
|
||||||
foreach ($transactions as $transaction) {
|
foreach ($transactions as $transaction) {
|
||||||
/** @var Account $account */
|
/** @var Account $account */
|
||||||
|
@@ -10,6 +10,7 @@ use FireflyIII\Models\LimitRepetition;
|
|||||||
use Illuminate\Database\Query\Builder as QueryBuilder;
|
use Illuminate\Database\Query\Builder as QueryBuilder;
|
||||||
use Illuminate\Pagination\LengthAwarePaginator;
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
use Input;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class BudgetRepository
|
* Class BudgetRepository
|
||||||
@@ -24,21 +25,6 @@ class BudgetRepository implements BudgetRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function cleanupBudgets()
|
public function cleanupBudgets()
|
||||||
{
|
{
|
||||||
$limits = BudgetLimit::leftJoin('budgets', 'budgets.id', '=', 'budget_limits.budget_id')->get(['budget_limits.*']);
|
|
||||||
|
|
||||||
// loop budget limits:
|
|
||||||
$found = [];
|
|
||||||
/** @var BudgetLimit $limit */
|
|
||||||
foreach ($limits as $limit) {
|
|
||||||
$key = $limit->budget_id . '-' . $limit->startdate;
|
|
||||||
if (isset($found[$key])) {
|
|
||||||
$limit->delete();
|
|
||||||
} else {
|
|
||||||
$found[$key] = true;
|
|
||||||
}
|
|
||||||
unset($key);
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete limits with amount 0:
|
// delete limits with amount 0:
|
||||||
BudgetLimit::where('amount', 0)->delete();
|
BudgetLimit::where('amount', 0)->delete();
|
||||||
|
|
||||||
@@ -162,7 +148,7 @@ class BudgetRepository implements BudgetRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function getJournals(Budget $budget, LimitRepetition $repetition = null, $take = 50)
|
public function getJournals(Budget $budget, LimitRepetition $repetition = null, $take = 50)
|
||||||
{
|
{
|
||||||
$offset = intval(\Input::get('page')) > 0 ? intval(\Input::get('page')) * $take : 0;
|
$offset = intval(Input::get('page')) > 0 ? intval(Input::get('page')) * $take : 0;
|
||||||
|
|
||||||
|
|
||||||
$setQuery = $budget->transactionJournals()->withRelevantData()->take($take)->offset($offset)
|
$setQuery = $budget->transactionJournals()->withRelevantData()->take($take)->offset($offset)
|
||||||
|
@@ -71,9 +71,9 @@ interface CategoryRepositoryInterface
|
|||||||
public function getWithoutCategory(Carbon $start, Carbon $end);
|
public function getWithoutCategory(Carbon $start, Carbon $end);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Category $category
|
* @param Category $category
|
||||||
* @param \Carbon\Carbon $start
|
* @param \Carbon\Carbon $start
|
||||||
* @param \Carbon\Carbon $end
|
* @param \Carbon\Carbon $end
|
||||||
*
|
*
|
||||||
* @return float
|
* @return float
|
||||||
*/
|
*/
|
||||||
|
@@ -177,4 +177,4 @@ class TagRepository implements TagRepositoryInterface
|
|||||||
|
|
||||||
return $tag;
|
return $tag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -49,4 +49,4 @@ interface TagRepositoryInterface
|
|||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function connect(TransactionJournal $journal, Tag $tag);
|
public function connect(TransactionJournal $journal, Tag $tag);
|
||||||
}
|
}
|
||||||
|
@@ -39,17 +39,10 @@ class Amount
|
|||||||
if (defined('FFCURRENCYSYMBOL')) {
|
if (defined('FFCURRENCYSYMBOL')) {
|
||||||
return FFCURRENCYSYMBOL;
|
return FFCURRENCYSYMBOL;
|
||||||
}
|
}
|
||||||
if (\Cache::has('FFCURRENCYSYMBOL')) {
|
|
||||||
define('FFCURRENCYSYMBOL', \Cache::get('FFCURRENCYSYMBOL'));
|
|
||||||
|
|
||||||
return FFCURRENCYSYMBOL;
|
|
||||||
}
|
|
||||||
|
|
||||||
$currencyPreference = Prefs::get('currencyPreference', 'EUR');
|
$currencyPreference = Prefs::get('currencyPreference', 'EUR');
|
||||||
$currency = TransactionCurrency::whereCode($currencyPreference->data)->first();
|
$currency = TransactionCurrency::whereCode($currencyPreference->data)->first();
|
||||||
|
|
||||||
\Cache::forever('FFCURRENCYSYMBOL', $currency->symbol);
|
|
||||||
|
|
||||||
define('FFCURRENCYSYMBOL', $currency->symbol);
|
define('FFCURRENCYSYMBOL', $currency->symbol);
|
||||||
|
|
||||||
return $currency->symbol;
|
return $currency->symbol;
|
||||||
@@ -160,7 +153,6 @@ class Amount
|
|||||||
$currency = TransactionCurrency::whereCode($currencyPreference->data)->first();
|
$currency = TransactionCurrency::whereCode($currencyPreference->data)->first();
|
||||||
if ($currency) {
|
if ($currency) {
|
||||||
|
|
||||||
Cache::forever('FFCURRENCYCODE', $currency->code);
|
|
||||||
define('FFCURRENCYCODE', $currency->code);
|
define('FFCURRENCYCODE', $currency->code);
|
||||||
|
|
||||||
return $currency->code;
|
return $currency->code;
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
namespace FireflyIII\Support;
|
namespace FireflyIII\Support;
|
||||||
|
|
||||||
use Amount as Amt;
|
use Amount as Amt;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\MessageBag;
|
use Illuminate\Support\MessageBag;
|
||||||
use Input;
|
use Input;
|
||||||
|
@@ -384,7 +384,7 @@ class Navigation
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $range
|
* @param $range
|
||||||
* @param \Carbon\Carbon $start
|
* @param \Carbon\Carbon $start
|
||||||
*
|
*
|
||||||
* @return \Carbon\Carbon
|
* @return \Carbon\Carbon
|
||||||
|
@@ -121,6 +121,7 @@ class Search implements SearchInterface
|
|||||||
return $journal;
|
return $journal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -18,8 +18,8 @@ class Steam
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param \FireflyIII\Models\Account $account
|
* @param \FireflyIII\Models\Account $account
|
||||||
* @param \Carbon\Carbon $date
|
* @param \Carbon\Carbon $date
|
||||||
* @param bool $ignoreVirtualBalance
|
* @param bool $ignoreVirtualBalance
|
||||||
*
|
*
|
||||||
* @return float
|
* @return float
|
||||||
*/
|
*/
|
||||||
|
@@ -50,4 +50,4 @@ class Budget extends Twig_Extension
|
|||||||
{
|
{
|
||||||
return 'FireflyIII\Support\Twig\Budget';
|
return 'FireflyIII\Support\Twig\Budget';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -143,4 +143,4 @@ class General extends Twig_Extension
|
|||||||
return 'FireflyIII\Support\Twig\General';
|
return 'FireflyIII\Support\Twig\General';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,7 @@ class Journal extends Twig_Extension
|
|||||||
if ($type == 'Opening balance') {
|
if ($type == 'Opening balance') {
|
||||||
return '<span class="glyphicon glyphicon-ban-circle" title="Opening balance"></span>';
|
return '<span class="glyphicon glyphicon-ban-circle" title="Opening balance"></span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
}, ['is_safe' => ['html']]
|
}, ['is_safe' => ['html']]
|
||||||
@@ -96,4 +97,4 @@ class Journal extends Twig_Extension
|
|||||||
{
|
{
|
||||||
return 'FireflyIII\Support\Twig\Journals';
|
return 'FireflyIII\Support\Twig\Journals';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -39,4 +39,4 @@ class PiggyBank extends Twig_Extension
|
|||||||
{
|
{
|
||||||
return 'FireflyIII\Support\Twig\PiggyBank';
|
return 'FireflyIII\Support\Twig\PiggyBank';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
composer.lock
generated
10
composer.lock
generated
@@ -943,16 +943,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v5.0.28",
|
"version": "v5.0.29",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/framework.git",
|
"url": "https://github.com/laravel/framework.git",
|
||||||
"reference": "06a09429322cf53e5bd4587db1060f02a291562e"
|
"reference": "aa7046645e094b0134a4125cce6694f4b076ac62"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/framework/zipball/06a09429322cf53e5bd4587db1060f02a291562e",
|
"url": "https://api.github.com/repos/laravel/framework/zipball/aa7046645e094b0134a4125cce6694f4b076ac62",
|
||||||
"reference": "06a09429322cf53e5bd4587db1060f02a291562e",
|
"reference": "aa7046645e094b0134a4125cce6694f4b076ac62",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1065,7 +1065,7 @@
|
|||||||
"framework",
|
"framework",
|
||||||
"laravel"
|
"laravel"
|
||||||
],
|
],
|
||||||
"time": "2015-04-21 01:44:32"
|
"time": "2015-05-08 12:57:10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/commonmark",
|
"name": "league/commonmark",
|
||||||
|
2
pu.sh
2
pu.sh
@@ -11,7 +11,7 @@ fi
|
|||||||
|
|
||||||
if [ ! -z "$1" ]
|
if [ ! -z "$1" ]
|
||||||
then
|
then
|
||||||
phpunit --verbose tests/controllers/$1.php
|
phpunit --verbose tests/repositories/$1.php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# restore .env file
|
# restore .env file
|
||||||
|
@@ -3,7 +3,8 @@ google.setOnLoadCallback(drawChart);
|
|||||||
|
|
||||||
function drawChart() {
|
function drawChart() {
|
||||||
googleLineChart('chart/home/account', 'accounts-chart');
|
googleLineChart('chart/home/account', 'accounts-chart');
|
||||||
googleColumnChart('chart/home/budgets', 'budgets-chart');
|
//googleColumnChart('chart/home/budgets', 'budgets-chart');
|
||||||
|
googleStackedColumnChart('chart/home/budgets', 'budgets-chart');
|
||||||
googleColumnChart('chart/home/categories', 'categories-chart');
|
googleColumnChart('chart/home/categories', 'categories-chart');
|
||||||
googlePieChart('chart/home/bills', 'bills-chart');
|
googlePieChart('chart/home/bills', 'bills-chart');
|
||||||
getBoxAmounts();
|
getBoxAmounts();
|
||||||
|
@@ -1,14 +1,16 @@
|
|||||||
if (typeof(google) != 'undefined') {
|
if (typeof(google) != 'undefined') {
|
||||||
google.setOnLoadCallback(drawChart);
|
google.setOnLoadCallback(drawChart);
|
||||||
function drawChart() {
|
|
||||||
googleColumnChart('chart/reports/income-expenses/' + year, 'income-expenses-chart');
|
|
||||||
googleColumnChart('chart/reports/income-expenses-sum/' + year, 'income-expenses-sum-chart')
|
|
||||||
|
|
||||||
googleStackedColumnChart('chart/budgets/spending/' + year, 'budgets');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function drawChart() {
|
||||||
|
googleColumnChart('chart/reports/income-expenses/' + year, 'income-expenses-chart');
|
||||||
|
googleColumnChart('chart/reports/income-expenses-sum/' + year, 'income-expenses-sum-chart')
|
||||||
|
|
||||||
|
googleStackedColumnChart('chart/budgets/spending/' + year, 'budgets');
|
||||||
|
}
|
||||||
|
|
||||||
$(function () {
|
$(function () {
|
||||||
$('.openModal').on('click', openModal);
|
$('.openModal').on('click', openModal);
|
||||||
includeSharedToggle();
|
includeSharedToggle();
|
||||||
|
10
resources/lang/en/firefly.php
Normal file
10
resources/lang/en/firefly.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
return [
|
||||||
|
'welcome' => 'Welcome to Firefly!',
|
||||||
|
'mainTitle' => 'What\'s playing?',
|
||||||
|
'close' => 'Clone',
|
||||||
|
'pleaseHold' => 'Please hold...',
|
||||||
|
'mandatoryFields' => 'Mandatory fields',
|
||||||
|
'optionalFields' => 'Optional fields',
|
||||||
|
'options' => 'Options'
|
||||||
|
];
|
@@ -9,7 +9,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name') }}
|
{{ ExpandedForm.text('name') }}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
{% if what == 'asset' %}
|
{% if what == 'asset' %}
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
|
||||||
@@ -34,11 +34,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- panel for options -->
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','account') }}
|
{{ ExpandedForm.optionsList('create','account') }}
|
||||||
@@ -58,4 +57,4 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name') }}
|
{{ ExpandedForm.text('name') }}
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{% if account.accounttype.type == 'Default account' or account.accounttype.type == 'Asset account' %}
|
{% if account.accounttype.type == 'Default account' or account.accounttype.type == 'Asset account' %}
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','account') }}
|
{{ ExpandedForm.optionsList('update','account') }}
|
||||||
|
@@ -57,4 +57,4 @@
|
|||||||
<script src="js/jquery-ui.min.js" type="text/javascript"></script>
|
<script src="js/jquery-ui.min.js" type="text/javascript"></script>
|
||||||
<script src="js/accounts.js" type="text/javascript"></script>
|
<script src="js/accounts.js" type="text/javascript"></script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -42,4 +42,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -5,10 +5,9 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||||
<!-- panel for mandatory fields -->
|
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name') }}
|
{{ ExpandedForm.text('name') }}
|
||||||
@@ -22,10 +21,9 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||||
<!-- panel for optional fields -->
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.integer('skip',0) }}
|
{{ ExpandedForm.integer('skip',0) }}
|
||||||
@@ -37,7 +35,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','bill') }}
|
{{ ExpandedForm.optionsList('create','bill') }}
|
||||||
|
@@ -29,4 +29,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name') }}
|
{{ ExpandedForm.text('name') }}
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.integer('skip') }}
|
{{ ExpandedForm.integer('skip') }}
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','bill') }}
|
{{ ExpandedForm.optionsList('update','bill') }}
|
||||||
|
@@ -24,4 +24,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% block styles %}
|
||||||
|
<link rel="stylesheet" href="css/bootstrap-sortable.css" type="text/css" media="all" />
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block scripts %}
|
||||||
|
<script type="text/javascript" src="js/bootstrap-sortable.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
@@ -110,4 +110,4 @@
|
|||||||
<script type="text/javascript" src="js/gcharts.js"></script>
|
<script type="text/javascript" src="js/gcharts.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript" src="js/bills.js"></script>
|
<script type="text/javascript" src="js/bills.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation"></i> Mandatory fields
|
<i class="fa fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name') }}
|
{{ ExpandedForm.text('name') }}
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','budget') }}
|
{{ ExpandedForm.optionsList('create','budget') }}
|
||||||
|
@@ -40,4 +40,4 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-fw fa-exclamation"></i> Mandatory fields
|
<i class="fa fa-fw fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.checkbox('active') }}
|
{{ ExpandedForm.checkbox('active') }}
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','budget') }}
|
{{ ExpandedForm.optionsList('update','budget') }}
|
||||||
|
@@ -14,4 +14,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation"></i> Mandatory fields
|
<i class="fa fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name') }}
|
{{ ExpandedForm.text('name') }}
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','category') }}
|
{{ ExpandedForm.optionsList('create','category') }}
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation"></i> Mandatory fields
|
<i class="fa fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name') }}
|
{{ ExpandedForm.text('name') }}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','category') }}
|
{{ ExpandedForm.optionsList('update','category') }}
|
||||||
|
@@ -37,4 +37,4 @@
|
|||||||
<script type="text/javascript" src="js/gcharts.js"></script>
|
<script type="text/javascript" src="js/gcharts.js"></script>
|
||||||
<script type="text/javascript" src="js/bootstrap-sortable.js"></script>
|
<script type="text/javascript" src="js/bootstrap-sortable.js"></script>
|
||||||
<script type="text/javascript" src="js/categories.js"></script>
|
<script type="text/javascript" src="js/categories.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -15,4 +15,4 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -51,4 +51,4 @@
|
|||||||
<script type="text/javascript" src="js/gcharts.js"></script>
|
<script type="text/javascript" src="js/gcharts.js"></script>
|
||||||
<script type="text/javascript" src="js/categories.js"></script>
|
<script type="text/javascript" src="js/categories.js"></script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name',null,{'maxlength' : 48}) }}
|
{{ ExpandedForm.text('name',null,{'maxlength' : 48}) }}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','currency') }}
|
{{ ExpandedForm.optionsList('create','currency') }}
|
||||||
|
@@ -23,4 +23,4 @@
|
|||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('name',null,{'maxlength' : 48}) }}
|
{{ ExpandedForm.text('name',null,{'maxlength' : 48}) }}
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','currency') }}
|
{{ ExpandedForm.optionsList('update','currency') }}
|
||||||
@@ -42,4 +42,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -46,4 +46,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -27,4 +27,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
{% if count == 0 %}
|
{% if count == 0 %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||||
<p class="lead">Welcome to Firefly III.</p>
|
<p class="lead">{{ trans('firefly.welcome') }}</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Create a new asset account to get started.
|
Create a new asset account to get started.
|
||||||
@@ -209,4 +209,4 @@
|
|||||||
<script type="text/javascript" src="js/gcharts.options.js"></script>
|
<script type="text/javascript" src="js/gcharts.options.js"></script>
|
||||||
<script type="text/javascript" src="js/gcharts.js"></script>
|
<script type="text/javascript" src="js/gcharts.js"></script>
|
||||||
<script type="text/javascript" src="js/index.js"></script>
|
<script type="text/javascript" src="js/index.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -89,15 +89,15 @@
|
|||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span>
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">{{ trans('firefly.close') }}</span>
|
||||||
</button>
|
</button>
|
||||||
<h4 class="modal-title" id="helpTitle">Please hold...</h4>
|
<h4 class="modal-title" id="helpTitle">{{ trans('firefly.pleaseHold') }}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body" id="helpBody">
|
<div class="modal-body" id="helpBody">
|
||||||
<i class="fa fa-refresh fa-spin"></i>
|
<i class="fa fa-refresh fa-spin"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('firefly.close') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -56,4 +56,4 @@
|
|||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
<table class="table table-bordered table-striped">
|
<table class="table table-bordered table-striped sortable">
|
||||||
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th> </th>
|
<th data-defaultsort="disabled"> </th>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Matches on</th>
|
<th>Matches on</th>
|
||||||
<th colspan="2">Matching amount</th>
|
<th colspan="2">Matching amount</th>
|
||||||
@@ -9,8 +10,9 @@
|
|||||||
<th>Is active</th>
|
<th>Is active</th>
|
||||||
<th>Will be automatched</th>
|
<th>Will be automatched</th>
|
||||||
<th>Repeats every</th>
|
<th>Repeats every</th>
|
||||||
<th> </th>
|
<th data-defaultsort="disabled"> </th>
|
||||||
</tr>
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
{% for entry in bills %}
|
{% for entry in bills %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
@@ -22,46 +24,52 @@
|
|||||||
<td>
|
<td>
|
||||||
<a href="{{route('bills.show',entry.id)}}" title="{{ entry.name }}">{{ entry.name }}</a>
|
<a href="{{route('bills.show',entry.id)}}" title="{{ entry.name }}">{{ entry.name }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td data-value="{{ entry.match }}">
|
||||||
{% for match in entry.match|split(',') %}
|
{% for match in entry.match|split(',') %}
|
||||||
<span class="label label-info">{{ match }}</span>
|
<span class="label label-info">{{ match }}</span>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td data-value="{{ entry.amount_min }}">
|
||||||
{{ entry.amount_min|formatAmount }}
|
{{ entry.amount_min|formatAmount }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td data-value="{{ entry.amount_max }}">
|
||||||
{{ entry.amount_max|formatAmount }}
|
{{ entry.amount_max|formatAmount }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
|
||||||
{% if entry.lastFoundMatch %}
|
{% if entry.lastFoundMatch %}
|
||||||
|
<td data-value="{{ entry.lastFoundMatch.format('U') }}">
|
||||||
{{entry.lastFoundMatch.format('j F Y')}}
|
{{entry.lastFoundMatch.format('j F Y')}}
|
||||||
|
</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<td data-value="0">
|
||||||
<em>Unknown</em>
|
<em>Unknown</em>
|
||||||
|
</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{% if entry.nextExpectedMatch%}
|
{% if entry.nextExpectedMatch%}
|
||||||
|
<td data-value="{{entry.nextExpectedMatch.format('U')}}">
|
||||||
{{entry.nextExpectedMatch.format('j F Y')}}
|
{{entry.nextExpectedMatch.format('j F Y')}}
|
||||||
|
</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<td data-value="0">
|
||||||
<em>Unknown</em>
|
<em>Unknown</em>
|
||||||
|
</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
|
||||||
<td>
|
<td data-value="{{ entry.active }}">
|
||||||
{% if entry.active %}
|
{% if entry.active %}
|
||||||
<i class="fa fa-fw fa-check"></i>
|
<i class="fa fa-fw fa-check"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fa fa-fw fa-ban"></i>
|
<i class="fa fa-fw fa-ban"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td data-value="{{ entry.automatch }}">
|
||||||
{% if entry.automatch %}
|
{% if entry.automatch %}
|
||||||
<i class="fa fa-fw fa-check"></i>
|
<i class="fa fa-fw fa-check"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fa fa-fw fa-ban"></i>
|
<i class="fa fa-fw fa-ban"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td data-value="{{ entry.repeat_freq }}{{ entry.skip }}">
|
||||||
{{ entry.repeat_freq }}
|
{{ entry.repeat_freq }}
|
||||||
{% if entry.skip > 0 %}
|
{% if entry.skip > 0 %}
|
||||||
skips over {{entry.skip}}
|
skips over {{entry.skip}}
|
||||||
@@ -75,4 +83,5 @@
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -110,4 +110,4 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
{{ journals.render|raw }}
|
{{ journals.render|raw }}
|
||||||
|
@@ -53,4 +53,4 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-fw fa-exclamation"></i> Mandatory fields
|
<i class="fa fa-fw fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
|
||||||
@@ -20,10 +20,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||||
<!-- panel for optional fields -->
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.date('targetdate') }}
|
{{ ExpandedForm.date('targetdate') }}
|
||||||
@@ -35,7 +34,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','piggy bank') }}
|
{{ ExpandedForm.optionsList('create','piggy bank') }}
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-fw fa-exclamation"></i> Mandatory fields
|
<i class="fa fa-fw fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
|
||||||
@@ -23,10 +23,9 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||||
<!-- panel for optional fields -->
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.date('targetdate') }}
|
{{ ExpandedForm.date('targetdate') }}
|
||||||
@@ -38,7 +37,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','piggy bank') }}
|
{{ ExpandedForm.optionsList('update','piggy bank') }}
|
||||||
|
@@ -59,4 +59,4 @@
|
|||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
<script src="js/jquery-ui.min.js" type="text/javascript"></script>
|
<script src="js/jquery-ui.min.js" type="text/javascript"></script>
|
||||||
<script type="text/javascript" src="js/piggy-banks.js"></script>
|
<script type="text/javascript" src="js/piggy-banks.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -23,4 +23,4 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@@ -52,4 +52,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -46,4 +46,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -16,4 +16,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -37,4 +37,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -103,4 +103,4 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var query = '{{ query }}';
|
var query = '{{ query }}';
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<div class="col-lg-5 col-md-5 col-sm-12">
|
<div class="col-lg-5 col-md-5 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-tag"></i> Mandatory fields
|
<i class="fa fa-tag"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('tag') }}
|
{{ ExpandedForm.text('tag') }}
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.date('date') }}
|
{{ ExpandedForm.date('date') }}
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','tag') }}
|
{{ ExpandedForm.optionsList('create','tag') }}
|
||||||
@@ -82,4 +82,4 @@
|
|||||||
</script>
|
</script>
|
||||||
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
|
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
|
||||||
<script src="js/tags.js"></script>
|
<script src="js/tags.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
<div class="col-lg-5 col-md-5 col-sm-12">
|
<div class="col-lg-5 col-md-5 col-sm-12">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-tag"></i> Mandatory fields
|
<i class="fa fa-tag"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.text('tag') }}
|
{{ ExpandedForm.text('tag') }}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.date('date') }}
|
{{ ExpandedForm.date('date') }}
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','tag') }}
|
{{ ExpandedForm.optionsList('update','tag') }}
|
||||||
@@ -84,4 +84,4 @@
|
|||||||
</script>
|
</script>
|
||||||
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
|
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
|
||||||
<script src="js/tags.js"></script>
|
<script src="js/tags.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -72,4 +72,4 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
<script type="text/javascript" src="js/tags.js"></script>
|
<script type="text/javascript" src="js/tags.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -6,10 +6,9 @@
|
|||||||
<input type="hidden" name="what" value="{{ what }}" />
|
<input type="hidden" name="what" value="{{ what }}" />
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||||
<!-- panel for mandatory fields -->
|
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<!-- DESCRIPTION ALWAYS AVAILABLE -->
|
<!-- DESCRIPTION ALWAYS AVAILABLE -->
|
||||||
@@ -46,10 +45,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||||
<!-- panel for optional fields -->
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<!-- BUDGET ONLY WHEN CREATING A WITHDRAWAL -->
|
<!-- BUDGET ONLY WHEN CREATING A WITHDRAWAL -->
|
||||||
@@ -73,7 +71,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('create','transaction') }}
|
{{ ExpandedForm.optionsList('create','transaction') }}
|
||||||
|
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||||
<!-- panel for mandatory fields -->
|
|
||||||
<div class="panel panel-danger">
|
<div class="panel panel-danger">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation-circle"></i> Destroy "{{ journal.description }}"
|
<i class="fa fa-exclamation-circle"></i> Destroy "{{ journal.description }}"
|
||||||
|
@@ -8,10 +8,9 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||||
<!-- panel for mandatory fields -->
|
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<!-- ALWAYS AVAILABLE -->
|
<!-- ALWAYS AVAILABLE -->
|
||||||
@@ -48,10 +47,9 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||||
<!-- panel for optional fields -->
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-smile-o"></i> Optional fields
|
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<!-- BUDGET ONLY WHEN CREATING A WITHDRAWAL -->
|
<!-- BUDGET ONLY WHEN CREATING A WITHDRAWAL -->
|
||||||
@@ -76,7 +74,7 @@
|
|||||||
<!-- panel for options -->
|
<!-- panel for options -->
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-bolt"></i> Options
|
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{{ ExpandedForm.optionsList('update','transaction') }}
|
{{ ExpandedForm.optionsList('update','transaction') }}
|
||||||
|
@@ -253,4 +253,4 @@ class BillControllerTest extends TestCase
|
|||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -316,4 +316,4 @@ class BudgetControllerTest extends TestCase
|
|||||||
$this->assertResponseOk();
|
$this->assertResponseOk();
|
||||||
$this->assertViewHas('amount');
|
$this->assertViewHas('amount');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -222,4 +222,4 @@ class CategoryControllerTest extends TestCase
|
|||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
$this->assertSessionHas('success', 'Category "' . $category->name . '" updated.');
|
$this->assertSessionHas('success', 'Category "' . $category->name . '" updated.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -214,4 +214,4 @@ class CurrencyControllerTest extends TestCase
|
|||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
$this->assertSessionHas('success');
|
$this->assertSessionHas('success');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -344,4 +344,4 @@ class GoogleChartControllerTest extends TestCase
|
|||||||
$this->call('GET', '/chart/reports/income-expenses-sum/2015');
|
$this->call('GET', '/chart/reports/income-expenses-sum/2015');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -95,4 +95,4 @@ class HelpControllerTest extends TestCase
|
|||||||
$this->call('GET', '/help/accounts.index');
|
$this->call('GET', '/help/accounts.index');
|
||||||
$this->assertResponseOk();
|
$this->assertResponseOk();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -224,4 +224,4 @@ class JsonControllerTest extends TestCase
|
|||||||
$this->assertResponseOk();
|
$this->assertResponseOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -82,4 +82,4 @@ class PreferencesControllerTest extends TestCase
|
|||||||
$this->call('POST', '/preferences', $data);
|
$this->call('POST', '/preferences', $data);
|
||||||
$this->assertResponseStatus(302);
|
$this->assertResponseStatus(302);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -167,4 +167,4 @@ class ProfileControllerTest extends TestCase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -97,4 +97,4 @@ class ReminderControllerTest extends TestCase
|
|||||||
$this->assertResponseOk();
|
$this->assertResponseOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -235,4 +235,4 @@ class ReportControllerTest extends TestCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -52,4 +52,4 @@ class SearchControllerTest extends TestCase
|
|||||||
$this->call('GET', '/search?q=Something');
|
$this->call('GET', '/search?q=Something');
|
||||||
$this->assertResponseOk();
|
$this->assertResponseOk();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -214,4 +214,4 @@ class TagControllerTest extends TestCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -360,4 +360,4 @@ class TransactionControllerTest extends TestCase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
2
tests/database/.gitignore
vendored
2
tests/database/.gitignore
vendored
@@ -1 +1 @@
|
|||||||
*.sqlite
|
*.sqlite
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user