Compare commits

...

2642 Commits

Author SHA1 Message Date
James Cole
67cc611495 Merge branch 'release/4.4.1' 2017-04-27 03:32:16 +02:00
James Cole
7e2c24b82e New test config 2017-04-27 03:29:11 +02:00
James Cole
4a6bbd4dca Update example config 2017-04-27 03:26:54 +02:00
James Cole
166bfba5b9 New version. [skip ci] 2017-04-27 03:17:34 +02:00
James Cole
87b8ac5f4e Update read me with deploy button [skip ci] 2017-04-27 03:16:27 +02:00
James Cole
46b4100291 Default key for instant deployment [skip ci] 2017-04-27 03:11:50 +02:00
James Cole
83090ade94 Generate app key [skip ci] 2017-04-27 03:06:39 +02:00
James Cole
44b7a42d5a Experimental deploy button script [skip ci] 2017-04-27 03:03:31 +02:00
James Cole
1a5617d430 Fixes a bug in the new user handler [skip ci] 2017-04-27 02:56:57 +02:00
James Cole
fa818e0924 Configure nginx [skip ci] 2017-04-27 02:49:06 +02:00
James Cole
f87b531fe1 Configure nginx [skip ci] 2017-04-27 02:45:26 +02:00
James Cole
82fd0c4d37 Set default db driver to be pgsql. [skip ci] 2017-04-27 02:40:57 +02:00
James Cole
26ceb9e3be Include config for Heroku. [skip ci] 2017-04-27 02:39:48 +02:00
James Cole
743458b853 Include config for Heroku. [skip ci] 2017-04-27 02:38:29 +02:00
James Cole
920e5f6fbe Force seed. 2017-04-26 21:32:43 +02:00
James Cole
fc0dd22769 Deploy heroku database. [skip ci] 2017-04-26 21:31:46 +02:00
James Cole
c7c61ce280 Log to error log. 2017-04-26 21:26:44 +02:00
James Cole
5f5a603f71 Update example file and config file for Laravel thing. [skip ci] 2017-04-26 21:02:21 +02:00
James Cole
d611858883 Remove compile step [skip ci] 2017-04-26 20:59:34 +02:00
James Cole
dbc9ce76a0 Try herocu config [skip ci] 2017-04-26 20:57:50 +02:00
James Cole
62386e2e40 Procfile for Herocu deployment. [skip ci] 2017-04-26 20:51:06 +02:00
James Cole
5aa7ab5e37 Merge branch 'release/4.4.0' 2017-04-23 19:07:19 +02:00
James Cole
be1b57eab7 New test database [skip ci] 2017-04-23 19:06:45 +02:00
James Cole
ad5c8b41e2 Merge pull request #635 from firefly-iii/l10n_develop
New Crowdin translations
2017-04-23 19:05:42 +02:00
James Cole
09752b25ad New translations firefly.php (Dutch) 2017-04-23 19:05:23 +02:00
James Cole
3f317f961b New translations firefly.php (French) 2017-04-23 19:01:25 +02:00
James Cole
d6d6a62fda New translations firefly.php (Chinese Traditional) 2017-04-23 19:01:17 +02:00
James Cole
528833b831 New translations firefly.php (Croatian) 2017-04-23 19:01:11 +02:00
James Cole
95e2bca4a6 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-04-23 19:01:06 +02:00
James Cole
dfd3327108 New translations firefly.php (German) 2017-04-23 19:01:01 +02:00
James Cole
653befbcd4 New translations firefly.php (Russian) 2017-04-23 19:00:55 +02:00
James Cole
33202efcdc New translations firefly.php (Spanish) 2017-04-23 19:00:50 +02:00
James Cole
77a37411ba New translations firefly.php (Dutch) 2017-04-23 19:00:45 +02:00
James Cole
491f221741 New translations firefly.php (Polish) 2017-04-23 19:00:37 +02:00
James Cole
e8e125a598 New translations firefly.php (Portuguese, Brazilian) 2017-04-23 19:00:25 +02:00
James Cole
cb01ae0ac5 New version and new change log. 2017-04-23 19:00:19 +02:00
James Cole
a09469c01f Merge pull request #633 from firefly-iii/l10n_develop
New Crowdin translations
2017-04-23 18:58:26 +02:00
James Cole
662f398b08 Update tests. 2017-04-23 18:53:00 +02:00
James Cole
d7aef627b8 Update composer file 2017-04-23 18:52:47 +02:00
James Cole
87bcf293aa New translations firefly.php (French) 2017-04-23 18:20:17 +02:00
James Cole
0171831ebb New translations form.php (French) 2017-04-23 18:10:19 +02:00
James Cole
50cc455f0f New translations firefly.php (French) 2017-04-23 18:10:18 +02:00
James Cole
47a7729358 New translations firefly.php (Dutch) 2017-04-23 09:40:30 +02:00
James Cole
6d508e61a0 New translations form.php (Dutch) 2017-04-23 09:40:28 +02:00
James Cole
8ef9223d84 Final code for #595 2017-04-23 09:33:33 +02:00
James Cole
e58ea4d0c7 New translations firefly.php (French) 2017-04-22 07:11:03 +02:00
James Cole
9629ba916e New translations firefly.php (Chinese Traditional) 2017-04-22 07:10:55 +02:00
James Cole
aad4df1596 New translations firefly.php (Croatian) 2017-04-22 07:10:51 +02:00
James Cole
30ed25f80a New translations firefly.php (Chinese Traditional, Hong Kong) 2017-04-22 07:10:47 +02:00
James Cole
8b7000681c New translations firefly.php (German) 2017-04-22 07:10:43 +02:00
James Cole
221adbf3db New translations firefly.php (Russian) 2017-04-22 07:10:38 +02:00
James Cole
39129d8cd0 New translations firefly.php (Spanish) 2017-04-22 07:10:34 +02:00
James Cole
2c2d444906 New translations firefly.php (Dutch) 2017-04-22 07:10:32 +02:00
James Cole
04a1d785bf New translations firefly.php (Polish) 2017-04-22 07:10:24 +02:00
James Cole
c0a0aa4652 New translations firefly.php (Portuguese, Brazilian) 2017-04-22 07:10:15 +02:00
James Cole
21c24fd7f0 Improved test coverage script. 2017-04-22 07:05:55 +02:00
James Cole
beb358f8ee Small code optimisation. 2017-04-22 07:05:44 +02:00
James Cole
e3cd11ec2e Various code coverage and test related fixes. 2017-04-22 07:05:31 +02:00
James Cole
ee08fc2421 All “all” views are now consistent #595 2017-04-22 07:04:39 +02:00
James Cole
ae30f7920b Fix bread crumbs for tags. 2017-04-19 17:11:07 +02:00
James Cole
f4786c3ec8 Fix balance view [skip ci] 2017-04-19 16:32:12 +02:00
James Cole
8b9e4d2539 New translations firefly.php (German) 2017-04-19 09:31:52 +02:00
James Cole
d7ca7ed632 New translations firefly.php (German) 2017-04-19 09:20:18 +02:00
James Cole
1346b25fc7 New translations firefly.php (German) 2017-04-19 09:10:18 +02:00
James Cole
15d9314503 New translations firefly.php (German) 2017-04-19 09:00:38 +02:00
James Cole
93f4006c9e New translations firefly.php (German) 2017-04-19 08:50:21 +02:00
James Cole
16182fec6c New translations validation.php (German) 2017-04-19 08:40:18 +02:00
James Cole
99606ba936 New translations form.php (German) 2017-04-19 08:40:15 +02:00
James Cole
be1ed56d42 New translations form.php (German) 2017-04-19 01:50:14 +02:00
James Cole
d7fb6f83b8 New translations firefly.php (German) 2017-04-19 00:30:15 +02:00
James Cole
665f1f470a New translations firefly.php (German) 2017-04-19 00:20:16 +02:00
James Cole
7867f26120 Improve report sums. 2017-04-17 08:31:42 +02:00
James Cole
8e195bf811 New translations firefly.php (French) 2017-04-16 22:21:16 +02:00
James Cole
e3403dc87f New translations firefly.php (Chinese Traditional) 2017-04-16 22:21:07 +02:00
James Cole
5844e95488 New translations firefly.php (Croatian) 2017-04-16 22:21:01 +02:00
James Cole
cb3a1f2ff6 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-04-16 22:20:56 +02:00
James Cole
f95edb06a9 New translations firefly.php (German) 2017-04-16 22:20:52 +02:00
James Cole
86d13060bc New translations firefly.php (Russian) 2017-04-16 22:20:45 +02:00
James Cole
0b8c2f6f8d New translations firefly.php (Spanish) 2017-04-16 22:20:40 +02:00
James Cole
589cafc64f New translations firefly.php (Dutch) 2017-04-16 22:20:37 +02:00
James Cole
448dc7b5c3 New translations firefly.php (Polish) 2017-04-16 22:20:25 +02:00
James Cole
10cfde6cab New translations firefly.php (Portuguese, Brazilian) 2017-04-16 22:20:15 +02:00
James Cole
e48eb2ce2f Clean up account taker amount inconsistencies. 2017-04-16 22:15:05 +02:00
James Cole
20a30a2d1d Various cosmetic fixes for /all lists [skip ci] 2017-04-16 12:51:21 +02:00
James Cole
2e5b8418ae New translations firefly.php (French) 2017-04-15 23:01:27 +02:00
James Cole
054fd229d2 New translations firefly.php (Chinese Traditional) 2017-04-15 23:01:18 +02:00
James Cole
9bdf2c8877 New translations firefly.php (Croatian) 2017-04-15 23:01:12 +02:00
James Cole
04f858a355 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-04-15 23:01:07 +02:00
James Cole
a9bf405a65 New translations firefly.php (German) 2017-04-15 23:01:01 +02:00
James Cole
463c866cfa New translations firefly.php (Russian) 2017-04-15 23:00:54 +02:00
James Cole
03fe0c8fff New translations firefly.php (Spanish) 2017-04-15 23:00:49 +02:00
James Cole
102d9f3510 New translations firefly.php (Dutch) 2017-04-15 23:00:44 +02:00
James Cole
3cf9a40c42 New translations firefly.php (Polish) 2017-04-15 23:00:33 +02:00
James Cole
ff33267296 New translations firefly.php (Portuguese, Brazilian) 2017-04-15 23:00:20 +02:00
James Cole
f0dab5bdb9 Code for #608 2017-04-15 22:52:01 +02:00
James Cole
209a907c61 Account chart can display multiple currencies. 2017-04-15 17:26:03 +02:00
James Cole
c7984d4363 Remove stray text. [skip ci] 2017-04-15 15:57:45 +02:00
James Cole
a388313e1c New translations form.php (French) 2017-04-15 08:21:13 +02:00
James Cole
a3933cb307 New translations form.php (Croatian) 2017-04-15 08:21:12 +02:00
James Cole
89c82d9be9 New translations form.php (Chinese Traditional) 2017-04-15 08:21:04 +02:00
James Cole
6e6311a1a1 New translations form.php (Chinese Traditional, Hong Kong) 2017-04-15 08:20:57 +02:00
James Cole
69b334ed8a New translations form.php (Russian) 2017-04-15 08:20:44 +02:00
James Cole
a84b6f377f New translations form.php (Dutch) 2017-04-15 08:20:37 +02:00
James Cole
ee5db4e4cc New translations form.php (Spanish) 2017-04-15 08:20:34 +02:00
James Cole
20f3322e5a New translations form.php (Polish) 2017-04-15 08:20:28 +02:00
James Cole
1e84bc3743 New translations form.php (German) 2017-04-15 08:20:24 +02:00
James Cole
7f198cbd50 New translations form.php (Portuguese, Brazilian) 2017-04-15 08:20:19 +02:00
James Cole
1c7d5ccefc Forgot some translations [skip ci] 2017-04-15 08:15:05 +02:00
James Cole
41dc4d994e Fix transaction journals that may be broken. 2017-04-15 08:13:05 +02:00
James Cole
490733bdd1 Some javascript clean up 2017-04-15 07:25:09 +02:00
James Cole
ed8cf8c431 New translations firefly.php (French) 2017-04-14 23:01:32 +02:00
James Cole
a7e1f85c4d New translations form.php (French) 2017-04-14 23:01:29 +02:00
James Cole
4b8919420d New translations form.php (Croatian) 2017-04-14 23:01:27 +02:00
James Cole
9afc5d67a4 New translations firefly.php (Chinese Traditional) 2017-04-14 23:01:21 +02:00
James Cole
72afaddd7c New translations form.php (Chinese Traditional) 2017-04-14 23:01:18 +02:00
James Cole
8ae3182e1c New translations firefly.php (Croatian) 2017-04-14 23:01:14 +02:00
James Cole
9d7e16b390 New translations form.php (Chinese Traditional, Hong Kong) 2017-04-14 23:01:10 +02:00
James Cole
3a2ed202ad New translations firefly.php (Chinese Traditional, Hong Kong) 2017-04-14 23:01:09 +02:00
James Cole
9e4b9b98ab New translations firefly.php (German) 2017-04-14 23:01:03 +02:00
James Cole
e65fb7d995 New translations firefly.php (Russian) 2017-04-14 23:00:56 +02:00
James Cole
7197830edc New translations form.php (Russian) 2017-04-14 23:00:53 +02:00
James Cole
687603ae84 New translations firefly.php (Spanish) 2017-04-14 23:00:50 +02:00
James Cole
23fc25f926 New translations firefly.php (Dutch) 2017-04-14 23:00:48 +02:00
James Cole
e0c1f07f92 New translations form.php (Dutch) 2017-04-14 23:00:45 +02:00
James Cole
9424aa3378 New translations form.php (Spanish) 2017-04-14 23:00:42 +02:00
James Cole
57e6e0945f New translations form.php (Polish) 2017-04-14 23:00:35 +02:00
James Cole
d87a033f29 New translations firefly.php (Polish) 2017-04-14 23:00:33 +02:00
James Cole
10481895e6 New translations form.php (German) 2017-04-14 23:00:29 +02:00
James Cole
813432f386 New translations form.php (Portuguese, Brazilian) 2017-04-14 23:00:23 +02:00
James Cole
aba78c9776 New translations firefly.php (Portuguese, Brazilian) 2017-04-14 23:00:19 +02:00
James Cole
8dc56bcee0 Fix line [skip ci] 2017-04-14 22:55:19 +02:00
James Cole
32b6e030ef Can now also edit transfers. 2017-04-14 22:49:12 +02:00
James Cole
a27f5d2474 Can now create transfers with different currencies. 2017-04-14 22:25:48 +02:00
James Cole
e2fe8cfb75 Clean up and consistency in foreign and native amounts. 2017-04-14 15:56:43 +02:00
James Cole
9f1c346365 New translations firefly.php (French) 2017-04-14 15:51:37 +02:00
James Cole
3e56803e95 New translations firefly.php (Chinese Traditional) 2017-04-14 15:51:26 +02:00
James Cole
fc5feb054d New translations firefly.php (Croatian) 2017-04-14 15:51:18 +02:00
James Cole
8fc233e436 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-04-14 15:51:12 +02:00
James Cole
22303eb2ff New translations firefly.php (German) 2017-04-14 15:51:06 +02:00
James Cole
d6477ff9ff New translations firefly.php (Russian) 2017-04-14 15:50:56 +02:00
James Cole
a0f6f13650 New translations firefly.php (Spanish) 2017-04-14 15:50:51 +02:00
James Cole
1dd213d587 New translations firefly.php (Dutch) 2017-04-14 15:50:48 +02:00
James Cole
569e51afbe New translations firefly.php (Polish) 2017-04-14 15:50:35 +02:00
James Cole
ff06a4ed0d New translations firefly.php (Portuguese, Brazilian) 2017-04-14 15:50:21 +02:00
James Cole
ea3fdb0668 Clean up and consistency in foreign and native amounts. 2017-04-14 15:42:54 +02:00
James Cole
bd917f6484 Deposit works as well. 2017-04-14 14:48:44 +02:00
James Cole
ee96311222 New translations form.php (Dutch) 2017-04-14 14:41:44 +02:00
James Cole
135153ff9c New translations form.php (French) 2017-04-14 14:41:30 +02:00
James Cole
fdb98133c8 New translations firefly.php (French) 2017-04-14 14:41:29 +02:00
James Cole
ad4e2c0a85 New translations form.php (Croatian) 2017-04-14 14:41:26 +02:00
James Cole
e38cb263aa New translations firefly.php (Chinese Traditional) 2017-04-14 14:41:19 +02:00
James Cole
0922136389 New translations form.php (Chinese Traditional) 2017-04-14 14:41:17 +02:00
James Cole
2a05517a30 New translations firefly.php (Croatian) 2017-04-14 14:41:13 +02:00
James Cole
a0ee924aeb New translations form.php (Chinese Traditional, Hong Kong) 2017-04-14 14:41:09 +02:00
James Cole
1595afce68 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-04-14 14:41:07 +02:00
James Cole
4919d730c8 New translations firefly.php (Russian) 2017-04-14 14:40:56 +02:00
James Cole
1407d6cc66 New translations form.php (Russian) 2017-04-14 14:40:53 +02:00
James Cole
55b092e7a0 New translations firefly.php (Dutch) 2017-04-14 14:40:49 +02:00
James Cole
93afb754f3 New translations form.php (Spanish) 2017-04-14 14:40:45 +02:00
James Cole
81c0ea8f5c New translations firefly.php (Spanish) 2017-04-14 14:40:44 +02:00
James Cole
6faacd3781 New translations firefly.php (Polish) 2017-04-14 14:40:36 +02:00
James Cole
ea1e9e407f New translations form.php (German) 2017-04-14 14:40:32 +02:00
James Cole
d4f5aa1578 New translations firefly.php (German) 2017-04-14 14:40:30 +02:00
James Cole
1cbbf3fa5d New translations form.php (Polish) 2017-04-14 14:40:25 +02:00
James Cole
dad3dc71ca New translations form.php (Portuguese, Brazilian) 2017-04-14 14:40:23 +02:00
James Cole
afb1e9f230 New translations firefly.php (Portuguese, Brazilian) 2017-04-14 14:40:22 +02:00
James Cole
c33dd1ecee Can now handle withdrawals in foreign currency. 2017-04-14 14:37:04 +02:00
James Cole
7e31a29b12 FF3 will now correctly store exchanged / foreign amounts. 2017-04-14 11:19:09 +02:00
James Cole
9a69ce309e Initial user ability to set foreign currency 2017-04-14 10:16:52 +02:00
James Cole
b99bfcd02e Fix null pointer [skip ci] 2017-04-14 07:46:19 +02:00
James Cole
adb16e4560 Also make sure that the account create screen sets the correct currency id. 2017-04-14 07:32:30 +02:00
James Cole
953c38563b Make sure that accounts and their opening balance values are the same currency. 2017-04-14 07:11:30 +02:00
James Cole
89ee9c058a Account list is capable of showing the selected currency 2017-04-13 21:36:23 +02:00
James Cole
bac7a73555 A transaction may now have a currency. This may proof to be useful when transferring money between accounts with different currencies. 2017-04-13 21:29:21 +02:00
James Cole
5fb6ff230b Two small code fixes. 2017-04-13 21:19:10 +02:00
James Cole
605a718418 Turns out open exchange rates is useless. 2017-04-13 21:19:00 +02:00
James Cole
994542c75d First basic code for currency exchange rate routines. 2017-04-13 20:47:59 +02:00
James Cole
d5fdce02fa New translations csv.php (Dutch) 2017-04-11 17:22:26 +02:00
James Cole
d3637de0c3 New translations csv.php (French) 2017-04-11 17:21:56 +02:00
James Cole
63acbb222d New translations csv.php (Chinese Traditional) 2017-04-11 17:21:44 +02:00
James Cole
5e1fe157b6 New translations csv.php (Chinese Traditional, Hong Kong) 2017-04-11 17:21:37 +02:00
James Cole
8e811da967 New translations csv.php (Croatian) 2017-04-11 17:21:30 +02:00
James Cole
fb23108f4e New translations csv.php (German) 2017-04-11 17:21:20 +02:00
James Cole
a0220eb5f8 New translations csv.php (Russian) 2017-04-11 17:21:08 +02:00
James Cole
c16cbd5bc8 New translations csv.php (Spanish) 2017-04-11 17:21:02 +02:00
James Cole
2d0673e1bc New translations csv.php (Portuguese, Brazilian) 2017-04-11 17:20:59 +02:00
James Cole
a90e00d577 New translations csv.php (Polish) 2017-04-11 17:20:40 +02:00
James Cole
8db96025a3 Code cleanup. 2017-04-09 07:56:46 +02:00
James Cole
595596d73f Apparently this is changed in PHPStorm’s formatting templates so there you go [skip ci]. 2017-04-09 07:44:22 +02:00
James Cole
240797e92a Fixes #630 [skip ci] 2017-04-09 07:36:58 +02:00
James Cole
6cafb91680 This fixes #629 2017-04-08 19:05:37 +02:00
James Cole
852ce3e32f Remove unused classes. 2017-04-08 18:02:16 +02:00
James Cole
6b9c9458fa This fixes possible null errors. 2017-04-08 18:00:45 +02:00
James Cole
970ce917b0 Merge branch 'release/4.3.8' 2017-04-08 17:54:10 +02:00
James Cole
db46d450bf New files for new release. 2017-04-08 17:51:34 +02:00
James Cole
db806b92dd Merge pull request #618 from firefly-iii/l10n_develop
New Crowdin translations
2017-04-08 10:20:55 +02:00
James Cole
6765f08b07 Fixed some tests. [skip ci] 2017-04-08 10:20:34 +02:00
James Cole
99d75ba14b New translations firefly.php (Dutch) 2017-04-08 10:10:23 +02:00
James Cole
0e8ce5680c New translations firefly.php (Dutch) 2017-04-08 10:00:17 +02:00
James Cole
fd01b54a14 Code for charts #628 [skip ci] 2017-04-08 09:18:04 +02:00
James Cole
ce6253bbd7 New translations firefly.php (Dutch) 2017-04-08 09:10:16 +02:00
James Cole
4fd33f19c6 Experimental code for #628 2017-04-08 09:00:37 +02:00
James Cole
01ae278f09 Float > intval. [skip ci] 2017-04-08 08:53:53 +02:00
James Cole
7907c71e47 Code to verify issue #620 2017-04-08 07:00:51 +02:00
James Cole
4e44733dcc Updated code for #624 2017-04-08 06:51:16 +02:00
James Cole
dd1d7bb02a Should fix issue #624 2017-04-01 08:56:39 +02:00
James Cole
6f933b3bd1 Small updates. 2017-04-01 08:13:43 +02:00
James Cole
243530b750 Forgot a return value. 2017-03-30 18:43:12 +02:00
James Cole
ea984281b0 Should fix tests. 2017-03-30 18:42:02 +02:00
James Cole
92cd3d60b9 Forgot two files. 2017-03-29 21:21:10 +02:00
James Cole
5920ccee04 Various code cleanup. 2017-03-29 21:20:54 +02:00
James Cole
569fec4610 Double check on NULL. [skip ci] 2017-03-25 22:07:07 +01:00
James Cole
5770edcde2 Expanded test coverage. 2017-03-25 13:41:17 +01:00
James Cole
1fb0a64f31 Various code cleanup [skip ci] 2017-03-24 15:15:12 +01:00
James Cole
fe66d089ad Expanded test coverage. 2017-03-24 15:01:53 +01:00
James Cole
cef10b4d4e New translations firefly.php (French) 2017-03-24 11:12:14 +01:00
James Cole
b45aa6446d New translations firefly.php (Chinese Traditional) 2017-03-24 11:11:56 +01:00
James Cole
61749312b2 New translations firefly.php (Croatian) 2017-03-24 11:11:48 +01:00
James Cole
842bb2c5a6 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-03-24 11:11:40 +01:00
James Cole
4358fe99b1 New translations firefly.php (Russian) 2017-03-24 11:11:25 +01:00
James Cole
3fda8b3714 New translations firefly.php (Dutch) 2017-03-24 11:11:13 +01:00
James Cole
09f3274adc New translations firefly.php (Spanish) 2017-03-24 11:11:04 +01:00
James Cole
029224f708 New translations firefly.php (Polish) 2017-03-24 11:10:52 +01:00
James Cole
e87cce12f8 New translations firefly.php (German) 2017-03-24 11:10:43 +01:00
James Cole
7660667153 New translations firefly.php (Portuguese, Brazilian) 2017-03-24 11:10:33 +01:00
James Cole
222b3008d5 Expanded test coverage. 2017-03-24 11:07:38 +01:00
James Cole
398cf0b312 Small improvements in the search [skip ci] 2017-03-24 07:17:38 +01:00
James Cole
5ad8be2483 This fixes the tests 2017-03-22 17:37:34 +01:00
James Cole
6fe319702d Expand test coverage. Remove else-statement. 2017-03-22 17:02:15 +01:00
James Cole
32c89f9a98 Expand category view. 2017-03-22 17:00:01 +01:00
James Cole
64f983786e New translations firefly.php (French) 2017-03-22 01:20:18 +01:00
James Cole
16438b416d New translations list.php (French) 2017-03-22 01:10:26 +01:00
James Cole
52cd292a69 New translations form.php (French) 2017-03-22 01:10:24 +01:00
James Cole
53b501df19 New translations firefly.php (French) 2017-03-22 01:10:23 +01:00
James Cole
477acafc4c Improve test coverage. 2017-03-21 20:46:14 +01:00
James Cole
ab9146b7c6 Update README.md
New badge
2017-03-21 14:24:10 +01:00
James Cole
4d15913e18 New translations csv.php (French) 2017-03-21 13:50:24 +01:00
James Cole
63a91811e2 New translations firefly.php (French) 2017-03-21 13:50:23 +01:00
James Cole
9df4da6173 New translations validation.php (French) 2017-03-21 13:50:14 +01:00
James Cole
643927799b New translations demo.php (French) 2017-03-21 11:50:25 +01:00
James Cole
2652e23089 New translations firefly.php (French) 2017-03-21 11:50:23 +01:00
James Cole
b70c5ae41e New translations demo.php (French) 2017-03-21 10:11:17 +01:00
James Cole
c53d9b2855 New translations demo.php (French) 2017-03-21 10:00:35 +01:00
James Cole
2f6712be87 New translations config.php (French) 2017-03-21 09:50:13 +01:00
James Cole
37f78985ae Update AccountController.php 2017-03-21 08:17:27 +01:00
James Cole
34ac9bc71a Update AccountController.php 2017-03-21 08:15:21 +01:00
James Cole
19ff2484fd Merge branch 'develop' of https://github.com/firefly-iii/firefly-iii into develop
* 'develop' of https://github.com/firefly-iii/firefly-iii:
  Changed to get relative path and not absolute path
2017-03-21 06:29:38 +01:00
James Cole
b7ef2211d9 Include Firefly version in error mail [skip ci] 2017-03-21 06:28:06 +01:00
James Cole
c5206a4559 Merge pull request #623 from welbert/develop
Changed to get relative path and not absolute path
2017-03-20 20:29:01 +01:00
Welbert Serra
894296f63d Changed to get relative path and not absolute path
If you access with absolute path, favicon don't appear on site and the [progressive webApp](https://developers.google.com/web/progressive-web-apps/) is not correctly generate. Get 404 error
2017-03-19 17:51:32 -03:00
James Cole
61526df245 Make dir where json log will end up. 2017-03-19 20:39:27 +01:00
James Cole
92549c4485 No more script removal. 2017-03-19 18:01:09 +01:00
James Cole
6014892d4d New database and new test script. 2017-03-19 17:58:07 +01:00
James Cole
9515ce6807 Expand tests. 2017-03-19 17:54:21 +01:00
James Cole
1adb0f2f0e Improve test coverage. 2017-03-18 20:53:44 +01:00
James Cole
00b1b54347 New test database. 2017-03-18 11:02:21 +01:00
James Cole
282ce041e1 Code cleanup for #595 2017-03-18 11:02:02 +01:00
James Cole
3215c4ee4b Expand code and some refactoring for #595 2017-03-18 08:09:14 +01:00
James Cole
fce00c95c9 New translations firefly.php (French) 2017-03-18 07:51:13 +01:00
James Cole
0a69ab1dc2 New translations firefly.php (Chinese Traditional) 2017-03-18 07:51:05 +01:00
James Cole
94771d250a New translations firefly.php (Croatian) 2017-03-18 07:50:59 +01:00
James Cole
b8395a1dbb New translations firefly.php (Chinese Traditional, Hong Kong) 2017-03-18 07:50:54 +01:00
James Cole
0436cd1584 New translations firefly.php (Russian) 2017-03-18 07:50:44 +01:00
James Cole
2c774bb94c New translations firefly.php (Dutch) 2017-03-18 07:50:39 +01:00
James Cole
b879d90b0d New translations firefly.php (Spanish) 2017-03-18 07:50:35 +01:00
James Cole
ba52b5c328 New translations firefly.php (German) 2017-03-18 07:50:27 +01:00
James Cole
bf61de13f4 New translations firefly.php (Polish) 2017-03-18 07:50:22 +01:00
James Cole
b26e67ae07 New translations firefly.php (Portuguese, Brazilian) 2017-03-18 07:50:19 +01:00
James Cole
edafd16c75 Bread crumbs for #595 2017-03-18 07:46:57 +01:00
James Cole
c62e3dcb78 Code for #595 2017-03-18 07:46:42 +01:00
James Cole
68be58c9f2 Line chart 2017-03-18 07:46:14 +01:00
James Cole
a25a499ed4 Code cleanup 2017-03-18 07:45:52 +01:00
James Cole
97f67912f4 Remove logging 2017-03-18 07:45:40 +01:00
James Cole
e2f3788ff5 Expand tests. 2017-03-17 16:34:57 +01:00
James Cole
fd1f06c2cb Small fix. 2017-03-16 21:00:34 +01:00
James Cole
2db8d25038 This should fix tests 2017-03-16 20:46:18 +01:00
James Cole
d618ddc8c5 Lot of debug info for #619 2017-03-16 17:52:13 +01:00
James Cole
79aa0afc97 Possible fix for #619 2017-03-15 20:09:36 +01:00
James Cole
e53d294c1c Expand tests. 2017-03-12 21:24:34 +01:00
James Cole
aedc3fdff9 Fix #620 2017-03-12 20:43:37 +01:00
James Cole
b67dfeced2 Expand tests. 2017-03-12 09:22:33 +01:00
James Cole
65dbfcba5c Expand tests. 2017-03-12 08:38:13 +01:00
James Cole
8f14c78ba1 Expand some tests. 2017-03-11 22:28:51 +01:00
James Cole
be1b64bb78 New translations demo.php (French) 2017-03-11 12:10:17 +01:00
James Cole
a34c285820 New translations demo.php (French) 2017-03-11 12:00:19 +01:00
James Cole
298f0c194d New translations firefly.php (French) 2017-03-11 08:01:29 +01:00
James Cole
f5ad569aba New translations firefly.php (Chinese Traditional) 2017-03-11 08:01:20 +01:00
James Cole
c70df01532 New translations firefly.php (Croatian) 2017-03-11 08:01:13 +01:00
James Cole
03e115e066 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-03-11 08:01:08 +01:00
James Cole
b88fce35ad New translations firefly.php (Russian) 2017-03-11 08:00:56 +01:00
James Cole
d214e9ff49 New translations firefly.php (Dutch) 2017-03-11 08:00:50 +01:00
James Cole
bd8382c005 New translations firefly.php (Spanish) 2017-03-11 08:00:45 +01:00
James Cole
18cb815e45 New translations firefly.php (German) 2017-03-11 08:00:34 +01:00
James Cole
800e8aca6e New translations firefly.php (Polish) 2017-03-11 08:00:27 +01:00
James Cole
63a6e0754b New translations firefly.php (Portuguese, Brazilian) 2017-03-11 08:00:23 +01:00
James Cole
4abc271805 Implemented #595 for transactions. 2017-03-11 07:41:26 +01:00
James Cole
22cca3858c New translations firefly.php (French) 2017-03-10 19:41:27 +01:00
James Cole
b816fbdf82 New translations firefly.php (Chinese Traditional) 2017-03-10 19:41:17 +01:00
James Cole
d400060b8b New translations firefly.php (Croatian) 2017-03-10 19:41:10 +01:00
James Cole
c88cfa2d9d New translations firefly.php (Chinese Traditional, Hong Kong) 2017-03-10 19:41:03 +01:00
James Cole
b060027304 New translations firefly.php (Russian) 2017-03-10 19:40:51 +01:00
James Cole
d4787aca9c New translations firefly.php (Dutch) 2017-03-10 19:40:45 +01:00
James Cole
69ae2e93f8 New translations firefly.php (Spanish) 2017-03-10 19:40:40 +01:00
James Cole
82a37c62c1 New translations firefly.php (German) 2017-03-10 19:40:30 +01:00
James Cole
ca69970242 New translations firefly.php (Polish) 2017-03-10 19:40:25 +01:00
James Cole
fac3853d95 New translations firefly.php (Portuguese, Brazilian) 2017-03-10 19:40:21 +01:00
James Cole
9dd2f447cc Fix in date range [skip ci] 2017-03-10 19:36:22 +01:00
James Cole
ecbd7ca95b Also implement #595 for the no-cat view. 2017-03-10 19:34:46 +01:00
James Cole
0c52d54d7d Optimized some views and fixed tests for #595 2017-03-10 18:54:50 +01:00
James Cole
78276ac66b New translations firefly.php (French) 2017-03-10 16:12:09 +01:00
James Cole
ca0a22d755 New translations firefly.php (Chinese Traditional) 2017-03-10 16:11:56 +01:00
James Cole
47361fd77a New translations firefly.php (Croatian) 2017-03-10 16:11:49 +01:00
James Cole
1af6fd5d74 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-03-10 16:11:42 +01:00
James Cole
51df78ad2d New translations firefly.php (Russian) 2017-03-10 16:11:27 +01:00
James Cole
84a3e68eb5 New translations firefly.php (Dutch) 2017-03-10 16:11:18 +01:00
James Cole
b2904e09d8 New translations firefly.php (Spanish) 2017-03-10 16:11:11 +01:00
James Cole
fc42a621e4 New translations firefly.php (German) 2017-03-10 16:10:55 +01:00
James Cole
a1c4fb73cd New translations firefly.php (Polish) 2017-03-10 16:10:46 +01:00
James Cole
c18f19db97 New translations firefly.php (Portuguese, Brazilian) 2017-03-10 16:10:40 +01:00
James Cole
ebc712f6b5 Consistency for #595 2017-03-10 16:08:58 +01:00
James Cole
ef0057d88d Add opposing account info [skip ci] #595 2017-03-10 15:28:04 +01:00
James Cole
a8fdfdd5e0 Add opposing account info [skip ci] #595 2017-03-10 15:27:19 +01:00
James Cole
89f7e1ba2a New translations firefly.php (French) 2017-03-09 21:11:36 +01:00
James Cole
6508b4058f New translations firefly.php (Chinese Traditional) 2017-03-09 21:11:25 +01:00
James Cole
bec5d93af6 New translations firefly.php (Croatian) 2017-03-09 21:11:18 +01:00
James Cole
1125fcd6c5 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-03-09 21:11:11 +01:00
James Cole
ff43a547a6 New translations firefly.php (Russian) 2017-03-09 21:10:57 +01:00
James Cole
ca8684146c New translations firefly.php (Dutch) 2017-03-09 21:10:51 +01:00
James Cole
44bea62383 New translations firefly.php (Spanish) 2017-03-09 21:10:45 +01:00
James Cole
8dc2faa5e5 New translations firefly.php (German) 2017-03-09 21:10:34 +01:00
James Cole
f4867d1d09 New translations firefly.php (Polish) 2017-03-09 21:10:29 +01:00
James Cole
8d172801b5 New translations firefly.php (Portuguese, Brazilian) 2017-03-09 21:10:24 +01:00
James Cole
db6e6dfe4a Fix tests for #595 2017-03-09 21:05:37 +01:00
James Cole
61007a95a6 Initial code for #595, transactions with no budget 2017-03-09 20:54:18 +01:00
James Cole
bf138670e8 New translations firefly.php (Dutch) 2017-03-09 08:20:49 +01:00
James Cole
0e59f7433c Code and tests for #615 2017-03-09 08:19:05 +01:00
James Cole
9a033ac62a New translations firefly.php (French) 2017-03-08 20:41:39 +01:00
James Cole
789412ee6a New translations firefly.php (Chinese Traditional) 2017-03-08 20:41:28 +01:00
James Cole
91125d20ef New translations firefly.php (Croatian) 2017-03-08 20:41:19 +01:00
James Cole
292b3672e2 New translations firefly.php (Chinese Traditional, Hong Kong) 2017-03-08 20:41:14 +01:00
James Cole
14ef6b753c New translations firefly.php (Russian) 2017-03-08 20:40:56 +01:00
James Cole
55fcb97a10 New translations firefly.php (Dutch) 2017-03-08 20:40:50 +01:00
James Cole
6b8ec544c1 New translations firefly.php (Spanish) 2017-03-08 20:40:44 +01:00
James Cole
c0aad385cd New translations firefly.php (German) 2017-03-08 20:40:33 +01:00
James Cole
ecfb5e4711 New translations firefly.php (Polish) 2017-03-08 20:40:26 +01:00
James Cole
46c9967a68 New translations firefly.php (Portuguese, Brazilian) 2017-03-08 20:40:23 +01:00
James Cole
176c44e2b9 Remove newline [skip ci] 2017-03-08 20:38:08 +01:00
James Cole
5957cf5ff8 Remove space. [skip ci] 2017-03-08 20:37:40 +01:00
James Cole
436a270524 Merge branch 'release/4.3.7' 2017-03-06 21:07:40 +01:00
James Cole
7a1c14b766 Update for new release. 2017-03-06 21:04:14 +01:00
James Cole
721c4aa888 Merge pull request #609 from firefly-iii/l10n_develop
New Crowdin translations
2017-03-06 20:54:52 +01:00
James Cole
638aab4eea Update TagRepository.php 2017-03-06 10:16:52 +01:00
James Cole
9aa44f7458 New translations 2017-03-05 19:00:15 +01:00
James Cole
1e887a2a8d Start replacing html comments with twig comments 2017-03-05 18:46:12 +01:00
James Cole
78571ad121 Update change log 2017-03-05 18:45:55 +01:00
James Cole
8e5ec79097 Wrote new tests. 2017-03-05 18:15:38 +01:00
James Cole
fc351f36b1 New translations 2017-03-05 13:31:21 +01:00
James Cole
80204147f7 New translations 2017-03-05 13:31:12 +01:00
James Cole
d599b8e5ea New translations 2017-03-05 13:31:06 +01:00
James Cole
208ef9d664 New translations 2017-03-05 13:31:00 +01:00
James Cole
c14da542d1 New translations 2017-03-05 13:30:48 +01:00
James Cole
451832cb2b New translations 2017-03-05 13:30:42 +01:00
James Cole
1409aeb8ed New translations 2017-03-05 13:30:38 +01:00
James Cole
342f24cfe4 New translations 2017-03-05 13:30:27 +01:00
James Cole
8aedfd5153 New translations 2017-03-05 13:30:22 +01:00
James Cole
33b099456f New translations 2017-03-05 13:30:18 +01:00
James Cole
42cb40102f Updated test database. 2017-03-05 13:26:31 +01:00
James Cole
2fbeaaccd3 Expand tests. 2017-03-05 13:21:36 +01:00
James Cole
57fb75bef4 Fix for #611 [skip ci] 2017-03-05 12:19:12 +01:00
James Cole
5c0e22cd31 Fix for #612 [skip ci] 2017-03-05 12:17:55 +01:00
James Cole
879f74e521 Code cleanup. 2017-03-05 11:19:06 +01:00
James Cole
e5a2e1a8c7 Updated tests 2017-03-05 11:18:34 +01:00
James Cole
884d6c59a2 Expand some tests. 2017-03-04 19:14:36 +01:00
James Cole
c206a95d55 Improved various tests. 2017-03-04 15:29:20 +01:00
James Cole
8b4ef4e2da Fix for #610 2017-03-04 13:08:16 +01:00
James Cole
bac5238589 New test database. 2017-03-04 11:21:42 +01:00
James Cole
ae05d4d51d Expand tests 2017-03-04 11:20:57 +01:00
James Cole
9d22bbee1c Add code coverage ignore instructions. 2017-03-04 11:19:44 +01:00
James Cole
1d6007b848 New translations 2017-03-04 07:31:20 +01:00
James Cole
3157339e44 New translations 2017-03-04 07:31:10 +01:00
James Cole
b31d5eefd1 New translations 2017-03-04 07:31:04 +01:00
James Cole
e47398dc71 New translations 2017-03-04 07:30:58 +01:00
James Cole
757d472704 New translations 2017-03-04 07:30:47 +01:00
James Cole
9d0ae99602 New translations 2017-03-04 07:30:41 +01:00
James Cole
0d9ceb6fde New translations 2017-03-04 07:30:37 +01:00
James Cole
cb665d4016 New translations 2017-03-04 07:30:27 +01:00
James Cole
9673dc96d9 New translations 2017-03-04 07:30:22 +01:00
James Cole
2295091427 New translations 2017-03-04 07:30:18 +01:00
James Cole
45f4395f26 Large commit to get rid of a lot of static methods. 2017-03-04 07:26:03 +01:00
James Cole
d9aa074330 Large commit to get rid of a lot of static methods. 2017-03-04 07:18:35 +01:00
James Cole
33c20c8dc4 Renamed a parameter 2017-03-04 06:54:05 +01:00
James Cole
8101f910f0 Update tests. 2017-03-04 06:53:46 +01:00
James Cole
8fb6c1a0c8 Various small changes. 2017-03-03 18:19:25 +01:00
James Cole
978e3e615c This prevented FF from displaying cash account properly. 2017-03-03 12:55:28 +01:00
James Cole
b3b8981b4b Catch null pointer exception. 2017-03-02 19:57:46 +01:00
James Cole
015064e5af Update composer.lock 2017-03-02 19:45:04 +01:00
James Cole
7ef8ff60a5 Update config files. 2017-03-02 19:41:17 +01:00
James Cole
4c3f54699e Merge pull request #590 from firefly-iii/l10n_develop
New Crowdin translations
2017-03-02 19:26:13 +01:00
James Cole
3bf5040324 Fixed null pointer in debug message [skip ci] 2017-03-02 16:42:33 +01:00
James Cole
ed9e5b31fa Merge pull request #606 from Zsub/fix-piggy-bank-interaction
Set default piggy for new transaction
2017-03-02 07:28:17 +01:00
Joris de Vries
506e97e12d Set default piggy for new transaction
Fixes #605. By explicitly setting the selected piggybank to the 0-piggy, new transactions will not inadvertently get coupled to a piggybank if the piggy’s name starts with characters that get sorted before `(` (such as `!` or `’`).
2017-03-01 22:45:37 +01:00
James Cole
9365f9ab60 This fixes #604 2017-03-01 21:13:45 +01:00
James Cole
dd1e9ecb32 This fixes #599 2017-03-01 21:02:47 +01:00
James Cole
d3a2bf174d This fixes #605 2017-03-01 20:57:52 +01:00
James Cole
311020ff2e This fixes #602 2017-03-01 20:49:16 +01:00
James Cole
a6df3ac1fb New translations 2017-02-26 14:40:10 +01:00
James Cole
d313b50e39 Updated composer.lock 2017-02-26 11:52:40 +01:00
James Cole
b23eb07018 Fix error when not-existing import job is submitted. 2017-02-26 11:48:38 +01:00
James Cole
2116486fe0 Various code cleanup 2017-02-25 17:39:50 +01:00
James Cole
eed8fe22c6 Make sure the loop is broken. #595 2017-02-25 13:34:44 +01:00
James Cole
1cec91e4bf New translations 2017-02-25 13:31:13 +01:00
James Cole
8decf8ab9f Make PHP modules mandatory in composer file. 2017-02-25 13:26:01 +01:00
James Cole
79b0c20adb Forgot about the date for account lists, #595 [skip ci] 2017-02-25 13:22:06 +01:00
James Cole
65647ca822 New translations 2017-02-25 13:21:20 +01:00
James Cole
18fafcd45f New translations 2017-02-25 13:21:10 +01:00
James Cole
b7723f4487 New translations 2017-02-25 13:21:04 +01:00
James Cole
6418df87bb New translations 2017-02-25 13:20:58 +01:00
James Cole
daa88c5be1 New translations 2017-02-25 13:20:47 +01:00
James Cole
707b70b136 New translations 2017-02-25 13:20:42 +01:00
James Cole
f9b3b6f7d3 New translations 2017-02-25 13:20:37 +01:00
James Cole
b295eef970 New translations 2017-02-25 13:20:28 +01:00
James Cole
f13dace7ad New translations 2017-02-25 13:20:22 +01:00
James Cole
8dfc40ed3e New translations 2017-02-25 13:20:18 +01:00
James Cole
2e637031ac Fix charts for #595, account overview. 2017-02-25 13:19:42 +01:00
James Cole
de9ef20014 First code for #595. Charts are still broken. 2017-02-25 13:13:51 +01:00
James Cole
4f50689d0e - Will now return 0 when nothing to save or when target date is in the past.
- Will calculate correctly when date difference with target date is more than a year.
- Will always return a string
- Will do calculations using bcmath module.
2017-02-25 13:05:33 +01:00
James Cole
082392f9e0 New translations 2017-02-25 13:01:34 +01:00
James Cole
aca2ef08f1 New translations 2017-02-25 13:01:24 +01:00
James Cole
90fcec4ca8 New translations 2017-02-25 13:01:17 +01:00
James Cole
c90db28b9e New translations 2017-02-25 13:01:11 +01:00
James Cole
56b617bd57 New translations 2017-02-25 13:00:56 +01:00
James Cole
06d58c16d8 New translations 2017-02-25 13:00:50 +01:00
James Cole
b1a807139a New translations 2017-02-25 13:00:45 +01:00
James Cole
ac07736040 New translations 2017-02-25 13:00:34 +01:00
James Cole
c68ba8d510 New translations 2017-02-25 13:00:28 +01:00
James Cole
470802c93b New translations 2017-02-25 13:00:24 +01:00
James Cole
c58745b6ce Merge pull request #597 from Zsub/make-text-translatable
Make suggested savings text translatable
2017-02-25 12:56:31 +01:00
James Cole
9eea4749f0 Remove IDE and environment specific files from gitignore, as inspired by #598. 2017-02-25 12:55:56 +01:00
Joris de Vries
251206fb75 Make suggested savings text translatable
PR #594 introduced suggested savings, this commit makes the text translatable.
2017-02-25 12:26:46 +01:00
James Cole
b53a6c5703 Update .travis.yml in this branch so it stops building this branch. 2017-02-25 06:13:08 +01:00
James Cole
8c6972d12d Various code cleanup. 2017-02-25 05:57:01 +01:00
James Cole
fe0d88b7b3 New translations 2017-02-25 05:31:24 +01:00
James Cole
658b6de9c7 New translations 2017-02-25 05:31:14 +01:00
James Cole
4ea89c3811 New translations 2017-02-25 05:31:07 +01:00
James Cole
2d3d71f46a New translations 2017-02-25 05:31:02 +01:00
James Cole
80a6f431b6 New translations 2017-02-25 05:30:49 +01:00
James Cole
0644729148 New translations 2017-02-25 05:30:43 +01:00
James Cole
07da48e5ea New translations 2017-02-25 05:30:38 +01:00
James Cole
b3f565819b New translations 2017-02-25 05:30:28 +01:00
James Cole
af4abfbed9 New translations 2017-02-25 05:30:22 +01:00
James Cole
eb0011cb46 New translations 2017-02-25 05:30:18 +01:00
James Cole
444439fdab Merge pull request #594 from Zsub/show-suggested-monthly-savings
Show suggested monthly savings for a piggybank
2017-02-25 05:24:05 +01:00
Joris de Vries
a0e66b913b Show suggested monthly savings for a piggybank
If a piggybank has both a target date and a target amount, show how much money needs to be added to the piggybank each month to achieve both targets.

Strings are currently hard-coded because I want to gauge the reaction to this :)
2017-02-24 22:00:49 +01:00
James Cole
96c780c804 New text for translation [skip ci] 2017-02-24 21:11:51 +01:00
James Cole
4f1f46aa93 New translations 2017-02-24 21:11:48 +01:00
James Cole
1d9f76ee5a New translations 2017-02-24 21:11:36 +01:00
James Cole
a7ceda7eea New translations 2017-02-24 21:11:28 +01:00
James Cole
baec4c4d70 New translations 2017-02-24 21:11:21 +01:00
James Cole
4fa850048c New translations 2017-02-24 21:11:04 +01:00
James Cole
8163655a24 New translations 2017-02-24 21:10:56 +01:00
James Cole
4cabf8d2e3 New translations 2017-02-24 21:10:49 +01:00
James Cole
db2f08fa96 New translations 2017-02-24 21:10:36 +01:00
James Cole
a68be2fed7 New translations 2017-02-24 21:10:29 +01:00
James Cole
c3e9aea3a7 New translations 2017-02-24 21:10:24 +01:00
James Cole
40c38af766 Final code for tag report. 2017-02-24 21:09:20 +01:00
James Cole
fc2cee7a54 Fixes tests. 2017-02-24 21:01:33 +01:00
James Cole
3d4feff7de More code for the tag report. 2017-02-24 20:27:26 +01:00
James Cole
f63c6875cd Initial code base for tag report. 2017-02-24 20:01:35 +01:00
James Cole
115b72149c New translations 2017-02-24 16:21:01 +01:00
James Cole
a7e8118c83 New translations 2017-02-24 16:11:55 +01:00
James Cole
8569cc5ac6 New translations 2017-02-24 16:11:43 +01:00
James Cole
7a0ffce36f New translations 2017-02-24 16:11:33 +01:00
James Cole
c573d95ec5 New translations 2017-02-24 16:11:27 +01:00
James Cole
d3e1fba4e0 New translations 2017-02-24 16:11:10 +01:00
James Cole
e7dd087b52 New translations 2017-02-24 16:10:59 +01:00
James Cole
c7cb79906c New translations 2017-02-24 16:10:53 +01:00
James Cole
3c3f80c5a0 New translations 2017-02-24 16:10:39 +01:00
James Cole
e20fb3c3ac New translations 2017-02-24 16:10:32 +01:00
James Cole
e3986a4dd4 New translations 2017-02-24 16:10:26 +01:00
James Cole
a3926e3996 New translations 2017-02-24 16:00:31 +01:00
James Cole
e737683efb Fine-tune some translations [skip ci] 2017-02-24 16:00:24 +01:00
James Cole
0157c4ed65 New translations 2017-02-24 15:50:41 +01:00
James Cole
058ade266d New translations 2017-02-24 09:21:23 +01:00
James Cole
e0adb4c397 New translations 2017-02-24 09:10:35 +01:00
James Cole
35aa61bb23 Different icon [skip ci] 2017-02-23 17:47:46 +01:00
James Cole
27236d19cf Clone, not copy [skip ci] 2017-02-23 17:47:36 +01:00
James Cole
063ca3121a Fixes #593 2017-02-23 17:43:29 +01:00
James Cole
b8521c6875 New translations 2017-02-23 07:41:38 +01:00
James Cole
e3798d6462 New translations 2017-02-23 07:41:28 +01:00
James Cole
387a3e541f New translations 2017-02-23 07:41:20 +01:00
James Cole
42a3b411e4 New translations 2017-02-23 07:41:15 +01:00
James Cole
25c7ec4175 New translations 2017-02-23 07:40:59 +01:00
James Cole
7ec11765da New translations 2017-02-23 07:40:52 +01:00
James Cole
d57ae126b7 New translations 2017-02-23 07:40:45 +01:00
James Cole
87f133555c New translations 2017-02-23 07:40:34 +01:00
James Cole
db9883d851 New translations 2017-02-23 07:40:27 +01:00
James Cole
8dad5ff7db New translations 2017-02-23 07:40:23 +01:00
James Cole
fc36f9cd8c Added empty box for bills as well. 2017-02-23 07:30:08 +01:00
James Cole
563c668e3f Code to catch empty lists and nudge user in the right direction. 2017-02-23 07:24:05 +01:00
James Cole
b3df1f3d26 Move template around 2017-02-23 07:02:28 +01:00
James Cole
1ac3f7af3b Included a message about translations after a PR was submitted that I had to close :( [skip ci] 2017-02-23 06:53:58 +01:00
James Cole
6cbb86aed7 New translations 2017-02-22 21:51:55 +01:00
James Cole
e459a8c88b New translations 2017-02-22 21:51:41 +01:00
James Cole
ca003b7d4d New translations 2017-02-22 21:51:33 +01:00
James Cole
03f873a6d3 New translations 2017-02-22 21:51:27 +01:00
James Cole
5dbec53847 New translations 2017-02-22 21:51:11 +01:00
James Cole
49dfad9b0c Approved. Step name: Proofread 2017-02-22 21:51:02 +01:00
James Cole
4ee0462d1b New translations 2017-02-22 21:50:55 +01:00
James Cole
3f78be4471 New translations 2017-02-22 21:50:41 +01:00
James Cole
d93fad39ac New translations 2017-02-22 21:50:33 +01:00
James Cole
aa3429bb0e New translations 2017-02-22 21:50:28 +01:00
James Cole
d88246f2f6 First code for #588 2017-02-22 21:40:27 +01:00
James Cole
201db34936 Update various sandstorm files. [skip ci] 2017-02-22 21:27:39 +01:00
James Cole
47709dfc7c Test catches some exceptions. 2017-02-22 20:35:31 +01:00
James Cole
2aaafc54ee Merge pull request #587 from Zsub/fix-tag-date
Fix saving a tag’s date
2017-02-22 20:21:25 +01:00
Joris de Vries
e211881691 Remove superfluous declaration of $date
The null check is already part of the `$this->date()` function and `$date` is never used.
2017-02-22 20:20:00 +01:00
Joris de Vries
0d32f16041 Fix saving a tag’s date
The `date` function takes the fieldname where a date is stored, not the literal date.
2017-02-22 20:07:30 +01:00
James Cole
2082e8d462 Small updates to read me [skip ci] 2017-02-22 17:58:57 +01:00
James Cole
bfc95cfc57 Update composer file. 2017-02-22 17:17:22 +01:00
James Cole
35aeb7e04a Update tag view 2017-02-22 17:15:54 +01:00
James Cole
adcddb09cd Updated link to installation guide. [skip ci] 2017-02-20 19:41:33 +01:00
James Cole
56199f899f Merge branch 'release/4.3.6' 2017-02-20 05:43:34 +01:00
James Cole
ca5c845064 Update to 4.3.6 2017-02-20 05:43:05 +01:00
James Cole
a8ac69f008 Fix #578 [skip ci] 2017-02-20 05:41:43 +01:00
James Cole
b9309bc7b1 Stop Travis from building weird branches. 2017-02-19 17:01:29 +01:00
James Cole
41596feb56 Merge branch 'release/4.3.5' 2017-02-19 16:49:45 +01:00
James Cole
cf1813b413 Updated composer.lock 2017-02-19 16:48:49 +01:00
James Cole
5b267c0e95 Update to version 4.3.5 2017-02-19 16:36:03 +01:00
James Cole
3741f70c29 Merge pull request #576 from firefly-iii/l10n_develop
New Crowdin translations
2017-02-19 16:33:54 +01:00
James Cole
1f37ea3d3c Translated 2017-02-19 12:30:11 +01:00
James Cole
283ee076c7 Expand view [skip ci] 2017-02-19 12:19:30 +01:00
James Cole
b13a878927 Slightly expanded modifiers [skip ci] 2017-02-19 12:17:07 +01:00
James Cole
364eb2838e Translated 2017-02-19 12:12:59 +01:00
James Cole
94631ca8d7 Approved. Step name: Proofread 2017-02-19 12:12:58 +01:00
James Cole
2ed095d58f Approved. Step name: Proofread 2017-02-19 12:12:56 +01:00
James Cole
9c10e3970d Approved. Step name: Proofread 2017-02-19 12:12:55 +01:00
James Cole
0cf4f44e95 Approved. Step name: Proofread 2017-02-19 12:12:54 +01:00
James Cole
89638a0094 Approved. Step name: Proofread 2017-02-19 12:12:52 +01:00
James Cole
d7531cf4ff Approved. Step name: Proofread 2017-02-19 12:12:51 +01:00
James Cole
2c5acb8ecd Approved. Step name: Proofread 2017-02-19 12:12:50 +01:00
James Cole
824c317f74 Translated 2017-02-19 12:12:49 +01:00
James Cole
d208fd1772 New translations 2017-02-19 12:12:48 +01:00
James Cole
f145aaded9 New translations 2017-02-19 12:12:46 +01:00
James Cole
c7043478f6 New translations 2017-02-19 12:12:45 +01:00
James Cole
d16bb7f394 Approved. Step name: Proofread 2017-02-19 12:12:44 +01:00
James Cole
3ed314dbc6 New translations 2017-02-19 12:12:43 +01:00
James Cole
e8c5942e33 Approved. Step name: Proofread 2017-02-19 12:12:42 +01:00
James Cole
96c704760c Approved. Step name: Proofread 2017-02-19 12:12:40 +01:00
James Cole
70c99f18e1 New translations 2017-02-19 12:12:39 +01:00
James Cole
5e2bdb6356 Translated 2017-02-19 12:12:38 +01:00
James Cole
dd13285f04 Translated 2017-02-19 12:12:37 +01:00
James Cole
561a5bf699 New translations 2017-02-19 12:12:35 +01:00
James Cole
f2d794e372 New translations 2017-02-19 12:12:34 +01:00
James Cole
f0931b8438 New translations 2017-02-19 12:12:33 +01:00
James Cole
aadb9addd5 New translations 2017-02-19 12:12:31 +01:00
James Cole
66abb50d23 Translated 2017-02-19 12:12:30 +01:00
James Cole
4eca99b745 New translations 2017-02-19 12:12:29 +01:00
James Cole
a95a265d47 Translated 2017-02-19 12:12:27 +01:00
James Cole
b0e70c25d0 New translations 2017-02-19 12:12:26 +01:00
James Cole
8914bd6b9a New translations 2017-02-19 12:12:25 +01:00
James Cole
26751e10ee Expand modifiers 2017-02-19 12:12:24 +01:00
James Cole
579ee9f199 New translations 2017-02-19 12:12:22 +01:00
James Cole
48fcb76ba4 New translations 2017-02-19 12:12:21 +01:00
James Cole
b872bbbb42 New translations 2017-02-19 12:12:19 +01:00
James Cole
73c88aa11f Translated 2017-02-19 12:12:18 +01:00
James Cole
aa1700b7b4 New translations 2017-02-19 12:12:16 +01:00
James Cole
1aa8e43bdf New translations 2017-02-19 12:12:15 +01:00
James Cole
fa8200d3e2 New translations 2017-02-19 12:12:14 +01:00
James Cole
bd9fcc6e8d New translations 2017-02-19 12:12:12 +01:00
James Cole
6167667f9a Translated 2017-02-19 12:12:11 +01:00
James Cole
1081379689 New translations 2017-02-19 12:12:10 +01:00
James Cole
712526f1c3 New translations 2017-02-19 12:12:08 +01:00
James Cole
7c0cfc5596 Translated 2017-02-19 12:12:07 +01:00
James Cole
edd0dcbcef New translations 2017-02-19 12:12:06 +01:00
James Cole
b322d67ffc New translations 2017-02-19 12:12:05 +01:00
James Cole
38dbac199d Translated 2017-02-19 12:12:02 +01:00
James Cole
6eb695c5eb New translations 2017-02-19 12:12:00 +01:00
James Cole
b0fd5889aa New translations 2017-02-19 12:11:58 +01:00
James Cole
b181f2edf0 New translations 2017-02-19 12:11:57 +01:00
James Cole
376940e089 New translations 2017-02-19 12:11:56 +01:00
James Cole
1c0762a3df New translations 2017-02-19 12:11:55 +01:00
James Cole
df39f5ab98 New translations 2017-02-19 12:11:54 +01:00
James Cole
9cd1ae1220 New translations 2017-02-19 12:11:52 +01:00
James Cole
3ddef6fe78 New translations 2017-02-19 12:11:50 +01:00
James Cole
b8c78217e8 New translations 2017-02-19 12:11:49 +01:00
James Cole
3a1b514982 New translations 2017-02-19 12:11:47 +01:00
James Cole
5d34dab2ef New translations 2017-02-19 12:11:46 +01:00
James Cole
541ed1e764 New translations 2017-02-19 12:11:45 +01:00
James Cole
5e764a345e New translations 2017-02-19 12:11:42 +01:00
James Cole
33de51c4aa New translations 2017-02-19 12:11:41 +01:00
James Cole
5aa038e195 New translations 2017-02-19 12:11:40 +01:00
James Cole
0fe437c66b New translations 2017-02-19 12:11:38 +01:00
James Cole
790d156503 Translated 2017-02-19 12:11:37 +01:00
James Cole
9f515bea20 Translated 2017-02-19 12:11:36 +01:00
James Cole
1422adac3f New translations 2017-02-19 12:11:35 +01:00
James Cole
5f17e41190 New translations 2017-02-19 12:11:33 +01:00
James Cole
0d9daaffe8 New translations 2017-02-19 12:11:32 +01:00
James Cole
e1f3bf8d45 New translations 2017-02-19 12:11:31 +01:00
James Cole
20a7723e63 New translations 2017-02-19 12:11:30 +01:00
James Cole
5ffa6d9500 New translations 2017-02-19 12:11:29 +01:00
James Cole
86956969ce New translations 2017-02-19 12:11:28 +01:00
James Cole
13beb888c1 Translated 2017-02-19 12:11:26 +01:00
James Cole
c1d4caf1a9 New translations 2017-02-19 12:11:25 +01:00
James Cole
5e9a605ae4 New translations 2017-02-19 12:11:23 +01:00
James Cole
c79d0ed276 Translated 2017-02-19 12:11:22 +01:00
James Cole
6204e575a2 New translations 2017-02-19 12:11:21 +01:00
James Cole
19f181723a New translations 2017-02-19 12:11:18 +01:00
James Cole
4a49bf8799 New translations 2017-02-19 12:11:17 +01:00
James Cole
8128c6aed6 New translations 2017-02-19 12:11:16 +01:00
James Cole
45dfc74ab3 New translations 2017-02-19 12:11:14 +01:00
James Cole
72c4ecced7 New translations 2017-02-19 12:11:13 +01:00
James Cole
d21187df6a Approved. Step name: Proofread 2017-02-19 12:11:12 +01:00
James Cole
bf33025569 Translated 2017-02-19 12:11:09 +01:00
James Cole
065620aec9 Translated 2017-02-19 12:11:08 +01:00
James Cole
e8e0fbc988 New translations 2017-02-19 12:11:07 +01:00
James Cole
21e61d08dd New translations 2017-02-19 12:11:06 +01:00
James Cole
ca9cc50423 New translations 2017-02-19 12:11:05 +01:00
James Cole
0fde74883f New translations 2017-02-19 12:11:03 +01:00
James Cole
c1d12e5129 New translations 2017-02-19 12:11:02 +01:00
James Cole
8ee6cd6c41 New translations 2017-02-19 12:10:59 +01:00
James Cole
bb09ea5fa2 New translations 2017-02-19 12:10:57 +01:00
James Cole
6b92ef9d71 New translations 2017-02-19 12:10:56 +01:00
James Cole
a49f8a27e2 Translated 2017-02-19 12:10:55 +01:00
James Cole
d0b3b4b186 Translated 2017-02-19 12:10:54 +01:00
James Cole
0bd688962b New translations 2017-02-19 12:10:52 +01:00
James Cole
c737ceb63f New translations 2017-02-19 12:10:51 +01:00
James Cole
d24e5b9eca Translated 2017-02-19 12:10:50 +01:00
James Cole
d68c2b5b8f New translations 2017-02-19 12:10:49 +01:00
James Cole
6803707b1f Translated 2017-02-19 12:10:47 +01:00
James Cole
13574d812f Translated 2017-02-19 12:10:46 +01:00
James Cole
f4e95bdbca Translated 2017-02-19 12:10:45 +01:00
James Cole
eb83023864 Translated 2017-02-19 12:10:44 +01:00
James Cole
10c81fdfba Translated 2017-02-19 12:10:42 +01:00
James Cole
7c47723992 New translations 2017-02-19 12:10:41 +01:00
James Cole
0154183800 New translations 2017-02-19 12:10:38 +01:00
James Cole
a2b0ea9c5b Translated 2017-02-19 12:10:37 +01:00
James Cole
c49caf663c Translated 2017-02-19 12:10:35 +01:00
James Cole
17e6698133 New translations 2017-02-19 12:10:34 +01:00
James Cole
a7b99b1bb5 New translations 2017-02-19 12:10:33 +01:00
James Cole
8d6a217f22 Translated 2017-02-19 12:10:30 +01:00
James Cole
d5b1722c0c Translated 2017-02-19 12:10:28 +01:00
James Cole
0d9a81f0e4 New translations 2017-02-19 12:10:27 +01:00
James Cole
821a443e44 New translations 2017-02-19 12:10:24 +01:00
James Cole
9d8d54e5c8 New translations 2017-02-19 12:10:23 +01:00
James Cole
411739277d Translated 2017-02-19 12:10:21 +01:00
James Cole
fa71feb9fb Translated 2017-02-19 12:10:20 +01:00
James Cole
00f9194bfa New translations 2017-02-19 12:10:19 +01:00
James Cole
a3e955400f Translated 2017-02-19 12:10:17 +01:00
James Cole
05060cee5b New translations 2017-02-19 12:10:16 +01:00
James Cole
c10148753a New translations 2017-02-19 12:10:14 +01:00
James Cole
53bb64641b Translated 2017-02-19 12:10:13 +01:00
James Cole
9a124bb3b2 New translations 2017-02-19 12:10:12 +01:00
James Cole
91568cf919 Translated 2017-02-19 12:10:10 +01:00
James Cole
b149a816dd Make search work. [skip ci] 2017-02-19 09:36:51 +01:00
James Cole
bf35ecc07a Fixed tests 2017-02-19 09:17:02 +01:00
James Cole
711a1a1d4f Final modifiers. 2017-02-19 09:07:14 +01:00
James Cole
a27b686446 Add budget keyword. 2017-02-19 07:41:12 +01:00
James Cole
1f6180ce5d Updated search modifiers. 2017-02-19 07:38:51 +01:00
James Cole
b5032a7597 Added a new helper function. 2017-02-19 07:34:39 +01:00
James Cole
5073fd937c Expand search with a bunch of keywords for #510 2017-02-18 20:10:03 +01:00
James Cole
f0cb63fd48 Some small optimisations. 2017-02-18 09:32:10 +01:00
James Cole
f7642beb7c Better 2fa handling 2017-02-17 20:15:17 +01:00
James Cole
48c26c5837 Update test coverage 2017-02-17 20:14:38 +01:00
James Cole
65a899bf25 Clean up session code 2017-02-17 20:14:22 +01:00
James Cole
5d0cdc4ffa Various code cleanup. 2017-02-17 06:42:36 +01:00
James Cole
1d979778e8 Merge pull request #573 from firefly-iii/l10n_develop
New Crowdin translations
2017-02-16 22:42:35 +01:00
James Cole
917b8b40cf Merge branch 'develop' into l10n_develop 2017-02-16 22:42:24 +01:00
James Cole
466ec92492 Remove some commented code. 2017-02-16 22:34:37 +01:00
James Cole
4ff5f526ba Add new lines to files. 2017-02-16 22:33:32 +01:00
James Cole
8460ee2dc4 Small fix in read me [skip ci] 2017-02-16 22:30:57 +01:00
James Cole
fa39330ceb New change log [skip ci] 2017-02-16 22:30:46 +01:00
James Cole
1857bb17d9 Approved. Step name: Proofread 2017-02-16 22:30:14 +01:00
James Cole
fe54b2fa3a Names are now links [skip ci] 2017-02-16 22:13:04 +01:00
James Cole
4fbf0291e6 Updated composer things. 2017-02-16 21:06:31 +01:00
James Cole
8bfcc3315a This fixes #572 2017-02-16 21:01:22 +01:00
James Cole
c8f6b42ce6 Fix tests 2017-02-15 22:02:02 +01:00
James Cole
8f5289b7dc Fixed some transaction list filter issues. 2017-02-15 21:55:50 +01:00
James Cole
281e3f706b New translations 2017-02-15 20:12:02 +01:00
James Cole
6dfa027ae2 New translations 2017-02-15 20:11:48 +01:00
James Cole
623cd51b1c New translations 2017-02-15 20:11:39 +01:00
James Cole
3d9e723a0e New translations 2017-02-15 20:11:33 +01:00
James Cole
4a2b7cfc4e New translations 2017-02-15 20:11:15 +01:00
James Cole
c15bee4511 New translations 2017-02-15 20:11:05 +01:00
James Cole
f4afcd29e0 New translations 2017-02-15 20:10:56 +01:00
James Cole
770e77a862 New translations 2017-02-15 20:10:41 +01:00
James Cole
684d1dc432 New translations 2017-02-15 20:10:33 +01:00
James Cole
ec9ddb2bfb New translations 2017-02-15 20:10:27 +01:00
James Cole
a5f8aa914f Build code for tag report. 2017-02-15 20:07:10 +01:00
James Cole
ae06f1b8f0 Yeah never mind. [skip ci] 2017-02-15 18:16:07 +01:00
James Cole
e8f76d896b Expand code climate config [skip ci] 2017-02-15 17:25:36 +01:00
James Cole
07ecb3f0e8 Expand code climate config [skip ci] 2017-02-15 17:23:56 +01:00
James Cole
893f2d2c55 Include code climate config [skip ci] 2017-02-15 17:17:15 +01:00
James Cole
395a7bb33c This should fix the tests 2017-02-15 17:07:56 +01:00
James Cole
636b371b86 Fixes #553 2017-02-15 16:20:16 +01:00
James Cole
f0783df123 This should fix #566 2017-02-15 15:24:01 +01:00
James Cole
fa54763425 This fixes #570 2017-02-15 15:22:04 +01:00
James Cole
cf2cd9680b This fixes #569 2017-02-15 15:18:52 +01:00
James Cole
47aa996b6b This fixes #567 2017-02-15 15:12:46 +01:00
James Cole
6442887c1a Merge pull request #562 from patrickkostjens/develop
Use Docker volumes created by docker-compose to persist data
2017-02-13 20:54:22 +01:00
James Cole
7a34536c80 Fixes #565 2017-02-13 20:39:23 +01:00
Patrick Kostjens
e9a67b1c82 Bugfix: Mount app in app container instead of db container 2017-02-12 21:38:58 +01:00
Patrick Kostjens
bc4cf1a367 Incorporate comments: Use Docker storage instead of local folder for app storage 2017-02-12 21:04:15 +01:00
Patrick Kostjens
a1d40a5748 Mount local code base in development docker-compose 2017-02-12 20:52:26 +01:00
Patrick Kostjens
e42f858166 Incorporate review comment: Remove unneeded container name setting in docker-compose 2017-02-12 20:41:29 +01:00
Patrick Kostjens
75e0d19b4e Refactored docker-compose files to use base with dev/prod overrides 2017-02-12 19:37:37 +01:00
James Cole
5801eba22a Updated composer.lock file. 2017-02-12 18:47:17 +01:00
James Cole
fd3f756640 Restored most pre-5.4 tests. 2017-02-12 18:40:39 +01:00
Patrick Kostjens
bd1672fd7b Use Docker volume for mysql data storage 2017-02-12 18:07:48 +01:00
James Cole
2c36820622 New tests 2017-02-12 17:58:16 +01:00
Patrick Kostjens
ff1d1e5b8f Revert docker-compose to development version and create separate production file 2017-02-12 17:55:56 +01:00
James Cole
de0371dd1c New translations 2017-02-12 17:51:53 +01:00
James Cole
d6f4bbf4bc New translations 2017-02-12 17:51:44 +01:00
James Cole
5fc1e6ad64 New translations 2017-02-12 17:51:37 +01:00
James Cole
c37d772759 New translations 2017-02-12 17:51:32 +01:00
James Cole
fe2efd88cf New translations 2017-02-12 17:51:21 +01:00
James Cole
5a2f48f529 Approved. Step name: Proofread 2017-02-12 17:51:16 +01:00
James Cole
4459d09a90 New translations 2017-02-12 17:51:10 +01:00
James Cole
79fcd874f7 New translations 2017-02-12 17:51:00 +01:00
James Cole
643655a612 New translations 2017-02-12 17:50:54 +01:00
James Cole
adb0717ade New translations 2017-02-12 17:50:50 +01:00
Patrick Kostjens
1feae802c2 Use local folders in containers created by docker-compose to persist data 2017-02-12 17:30:24 +01:00
James Cole
ec146d4cbe Make sure the /javascript/ url’s are ignored. 2017-02-12 16:50:35 +01:00
James Cole
3399b133ae New user controller tests. 2017-02-12 13:23:08 +01:00
James Cole
1637190c27 Fix various tests. 2017-02-12 13:15:23 +01:00
James Cole
79f94771c3 Make tests compatible with laravel 5.4 2017-02-12 12:32:13 +01:00
James Cole
018af62826 First set of new tests. 2017-02-12 12:21:44 +01:00
James Cole
69bd292ed8 Initial set of empty controller tests 2017-02-12 12:00:11 +01:00
James Cole
ac63a082aa Update attachment controller test. 2017-02-12 11:53:04 +01:00
James Cole
e15bb05823 New test for attachments. 2017-02-12 11:47:22 +01:00
James Cole
5528663727 Re-implemented basic account controller tests. 2017-02-12 11:25:17 +01:00
James Cole
1a204d31e7 Small fix for opening balance issues in reports. 2017-02-12 10:58:37 +01:00
James Cole
0fe4273d4d Merge pull request #560 from elamperti/fix-smooth-curves
Fix smooth curves around data points in graphs
2017-02-12 08:42:51 +01:00
Enrico Lamperti
abf0fdcf35 Fix smooth curves in graphs 2017-02-11 17:38:04 -03:00
James Cole
78074a5a54 Code for #553 2017-02-11 18:38:38 +01:00
James Cole
dcc2b9c1cb This fixes #559 2017-02-11 18:35:16 +01:00
James Cole
b5a005dcc5 Better 404 page [skip ci] 2017-02-11 16:32:03 +01:00
James Cole
4c2d9e0eee Small code cleanup. 2017-02-11 15:52:55 +01:00
James Cole
fb73baca6a Merge pull request #558 from crash7/improve-docker
Improve docker support
2017-02-11 10:13:51 +01:00
James Cole
0be3dd4fe4 Add EOF 2017-02-11 10:12:11 +01:00
James Cole
8e89899070 Add EOF 2017-02-11 10:11:57 +01:00
James Cole
5e47492318 Clean up budget report partial 2017-02-11 10:05:58 +01:00
James Cole
aa2d78f36a Expand filter 2017-02-11 09:34:04 +01:00
Christian Musa
0cbed2d5d2 Improve docker support
- Add docker-compose file
- Add environment variable to initialize the database
- Add custom entrypoint that generates the .env file based on the environment variables
- Update Dockerfile (gettext-base package)
2017-02-11 00:36:38 -03:00
James Cole
3914796e4e Experimental new transfer filter. 2017-02-10 17:21:44 +01:00
James Cole
b9dac5ff55 Merge branch 'develop' of https://github.com/firefly-iii/firefly-iii into develop
* 'develop' of https://github.com/firefly-iii/firefly-iii:
  Update config.php, see #521
2017-02-08 22:24:20 +01:00
James Cole
1285a88660 Different value for title field [skip ci] 2017-02-08 22:07:47 +01:00
James Cole
96e0d4e29f Translated 2017-02-06 13:20:57 +01:00
James Cole
9bb8a9ccd1 New translations 2017-02-06 13:20:54 +01:00
James Cole
d9611bd84f New translations 2017-02-06 13:20:51 +01:00
James Cole
915afa4534 Translated 2017-02-06 13:20:47 +01:00
James Cole
5105c94233 New translations 2017-02-06 13:12:31 +01:00
James Cole
899d4fe611 New translations 2017-02-06 13:12:04 +01:00
James Cole
d45a12e544 New translations 2017-02-06 13:11:44 +01:00
James Cole
302fc876d9 Translated 2017-02-06 13:11:28 +01:00
James Cole
f6a25db17c New translations 2017-02-06 13:11:26 +01:00
James Cole
da11303539 New translations 2017-02-06 13:11:25 +01:00
James Cole
07ebe71839 New translations 2017-02-06 13:11:23 +01:00
James Cole
eba9c4e039 New translations 2017-02-06 13:11:12 +01:00
James Cole
7d80120611 Approved. Step name: Proofread 2017-02-06 08:32:09 +01:00
James Cole
f2ea5fb253 New translations 2017-02-06 08:31:57 +01:00
James Cole
451ab6c531 New translations 2017-02-06 08:31:48 +01:00
James Cole
796b63fcc5 New translations 2017-02-06 08:31:42 +01:00
James Cole
7d8b3e6513 New translations 2017-02-06 08:31:40 +01:00
James Cole
b2026106ec Update config.php, see #521 2017-02-06 08:29:18 +01:00
James Cole
dba92d73c4 Include new line at the end of the file. 2017-02-05 19:51:58 +01:00
James Cole
b09a250a03 Better link for issues. [skip ci] 2017-02-05 18:50:19 +01:00
James Cole
c6f69f63fc Friendly error message. [skip ci] 2017-02-05 18:49:13 +01:00
James Cole
3a7faa7368 Small fixes for laravel 5.4 2017-02-05 18:44:37 +01:00
James Cole
f863c01a1d Merge laravel 5.4 into develop. 2017-02-05 16:20:02 +01:00
James Cole
8a98204a69 Update app() calls 2017-02-05 16:16:15 +01:00
James Cole
77e52f42a6 Update export routine. 2017-02-05 16:14:23 +01:00
James Cole
704c0922e8 Update collector classes 2017-02-05 15:58:55 +01:00
James Cole
371ce37be4 Update export classes 2017-02-05 15:58:42 +01:00
James Cole
152fb3f885 Update the last providers. 2017-02-05 15:58:27 +01:00
James Cole
3ff83cd431 Remove speed trap. 2017-02-05 15:43:56 +01:00
James Cole
a9d5b6ef92 Update to laravel 5.4 style tests 2017-02-05 15:42:00 +01:00
James Cole
229f718754 Update Composer files. 2017-02-05 15:41:41 +01:00
James Cole
646b65918d Remove tests since they’ve been changed in Laravel 5.4. 2017-02-05 15:41:23 +01:00
James Cole
5e596a9cb7 Remove speedtrap from oh-unit file. 2017-02-05 08:47:37 +01:00
James Cole
353db6c4a5 Updated composer.lock file. 2017-02-05 08:35:17 +01:00
James Cole
959a1a08f0 Tell view whether we’re in Sandstorm.IO mode. 2017-02-05 08:27:23 +01:00
James Cole
3e510bd3f6 This fixes #549 2017-02-05 08:26:54 +01:00
James Cole
b68d5c4374 Include CSRF token for Sandstorm. 2017-02-04 09:02:07 +01:00
James Cole
dc348a72c8 Various new scripts to improve sandstorm.io experience. 2017-02-04 08:42:06 +01:00
James Cole
5e5d4eca4b Update some sandstorm.io files. 2017-02-04 03:22:19 +01:00
James Cole
96b5d174d1 Initial code base for Sandstorm.IO support. Very beta. 2017-02-04 03:04:55 +01:00
James Cole
df1da32745 Update composer [skip ci] 2017-02-04 02:26:16 +01:00
James Cole
a7c198048e Add app log method. [skip ci] 2017-02-04 02:20:17 +01:00
James Cole
e3599c002b Updated contribution instructions [skip ci] 2017-02-04 02:19:47 +01:00
James Cole
094f6a7476 Merge branch 'release/4.3.4' 2017-02-02 20:55:46 +01:00
James Cole
c3b4849fa0 Various updates for upcoming release 4.3.4 2017-02-02 20:55:01 +01:00
James Cole
dfd6c5379c Merge pull request #546 from firefly-iii/l10n_develop
New Crowdin translations
2017-02-02 20:41:47 +01:00
James Cole
9aa53c11e0 This fixes #550 2017-02-02 20:37:39 +01:00
James Cole
b0d93621a8 This fixes #551 2017-02-02 20:36:32 +01:00
James Cole
a337d9a599 New route for JS file, may fix #550 2017-02-02 07:36:57 +01:00
James Cole
615d90c8f4 Update various service providers. 2017-02-02 07:35:53 +01:00
James Cole
7ffd77dc76 Translated 2017-01-31 01:17:32 +01:00
James Cole
96fdf4fd93 Translated 2017-01-31 01:17:29 +01:00
James Cole
27b8ce0f7f Translated 2017-01-31 01:17:27 +01:00
James Cole
e057c4d79c Removed reference to crud service provider. 2017-01-30 17:29:18 +01:00
James Cole
8263fa41dd Rewrote currency and export/import job service provider 2017-01-30 17:29:05 +01:00
James Cole
eeae4d215d Removed old service provider. 2017-01-30 17:20:00 +01:00
James Cole
646ed0d4dd Rewrote attachment, budget and category service providers. 2017-01-30 17:19:51 +01:00
James Cole
ac54032f55 Need to call everything from collector to work. 2017-01-30 17:10:23 +01:00
James Cole
3aaf356054 Rewrote bill service provider 2017-01-30 17:10:08 +01:00
James Cole
2c786e6a38 Small fixes to collector because constructor is gone. 2017-01-30 17:09:44 +01:00
James Cole
355baa7fef Rewrote account service provider. 2017-01-30 16:59:55 +01:00
James Cole
01468c2663 Rewrote journal service provider 2017-01-30 16:58:10 +01:00
James Cole
c7341c9194 Also extend collector. 2017-01-30 16:57:00 +01:00
James Cole
1e947870a6 Remove all constructors. 2017-01-30 16:46:30 +01:00
James Cole
311c1a3c84 Implement all setUser methods. 2017-01-30 16:42:58 +01:00
James Cole
84e380e4d0 Give all repositories a new setUser function. 2017-01-30 16:40:49 +01:00
James Cole
4cad2eb0c4 Upgraded validator 2017-01-30 16:35:41 +01:00
James Cole
4bc3af7176 Updated composer.lock file for change to bread crumbs. 2017-01-30 16:35:31 +01:00
James Cole
e80298f815 Include laravel bread crumbs and custom repository. 2017-01-30 16:31:41 +01:00
James Cole
14971cf249 Overrule logging. 2017-01-30 16:30:35 +01:00
James Cole
b79dcd7f23 Disable ConfigureLogging class. 2017-01-30 16:27:33 +01:00
James Cole
395aaad9c6 New class name. 2017-01-30 16:21:01 +01:00
James Cole
29f763d4e4 Update composer files. 2017-01-30 16:20:23 +01:00
James Cole
2f943c91d2 New contributing guidelines [skip ci] 2017-01-30 14:13:52 +01:00
James Cole
91c96311de Expand contributing guidelines. [skip ci] 2017-01-30 11:41:39 +01:00
James Cole
0f929faa16 Merge branch 'release/4.3.3' 2017-01-30 11:18:29 +01:00
James Cole
7a40c34cf0 New change log. 2017-01-30 11:18:02 +01:00
James Cole
462d987de9 Merge pull request #532 from firefly-iii/l10n_develop
New Crowdin translations
2017-01-30 11:11:36 +01:00
James Cole
f64e8d8973 Composer update. [skip ci] 2017-01-30 11:10:34 +01:00
James Cole
21222eb697 Mention new version. 2017-01-30 10:33:44 +01:00
James Cole
e47d6fb3ac Move default option to bottom. 2017-01-30 10:33:18 +01:00
James Cole
c7fc10ac89 Remove debug statements. 2017-01-30 08:32:16 +01:00
James Cole
e8b528f520 New translations 2017-01-29 22:05:43 +01:00
James Cole
b22de7bf70 New translations 2017-01-29 22:05:38 +01:00
James Cole
ec119c8f6e Translated 2017-01-29 21:55:32 +01:00
James Cole
a20b38598e New translations 2017-01-29 21:45:32 +01:00
James Cole
aa0eb47205 New translations 2017-01-29 21:35:31 +01:00
James Cole
723db9d71e New translations 2017-01-29 13:36:21 +01:00
James Cole
1d8dc3d65d Approved. Step name: Proofread 2017-01-24 16:17:57 +01:00
James Cole
fe2716876a New translations 2017-01-24 15:44:55 +01:00
James Cole
fac0e97e5d New translations 2017-01-24 15:44:27 +01:00
James Cole
449d009c28 New translations 2017-01-24 15:43:49 +01:00
James Cole
55b2e6fe25 New translations 2017-01-24 15:43:36 +01:00
James Cole
9989b3b9da New translations 2017-01-24 15:43:27 +01:00
James Cole
7ab1cbfc1f New translations 2017-01-24 15:43:13 +01:00
James Cole
62d19c3902 New translations 2017-01-24 15:42:34 +01:00
James Cole
19700e7ee3 New translations 2017-01-24 15:42:08 +01:00
James Cole
de3e8edd6d New translations 2017-01-24 15:41:44 +01:00
James Cole
deda48af4a New translations 2017-01-24 15:41:32 +01:00
James Cole
7688d7c619 Include trigger that responds to tags 2017-01-24 15:38:41 +01:00
James Cole
76328b5c45 New translations 2017-01-24 15:11:51 +01:00
James Cole
1de17bf06f New translations 2017-01-24 15:11:31 +01:00
James Cole
6724daf995 New translations 2017-01-24 15:11:11 +01:00
James Cole
7caca053a1 New translations 2017-01-24 15:10:54 +01:00
James Cole
ae1bf8c017 New translations 2017-01-24 15:10:33 +01:00
James Cole
d20b0da438 Approved. Step name: Proofread 2017-01-24 15:10:11 +01:00
James Cole
a0218d7df1 New translations 2017-01-24 15:09:55 +01:00
James Cole
5ae5d67b91 New translations 2017-01-24 15:09:39 +01:00
James Cole
8493ed7603 New translations 2017-01-24 15:09:28 +01:00
James Cole
804b681d40 New translations 2017-01-24 15:09:18 +01:00
James Cole
e8303bd059 Expand the multi-select to various other fields. 2017-01-24 15:07:01 +01:00
James Cole
ac6c5d4e32 New translations 2017-01-24 13:57:08 +01:00
James Cole
90b0d0d52c New translations 2017-01-24 13:37:12 +01:00
James Cole
4093bdbd3e New translations 2017-01-24 13:37:08 +01:00
James Cole
a2097cf981 New translations 2017-01-24 13:27:14 +01:00
James Cole
6a33d0c9dc New translations 2017-01-24 13:27:07 +01:00
James Cole
525d5fb427 New translations 2017-01-24 13:17:40 +01:00
James Cole
e4946b8cd5 New translations 2017-01-24 13:17:35 +01:00
James Cole
76b32df622 Remove nightly. 2017-01-24 12:33:16 +01:00
James Cole
bc1079364d This should fix the nightly. No more hhvm. 2017-01-24 12:24:02 +01:00
James Cole
8602febe9d If/then thing for HHVM 2017-01-24 12:15:52 +01:00
James Cole
d55dfe27dc Updated test script 2017-01-24 12:08:06 +01:00
James Cole
90c16e2a07 Update travis.yml. 2017-01-24 11:49:05 +01:00
James Cole
149c1cd9b1 Approved. Step name: Proofread 2017-01-24 08:17:31 +01:00
James Cole
20f1a43369 Approved. Step name: Proofread 2017-01-24 08:17:20 +01:00
James Cole
e8fb8f993d Approved. Step name: Proofread 2017-01-24 08:07:14 +01:00
James Cole
f0c782dc01 New translations 2017-01-24 08:03:02 +01:00
James Cole
50c13e6d20 New translations 2017-01-24 08:02:44 +01:00
James Cole
69bedd035f New translations 2017-01-24 08:02:30 +01:00
James Cole
85337f0a31 New translations 2017-01-24 08:02:22 +01:00
James Cole
f8a7e2f98e New translations 2017-01-24 08:02:15 +01:00
James Cole
ec90a49d43 New translations 2017-01-24 08:02:07 +01:00
James Cole
5812b150c6 New translations 2017-01-24 08:01:45 +01:00
James Cole
c7ebc7273f Translated 2017-01-24 08:01:36 +01:00
James Cole
5226c87304 Translated 2017-01-24 08:01:35 +01:00
James Cole
25dd1c5d35 New translations 2017-01-24 08:01:31 +01:00
James Cole
c5a9e5e56d New translations 2017-01-24 08:01:26 +01:00
James Cole
47ed70d671 New translations 2017-01-24 08:01:20 +01:00
James Cole
cb5526f469 New translations 2017-01-24 08:01:14 +01:00
James Cole
a4f128077f New translations 2017-01-24 08:01:10 +01:00
James Cole
7140ba76d5 Small language things [skip ci] 2017-01-24 07:53:46 +01:00
James Cole
872e8f2de6 Hip new multi select. 2017-01-24 07:37:29 +01:00
James Cole
6c14e9d083 No sleep for the wicked [skip ci] 2017-01-24 07:26:06 +01:00
James Cole
e4b1812b46 Fix small layout thing [skip ci] 2017-01-23 18:03:17 +01:00
James Cole
1c2c6bb1d0 Various small changes. 2017-01-22 11:23:56 +01:00
James Cole
baefd4f93b Two new rule triggers 2017-01-22 11:23:40 +01:00
James Cole
4270fe07ab Rules now have auto-complete. 2017-01-22 09:15:53 +01:00
James Cole
e4ae925d2b Include typeahead [skip ci] 2017-01-21 13:34:41 +01:00
James Cole
dc599361a4 Removed unused method. 2017-01-21 09:15:33 +01:00
James Cole
738a311f49 Various code cleanup. 2017-01-21 09:07:10 +01:00
James Cole
71f6ba3418 Make request code more uniform. 2017-01-21 08:32:23 +01:00
James Cole
d1d573c408 Fix some tests. 2017-01-20 19:50:32 +01:00
James Cole
50e39a4a75 Update rule controller to have some auto complete functionality. 2017-01-20 19:50:22 +01:00
James Cole
8635fe7ebb Update requests to use uniform methods. 2017-01-20 19:49:35 +01:00
James Cole
6b57d4397a Try with “true” instead of “1”. 2017-01-20 16:27:30 +01:00
James Cole
8f2b898b2b Update some tests. 2017-01-20 16:22:19 +01:00
James Cole
0d1d360d18 Can now clone transaction #538. Wasn’t that difficult. 2017-01-20 12:23:52 +01:00
James Cole
def3b3a155 Fix for #539 2017-01-20 12:23:09 +01:00
James Cole
d344512743 Update update and installation instructions. 2017-01-20 10:08:38 +01:00
James Cole
19eef71133 Make sure all date fields have a fallback. 2017-01-20 08:18:52 +01:00
James Cole
61d58a354e Various code cleanup. 2017-01-20 08:03:26 +01:00
James Cole
be868d37f2 Fixed some issues with the monthly report and missing amounts. 2017-01-19 21:54:27 +01:00
James Cole
20bb151cf3 Add updated_at value. 2017-01-18 07:28:49 +01:00
James Cole
77f889aba6 Include a batch of naughty strings to see what happens to Firefly. 2017-01-16 20:10:47 +01:00
James Cole
1e69a54972 Small JS issue. [skip ci] 2017-01-15 20:18:32 +01:00
James Cole
6b7a47ca28 Clean up JS. 2017-01-15 20:10:34 +01:00
James Cole
c3fdd3b5f7 Allow date picker for browsers that do not support it natively. See issue #535 2017-01-15 20:05:40 +01:00
James Cole
e9f2121667 Fix menu in Firefox. 2017-01-15 19:45:57 +01:00
James Cole
161e9e1e11 Final JS cleanup. 2017-01-15 19:28:54 +01:00
James Cole
e336a45f79 Edit JS file for split transaction 2017-01-15 19:16:46 +01:00
James Cole
9c09f93908 Update views and JS for delete (single) transaction. 2017-01-15 19:08:16 +01:00
James Cole
582398e7f6 Update views and JS for create (single) transaction. 2017-01-15 19:07:31 +01:00
James Cole
b118635abd Update views and JS for edit single transaction. 2017-01-15 19:00:06 +01:00
James Cole
ac0d4a75b5 Removed forgotten twig comment [skip ci] 2017-01-15 15:46:58 +01:00
James Cole
c212d5c5ea Order by date does not matter in this context. 2017-01-14 21:00:43 +01:00
James Cole
08ac27cccf Fix some scrutiniser issues. 2017-01-14 19:43:33 +01:00
James Cole
0b5cab99cf Fix some scrutiniser issues. 2017-01-14 18:52:52 +01:00
James Cole
cc0057cc56 Rename command [skip ci] 2017-01-14 17:24:30 +01:00
James Cole
1ce49b814b Fix rounding. [skip ci] 2017-01-14 17:23:47 +01:00
James Cole
5bbaaece38 Encryption is optional (but on by default) and a command to switch from one to the other 2017-01-14 17:13:57 +01:00
James Cole
30bc4ccfa7 More date fixes [skip ci] 2017-01-13 21:16:54 +01:00
James Cole
4f64f1d754 Force order by. [skip ci] 2017-01-13 21:14:46 +01:00
James Cole
c0e578dd47 Fix bug found by persistent user who kept mailing me about broken charts. Which turned out to be broken indeed! 2017-01-13 21:12:59 +01:00
James Cole
2b82fca2cf Small various bugs. 2017-01-13 20:48:51 +01:00
James Cole
f0028b33e9 Double check that deleted transaction journals are not included. 2017-01-13 16:12:09 +01:00
James Cole
7ddea23375 Merge branch 'master' into develop
* master:
  add firefly locales to Dockerfile fixes #521 for docker environment
  Code for 4.1.6
2017-01-12 20:58:06 +01:00
James Cole
83edccacc6 Delete CONTRIBUTING 2017-01-12 09:40:12 +01:00
James Cole
75e95d6452 With markdown 2017-01-12 09:39:53 +01:00
James Cole
423bb4bbcd Better layout 2017-01-12 09:37:12 +01:00
James Cole
43585c563c Merge pull request #534 from elohmeier/master
add firefly locales to Dockerfile
2017-01-12 08:48:58 +01:00
Enno Lohmeier
2564a41d05 add firefly locales to Dockerfile
fixes #521 for docker environment
2017-01-12 00:30:33 +01:00
James Cole
a0bb1e3625 CSS fix for #533 2017-01-10 19:55:52 +01:00
James Cole
9b4fd57f51 Optimize new JS code. 2017-01-10 18:35:00 +01:00
James Cole
e67709e339 Make index significantly simpler. 2017-01-10 18:25:03 +01:00
James Cole
0c4e913f30 New translations 2017-01-10 13:06:37 +01:00
James Cole
c6de0e51c7 New translations 2017-01-10 13:06:29 +01:00
James Cole
69e85adadf New translations 2017-01-10 12:54:39 +01:00
James Cole
b34068207f New translations 2017-01-10 12:54:32 +01:00
James Cole
68b7b4b3a4 New translations 2017-01-10 12:45:24 +01:00
James Cole
5e3ee30e66 New translations 2017-01-10 12:45:15 +01:00
James Cole
aaf7d12b46 New translations 2017-01-10 12:45:12 +01:00
James Cole
729a348657 New translations 2017-01-10 12:36:17 +01:00
James Cole
0fca6eb810 Merge branch 'release/4.3.2' 2017-01-09 18:20:32 +01:00
James Cole
5a0ae8530c Update version info [skip ci] 2017-01-09 18:19:47 +01:00
James Cole
7949c9ad74 Updated composer.lock file 2017-01-09 18:19:18 +01:00
James Cole
6fb9362f7e Updated changelog [skip ci] 2017-01-09 18:17:03 +01:00
James Cole
3481d364cc Merge pull request #520 from firefly-iii/l10n_develop
New Crowdin translations
2017-01-09 18:05:25 +01:00
James Cole
373b9cdd9f A better tag overview as preparation for #525 2017-01-09 17:57:29 +01:00
James Cole
75af63e6ac New translations 2017-01-09 17:04:01 +01:00
James Cole
5aa62a1be4 New translations 2017-01-09 16:52:44 +01:00
James Cole
aede8bf0e0 New translations 2017-01-09 16:42:59 +01:00
James Cole
9ab7abcb95 New translations 2017-01-08 18:38:55 +01:00
James Cole
f87b28afd9 Translated 2017-01-08 18:38:45 +01:00
James Cole
8661f6d1ac New translations 2017-01-08 18:33:12 +01:00
James Cole
4536b4b2b4 New translations 2017-01-08 18:33:08 +01:00
James Cole
655f03940b Approved. Step name: Proofread 2017-01-08 18:33:02 +01:00
James Cole
4122de7823 New translations 2017-01-08 18:32:53 +01:00
James Cole
0f4c67d24e New translations 2017-01-08 18:32:50 +01:00
James Cole
20e8c45819 New translations 2017-01-08 18:32:45 +01:00
James Cole
2b8b844fb2 New translations 2017-01-08 18:32:32 +01:00
James Cole
3284b8764f New translations 2017-01-08 18:32:21 +01:00
James Cole
d19946336e New translations 2017-01-08 18:32:14 +01:00
James Cole
770a220808 New translations 2017-01-08 18:31:52 +01:00
James Cole
78b71e72f1 Fix amount remove from piggy bug. 2017-01-08 18:23:07 +01:00
James Cole
19990f49b0 Update amount thing, simpler code (I hope). Includes config for negative values. 2017-01-08 17:54:52 +01:00
James Cole
8208d44466 This should fix locale information for specific languages. It’s not perfect yet though. 2017-01-08 16:55:02 +01:00
James Cole
002b2b6dee New translations 2017-01-08 13:51:40 +01:00
James Cole
c207167b14 New translations 2017-01-08 13:41:43 +01:00
James Cole
cfc066e911 New translations 2017-01-08 13:41:41 +01:00
James Cole
3a1d011841 New translations 2017-01-08 13:41:40 +01:00
James Cole
7d05c0da9c New translations 2017-01-08 13:41:39 +01:00
James Cole
1d7f2ca9e4 New translations 2017-01-08 13:31:46 +01:00
James Cole
ea2e0d7546 New translations 2017-01-08 13:31:42 +01:00
James Cole
64b79ee64c New translations 2017-01-08 13:31:38 +01:00
James Cole
8a00101470 Fix tests, remove some logging. 2017-01-08 11:41:09 +01:00
James Cole
01aba73f5b Forgot “show all” link [skip ci] 2017-01-08 10:20:59 +01:00
James Cole
71e31346e8 Better views for #475 2017-01-08 10:19:10 +01:00
James Cole
483cce9880 New translations 2017-01-07 16:02:10 +01:00
James Cole
c8db39a91e New translations 2017-01-07 15:51:56 +01:00
James Cole
6d398a2edf Added shiny new loading styles. [skip ci] 2017-01-07 08:08:37 +01:00
James Cole
bd3c8119ba Update composer.json because Twig and Twigbridge aren’t playing nice. 2017-01-06 14:51:04 +01:00
James Cole
16aa78d13c These changes fix #528 2017-01-06 14:50:32 +01:00
James Cole
3be5cca60a Use Crypt in attachment repository [skip ci] 2017-01-06 13:54:55 +01:00
James Cole
bc3dfb96fd New translations 2017-01-06 13:42:32 +01:00
James Cole
e78e98a6cf New translations 2017-01-06 13:42:26 +01:00
James Cole
9db0e48f63 Fixes #526 2017-01-05 21:32:54 +01:00
James Cole
3de52b6bc1 Some new files for layout [skip ci] 2017-01-05 21:05:34 +01:00
James Cole
be52abbe3b Add no-print tag to options box. [skip ci] 2017-01-05 21:02:24 +01:00
James Cole
ac55b0fafb This should fix the print thing. [skip ci] 2017-01-05 21:01:16 +01:00
James Cole
887b6789fc Translated 2017-01-05 11:02:31 +01:00
James Cole
ff50fec112 New translations 2017-01-05 10:42:40 +01:00
James Cole
4538ef3cf9 Various small optimisations [skip ci] 2017-01-05 10:06:46 +01:00
James Cole
a872cf7061 Renamed the other method. 2017-01-05 09:10:04 +01:00
James Cole
2d8ca363db Gave method old name back. 2017-01-05 09:08:35 +01:00
James Cole
8e8b011587 Removed unused budget methods. 2017-01-05 09:07:56 +01:00
James Cole
4241ae035e Add two new “spentInPeriod” methods that use the collector and not big queries. 2017-01-05 09:07:04 +01:00
James Cole
3ef569d280 Respond to empty account collection #524 2017-01-05 09:04:12 +01:00
James Cole
6fe28b15df Add some phpdoc [skip ci] 2017-01-05 08:56:14 +01:00
James Cole
a609a47138 Fix tests. 2017-01-05 08:52:45 +01:00
James Cole
b575b87f77 Refactor method to original name #524 2017-01-05 08:48:16 +01:00
James Cole
7c5ee8a67d Refactor method to original name #524 2017-01-05 08:47:45 +01:00
James Cole
452c14bece Refactor method to original name #524 2017-01-05 08:47:09 +01:00
James Cole
57f63ba752 Clean up class #524 2017-01-05 08:45:10 +01:00
James Cole
5f153b8a01 Fix a test 2017-01-05 08:45:01 +01:00
James Cole
1be49876df Remove complicated no longer used methods #524 2017-01-05 08:41:37 +01:00
James Cole
a79b2a7773 Remove old method and another unused method #524 2017-01-05 08:41:11 +01:00
James Cole
cdf6e5a487 Remove old method #524 2017-01-05 08:40:26 +01:00
James Cole
7c82f45604 Refactor code to use new “earned in period” method. #524 2017-01-05 08:40:05 +01:00
James Cole
4d49701203 Add new “earned in period” method. #524 2017-01-05 08:39:46 +01:00
James Cole
d48cc69898 Removed old versions of methods #524 2017-01-05 08:34:22 +01:00
James Cole
af466a1d75 Refactor code to verify these methods work #524 2017-01-05 08:33:22 +01:00
James Cole
b9599d3aa1 Add two methods that have a different way of collecting information #524 2017-01-05 08:33:04 +01:00
James Cole
dbebfe7c07 Remove unused method. 2017-01-05 08:32:31 +01:00
James Cole
ddf54fdb83 New translations 2017-01-04 17:33:38 +01:00
James Cole
619138d294 New translations 2017-01-04 17:33:30 +01:00
James Cole
126b19bf2d New translations 2017-01-04 17:32:55 +01:00
James Cole
cc76adf7b6 New translations 2017-01-04 17:32:51 +01:00
James Cole
83bcb56a6a New translations 2017-01-04 17:32:46 +01:00
James Cole
6e88a70661 New translations 2017-01-04 17:32:37 +01:00
James Cole
6755a9878b New translations 2017-01-04 17:32:23 +01:00
James Cole
b8ef7593ee Approved. Step name: Proofread 2017-01-04 17:32:09 +01:00
James Cole
602cc26f0f Translated 2017-01-04 17:32:05 +01:00
James Cole
62271fe064 New translations 2017-01-04 17:32:00 +01:00
James Cole
83f5f776a6 Code for #522 2017-01-04 17:25:28 +01:00
James Cole
2a5566a820 New translations 2017-01-04 17:02:21 +01:00
James Cole
398e547d06 New translations 2017-01-04 14:52:14 +01:00
James Cole
ba957196da Make sure correct locale is used. Debug info. #521 [skip ci] 2017-01-04 13:14:06 +01:00
James Cole
b5c4a24133 Translated 2017-01-04 10:51:54 +01:00
James Cole
cc688dc112 New translations 2017-01-04 10:51:52 +01:00
James Cole
91b5eaff80 New translations 2017-01-04 10:51:50 +01:00
James Cole
4a52503cb3 New translations 2017-01-04 10:42:07 +01:00
James Cole
bcd7e7ea94 New translations 2017-01-04 10:31:48 +01:00
James Cole
ba9ae54fbb New translations 2017-01-04 10:31:46 +01:00
James Cole
39e05c9991 New translations 2017-01-04 10:31:42 +01:00
James Cole
8962f90bcc New translations 2017-01-04 10:22:15 +01:00
James Cole
daf3a95db0 Updated laravel, removed GitHub move announcement. 2017-01-04 09:28:49 +01:00
James Cole
1c9ebafe2b Fix password reset routine. 2017-01-04 09:15:41 +01:00
James Cole
00b3df4455 Approved. Step name: Proofread 2017-01-04 05:13:14 +01:00
James Cole
600c3e75bb Merge branch 'release/4.3.1' 2017-01-04 05:06:13 +01:00
James Cole
6349fccd0f Merge pull request #518 from firefly-iii/l10n_develop
New Crowdin translations
2017-01-04 05:05:26 +01:00
James Cole
6ececdad26 New translations 2017-01-04 05:04:11 +01:00
James Cole
c67f1a7b93 New translations 2017-01-04 05:04:05 +01:00
James Cole
8617ea760a Approved. Step name: Proofread 2017-01-04 05:03:56 +01:00
James Cole
41a2406f07 New translations 2017-01-04 05:03:46 +01:00
James Cole
adae8e45a9 New translations 2017-01-04 05:03:42 +01:00
James Cole
e346ae533d New translations 2017-01-04 05:03:35 +01:00
James Cole
31789255c9 New translations 2017-01-04 05:03:19 +01:00
James Cole
dbe6edd133 New translations 2017-01-04 05:03:09 +01:00
James Cole
7cfbcec56e New translations 2017-01-04 05:02:52 +01:00
James Cole
9f9a055f64 New translations 2017-01-04 05:02:28 +01:00
James Cole
d3614d3505 New strings for translation [skip ci] 2017-01-04 04:57:04 +01:00
James Cole
800f67908e New change log. 2017-01-04 04:49:07 +01:00
James Cole
e2c613c422 New config. 2017-01-04 04:48:58 +01:00
James Cole
457037ed99 Should not be a final class, dummy. 2017-01-03 20:05:20 +01:00
James Cole
f9f21efd36 Update config to fix #519 2017-01-03 20:02:48 +01:00
James Cole
2d59b6718d Various code style fixes. 2017-01-03 17:46:08 +01:00
James Cole
0c6d213296 Update scrutiniser configuration. 2017-01-03 17:26:31 +01:00
James Cole
c34fb7f037 Cleaned up the category and budget pie charts. 2017-01-03 17:02:17 +01:00
James Cole
796be319b7 Piggy banks for #511 [skip ci] 2017-01-03 08:27:48 +01:00
James Cole
d28fcdc6a5 Translated 2017-01-02 23:12:00 +01:00
James Cole
d0afcb6cfa New translations 2017-01-02 23:11:57 +01:00
James Cole
7bd4de937a New translations 2017-01-02 23:11:54 +01:00
James Cole
3025693178 New translations 2017-01-02 23:01:50 +01:00
James Cole
c9cc3bf3ff New translations 2017-01-02 22:51:33 +01:00
James Cole
1f670f7a05 New translations 2017-01-02 22:51:31 +01:00
James Cole
48d735b53b New translations 2017-01-02 22:41:29 +01:00
James Cole
b91f6c7ce6 More alignment for #511 2017-01-02 21:04:17 +01:00
James Cole
ad116d1959 Various code cleanup [skip ci] 2017-01-02 20:42:29 +01:00
James Cole
a0de10870d New translations 2017-01-02 20:12:12 +01:00
James Cole
eb0c00896f New translations 2017-01-02 20:01:56 +01:00
James Cole
deccd4e9fe New translations 2017-01-02 19:51:50 +01:00
James Cole
8be4ec08ad New translations 2017-01-02 19:41:48 +01:00
James Cole
59ad0624f2 New translations 2017-01-02 19:32:00 +01:00
James Cole
f0c69ca84f New translations 2017-01-02 19:31:58 +01:00
James Cole
3ba1c07f68 New translations 2017-01-02 19:31:56 +01:00
James Cole
14cd4aaac8 New translations 2017-01-02 19:31:54 +01:00
James Cole
8a1fae5d9d New translations 2017-01-02 19:31:51 +01:00
James Cole
e323f5a2d5 This should fix most amounts for #511 2017-01-02 19:27:27 +01:00
James Cole
c5c1cbd66f New translations 2017-01-02 19:21:45 +01:00
James Cole
4cc9dbbe6a New translations 2017-01-02 19:21:42 +01:00
James Cole
3649991ad6 New translations 2017-01-02 19:11:55 +01:00
James Cole
1d25691aa2 New translations 2017-01-02 19:02:01 +01:00
James Cole
235076b465 New translations 2017-01-02 19:02:00 +01:00
James Cole
c2670fa379 New translations 2017-01-02 19:01:58 +01:00
James Cole
a769a5391d New translations 2017-01-02 19:01:55 +01:00
James Cole
1f58c46f67 New translations 2017-01-02 18:51:46 +01:00
James Cole
f4c9f2d0e7 New translations 2017-01-02 18:51:43 +01:00
James Cole
851b9136fe New translations 2017-01-02 18:51:41 +01:00
James Cole
0fe10e470d New translations 2017-01-02 18:41:49 +01:00
James Cole
8c8ea17fac New translations 2017-01-02 18:41:46 +01:00
James Cole
7c546b8d3a New translations 2017-01-02 18:32:01 +01:00
James Cole
63334a61ad New translations 2017-01-02 18:31:59 +01:00
James Cole
f61e65cf54 New translations 2017-01-02 18:31:56 +01:00
James Cole
05bf752629 Translated 2017-01-02 18:21:54 +01:00
James Cole
5096a90e34 New translations 2017-01-02 18:21:52 +01:00
James Cole
03792b3905 New translations 2017-01-02 18:12:05 +01:00
James Cole
995b049a5f New translations 2017-01-02 18:12:03 +01:00
James Cole
bde37ec2c7 New translations 2017-01-02 18:12:00 +01:00
James Cole
d6b3fe7e1b New translations 2017-01-02 18:02:21 +01:00
James Cole
954b394987 New translations 2017-01-02 15:32:39 +01:00
James Cole
97dae6dde5 New translations 2017-01-02 15:32:37 +01:00
James Cole
fe039500d6 New translations 2017-01-02 15:32:36 +01:00
James Cole
6952957794 New translations 2017-01-02 15:32:34 +01:00
James Cole
01cc97ad55 New translations 2017-01-02 15:32:32 +01:00
James Cole
b5c8e005e2 New translations 2017-01-02 15:32:28 +01:00
James Cole
1c2602438f New translations 2017-01-02 15:32:19 +01:00
James Cole
33da756a2f New translations 2017-01-02 15:32:18 +01:00
James Cole
488d4a38b8 New translations 2017-01-02 15:32:04 +01:00
James Cole
e60f60b0f8 New translations 2017-01-02 15:32:03 +01:00
James Cole
8aa2e3d2f5 Various code cleanup. 2017-01-02 15:22:30 +01:00
James Cole
d5f65e5d07 New translations 2017-01-02 15:22:00 +01:00
James Cole
c8511a6e2a New translations 2017-01-02 15:12:14 +01:00
James Cole
379b15be1d New translations 2017-01-02 14:51:54 +01:00
James Cole
2ee1fea293 New translations 2017-01-02 14:41:48 +01:00
James Cole
4385d71c6f New translations 2017-01-02 14:31:56 +01:00
James Cole
cf6ea64aba New translations 2017-01-02 14:22:06 +01:00
James Cole
101317cb16 New translations 2017-01-02 14:22:04 +01:00
James Cole
5990a21c46 Translated 2017-01-02 14:22:02 +01:00
James Cole
a9bc007327 New translations 2017-01-02 14:22:00 +01:00
James Cole
0c71770b1d New translations 2017-01-02 12:41:57 +01:00
James Cole
5bae7e9bdb New translations 2017-01-02 12:31:51 +01:00
James Cole
1818a596fe Translated 2017-01-02 12:21:47 +01:00
James Cole
8f7541b841 New translations 2017-01-02 12:21:45 +01:00
James Cole
090546cda3 New translations 2017-01-02 12:21:43 +01:00
James Cole
dcd89d38e7 Small JS fixes [skip ci] 2017-01-02 12:18:29 +01:00
James Cole
800478d437 Add support for Polish #517 [skip ci] 2017-01-02 12:18:18 +01:00
James Cole
f797344106 Default values [skip ci] 2017-01-02 12:15:33 +01:00
James Cole
9352ee3e25 Various Javascript fixes. 2017-01-02 12:09:46 +01:00
James Cole
811026dc4a Merge pull request #512 from firefly-iii/l10n_develop
New Crowdin translations
2017-01-02 11:48:57 +01:00
James Cole
479a4dac7b Missing translations [skip ci] #517 2017-01-02 11:41:14 +01:00
James Cole
499fbbeb17 New translations 2017-01-02 11:31:45 +01:00
James Cole
a35bcf6415 New translations 2017-01-02 11:21:43 +01:00
James Cole
818ffdfc85 New translations 2017-01-02 11:02:27 +01:00
James Cole
d5e19c7ac0 New translations 2017-01-02 11:02:26 +01:00
James Cole
37639b0ff4 New translations 2017-01-02 11:02:25 +01:00
James Cole
740d89dce6 New translations 2017-01-02 11:02:23 +01:00
James Cole
4a7b08fc4e New translations 2017-01-02 11:02:21 +01:00
James Cole
48a5f83f00 New translations 2017-01-02 11:02:20 +01:00
James Cole
48819c928d New translations 2017-01-02 11:02:18 +01:00
James Cole
45a6866dd0 New translations 2017-01-02 11:02:16 +01:00
James Cole
6690586406 New translations 2017-01-02 11:02:15 +01:00
James Cole
909e54845c New translations 2017-01-02 11:02:13 +01:00
James Cole
a7204eb9fa New translations 2017-01-02 11:02:10 +01:00
James Cole
6463166c00 New translations 2017-01-02 11:02:07 +01:00
James Cole
f8268a864b This should fix most Javascript errors. 2017-01-02 10:34:01 +01:00
James Cole
721fff29b3 Approved. Step name: Proofread 2017-01-02 10:12:07 +01:00
James Cole
4cf312d3d4 Approved. Step name: Proofread 2017-01-02 10:12:04 +01:00
James Cole
36f1b6a834 New account tests. 2017-01-02 10:05:02 +01:00
James Cole
050d7e8f00 Remove specific commands from composer installation routine. 2017-01-02 09:53:22 +01:00
James Cole
7c5bed2bb5 Fix export controller tests. 2017-01-02 09:23:24 +01:00
James Cole
87316cf7c1 Include local JS directory. [skip ci] 2017-01-02 09:09:37 +01:00
James Cole
f7d61e5a9b Update scrutinizer config. 2017-01-02 09:02:58 +01:00
James Cole
b2030a72a0 Fix some javascript things [skip ci] 2017-01-02 08:46:45 +01:00
James Cole
533797fc9e Update javascript code. 2017-01-02 08:30:20 +01:00
James Cole
5688234b9d New translations 2017-01-02 08:23:00 +01:00
James Cole
9335789362 New translations 2017-01-02 08:22:55 +01:00
James Cole
9e6a2a3fa4 New translations 2017-01-02 08:22:49 +01:00
James Cole
122fc77357 New translations 2017-01-02 08:22:35 +01:00
James Cole
c978e7965f New translations 2017-01-02 08:22:30 +01:00
James Cole
b0e4e24603 New translations 2017-01-02 08:22:25 +01:00
James Cole
56de307a3e New translations 2017-01-02 08:22:18 +01:00
James Cole
e1dd9ed41b New translations 2017-01-02 08:21:54 +01:00
James Cole
17a64764d3 New translations 2017-01-02 08:21:49 +01:00
James Cole
3cd0540474 Missing language lines [skip ci] 2017-01-02 08:13:10 +01:00
James Cole
27cd9fac8a This fixes #513 [skip ci] 2017-01-02 08:07:28 +01:00
James Cole
1d2012cc23 New translations 2017-01-01 20:42:59 +01:00
James Cole
1b00835dd1 New translations 2017-01-01 20:42:54 +01:00
James Cole
413dcf8164 New translations 2017-01-01 20:42:48 +01:00
James Cole
7f17e8fb2f New translations 2017-01-01 20:42:36 +01:00
James Cole
254d8994d0 New translations 2017-01-01 20:42:30 +01:00
James Cole
4f72519ad9 New translations 2017-01-01 20:42:23 +01:00
James Cole
900b246183 New translations 2017-01-01 20:42:17 +01:00
James Cole
abddb29f37 New translations 2017-01-01 20:41:56 +01:00
James Cole
8d429ef753 New translations 2017-01-01 20:41:50 +01:00
James Cole
b7679b5c60 Updated composer.lock. 2017-01-01 20:33:38 +01:00
James Cole
49982d6eb1 Updated various links to reflect the new repository location [skip ci] 2017-01-01 20:32:39 +01:00
James Cole
3191a6c12b Update readme [skip ci] 2017-01-01 20:21:51 +01:00
James Cole
32f8747f2e Update read [skip ci] 2017-01-01 20:14:32 +01:00
James Cole
38e45a62cf New translations 2017-01-01 20:13:12 +01:00
James Cole
c0e2e78780 New translations 2017-01-01 20:13:06 +01:00
James Cole
3fe3ddbc49 New translations 2017-01-01 20:12:59 +01:00
James Cole
5ca532a54a New translations 2017-01-01 20:12:48 +01:00
James Cole
a120df090a New translations 2017-01-01 20:12:43 +01:00
James Cole
22d359503a New translations 2017-01-01 20:12:38 +01:00
James Cole
e8d84abe43 New translations 2017-01-01 20:12:32 +01:00
James Cole
98937cedaa New translations 2017-01-01 20:12:10 +01:00
James Cole
d592d6cd7a New translations 2017-01-01 20:12:04 +01:00
James Cole
0341a04ee3 Warning about locale. [skip ci] 2017-01-01 20:10:30 +01:00
James Cole
540fc4f924 Fix sort [skip ci] 2017-01-01 17:01:29 +01:00
James Cole
04290bf9b6 Fix small issue with piggy banks. 2017-01-01 16:55:18 +01:00
James Cole
ecbc0c1778 Speed up various tests. 2016-12-30 14:24:16 +01:00
James Cole
44b8e48c3a Fix tests. 2016-12-30 13:54:11 +01:00
James Cole
a5036c86dc Updated test database. 2016-12-30 13:47:23 +01:00
James Cole
ac86e75233 Updated various files for #506 2016-12-30 13:45:02 +01:00
James Cole
9ec3febbfa Do not round pie chart values. #506 2016-12-30 12:00:37 +01:00
James Cole
1c5dc6ab6d Don’t round amount when exporting #506 2016-12-30 11:58:23 +01:00
James Cole
abb8eafec2 Fix tests. 2016-12-30 11:57:21 +01:00
James Cole
eb8f5512c5 Charts will respect decimal places #506 2016-12-30 11:51:58 +01:00
James Cole
d146476c91 Sort a nasty bug in budget limit collection #508 2016-12-30 09:02:48 +01:00
James Cole
7a57670925 Fix small bug in database verifier. [skip ci] 2016-12-30 08:51:26 +01:00
James Cole
8a49e98246 Fix small bug in database verifier. [skip ci] 2016-12-30 08:49:27 +01:00
James Cole
cf0845d190 Reinstated limit repetitions call #508 [skip ci] 2016-12-30 08:44:48 +01:00
James Cole
02bbdcc251 Fix reports and charts for #508 2016-12-30 08:41:48 +01:00
James Cole
13f6bd759b Views must pick up on this #508 2016-12-30 07:39:42 +01:00
James Cole
497400587d Update budget limit #508 2016-12-29 20:52:02 +01:00
James Cole
a58cd83ea7 Fixed routes and budgets.index #508 2016-12-29 20:48:33 +01:00
James Cole
3f802fe27a Removed limit repetition events #508 2016-12-29 20:48:12 +01:00
James Cole
6a13dd317d Will also upgrade database. #508 2016-12-29 20:19:20 +01:00
James Cole
a442d3d952 Migration for #508 2016-12-29 19:35:27 +01:00
James Cole
0d4febff85 New test database just to be sure. 2016-12-29 18:20:49 +01:00
James Cole
ba222eaf77 No changes to budget limit for now. 2016-12-29 18:10:29 +01:00
James Cole
b14719464c No changes to budget limit for now. 2016-12-29 18:10:14 +01:00
James Cole
c756b80962 These are changes to budget limit. FF must work with them. 2016-12-29 18:01:06 +01:00
James Cole
a54a886bf0 Chart was negative. [skip ci] 2016-12-29 17:56:12 +01:00
James Cole
dbe9628cc5 Update to budget limits. 2016-12-29 17:43:11 +01:00
James Cole
7a3b39886e Changed to budget controller chart. 2016-12-29 17:42:46 +01:00
James Cole
fab511cc53 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
2016-12-29 10:30:16 +01:00
James Cole
4979d9d0bf Merge pull request #507 from JC5/l10n_develop
New Crowdin translations
2016-12-29 10:29:59 +01:00
James Cole
45914b2e9e First set of views will respect decimal places configuration. 2016-12-29 09:15:50 +01:00
James Cole
1e9aaf2d2a Code cleanup. [skip ci] 2016-12-29 09:05:02 +01:00
James Cole
de56c18c6e Clean up some money formatting routines. 2016-12-29 09:02:23 +01:00
James Cole
eaefb7136a Looks like somebody had to google how the decimal thing works. 2016-12-28 22:21:55 +01:00
James Cole
fe9344cd0a Round on max number of decimals #506 2016-12-28 21:55:46 +01:00
James Cole
f010c17ae6 Up the scales for #506 2016-12-28 21:55:09 +01:00
James Cole
f63cd74965 New translations 2016-12-28 21:52:46 +01:00
James Cole
9e8f8f76a4 New translations 2016-12-28 21:52:43 +01:00
James Cole
d88c6a82d0 New translations 2016-12-28 21:52:41 +01:00
James Cole
a8fdf7ffad New translations 2016-12-28 21:52:36 +01:00
James Cole
245389d74f New translations 2016-12-28 21:52:33 +01:00
James Cole
26933637dd New translations 2016-12-28 21:52:31 +01:00
James Cole
98312ac554 New translations 2016-12-28 21:52:25 +01:00
James Cole
1ba03088c9 New translations 2016-12-28 21:52:21 +01:00
James Cole
c0dfc554b3 New translations 2016-12-28 21:52:18 +01:00
James Cole
5c691491e8 New translations 2016-12-28 21:52:15 +01:00
James Cole
9731b59174 New translations 2016-12-28 21:52:12 +01:00
James Cole
52bf358978 New translations 2016-12-28 21:52:07 +01:00
James Cole
c92a56c980 New translations 2016-12-28 21:52:04 +01:00
James Cole
3142151fc3 New translations 2016-12-28 21:51:47 +01:00
James Cole
fb555f5b96 New translations 2016-12-28 21:51:44 +01:00
James Cole
8f1c693d3d New translations 2016-12-28 21:51:41 +01:00
James Cole
b8a8becd0c New translations 2016-12-28 21:51:39 +01:00
James Cole
b71abd3f6a Approved. Step name: Proofread 2016-12-28 21:51:33 +01:00
James Cole
9ae74b4278 Expand views to allow editing of currency decimals #506 2016-12-28 21:48:37 +01:00
James Cole
bdbf434006 Increase number of decimals. #506 2016-12-28 21:34:02 +01:00
James Cole
1a5e93c739 Merge pull request #505 from JC5/l10n_develop
New Crowdin translations
2016-12-28 19:59:52 +01:00
James Cole
8e42ba74c6 New translations 2016-12-28 19:03:10 +01:00
James Cole
42bb083e99 New translations 2016-12-28 19:03:05 +01:00
James Cole
ae4eecc7f2 New translations 2016-12-28 19:02:59 +01:00
James Cole
c4f25b6191 New translations 2016-12-28 19:02:49 +01:00
James Cole
29b200040f New translations 2016-12-28 19:02:44 +01:00
James Cole
7cb1598fb1 New translations 2016-12-28 19:02:39 +01:00
James Cole
65b6f162d8 New translations 2016-12-28 19:02:31 +01:00
James Cole
c56d2e08f4 New translations 2016-12-28 19:02:10 +01:00
James Cole
ca0a0886b1 New translations 2016-12-28 19:02:04 +01:00
James Cole
e9822ae1a3 Code cleanup. [skip ci] 2016-12-28 19:00:39 +01:00
James Cole
04b284f030 No longer able to manage blocked domains. 2016-12-28 18:57:15 +01:00
James Cole
9ef24c0a43 Registration process no longer cares about blocked domains or previously deleted users. 2016-12-28 18:54:15 +01:00
James Cole
7ee650ba7a Some code cleanup [skip ci] 2016-12-28 18:49:30 +01:00
James Cole
96cafed154 New translations 2016-12-28 18:33:05 +01:00
James Cole
f65c2ff4fb New translations 2016-12-28 18:33:01 +01:00
James Cole
121deec62f New translations 2016-12-28 18:32:56 +01:00
James Cole
838d0808c0 New translations 2016-12-28 18:32:42 +01:00
James Cole
974fbe9e5b New translations 2016-12-28 18:32:37 +01:00
James Cole
f26f94ad3b New translations 2016-12-28 18:32:32 +01:00
James Cole
7410f1944c New translations 2016-12-28 18:32:12 +01:00
James Cole
c34947f657 New translations 2016-12-28 18:32:06 +01:00
James Cole
54092118e1 Approved. Step name: Proofread 2016-12-28 18:31:57 +01:00
James Cole
866a7d7401 Add missing translation [skip ci] 2016-12-28 18:27:32 +01:00
James Cole
32ab916707 Remove debug text [skip ci] 2016-12-28 18:26:44 +01:00
James Cole
1a245f1303 Fix import command instruction [skip ci] #504 2016-12-28 18:22:20 +01:00
James Cole
a23c61ee3c Fix tests 2016-12-28 17:14:32 +01:00
James Cole
f44336f7aa Remove a lot of stuff that deals with user activation. 2016-12-28 17:07:44 +01:00
James Cole
98d4bc48b6 Users can no longer be required to activate their account. They are always activated. 2016-12-28 16:55:53 +01:00
James Cole
a3f1b72bac Admin area reports on less user details. 2016-12-28 16:46:57 +01:00
James Cole
a37f70947b Various code cleanup. 2016-12-28 16:45:44 +01:00
James Cole
71195aa789 Merge pull request #503 from JC5/l10n_develop
New Crowdin translations
2016-12-28 15:16:31 +01:00
James Cole
f6511bed32 Called the wrong method [skip ci] 2016-12-28 13:05:40 +01:00
James Cole
619500ca64 Various cod e clean up. 2016-12-28 13:02:56 +01:00
James Cole
986d290434 New translations 2016-12-28 13:01:42 +01:00
James Cole
878f8c58bb New translations 2016-12-28 12:11:53 +01:00
James Cole
e067da1fe9 Translated 2016-12-28 12:01:50 +01:00
James Cole
f340c636fe New translations 2016-12-28 12:01:48 +01:00
James Cole
ce260a1a1e New translations 2016-12-28 11:51:38 +01:00
James Cole
a21c9f15e3 New translations 2016-12-28 11:41:39 +01:00
James Cole
e64b778d13 Various small fixes. 2016-12-28 11:34:00 +01:00
James Cole
a1f139f62a Translated 2016-12-28 11:31:16 +01:00
James Cole
8ae1d1c963 New translations 2016-12-28 10:23:19 +01:00
James Cole
8f8016179b New translations 2016-12-28 10:23:17 +01:00
James Cole
2e32e994c3 New translations 2016-12-28 10:23:14 +01:00
James Cole
1575e3b045 New translations 2016-12-28 10:23:11 +01:00
James Cole
9ab5f68601 New translations 2016-12-28 10:23:06 +01:00
James Cole
7fcb806dfe New translations 2016-12-28 10:23:02 +01:00
James Cole
5ae736c7cc New translations 2016-12-28 10:22:50 +01:00
James Cole
d77ba9970b New translations 2016-12-28 10:22:46 +01:00
James Cole
49f97a2c7b New translations 2016-12-28 10:22:42 +01:00
James Cole
659ff89062 New translations 2016-12-28 10:22:38 +01:00
James Cole
5529641bea New translations 2016-12-28 10:22:32 +01:00
James Cole
b38f1d7b2a New translations 2016-12-28 10:22:28 +01:00
James Cole
53ba202b14 New translations 2016-12-28 10:22:08 +01:00
James Cole
11cc333de7 New translations 2016-12-28 10:22:04 +01:00
James Cole
70e47ab4d0 New translations 2016-12-28 10:22:00 +01:00
James Cole
1582b35ae2 New translations 2016-12-28 10:21:58 +01:00
James Cole
62c27cee6c Approved. Step name: Proofread 2016-12-28 10:21:50 +01:00
James Cole
81b8bc9e93 Approved. Step name: Proofread 2016-12-28 10:21:47 +01:00
James Cole
49758c4e72 Remove deprecated settings. 2016-12-28 10:16:20 +01:00
James Cole
001ef4fe1c Removed deprecated event and handlers. (store ip addresses) 2016-12-28 10:08:34 +01:00
James Cole
94d0401f4e Removed deprecated event and handlers. (block use of email and deleted user) 2016-12-28 10:07:36 +01:00
James Cole
2dbd9bd0b1 Removed deprecated event and handlers. (block use of domain) 2016-12-28 10:05:37 +01:00
James Cole
9168c97eb6 Removed deprecated event and handlers. (locked out user) 2016-12-28 10:04:09 +01:00
James Cole
758953b6e3 Removed deprecated event and handlers. (blocked user login) 2016-12-28 10:02:43 +01:00
James Cole
8ccdf9ea83 Removed deprecated event and handlers. 2016-12-28 10:00:58 +01:00
James Cole
9c6a3e4ad5 This fixes the tests. 2016-12-28 09:56:07 +01:00
James Cole
6151d4a0ec Flash info message [skip ci] 2016-12-28 09:45:08 +01:00
James Cole
61014d45f4 Optimize view [skip ci] 2016-12-28 06:19:18 +01:00
James Cole
05a93a2426 Add budget information. [skip ci] 2016-12-28 06:14:58 +01:00
James Cole
a4c7412220 Hide more from account overview [skip ci] 2016-12-28 06:12:21 +01:00
James Cole
94e51952f4 More fields for query. 2016-12-28 06:09:48 +01:00
James Cole
ebdd64f46f Fix small issues in the category overview and the journal collector. 2016-12-28 05:48:41 +01:00
James Cole
2dc70ece44 Some tweaks for #502 2016-12-28 05:25:58 +01:00
James Cole
c23ea5ea76 Start of new change log. 2016-12-28 05:17:07 +01:00
James Cole
6521a7c604 This fixes #501 2016-12-28 05:16:55 +01:00
James Cole
02e792148c Forgot sprintf call. 2016-12-27 22:11:29 +01:00
James Cole
69c350dcca Merge pull request #500 from JC5/l10n_develop
New Crowdin translations
2016-12-27 20:52:16 +01:00
James Cole
1aee3d8e2c Various code cleanup 2016-12-27 20:52:00 +01:00
James Cole
02695d852c Various code cleanup 2016-12-27 20:45:23 +01:00
James Cole
7405138489 Various code cleanup 2016-12-27 20:07:28 +01:00
James Cole
4804257fd1 Various code cleanup 2016-12-27 19:59:56 +01:00
James Cole
67f2e3a32a New translations 2016-12-27 19:42:47 +01:00
James Cole
8d709f9cf4 New translations 2016-12-27 19:42:45 +01:00
James Cole
4d3132f1c9 New translations 2016-12-27 19:42:43 +01:00
James Cole
36b44f1814 New translations 2016-12-27 19:42:42 +01:00
James Cole
32761aeda0 New translations 2016-12-27 19:42:40 +01:00
James Cole
851b05c110 New translations 2016-12-27 19:42:38 +01:00
James Cole
997e951aca New translations 2016-12-27 19:42:32 +01:00
James Cole
448dc6b7c6 New translations 2016-12-27 19:42:30 +01:00
James Cole
84458fa46f New translations 2016-12-27 19:42:29 +01:00
James Cole
50bb8a0d91 New translations 2016-12-27 19:42:27 +01:00
James Cole
997b3c3061 New translations 2016-12-27 19:42:26 +01:00
James Cole
4f240c004c New translations 2016-12-27 19:42:24 +01:00
James Cole
597a8d36af New translations 2016-12-27 19:42:22 +01:00
James Cole
cf52a4c5c2 New translations 2016-12-27 19:42:21 +01:00
James Cole
c29180a094 Add support for Russian [skip ci] 2016-12-27 19:39:39 +01:00
James Cole
10f4304559 New demo text for the import routine. 2016-12-27 19:37:05 +01:00
James Cole
30447bcf70 New stubs for demo user. 2016-12-27 19:34:39 +01:00
James Cole
9ff9385c47 Demo user is no longer capable of uploading files. 2016-12-27 19:34:27 +01:00
James Cole
6c5499e848 Small code cleanup. 2016-12-27 19:34:05 +01:00
James Cole
3bacbe8536 Merge pull request #499 from JC5/l10n_develop
New Crowdin translations
2016-12-27 19:12:53 +01:00
James Cole
09c7a69050 New translations 2016-12-27 17:51:54 +01:00
James Cole
5dc727580f New translations 2016-12-27 17:51:53 +01:00
James Cole
248a4ed527 New translations 2016-12-27 17:51:52 +01:00
James Cole
db95185eee New translations 2016-12-27 17:51:50 +01:00
James Cole
85dae15a0d New translations 2016-12-27 17:51:49 +01:00
James Cole
3e61a1e12b New translations 2016-12-27 17:51:45 +01:00
James Cole
6cd4186ac9 Merge pull request #497 from JC5/l10n_develop
New Crowdin translations
2016-12-27 16:00:47 +01:00
James Cole
cbbadc3d6d Less logging in often used class. 2016-12-27 15:54:49 +01:00
James Cole
fc0024faa2 Can now inform about the lack of certain charts [skip ci] 2016-12-27 15:54:36 +01:00
James Cole
0f3d4062d7 Translated 2016-12-27 15:51:14 +01:00
James Cole
7ba8a88989 Merge pull request #496 from JC5/l10n_develop
New Crowdin translations
2016-12-27 15:47:53 +01:00
James Cole
349d254193 This fixes the tests. 2016-12-27 15:46:52 +01:00
James Cole
be201e811d Clean up report code. 2016-12-27 15:31:17 +01:00
James Cole
84a032fbb4 New translations 2016-12-27 13:12:24 +01:00
James Cole
4815602558 New translations 2016-12-27 13:12:22 +01:00
James Cole
e4b83392be New translations 2016-12-27 13:12:21 +01:00
James Cole
0658c17adb New translations 2016-12-27 13:12:20 +01:00
James Cole
bdc72aee42 New translations 2016-12-27 13:12:18 +01:00
James Cole
689d91e30f New translations 2016-12-27 13:12:17 +01:00
James Cole
6b785e4318 New translations 2016-12-27 13:12:14 +01:00
James Cole
f46cf55912 New translations 2016-12-27 13:12:13 +01:00
James Cole
d520849ce1 Some more demo text [skip ci] 2016-12-27 13:06:41 +01:00
James Cole
50661bbb3b Some more demo text [skip ci] 2016-12-27 13:05:31 +01:00
James Cole
d2d5b1ac76 More subtle currency warning [skip ci] 2016-12-27 11:08:52 +01:00
James Cole
244972e0f8 Better category overview [skip ci] 2016-12-27 11:02:14 +01:00
James Cole
f80e6c2efa New translations 2016-12-27 10:52:55 +01:00
James Cole
e9e32eda3c New translations 2016-12-27 10:52:50 +01:00
James Cole
73844e223f New translations 2016-12-27 10:52:46 +01:00
James Cole
6583a6d9c6 New translations 2016-12-27 10:52:36 +01:00
James Cole
ca4824adcd New translations 2016-12-27 10:52:27 +01:00
James Cole
80b5cc08bb New translations 2016-12-27 10:52:21 +01:00
James Cole
afbcc79a06 New translations 2016-12-27 10:52:12 +01:00
James Cole
3371bd2e04 New translations 2016-12-27 10:52:01 +01:00
James Cole
5efdf53c06 ShowAll method for category 2016-12-27 10:46:11 +01:00
James Cole
c9112de8ba New translations 2016-12-27 10:03:05 +01:00
James Cole
fd4b589a13 New translations 2016-12-27 10:03:00 +01:00
James Cole
df813dbac9 New translations 2016-12-27 10:02:50 +01:00
James Cole
004fb362ec New translations 2016-12-27 10:02:42 +01:00
James Cole
3cd749753a New translations 2016-12-27 10:02:37 +01:00
James Cole
c7964f7693 New translations 2016-12-27 10:02:30 +01:00
James Cole
57bba2fd3f New translations 2016-12-27 10:02:21 +01:00
James Cole
04c9b2a7a8 Approved. Step name: Proofread 2016-12-27 10:02:05 +01:00
James Cole
b9d142c2b7 Small view updates [skip ci] 2016-12-27 09:56:30 +01:00
James Cole
6ab52e282f Merge pull request #495 from JC5/l10n_develop
New Crowdin translations
2016-12-26 15:04:15 +01:00
James Cole
b14adf8c3f New translations 2016-12-26 12:42:09 +01:00
James Cole
4e0b162f5f New translations 2016-12-26 12:42:08 +01:00
James Cole
62d47ff7f0 New translations 2016-12-26 12:42:07 +01:00
James Cole
7f025380f0 New translations 2016-12-26 12:42:06 +01:00
James Cole
7d1e981bca New translations 2016-12-26 12:42:04 +01:00
James Cole
a08103f996 New translations 2016-12-26 12:42:03 +01:00
James Cole
dd4991a4f8 New translations 2016-12-26 12:42:00 +01:00
James Cole
5442292d23 New translations 2016-12-26 12:41:59 +01:00
James Cole
3f050d3d03 Some demo page text [skip ci] 2016-12-26 12:32:48 +01:00
James Cole
ad1e9c27e9 Merge branch 'release/4.3.0' 2016-12-26 10:46:22 +01:00
James Cole
ab761696bf New version indicator. 2016-12-26 10:45:45 +01:00
James Cole
0713273a99 New composer file. 2016-12-26 10:45:19 +01:00
James Cole
5668a3271b Updated change log. 2016-12-26 10:40:28 +01:00
James Cole
1eca105a91 Merge pull request #494 from JC5/l10n_develop
New Crowdin translations
2016-12-26 10:34:00 +01:00
James Cole
3883b99c24 New translations 2016-12-26 10:31:51 +01:00
James Cole
d6adbc697a New translations 2016-12-26 10:31:49 +01:00
James Cole
a5789b1085 New translations 2016-12-26 10:31:48 +01:00
James Cole
a6ccbcb795 New translations 2016-12-26 10:31:47 +01:00
James Cole
1a6067f7ae New translations 2016-12-26 10:31:46 +01:00
James Cole
cb735b18a9 New translations 2016-12-26 10:31:45 +01:00
James Cole
909bd11147 New translations 2016-12-26 10:31:42 +01:00
James Cole
1a76c606ed New translations 2016-12-26 10:31:41 +01:00
James Cole
8c9b6796a1 Approved. Step name: Proofread 2016-12-26 10:31:38 +01:00
James Cole
844ab608d4 More demo text [skip ci] 2016-12-26 10:23:47 +01:00
James Cole
dc39094975 New translations 2016-12-26 10:12:11 +01:00
James Cole
b32184d525 New translations 2016-12-26 10:12:09 +01:00
James Cole
d95ae53ce2 New translations 2016-12-26 10:12:07 +01:00
James Cole
5e3147ddeb New translations 2016-12-26 10:12:06 +01:00
James Cole
9e594c6075 New translations 2016-12-26 10:12:04 +01:00
James Cole
c0058c51ea New translations 2016-12-26 10:12:03 +01:00
James Cole
b0b68d4243 New translations 2016-12-26 10:12:00 +01:00
James Cole
22eb90212d New translations 2016-12-26 10:11:59 +01:00
James Cole
94e264b6ce Expand demo text [skip ci] 2016-12-26 10:00:40 +01:00
James Cole
7ea15761a6 Fix tests. 2016-12-26 09:50:37 +01:00
James Cole
1ced4a089d Update read me [skip ci] 2016-12-26 09:50:28 +01:00
James Cole
648e63628c Extra code for demo site. 2016-12-26 09:33:52 +01:00
James Cole
2847e2aff5 Code for the demo features. 2016-12-26 09:18:45 +01:00
James Cole
9dfaabb5d0 New translations 2016-12-26 09:12:28 +01:00
James Cole
6a21f98ea4 New translations 2016-12-26 09:12:22 +01:00
James Cole
4d5f4cc1c0 New translations 2016-12-26 09:12:14 +01:00
James Cole
970ce6cb0d New translations 2016-12-26 09:12:10 +01:00
James Cole
31cad5de00 New translations 2016-12-26 09:12:05 +01:00
James Cole
e06db9e620 New translations 2016-12-26 09:11:59 +01:00
James Cole
f57ac64dc2 New translations 2016-12-26 09:11:54 +01:00
James Cole
57d7c1623f New translations 2016-12-26 09:11:36 +01:00
James Cole
c86aa9cb3f Can no longer reset the demo user’s password. 2016-12-26 09:08:59 +01:00
James Cole
48209d0d22 Demo user cannot enable two factor auth. 2016-12-26 08:57:07 +01:00
James Cole
8f6a271cc0 Add the ability to prefix cache differently. 2016-12-25 13:38:30 +01:00
James Cole
a9b610f367 New translations 2016-12-25 13:12:12 +01:00
James Cole
1046930f29 New translations 2016-12-25 13:12:00 +01:00
James Cole
1b16e5e216 New translations 2016-12-25 13:11:56 +01:00
James Cole
e16ba9ac70 New translations 2016-12-25 13:11:53 +01:00
James Cole
71ac676b83 New translations 2016-12-25 13:11:47 +01:00
James Cole
1b6c0d5d86 New translations 2016-12-25 13:11:43 +01:00
James Cole
14db016e98 New translations 2016-12-25 13:11:27 +01:00
James Cole
7e2e1626ac Approved. Step name: Proofread 2016-12-25 13:11:15 +01:00
James Cole
bce4e7e2bf Add restrictions for demo accounts. 2016-12-25 13:09:29 +01:00
James Cole
ede327f3d3 Merge pull request #493 from JC5/l10n_develop
New Crowdin translations
2016-12-25 12:59:27 +01:00
James Cole
82718a74dc Fix tests 2016-12-25 12:55:22 +01:00
James Cole
eefd6141a1 Translated 2016-12-25 12:31:05 +01:00
James Cole
7894f1871e Make sure the attachment tests work. 2016-12-25 12:23:36 +01:00
James Cole
0ef9b5b462 Make sure database is present in tests. 2016-12-25 12:06:17 +01:00
James Cole
9ca75d134e This is the test database required to run the tests. 2016-12-25 12:03:21 +01:00
James Cole
b78776e1f7 This generates a lot of logging, let’s remove it. 2016-12-25 11:52:01 +01:00
James Cole
f2f9f8fbab Various bug fixes and extensions to test routine. 2016-12-25 11:50:42 +01:00
James Cole
5b5acba816 Clean up lots of models. 2016-12-24 17:36:51 +01:00
James Cole
9f2729d0ff Removed Firefly’s ability to generate test data. 2016-12-24 14:48:14 +01:00
James Cole
afe98cda9f Various code cleanup things and preparation for a new demo user. 2016-12-24 14:43:42 +01:00
James Cole
9c4d2e8791 Mention $other in chart cache. [skip ci] 2016-12-23 18:48:21 +01:00
James Cole
cea170359f Budget chart. 2016-12-23 18:34:58 +01:00
James Cole
70bb8fbc89 New translations 2016-12-23 17:53:16 +01:00
James Cole
82cd0adca6 New translations 2016-12-23 17:52:57 +01:00
James Cole
e821f5b2b6 New translations 2016-12-23 17:52:51 +01:00
James Cole
4cade467c6 New translations 2016-12-23 17:52:46 +01:00
James Cole
b6c9639948 New translations 2016-12-23 17:52:39 +01:00
James Cole
ca9319db34 New translations 2016-12-23 17:52:33 +01:00
James Cole
beaec9a4c1 New translations 2016-12-23 17:52:11 +01:00
James Cole
cbc44e8200 Approved. Step name: Proofread 2016-12-23 17:51:54 +01:00
James Cole
017b1a481a Committed bad code. 2016-12-23 17:51:33 +01:00
James Cole
e15932fe4a Make budget report actually more useful. 2016-12-23 17:50:26 +01:00
James Cole
08c044fe52 Merge pull request #491 from JC5/l10n_develop
New Crowdin translations
2016-12-23 15:52:34 +01:00
James Cole
0e11245cb4 Fix tests. 2016-12-23 15:52:12 +01:00
James Cole
cde494d3ef Fixed missing chart data. 2016-12-23 15:52:05 +01:00
James Cole
9a15decdff Translated 2016-12-23 15:02:25 +01:00
James Cole
186b986e02 New translations 2016-12-23 07:32:48 +01:00
James Cole
cdbf5653ac New translations 2016-12-23 07:32:34 +01:00
James Cole
c403dd7490 New translations 2016-12-23 07:32:28 +01:00
James Cole
d15d9fdf2a New translations 2016-12-23 07:32:24 +01:00
James Cole
0b618de44c New translations 2016-12-23 07:32:16 +01:00
James Cole
875f19f728 New translations 2016-12-23 07:32:11 +01:00
James Cole
7bb549732c New translations 2016-12-23 07:31:50 +01:00
James Cole
b9baa93ae4 Approved. Step name: Proofread 2016-12-23 07:31:36 +01:00
James Cole
315479fcd3 New translations [skip ci] 2016-12-23 07:24:38 +01:00
James Cole
1f1334a1fc Update chart to show sum 2016-12-23 07:20:47 +01:00
James Cole
bf0744e03a Updated some copyright notices [skip ci] 2016-12-23 07:02:45 +01:00
James Cole
8fb9577660 Add some debug, fix balance report bug. 2016-12-22 21:45:04 +01:00
James Cole
90d58c5c39 Update test scripts [skip ci] 2016-12-22 19:51:49 +01:00
James Cole
b6aa79bb38 Various code cleanup. Removed executable flags, added newlines. 2016-12-22 19:42:45 +01:00
James Cole
14a0de6b6a This should fix account-number. 2016-12-22 19:18:35 +01:00
James Cole
13e56b7249 Can handle account number, but do nothing with it. 2016-12-22 19:17:33 +01:00
James Cole
3753901e38 Expand flush routine because of issues. [skip ci] 2016-12-22 18:26:16 +01:00
James Cole
e76075e29f Various small fixes. 2016-12-22 18:19:50 +01:00
James Cole
284db7f90b Fixed some small display issues. 2016-12-22 17:04:41 +01:00
James Cole
cabdf4e380 This might fix the missing stack trace. [skip ci] 2016-12-22 16:55:27 +01:00
James Cole
9859052c4d Code for issue #489 2016-12-22 16:36:56 +01:00
James Cole
0feeac9160 Removed some unused imports [skip ci] 2016-12-22 15:24:16 +01:00
James Cole
54b33a0b69 Removed views no longer used. 2016-12-22 07:13:49 +01:00
James Cole
e08e7b2c9b Speed up some tests. 2016-12-22 07:13:37 +01:00
James Cole
782e2add88 Fix sort URI, smaller view [skip ci] 2016-12-21 20:34:47 +01:00
James Cole
f18a5a6f1b This fixes the broken tests. 2016-12-21 20:32:02 +01:00
James Cole
6fc971c4cb This is a fix for #487 2016-12-21 20:31:44 +01:00
James Cole
3250c4830d New seeds plus the preparation for some extended testing. 2016-12-21 19:56:06 +01:00
James Cole
9e1a69217d This fixes #484. 2016-12-21 17:50:00 +01:00
James Cole
46c26a64d8 Update import storage routine for issue #483, as suggested by @zjean 2016-12-21 17:21:36 +01:00
James Cole
2f12a70647 Add support for Spanish. [skip ci] 2016-12-20 17:21:16 +01:00
James Cole
be190d1fa0 Update favicon information. 2016-12-20 17:19:16 +01:00
James Cole
1e4888209b Fixed #479 2016-12-20 17:14:43 +01:00
James Cole
8aa2961c19 This should fix #482 2016-12-20 17:10:30 +01:00
James Cole
304cdabc96 Merge pull request #481 from JC5/l10n_develop
New Crowdin translations
2016-12-20 14:16:39 +01:00
James Cole
c60e272eb3 New translations 2016-12-20 10:42:06 +01:00
James Cole
c074f55cb2 New translations 2016-12-20 10:42:05 +01:00
James Cole
e6af29646e New translations 2016-12-20 10:42:03 +01:00
James Cole
b4213328fe New translations 2016-12-20 10:42:02 +01:00
James Cole
8a7628c9dc New translations 2016-12-20 10:42:00 +01:00
James Cole
d52c146e12 New translations 2016-12-20 10:41:58 +01:00
James Cole
1910a4bd4b New translations 2016-12-20 10:41:57 +01:00
James Cole
bd0c552f54 New translations 2016-12-20 10:41:55 +01:00
James Cole
b29ea98de4 New translations 2016-12-20 10:41:53 +01:00
James Cole
dd1db87806 New translations 2016-12-20 10:41:50 +01:00
James Cole
6f9e446577 New translations 2016-12-20 10:41:45 +01:00
James Cole
664230dca8 This fixes #478, again 2016-12-20 10:25:11 +01:00
James Cole
1a24e7e0aa Merge pull request #476 from JC5/l10n_develop
New Crowdin translations
2016-12-19 21:10:53 +01:00
James Cole
9239815ce6 Tiny view update. 2016-12-19 21:07:38 +01:00
James Cole
116e19ec06 These routines fix #477 2016-12-19 21:07:22 +01:00
James Cole
fc0ad622eb Clarify chart details [skip ci] 2016-12-19 20:47:26 +01:00
James Cole
2c5cdb8780 Clarify chart details [skip ci] 2016-12-19 20:46:24 +01:00
James Cole
9a309f32fa This fixes #478 2016-12-19 20:36:28 +01:00
James Cole
e2e54d342a This completes all controller acceptance tests 2016-12-19 20:21:14 +01:00
James Cole
42f7529495 Approved. Step name: Proofread 2016-12-19 20:01:50 +01:00
James Cole
f172151252 Expand read me [skip ci] 2016-12-19 17:31:23 +01:00
James Cole
e2ad38d3e0 Expand read me [skip ci] 2016-12-19 17:24:15 +01:00
James Cole
40cc32fc5a Updated favicon. 2016-12-19 17:15:31 +01:00
James Cole
436c034fdd New translations 2016-12-19 11:51:37 +01:00
James Cole
286b1848d9 New translations 2016-12-19 10:31:15 +01:00
James Cole
7fffebf6df New translations 2016-12-19 10:21:22 +01:00
James Cole
b1764478ec Translated 2016-12-19 10:11:53 +01:00
James Cole
6b6a799206 Translated 2016-12-18 21:41:01 +01:00
James Cole
0a82ed901e New translations 2016-12-18 21:12:00 +01:00
James Cole
d733c9ed14 New translations 2016-12-18 21:11:57 +01:00
James Cole
a752ea489c New translations 2016-12-18 21:11:51 +01:00
James Cole
876a24586f New translations 2016-12-18 21:11:47 +01:00
James Cole
ea2779cf9a New translations 2016-12-18 21:11:41 +01:00
James Cole
77aa36163d New translations 2016-12-18 21:11:38 +01:00
James Cole
b581d8ecb7 New translations 2016-12-18 21:11:18 +01:00
James Cole
83b404d01e More tests. 2016-12-18 21:04:53 +01:00
James Cole
8deb92c3e5 More tests. 2016-12-18 19:34:03 +01:00
James Cole
20a6e0170c New translations 2016-12-18 18:22:10 +01:00
James Cole
944a78807c New translations 2016-12-18 18:22:05 +01:00
James Cole
0b02d294f4 New translations 2016-12-18 18:22:00 +01:00
James Cole
a5d86536c3 New translations 2016-12-18 18:21:52 +01:00
James Cole
71c08cfe0c New translations 2016-12-18 18:21:48 +01:00
James Cole
8ab0d5fc48 New translations 2016-12-18 18:21:40 +01:00
James Cole
57f81ee4c8 Approved. Step name: Proofread 2016-12-18 18:21:29 +01:00
James Cole
5c28adf266 New tests. [skip ci] 2016-12-18 18:16:41 +01:00
James Cole
5a57398f81 New tests. 2016-12-18 17:54:11 +01:00
James Cole
8121a384ef Merge branch 'release/4.2.2' 2016-12-18 10:54:46 +01:00
James Cole
8666197e05 Changelog and version bump. 2016-12-18 10:48:05 +01:00
James Cole
1ea2b8bbcb Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  Approved. Step name: Proofread
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
2016-12-18 10:41:49 +01:00
James Cole
a71cedd8a9 Merge pull request #474 from JC5/l10n_develop
New Crowdin translations
2016-12-18 10:41:39 +01:00
James Cole
04c5f583f6 Approved. Step name: Proofread 2016-12-18 10:41:08 +01:00
James Cole
7716ff4e8c Update various tests and the composer lock file. 2016-12-18 10:37:59 +01:00
James Cole
6b51a116d1 New translations 2016-12-18 09:41:52 +01:00
James Cole
b2f14dc177 New translations 2016-12-18 09:41:50 +01:00
James Cole
da1d3b82f9 New translations 2016-12-18 09:41:45 +01:00
James Cole
6282d8c828 New translations 2016-12-18 09:41:40 +01:00
James Cole
73129b0ce5 New translations 2016-12-18 09:41:35 +01:00
James Cole
f71e7a2f28 New translations 2016-12-18 09:41:31 +01:00
James Cole
341da327e3 New translations 2016-12-18 09:41:12 +01:00
James Cole
3d8adfa7e4 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
2016-12-18 09:27:42 +01:00
James Cole
279d7769f5 This fixes #470 2016-12-18 09:27:27 +01:00
James Cole
b7d3b40353 Merge pull request #471 from JC5/l10n_develop
New Crowdin translations
2016-12-18 09:16:27 +01:00
James Cole
7ecd691ee2 New tests. 2016-12-17 19:19:49 +01:00
James Cole
f3398c7dec This fixes #472 2016-12-17 17:09:46 +01:00
James Cole
90644e662d New translations 2016-12-17 08:41:52 +01:00
James Cole
f5c5cb7fb9 New translations 2016-12-17 08:41:47 +01:00
James Cole
312e79921a New translations 2016-12-17 08:41:43 +01:00
James Cole
b83d346a86 New translations 2016-12-17 08:41:37 +01:00
James Cole
3eed67f108 New translations 2016-12-17 08:41:33 +01:00
James Cole
15f0bc63b2 New translations 2016-12-17 08:41:27 +01:00
James Cole
0a4b0ec929 Approved. Step name: Proofread 2016-12-17 08:41:17 +01:00
James Cole
560f6cbf24 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii: (23 commits)
  New translations
  Approved. Step name: Proofread
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
  New translations
  Translated
  ...
2016-12-17 08:35:19 +01:00
James Cole
9165e0238f Import related tests. 2016-12-17 08:35:03 +01:00
James Cole
97d6be6809 Merge pull request #469 from JC5/l10n_develop
New Crowdin translations
2016-12-16 08:26:48 +01:00
James Cole
4de14eba0c Fix some routes for the budget report. 2016-12-16 08:07:31 +01:00
James Cole
6c64023bf7 New translations 2016-12-16 07:31:43 +01:00
James Cole
a923c288e6 Approved. Step name: Proofread 2016-12-16 07:31:41 +01:00
James Cole
4c1d8e8e85 New translations 2016-12-15 23:02:39 +01:00
James Cole
02f2def88b New translations 2016-12-15 23:02:38 +01:00
James Cole
4bcacc5d68 New translations 2016-12-15 23:02:35 +01:00
James Cole
913dbe6b1a New translations 2016-12-15 23:02:31 +01:00
James Cole
ce8164dd87 New translations 2016-12-15 23:02:28 +01:00
James Cole
a5b412f546 New translations 2016-12-15 23:02:26 +01:00
James Cole
82bb352624 New translations 2016-12-15 23:02:22 +01:00
James Cole
ebbf2659b1 New translations 2016-12-15 23:02:17 +01:00
James Cole
d0084becea New translations 2016-12-15 23:02:16 +01:00
James Cole
6af2b37ac2 New translations 2016-12-15 23:02:13 +01:00
James Cole
814fc6eabd New translations 2016-12-15 23:02:11 +01:00
James Cole
50278a679a New translations 2016-12-15 23:02:05 +01:00
James Cole
d42e9c75ef New translations 2016-12-15 23:02:03 +01:00
James Cole
00b3dced2c New translations 2016-12-15 23:02:02 +01:00
James Cole
5c0c00188f New translations 2016-12-15 23:01:59 +01:00
James Cole
2ec56626f3 Approved. Step name: Proofread 2016-12-15 23:01:56 +01:00
James Cole
e87456b2f8 New translations 2016-12-15 23:01:52 +01:00
James Cole
3609b515e5 Translated 2016-12-15 23:01:50 +01:00
James Cole
a1609542c3 Translated 2016-12-15 23:01:48 +01:00
James Cole
4c4625583a Approved. Step name: Proofread 2016-12-15 23:01:46 +01:00
James Cole
7b479316ea Approved. Step name: Proofread 2016-12-15 23:01:38 +01:00
James Cole
b021c7690f Basic edit user routine. 2016-12-15 22:56:31 +01:00
James Cole
2be060796e Merge pull request #468 from JC5/l10n_develop
New Crowdin translations
2016-12-15 21:56:24 +01:00
James Cole
1b4d55cca4 Fix various code style issues. 2016-12-15 21:35:33 +01:00
James Cole
a8cea4119d Approved. Step name: Proofread 2016-12-15 17:21:27 +01:00
James Cole
e247aace8d Various code cleanup. 2016-12-15 17:16:46 +01:00
James Cole
41553e9b86 New translations 2016-12-15 14:43:23 +01:00
James Cole
e875587260 New translations 2016-12-15 14:43:18 +01:00
James Cole
5377483345 New translations 2016-12-15 14:43:08 +01:00
James Cole
4112acfb8d New translations 2016-12-15 14:42:56 +01:00
James Cole
f3bc02e11c New translations 2016-12-15 14:42:46 +01:00
James Cole
8e411a898b New translations 2016-12-15 14:42:40 +01:00
James Cole
915edbecc9 New translations 2016-12-15 14:42:28 +01:00
James Cole
975a6c34bf Finished #452 2016-12-15 14:38:05 +01:00
James Cole
cdd988b4de Piggy banks and #452 2016-12-15 14:05:50 +01:00
James Cole
b58bc97422 Code for #452 2016-12-15 13:47:28 +01:00
James Cole
482688ac3c Merge pull request #467 from JC5/l10n_develop
New Crowdin translations
2016-12-15 11:20:24 +01:00
James Cole
aea31b5e28 Budget charts #452 2016-12-15 10:44:06 +01:00
James Cole
d7cbc53b4b Multiply by -1. 2016-12-15 10:41:56 +01:00
James Cole
f74c6c2d19 Updated budget charts [skip ci] 2016-12-15 10:41:10 +01:00
James Cole
3080d2ddc4 New translations 2016-12-15 10:03:53 +01:00
James Cole
4ad5881760 New translations 2016-12-15 10:03:43 +01:00
James Cole
7e55d1a4fd New translations 2016-12-15 10:03:36 +01:00
James Cole
7ef5eed6e2 New translations 2016-12-15 10:03:22 +01:00
James Cole
10aa41a7ea New translations 2016-12-15 10:03:15 +01:00
James Cole
1f9b362b6f New translations 2016-12-15 10:03:01 +01:00
James Cole
4bf9bfb521 Approved. Step name: Proofread 2016-12-15 10:02:26 +01:00
James Cole
1d7119114d New translations [skip ci] 2016-12-15 09:55:10 +01:00
James Cole
e1b6df6fb1 Include budgeted info as well. [skip ci] 2016-12-15 09:54:10 +01:00
James Cole
7cf38bb01e Include budgeted info as well. [skip ci] 2016-12-15 09:52:58 +01:00
James Cole
e34ec22845 Forgot to do * -1. [skip ci] 2016-12-15 09:51:22 +01:00
James Cole
46506abeb8 Forgot to do * -1. [skip ci] 2016-12-15 09:50:22 +01:00
James Cole
95654cc4d4 New budget chart generator 2016-12-15 09:49:35 +01:00
James Cole
47aded820d New test. 2016-12-15 08:53:10 +01:00
James Cole
24444ebf08 Merge pull request #466 from JC5/l10n_develop
New Crowdin translations
2016-12-15 08:41:53 +01:00
James Cole
bdc0df8350 Approved. Step name: Proofread 2016-12-15 08:31:26 +01:00
James Cole
b2c9a2973c Merge pull request #465 from JC5/l10n_develop
New Crowdin translations
2016-12-15 08:27:54 +01:00
James Cole
da2a347511 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
  Approved. Step name: Proofread
  Approved. Step name: Proofread
2016-12-15 08:17:17 +01:00
James Cole
6fbc3ba060 New screenshots [skip ci] 2016-12-15 08:16:34 +01:00
James Cole
02eff06cd3 New translations 2016-12-15 08:11:28 +01:00
James Cole
7586d4b494 New translations 2016-12-15 08:01:18 +01:00
James Cole
9059f0fee6 Translated 2016-12-15 07:51:13 +01:00
James Cole
c2af9e3d20 Merge pull request #464 from JC5/l10n_develop
New Crowdin translations
2016-12-14 22:53:58 +01:00
James Cole
0b51366526 New translations 2016-12-14 19:13:32 +01:00
James Cole
e40260bd9c New translations 2016-12-14 19:13:25 +01:00
James Cole
cf2842840d New translations 2016-12-14 19:13:18 +01:00
James Cole
17fa8fcb2c New translations 2016-12-14 19:13:06 +01:00
James Cole
0d2f9864e2 New translations 2016-12-14 19:12:59 +01:00
James Cole
89cbd91204 New translations 2016-12-14 19:12:46 +01:00
James Cole
f4d9b57887 Approved. Step name: Proofread 2016-12-14 19:12:39 +01:00
James Cole
4b2e4afca5 Approved. Step name: Proofread 2016-12-14 19:12:27 +01:00
James Cole
dd1ba30c48 Approved. Step name: Proofread 2016-12-14 19:12:18 +01:00
James Cole
3ba4570691 Merge pull request #463 from JC5/l10n_develop
New Crowdin translations
2016-12-14 18:59:39 +01:00
James Cole
848cfabcba Rearrange code [skip ci] 2016-12-14 18:59:12 +01:00
James Cole
1bbd10b909 New translations 2016-12-14 18:53:48 +01:00
James Cole
a16a4f813d New translations 2016-12-14 18:53:44 +01:00
James Cole
91cfa963b2 New translations 2016-12-14 18:53:42 +01:00
James Cole
a35557eb62 New translations 2016-12-14 18:53:34 +01:00
James Cole
aad4e47b6a New translations 2016-12-14 18:53:32 +01:00
James Cole
1b177723ae New translations 2016-12-14 18:53:25 +01:00
James Cole
99dba92bd3 New translations 2016-12-14 18:53:17 +01:00
James Cole
e13ccff056 New translations 2016-12-14 18:53:14 +01:00
James Cole
46528dd29d New translations 2016-12-14 18:53:08 +01:00
James Cole
4f611ad810 New translations 2016-12-14 18:52:57 +01:00
James Cole
af41985a64 New translations 2016-12-14 18:52:55 +01:00
James Cole
d0864e06b5 Translated 2016-12-14 18:52:41 +01:00
James Cole
6f0366e146 Translated 2016-12-14 18:52:38 +01:00
James Cole
e0cdbcb28c Approved. Step name: Proofread 2016-12-14 18:52:35 +01:00
James Cole
f19b99194c Wording 2016-12-14 18:47:32 +01:00
James Cole
43a55e2e35 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Translated
  Translated
  Approved. Step name: Proofread
  Approved. Step name: Proofread
2016-12-14 18:45:27 +01:00
James Cole
b2743825ca Sort account list by name [skip ci] 2016-12-14 18:44:56 +01:00
James Cole
d4f6cce56e New translations 2016-12-14 17:32:30 +01:00
James Cole
6092d206b6 New translations 2016-12-14 17:22:30 +01:00
James Cole
c8ad83cc91 New translations 2016-12-14 13:21:56 +01:00
James Cole
7d31071ff8 New translations 2016-12-14 13:12:12 +01:00
James Cole
c975ef15f1 Translated 2016-12-14 13:12:03 +01:00
James Cole
f855011d34 Translated 2016-12-14 13:12:00 +01:00
James Cole
fbcf0929d8 New translations 2016-12-14 13:01:30 +01:00
James Cole
d89e75cbe8 New translations 2016-12-14 12:51:23 +01:00
James Cole
ccaa42ad74 New translations 2016-12-14 12:41:14 +01:00
James Cole
56d8dce622 New translations 2016-12-14 12:31:07 +01:00
James Cole
c79baf98cf New translations 2016-12-14 12:21:22 +01:00
James Cole
d1cab9f68c Merge pull request #462 from JC5/l10n_develop
New Crowdin translations
2016-12-14 10:37:35 +01:00
James Cole
69c5c93353 This fixes the tests. 2016-12-13 21:09:04 +01:00
James Cole
28ebd683e4 New translations 2016-12-13 21:03:02 +01:00
James Cole
d752edd625 New translations 2016-12-13 21:02:58 +01:00
James Cole
1dab45d493 New translations 2016-12-13 21:02:54 +01:00
James Cole
b99982d02b New translations 2016-12-13 21:02:48 +01:00
James Cole
fff17ac6c1 New translations 2016-12-13 21:02:44 +01:00
James Cole
4086257983 New translations 2016-12-13 21:02:37 +01:00
James Cole
bd9e0ac281 New translations 2016-12-13 21:02:34 +01:00
James Cole
b075d6db5e New translations 2016-12-13 21:02:32 +01:00
James Cole
befd79cf14 New translations 2016-12-13 21:02:26 +01:00
James Cole
07f68d2b14 New translations 2016-12-13 21:02:22 +01:00
James Cole
d14889bd27 Translated 2016-12-13 21:02:11 +01:00
James Cole
91e40c14f9 Translated 2016-12-13 21:02:09 +01:00
James Cole
b7b2206262 Approved. Step name: Proofread 2016-12-13 21:02:01 +01:00
James Cole
f344d0319c Approved. Step name: Proofread 2016-12-13 21:01:50 +01:00
James Cole
0c8a1682b6 Wrong reference #461 [skip ci] 2016-12-13 20:58:51 +01:00
James Cole
39866be3f1 Translations. #461 2016-12-13 20:57:10 +01:00
James Cole
947e82fa0f Fixed final mails for #461 2016-12-13 20:51:10 +01:00
James Cole
0335a64a21 Code for #461 2016-12-13 20:37:38 +01:00
James Cole
a9e57e1c34 First set of code for #461 2016-12-13 17:21:28 +01:00
James Cole
8a8279f97a Merge pull request #459 from JC5/l10n_develop
New Crowdin translations
2016-12-12 20:22:49 +01:00
James Cole
b968889552 Approved. Step name: Proofread 2016-12-12 20:21:52 +01:00
James Cole
4068df5e50 Approved. Step name: Proofread 2016-12-12 20:21:33 +01:00
James Cole
dc42370322 Merge pull request #458 from JC5/l10n_develop
New Crowdin translations
2016-12-12 20:13:58 +01:00
James Cole
8c24f14ee5 New translations 2016-12-12 20:12:47 +01:00
James Cole
494d1743a2 New translations 2016-12-12 20:12:43 +01:00
James Cole
4a30d9f6bb New translations 2016-12-12 20:12:37 +01:00
James Cole
ed6d25067c New translations 2016-12-12 20:12:32 +01:00
James Cole
445ae7e10e New translations 2016-12-12 20:12:25 +01:00
James Cole
6f45609161 New translations 2016-12-12 20:12:20 +01:00
James Cole
f1230e47f7 New translations 2016-12-12 20:11:52 +01:00
James Cole
7e0ef6d43e Better view for accounts and I fixed a html error. 2016-12-12 20:02:33 +01:00
James Cole
14f9da544a This fixes #454 2016-12-12 19:39:54 +01:00
James Cole
5a84036e16 Merge pull request #457 from JC5/l10n_develop
New Crowdin translations
2016-12-12 17:42:05 +01:00
James Cole
4dccf7b7b5 Properly check hashes, issue #456 2016-12-12 17:17:36 +01:00
James Cole
66060dbed4 New translations 2016-12-12 15:32:47 +01:00
James Cole
cfb824588f New translations 2016-12-12 15:32:36 +01:00
James Cole
d2b4316d7a New translations 2016-12-12 15:32:24 +01:00
James Cole
3af69b433d New translations 2016-12-12 15:32:13 +01:00
James Cole
a6733fa255 Translated 2016-12-12 15:32:04 +01:00
James Cole
4277c54009 Approved. Step name: Proofread 2016-12-12 15:32:00 +01:00
James Cole
66baa7554a New translations 2016-12-12 15:31:48 +01:00
James Cole
ffca4b0543 More code for #456 2016-12-12 15:27:56 +01:00
James Cole
3e3c48314f Code for #456 2016-12-12 15:24:47 +01:00
James Cole
06ff450d31 Fixed sort 2016-12-12 08:14:38 +01:00
James Cole
07c57cc640 Merge pull request #453 from JC5/l10n_develop
New Crowdin translations
2016-12-12 07:45:59 +01:00
James Cole
a67f10c99e Wrote export tests. 2016-12-11 18:34:18 +01:00
James Cole
2882bcbf7b New translations 2016-12-11 17:51:47 +01:00
James Cole
67cc5b0280 New translations 2016-12-11 17:51:45 +01:00
James Cole
b42b178b71 New translations 2016-12-11 17:51:38 +01:00
James Cole
7de05cd173 New translations 2016-12-11 17:51:34 +01:00
James Cole
3db43743d9 New translations 2016-12-11 17:51:28 +01:00
James Cole
14638e4ed8 New translations 2016-12-11 17:51:25 +01:00
James Cole
e756b93810 New translations 2016-12-11 17:51:18 +01:00
James Cole
358d83dcfc Changed language strings [skip ci] 2016-12-11 17:49:02 +01:00
James Cole
331c231a94 Small bug fix in bill chart [skip ci] 2016-12-11 17:47:47 +01:00
James Cole
4403b65bae Experimental bill chart [skip ci] 2016-12-11 17:46:30 +01:00
James Cole
a27d80d765 Fix sort [skip ci] 2016-12-11 17:32:48 +01:00
James Cole
04272fff81 Fixed a small bug in the account frontpage chart. 2016-12-11 17:30:55 +01:00
James Cole
e963708c54 Remove from provider as well (#452) 2016-12-11 17:06:23 +01:00
James Cole
08c4542847 Clean up chart code. 2016-12-11 17:05:48 +01:00
James Cole
553e9270e5 More code for #452 2016-12-11 16:38:21 +01:00
James Cole
8a7297e131 Code for currency controller tests. 2016-12-11 16:25:46 +01:00
James Cole
0f260da8e6 More code for issue #452 2016-12-11 16:25:25 +01:00
James Cole
77560ab3a8 Wrote more tests. 2016-12-11 16:02:15 +01:00
James Cole
e3b2f2d9a8 Experimental code for issue #452 2016-12-11 16:02:04 +01:00
James Cole
74e01a52b9 More tests 2016-12-11 14:03:30 +01:00
James Cole
dc28ba42ef More tests 2016-12-11 13:28:13 +01:00
James Cole
406150620a Fixed more tests. 2016-12-11 13:16:56 +01:00
James Cole
43f59a1135 Fixed missing chart. 2016-12-11 11:15:19 +01:00
James Cole
5c02eaa66c Split controller tests. 2016-12-11 11:04:53 +01:00
James Cole
b4eac84097 Update tests, fixes some bugs. 2016-12-11 10:38:06 +01:00
James Cole
ec3b356f86 Fix mass edit and mass delete routes. [skip ci] 2016-12-10 17:55:47 +01:00
James Cole
bf99d5c299 Fixed the account view, changed routes. 2016-12-10 17:54:35 +01:00
James Cole
a297131440 Finished even more tests 2016-12-10 17:46:19 +01:00
James Cole
bae2161ee3 Expand tests. 2016-12-10 16:32:52 +01:00
James Cole
0fe0de1a7f New tests 2016-12-10 07:29:36 +01:00
James Cole
e7845115f6 New tests 2016-12-10 06:54:50 +01:00
James Cole
bc11c3fab2 Working but fairly useless budget report 2016-12-10 06:50:13 +01:00
James Cole
1b7546f3f9 Expand tests. 2016-12-09 18:53:13 +01:00
James Cole
663be30117 Fixed the account overview chart 2016-12-09 18:52:27 +01:00
James Cole
cf34713518 Fix some tests. 2016-12-09 16:30:33 +01:00
James Cole
3f56a8ec53 Expand test routines 2016-12-09 15:17:57 +01:00
James Cole
35d105588b Fix tag assignment for multiple deposits [skip ci] 2016-12-09 14:50:28 +01:00
James Cole
122d988ed2 Add some debug. [skip ci] 2016-12-09 14:42:14 +01:00
James Cole
9fcc5e7a67 Fix decryption bug. 2016-12-09 14:21:26 +01:00
James Cole
9a492c3731 Merge pull request #450 from JC5/l10n_develop
New Crowdin translations
2016-12-09 14:18:18 +01:00
James Cole
4f752031f3 New translations 2016-12-09 07:42:04 +01:00
James Cole
19be8bb891 New translations 2016-12-09 07:42:01 +01:00
James Cole
693e1b08c7 New translations 2016-12-09 07:41:55 +01:00
James Cole
9aad380518 New translations 2016-12-09 07:41:51 +01:00
James Cole
8c518c8d58 New translations 2016-12-09 07:41:44 +01:00
James Cole
9af89a19db New translations 2016-12-09 07:41:40 +01:00
James Cole
939b18b86c New translations 2016-12-09 07:41:31 +01:00
James Cole
108e775a15 New routes 2016-12-09 07:40:00 +01:00
James Cole
653692ade0 Try to test for confirmation errors. 2016-12-09 07:20:48 +01:00
James Cole
72c6bfee7e New bread crumb for user edit 2016-12-09 07:08:43 +01:00
James Cole
ac92939429 Test to see if bread crumb present. 2016-12-09 07:08:31 +01:00
James Cole
052957bbd0 New view for edit user 2016-12-09 07:08:20 +01:00
James Cole
97e6afe3dc New text to be translated. 2016-12-09 07:08:09 +01:00
James Cole
1fd028dfb8 First code for #426 2016-12-09 07:07:53 +01:00
James Cole
c73866f47c Fixed date [skip ci] 2016-12-09 06:28:51 +01:00
James Cole
b0e120abee New translations 2016-12-08 21:52:28 +01:00
James Cole
b2da38d401 New translations 2016-12-08 21:52:22 +01:00
James Cole
cabe2579fa New translations 2016-12-08 21:52:16 +01:00
James Cole
18a845ac55 New translations 2016-12-08 21:52:06 +01:00
James Cole
a4d14f8259 New translations 2016-12-08 21:52:01 +01:00
James Cole
9d084e62f7 New translations 2016-12-08 21:51:53 +01:00
James Cole
0393fcd704 Approved. Step name: Proofread 2016-12-08 21:51:30 +01:00
James Cole
edb5b2ed5e Initial code for new budget report #426 2016-12-08 21:50:20 +01:00
James Cole
529bab1112 Merge branch 'release/4.2.1' 2016-12-08 21:23:19 +01:00
James Cole
ab9212a4c9 last code for 4.2.1 2016-12-08 21:22:42 +01:00
James Cole
b2cbba0f3b Merge pull request #449 from JC5/l10n_develop
New Crowdin translations
2016-12-08 21:04:16 +01:00
James Cole
ca73ef8531 Approved. Step name: Proofread 2016-12-08 20:41:30 +01:00
James Cole
d13490cb6e Approved. Step name: Proofread 2016-12-08 20:41:27 +01:00
James Cole
73566e11c0 Removed some JS code that was not necessary. [skip ci] 2016-12-08 20:33:41 +01:00
James Cole
36ebd0f0ee Expand view. 2016-12-07 21:38:35 +01:00
James Cole
efe290d96c This fixes the tests. 2016-12-07 20:45:26 +01:00
James Cole
da3988cc63 New tests 2016-12-07 20:06:06 +01:00
James Cole
df6f4aecf8 Update tests. 2016-12-07 19:53:41 +01:00
Sander
db1a60b6df Fix display bug 2016-12-07 07:58:55 +00:00
James Cole
d79866f115 Fix route [skip ci] 2016-12-07 06:27:27 +01:00
James Cole
cdd18b229e Refactor some duplicated code 2016-12-06 16:58:39 +01:00
James Cole
cca2de9f1b This should remove some issues from scrutinizer. 2016-12-06 16:55:13 +01:00
James Cole
6a58dbb207 Generic code cleanup. 2016-12-06 16:44:58 +01:00
James Cole
779f461491 Merge pull request #447 from JC5/l10n_develop
New Crowdin translations
2016-12-06 16:44:39 +01:00
James Cole
085eca6c02 New translations 2016-12-06 14:42:07 +01:00
James Cole
25db11a8c7 Translated 2016-12-06 14:22:19 +01:00
James Cole
76bcc68ab9 Merge pull request #446 from JC5/l10n_develop
New Crowdin translations
2016-12-06 10:52:05 +01:00
James Cole
9daefaaca4 Fix sort [skip ci] 2016-12-06 10:42:49 +01:00
James Cole
fbbbcc4e74 Fix category report. 2016-12-06 10:42:13 +01:00
James Cole
2e1f31a7f8 Fix sort. 2016-12-06 10:19:43 +01:00
James Cole
8a0ac81fd0 Fix decrypt exception. 2016-12-06 10:13:48 +01:00
James Cole
cdd50dfdd2 Fix decrypt exception. 2016-12-06 10:12:08 +01:00
James Cole
a05c8ca351 New test files. 2016-12-06 09:16:36 +01:00
James Cole
2ca584f097 Fix test. 2016-12-06 09:12:04 +01:00
James Cole
687da83feb Remove unused collections [skip ci] 2016-12-06 09:09:05 +01:00
James Cole
c799fc655d Final set of route changes. 2016-12-06 09:07:50 +01:00
James Cole
27848f55ce New translations 2016-12-06 09:02:19 +01:00
James Cole
001a6e310e New translations 2016-12-06 09:02:13 +01:00
James Cole
ad00bc2806 New translations 2016-12-06 09:02:08 +01:00
James Cole
d8e3365345 New translations 2016-12-06 09:01:58 +01:00
James Cole
5849fe2c30 New translations 2016-12-06 09:01:55 +01:00
James Cole
690b498197 New translations 2016-12-06 09:01:47 +01:00
James Cole
d5ddd447bc Approved. Step name: Proofread 2016-12-06 09:01:26 +01:00
James Cole
628c7cd055 Many more route fixes. 2016-12-06 08:59:08 +01:00
James Cole
f4887bbbf7 More routes and pages fixed. 2016-12-06 08:15:53 +01:00
James Cole
d8f291be6e Clean up code after changing routes. 2016-12-06 07:48:41 +01:00
James Cole
02257e3887 More routes fixed. 2016-12-06 07:06:20 +01:00
James Cole
bebfbf0b90 Fixing routes 2016-12-06 06:52:17 +01:00
James Cole
9cb3bfaa57 Clean up routes 2016-12-06 06:15:42 +01:00
James Cole
8e2c035536 Cleaned up a lot of routes [skip ci] 2016-12-05 22:19:24 +01:00
James Cole
6b56c2bf7c Many new renamed routes that will break half of Firefly. 2016-12-05 21:58:23 +01:00
James Cole
d91b9e71d5 Remove unused code. 2016-12-05 20:44:20 +01:00
James Cole
344916d57e Catch encrypted opposing accounts. [skip ci] 2016-12-05 20:39:17 +01:00
James Cole
b1ef225bd0 Also fix income/expenses sum 2016-12-05 20:35:13 +01:00
James Cole
b713eae009 Fixed some issues with expense/income overview. 2016-12-05 20:19:26 +01:00
James Cole
098cc88d5f Fix various routes. 2016-12-05 20:01:01 +01:00
James Cole
2476dd38b3 Route clean up 2016-12-04 19:55:15 +01:00
James Cole
8fec569dbb Merge pull request #443 from JC5/l10n_develop
New Crowdin translations
2016-12-04 19:05:34 +01:00
James Cole
ba92aa207c New translations 2016-12-04 18:11:51 +01:00
James Cole
f7abf132e2 New translations 2016-12-04 18:11:44 +01:00
James Cole
38919ae300 New translations 2016-12-04 18:11:34 +01:00
James Cole
bba15cef24 New translations 2016-12-04 18:11:28 +01:00
James Cole
e8792fa218 Translated 2016-12-04 18:11:20 +01:00
James Cole
c5f81d4a94 Approved. Step name: Proofread 2016-12-04 18:11:19 +01:00
James Cole
a7b8c9d94d Translated 2016-12-04 18:11:16 +01:00
James Cole
f4b9b7ae84 Various report updates and code cleanup. 2016-12-04 18:02:19 +01:00
James Cole
905a2432c6 Remove todo from code, as we are supposed to. 2016-12-04 17:17:25 +01:00
James Cole
89e4c3de25 A fairly primitive data validation routine for split transactions. 2016-12-04 17:13:37 +01:00
James Cole
86ea9db37e Extend currency data for issue #439 2016-12-04 09:33:41 +01:00
James Cole
62a9fda1c2 New tests. 2016-12-04 08:11:29 +01:00
James Cole
49f7c1bbc1 Updated composer file [skip ci] 2016-12-03 21:53:08 +01:00
James Cole
9dc6f41c18 Include chart with report 2016-12-03 21:48:40 +01:00
James Cole
0a844e4313 Use format amount routine [skip ci] 2016-12-03 21:26:34 +01:00
James Cole
53daa89fcb Display optimisations. [skip ci] 2016-12-03 21:24:55 +01:00
James Cole
c5d31bccc5 Small table optimisations [skip ci] 2016-12-03 21:12:02 +01:00
James Cole
b032825342 Building report from issue #386 2016-12-03 21:03:20 +01:00
James Cole
8377a2a0de Building report from issue #386 2016-12-03 20:38:13 +01:00
James Cole
57e49c225b Merge pull request #438 from JC5/l10n_develop
New Crowdin translations
2016-12-01 08:05:21 +01:00
James Cole
6638f6fb5c Approved. Step name: Proofread 2016-12-01 08:01:07 +01:00
James Cole
71e1b58f1d Experimental code for issue #435. Let’s try this a few times, see how it works. 2016-11-29 19:34:54 +01:00
James Cole
a87cb0fc0b Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Translated
  Translated
  Translated
  New translations
  Translated
  Translated
  Translated
  New translations
  New translations
2016-11-29 19:34:11 +01:00
James Cole
2e65f63e4a Merge pull request #436 from JC5/l10n_develop
New Crowdin translations
2016-11-29 19:33:51 +01:00
James Cole
5fb2db4e28 New translations 2016-11-29 17:41:26 +01:00
James Cole
238ae125b5 New translations 2016-11-29 17:41:20 +01:00
James Cole
110d7f691c New translations 2016-11-29 17:31:42 +01:00
James Cole
9fb9c7e3ee New translations 2016-11-29 17:31:36 +01:00
James Cole
a95b1857fe New translations 2016-11-29 17:21:56 +01:00
James Cole
ea97b817fc New translations 2016-11-29 17:21:49 +01:00
James Cole
0eea85a884 Translated 2016-11-29 17:21:45 +01:00
James Cole
eae4e988be Translated 2016-11-29 17:21:43 +01:00
James Cole
bdf752bf7e Translated 2016-11-29 17:21:42 +01:00
James Cole
a19fed5959 New translations 2016-11-29 17:12:07 +01:00
James Cole
7474553832 Translated 2016-11-29 17:12:04 +01:00
James Cole
52567116c2 Translated 2016-11-29 17:12:02 +01:00
James Cole
a70b369aaf Translated 2016-11-29 17:12:00 +01:00
James Cole
33a9e80d9d New translations 2016-11-29 17:11:58 +01:00
James Cole
96ef409f75 Merge pull request #434 from JC5/l10n_develop
New Crowdin translations
2016-11-29 13:23:05 +01:00
James Cole
8f5152e185 Small code cleanup [skip ci] 2016-11-28 20:52:56 +01:00
James Cole
f5f17d1f40 New translations 2016-11-28 20:41:22 +01:00
James Cole
b960f50f38 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  Approved. Step name: Proofread
  New translations
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
  New translations
2016-11-28 20:41:04 +01:00
James Cole
72e357b673 Merge pull request #433 from JC5/l10n_develop
New Crowdin translations
2016-11-28 20:40:39 +01:00
James Cole
b33aa733c7 Fix some minor scrutinizer issues. 2016-11-28 20:38:03 +01:00
James Cole
a6a2c0c182 Remove unused language files. 2016-11-28 20:35:12 +01:00
James Cole
3097ab84fa Approved. Step name: Proofread 2016-11-28 20:31:24 +01:00
James Cole
dd9ce3e06d New translations 2016-11-28 19:52:36 +01:00
James Cole
560fc8b01c New translations 2016-11-28 19:52:30 +01:00
James Cole
f72aba6939 New translations 2016-11-28 19:52:24 +01:00
James Cole
03bc74cae9 New translations 2016-11-28 19:52:16 +01:00
James Cole
7eaf8e3eeb New translations 2016-11-28 19:52:11 +01:00
James Cole
b2b4732657 Approved. Step name: Proofread 2016-11-28 19:51:57 +01:00
James Cole
70473b7635 New translations 2016-11-28 19:51:40 +01:00
James Cole
e4a9e23dfb Merge pull request #432 from JC5/l10n_develop
New Crowdin translations
2016-11-28 19:45:44 +01:00
James Cole
f0fd5324ea Fixes #417 2016-11-28 19:45:36 +01:00
James Cole
addebad810 Approved. Step name: Proofread 2016-11-28 19:41:17 +01:00
James Cole
253466c533 Translated 2016-11-28 19:41:15 +01:00
James Cole
885d0f1464 Merge pull request #431 from JC5/l10n_develop
New Crowdin translations
2016-11-28 19:35:46 +01:00
James Cole
4743cc40a2 New translations 2016-11-28 19:02:46 +01:00
James Cole
92bf9c9214 New translations 2016-11-28 19:02:40 +01:00
James Cole
cd80d82ad4 New translations 2016-11-28 19:02:37 +01:00
James Cole
1b7b6a676d New translations 2016-11-28 19:02:34 +01:00
James Cole
1c61afca07 New translations 2016-11-28 19:02:27 +01:00
James Cole
d4d812c195 New translations 2016-11-28 19:02:23 +01:00
James Cole
ab7803f210 New translations 2016-11-28 19:02:18 +01:00
James Cole
11007f0476 New translations 2016-11-28 19:02:13 +01:00
James Cole
6b1884a9e0 New translations 2016-11-28 19:02:10 +01:00
James Cole
1112a0761f Approved. Step name: Proofread 2016-11-28 19:02:04 +01:00
James Cole
807947fcd8 Approved. Step name: Proofread 2016-11-28 19:01:58 +01:00
James Cole
7afd8f99cb Translated 2016-11-28 19:01:53 +01:00
James Cole
b14a15ce49 New translations 2016-11-28 19:01:50 +01:00
James Cole
2e6ad0ce5d New translations 2016-11-28 19:01:48 +01:00
James Cole
8cdbc96aa5 Add BIC support. This fixes #430 2016-11-28 18:55:56 +01:00
James Cole
956019ff4a Merge branch 'release/4.2.0' 2016-11-27 16:00:47 +01:00
James Cole
8279cf0e88 New version. 2016-11-27 15:59:13 +01:00
James Cole
43c32abfe8 Various code cleanup. 2016-11-26 13:02:44 +01:00
James Cole
0e66939408 Various code cleanup. 2016-11-26 10:53:20 +01:00
James Cole
22d2a523fb Some minor code fixes. 2016-11-26 10:39:05 +01:00
James Cole
bc825a8603 Remove unused code. 2016-11-26 09:29:41 +01:00
James Cole
c9cfda34a1 Remove duplicate code. 2016-11-26 09:21:49 +01:00
James Cole
e8dfbff73f Various code cleanup. 2016-11-26 09:16:06 +01:00
James Cole
62e41f1997 Remove TODO annotations 2016-11-26 09:07:16 +01:00
James Cole
8c9f90f1b4 Some code cleanup. 2016-11-26 09:01:00 +01:00
James Cole
1453a78e49 Remove todo annotations. 2016-11-26 08:55:26 +01:00
James Cole
7efaf51595 Merge pull request #428 from JC5/l10n_develop
New Crowdin translations
2016-11-26 08:41:35 +01:00
James Cole
6bc6674ab1 Some code simplification. 2016-11-26 08:41:15 +01:00
James Cole
d6c7ff0ccb Chart for budget report will also include split journals. 2016-11-26 07:18:20 +01:00
James Cole
28f655dba1 This code makes sure the budget report also includes split expenses. 2016-11-26 07:09:02 +01:00
James Cole
6a3de12894 Approved. Step name: Proofread 2016-11-25 23:01:03 +01:00
James Cole
c7940333ec Approved. Step name: Proofread 2016-11-25 23:01:01 +01:00
James Cole
8860378757 Fix budget in split journals. 2016-11-25 19:06:06 +01:00
James Cole
728fda0116 This allows the user to set the “default” currency for an asset account (#305). It doesn’t do anything other than this yet. 2016-11-25 18:00:29 +01:00
James Cole
0c72e1831f Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
  Translated
  New translations
  New translations
2016-11-25 17:43:38 +01:00
James Cole
7da21976ec Merge pull request #425 from JC5/l10n_develop
New Crowdin translations
2016-11-25 17:43:17 +01:00
James Cole
b739859c64 Expand journal meta with soft delete. This pushes Firefly to 4.2.0. 2016-11-25 17:42:45 +01:00
James Cole
d25665f843 New translations 2016-11-25 17:02:24 +01:00
James Cole
1f41f7bd0f New translations 2016-11-25 17:02:20 +01:00
James Cole
dd8638ca98 New translations 2016-11-25 17:02:17 +01:00
James Cole
4ba9ff05b0 New translations 2016-11-25 17:02:12 +01:00
James Cole
618aad5432 New translations 2016-11-25 17:02:08 +01:00
James Cole
e46fc7501e New translations 2016-11-25 17:02:06 +01:00
James Cole
7b91e98d46 New translations 2016-11-25 17:01:58 +01:00
James Cole
85be218f92 New translations 2016-11-25 17:01:55 +01:00
James Cole
71206e395e New translations 2016-11-25 17:01:53 +01:00
James Cole
9b2d2e16b0 New translations 2016-11-25 17:01:48 +01:00
James Cole
5ae01b382e Approved. Step name: Proofread 2016-11-25 17:01:40 +01:00
James Cole
d92a0753a6 Translated 2016-11-25 17:01:35 +01:00
James Cole
f937a74507 New translations 2016-11-25 17:01:27 +01:00
James Cole
c3584ad20c New translations 2016-11-25 17:01:25 +01:00
James Cole
c049d5cfa6 Various small fixes. 2016-11-25 16:55:04 +01:00
James Cole
6c9990e0be Various Javascript related fixes. 2016-11-25 16:54:13 +01:00
James Cole
b34e4cd31b This fixes #422 2016-11-25 16:52:43 +01:00
James Cole
7852b8a785 Make sure ff does not create accounts when balance is said to be 0. 2016-11-25 16:26:03 +01:00
James Cole
6eeb60db5c Multiply sum by -1. 2016-11-24 21:37:09 +01:00
James Cole
d076cfc08f Attempt to fix issue #417 2016-11-24 21:35:23 +01:00
James Cole
68a93ff97c Made fonts local 2016-11-24 19:26:47 +01:00
James Cole
295dcb4f65 Whoops ;) 2016-11-24 19:20:04 +01:00
James Cole
d9849f60c0 Parse error 2016-11-24 19:16:15 +01:00
James Cole
7ebb68e36c This fixes #419 2016-11-24 19:15:16 +01:00
James Cole
f029f7607b Rewrote all email messages. 2016-11-22 21:21:11 +01:00
James Cole
2ba5733ebc Merge pull request #415 from JC5/l10n_develop
New Crowdin translations
2016-11-22 19:31:51 +01:00
James Cole
3fe1d1d368 New translations 2016-11-22 19:12:25 +01:00
James Cole
438c372583 New translations 2016-11-22 19:12:19 +01:00
James Cole
797aa4858e New translations 2016-11-22 19:12:13 +01:00
James Cole
8c858cd066 New translations 2016-11-22 19:12:05 +01:00
James Cole
85aebd39b9 New translations 2016-11-22 19:12:00 +01:00
James Cole
9a5a037424 Approved. Step name: Proofread 2016-11-22 19:11:48 +01:00
James Cole
7d557cbf91 New translations 2016-11-22 19:11:30 +01:00
James Cole
dbbc85a576 Hide some boxes when the user has no bills. 2016-11-22 19:10:38 +01:00
James Cole
eb78cf20c2 This fixes #414 2016-11-22 19:10:17 +01:00
James Cole
4a99399952 Fix chart for account/all overview. 2016-11-21 20:23:25 +01:00
James Cole
6075d75ee2 Fix debug code [skip ci] 2016-11-21 20:15:59 +01:00
James Cole
f4c56fee66 Merge pull request #412 from JC5/l10n_develop
New Crowdin translations
2016-11-20 19:32:54 +01:00
James Cole
04c59304da Add sorting to a report table [skip ci] 2016-11-20 19:11:10 +01:00
James Cole
4b3c31a11a Ignore deleted transactions. [skip ci] 2016-11-20 19:03:08 +01:00
James Cole
14576d2753 Approved. Step name: Proofread 2016-11-20 18:51:13 +01:00
James Cole
72ca1c20c7 Merge pull request #411 from JC5/l10n_develop
New Crowdin translations
2016-11-20 18:45:16 +01:00
James Cole
93645819b8 New translations 2016-11-20 18:41:48 +01:00
James Cole
39468f871b New translations 2016-11-20 18:41:42 +01:00
James Cole
faa47781d2 New translations 2016-11-20 18:41:37 +01:00
James Cole
2c196bab6d New translations 2016-11-20 18:41:30 +01:00
James Cole
9ae71075ef New translations 2016-11-20 18:41:26 +01:00
James Cole
0013cdfa78 Translated 2016-11-20 18:41:14 +01:00
James Cole
52f3f64f7b New translations 2016-11-20 18:41:03 +01:00
James Cole
670fa77dd7 New tests. 2016-11-20 18:34:49 +01:00
James Cole
8baea2feb9 Code for #385 2016-11-20 18:31:29 +01:00
James Cole
c56f937521 Improved sorting in various views. 2016-11-20 17:36:11 +01:00
James Cole
0b613c3b8c Improve sortability in various lists. 2016-11-20 15:30:16 +01:00
James Cole
78f297e18f Fixed some display bugs for split journals. 2016-11-20 14:17:16 +01:00
James Cole
bd8a285d6d Merge pull request #410 from JC5/l10n_develop
New Crowdin translations
2016-11-20 13:06:14 +01:00
James Cole
b44602fd55 New translations 2016-11-20 13:01:38 +01:00
James Cole
41238903e1 New translations 2016-11-20 13:01:33 +01:00
James Cole
a0c88e9b33 New translations 2016-11-20 13:01:30 +01:00
James Cole
5d184aa53e New translations 2016-11-20 13:01:23 +01:00
James Cole
9f9bf86a9f New translations 2016-11-20 13:01:19 +01:00
James Cole
53af9345eb Approved. Step name: Proofread 2016-11-20 13:01:10 +01:00
James Cole
da6bcf04df New translations 2016-11-20 13:00:58 +01:00
James Cole
ec4ec1a147 New (not implemented) tests. 2016-11-20 12:53:04 +01:00
James Cole
350e0b08b1 This implements #377 2016-11-20 12:51:33 +01:00
James Cole
9340ca09e6 Fixed #408 2016-11-20 12:08:43 +01:00
James Cole
a1cef5c339 Found a bug in the import routine where "default accounts" (an account type no longer used by default) is found. 2016-11-20 11:44:27 +01:00
James Cole
94875adb6c Various code cleanup. 2016-11-20 11:43:19 +01:00
James Cole
75a524c656 Added debug code for a possible import issue. 2016-11-20 11:40:05 +01:00
James Cole
e1e94a788c Register and use interface. 2016-11-20 08:57:48 +01:00
James Cole
8417f45d02 Fixed some tests. 2016-11-20 08:54:52 +01:00
James Cole
685310a368 First account controller tests 2016-11-20 08:46:02 +01:00
James Cole
45e7a4576a Extend some test stuff. 2016-11-20 08:30:25 +01:00
James Cole
f8c5c15655 Updated some tests. 2016-11-20 07:24:18 +01:00
James Cole
26190524f4 Skeletons for test 2016-11-19 20:30:30 +01:00
James Cole
5d901a7ecb Remove local development file. [skip ci] 2016-11-19 18:21:48 +01:00
James Cole
929d8b3adc Merge branch 'release/4.1.7' 2016-11-19 16:47:02 +01:00
James Cole
cd6e37b9cb Update composer.lock file. [skip ci] 2016-11-19 16:45:33 +01:00
James Cole
b647386541 New release imminent. [skip ci] 2016-11-19 16:44:17 +01:00
James Cole
174fd88435 Merge pull request #409 from JC5/l10n_develop
New Crowdin translations
2016-11-19 16:43:44 +01:00
James Cole
cc9211b7c2 Translated 2016-11-19 16:40:48 +01:00
James Cole
a9795fb095 Update ignore file [skip ci] 2016-11-19 16:34:52 +01:00
James Cole
8554aae21e Update read me file [skip ci] 2016-11-19 16:31:39 +01:00
James Cole
5a2ef36f2a Fix travis script. 2016-11-19 16:28:04 +01:00
James Cole
01e3f91ece Do not test hhvm. Fix script. 2016-11-19 16:17:04 +01:00
James Cole
7ec9c090cc Fix test script. 2016-11-19 16:13:57 +01:00
James Cole
b057d69f8e Correct travis configuration. 2016-11-19 16:07:02 +01:00
James Cole
ff4e1838bc Update travis configuration. 2016-11-19 16:03:59 +01:00
James Cole
e4ecd0b7ff Empty travis CI file. 2016-11-19 16:01:19 +01:00
James Cole
1ba35f73e1 Fixed a test 2016-11-19 16:00:20 +01:00
James Cole
240f3c126b Restored some tests. 2016-11-19 15:55:49 +01:00
James Cole
23925a0076 Enabled cache [skip ci] 2016-11-19 15:17:00 +01:00
James Cole
50b72cf229 More chart optimisations. 2016-11-19 13:37:44 +01:00
James Cole
ee6b72afa5 Fix some bugs related to cash accounts. 2016-11-19 12:57:35 +01:00
James Cole
781621960d Make sure chart is displayed. 2016-11-19 09:26:32 +01:00
James Cole
e15ea04186 Join two charts, simpler code. 2016-11-19 07:27:54 +01:00
James Cole
73f0cc705b Code cleanup. 2016-11-18 20:06:08 +01:00
James Cole
0c072c7d51 Some code cleanup. 2016-11-18 19:58:06 +01:00
James Cole
884bed85a1 Update composer file. 2016-11-18 19:54:21 +01:00
James Cole
a319264428 fixed #406 2016-11-18 18:58:48 +01:00
James Cole
6506e70a91 Merge pull request #407 from JC5/l10n_develop
New Crowdin translations
2016-11-18 10:03:08 +01:00
James Cole
e6fcb19db7 New translations 2016-11-18 02:01:10 +01:00
James Cole
a3fba53182 Translated 2016-11-18 02:01:03 +01:00
James Cole
f8438dd9d3 New translations 2016-11-18 01:51:04 +01:00
James Cole
028a0dcae1 New translations 2016-11-18 01:41:05 +01:00
James Cole
b4a06b5bbd Translated 2016-11-18 01:41:01 +01:00
James Cole
4fe1a5d527 New translations 2016-11-18 01:30:59 +01:00
James Cole
865930c5b2 New translations 2016-11-18 01:30:58 +01:00
James Cole
96b4e2c196 New translations 2016-11-18 01:20:59 +01:00
James Cole
b7e7c7e9e2 New translations 2016-11-18 01:11:02 +01:00
James Cole
7771669db7 New translations 2016-11-18 01:01:09 +01:00
James Cole
ef59eb6e1f Translated 2016-11-18 01:01:05 +01:00
James Cole
a14b2bc5a7 Translated 2016-11-18 01:01:04 +01:00
James Cole
47349589cb New translations 2016-11-18 00:51:00 +01:00
James Cole
79afe84f30 Merge pull request #405 from JC5/l10n_develop
New Crowdin translations
2016-11-17 20:35:32 +01:00
James Cole
171187b25c New translations 2016-11-17 20:12:21 +01:00
James Cole
7f1b661e61 New translations 2016-11-17 20:12:18 +01:00
James Cole
2c2a3a5475 New translations 2016-11-17 20:12:08 +01:00
James Cole
1677ca9619 New translations 2016-11-17 20:12:00 +01:00
James Cole
204da3e846 New translations 2016-11-17 20:11:55 +01:00
James Cole
f36d423b1e New translations 2016-11-17 20:11:46 +01:00
James Cole
79c7280046 New translations 2016-11-17 20:11:32 +01:00
James Cole
e10fc4a854 Forgotten a translation. 2016-11-17 20:04:53 +01:00
James Cole
5088df103f Finished category report. 2016-11-17 20:02:55 +01:00
James Cole
13b96f6136 New text for translations. 2016-11-16 20:59:32 +01:00
James Cole
757662ca4b Removed duplicate code. 2016-11-16 20:59:21 +01:00
James Cole
4ef324cf24 Optimized chart code. 2016-11-16 20:35:25 +01:00
James Cole
cb02e0ee71 Merge pull request #404 from JC5/l10n_develop
New Crowdin translations
2016-11-16 18:59:17 +01:00
James Cole
ec3a90688e New translations 2016-11-16 15:01:33 +01:00
James Cole
6dcecdcc64 New translations 2016-11-16 06:40:59 +01:00
James Cole
25d917240d Translated 2016-11-16 06:30:58 +01:00
James Cole
0906915a87 New translations 2016-11-16 06:30:57 +01:00
James Cole
9c92a94177 Translated 2016-11-16 06:20:52 +01:00
James Cole
1b125ecd22 New translations 2016-11-16 04:50:52 +01:00
James Cole
25a2bcd76e New translations 2016-11-16 04:20:53 +01:00
James Cole
b2e09f4240 New translations 2016-11-15 23:11:13 +01:00
James Cole
560165850f New translations 2016-11-15 23:01:17 +01:00
James Cole
0bb07e1eeb Small extension of category report. 2016-11-13 20:18:01 +01:00
James Cole
0c0f2109f6 Fix chart size [skip ci] 2016-11-13 11:31:48 +01:00
James Cole
f546670342 Merge pull request #403 from JC5/l10n_develop
New Crowdin translations
2016-11-12 21:58:23 +01:00
James Cole
eecb6c6679 Optimize again for account name [skip ci] 2016-11-12 21:08:14 +01:00
James Cole
750b9d8038 Reduce number of queries. 2016-11-12 21:06:48 +01:00
James Cole
9ce28fdd2e Remove unused route. [skip ci] 2016-11-12 20:54:05 +01:00
James Cole
07af64ada5 New translations 2016-11-12 20:51:40 +01:00
James Cole
a0ab0ec902 New translations 2016-11-12 20:51:33 +01:00
James Cole
752f8582aa New translations 2016-11-12 20:51:27 +01:00
James Cole
4d0eed8c9b New translations 2016-11-12 20:51:23 +01:00
James Cole
0d7a8305f3 New translations 2016-11-12 20:51:17 +01:00
James Cole
2e8c0ec537 Approved. Step name: Proofread 2016-11-12 20:51:12 +01:00
James Cole
3155ec9e2b New translations 2016-11-12 20:51:01 +01:00
James Cole
7bbca7f6a8 Final code check for something with the debug bar [skip ci] 2016-11-12 20:48:29 +01:00
James Cole
f7579db4ad Clean up config [skip ci] 2016-11-12 20:41:15 +01:00
James Cole
2f47c58df5 New string for translation [skip ci] 2016-11-12 20:30:39 +01:00
James Cole
7e7ac264d2 Fixed category chart 2016-11-12 20:29:16 +01:00
James Cole
98d6c90e90 Removed some duplicate code. 2016-11-12 19:22:03 +01:00
James Cole
da49afa37b Removed duplicate code. 2016-11-12 19:12:16 +01:00
James Cole
64364c3e77 Sending of error email message is optional but enabled. 2016-11-12 19:11:59 +01:00
James Cole
b6f0fd1949 Translated 2016-11-12 19:11:04 +01:00
James Cole
0663a18f3a Translated 2016-11-12 19:11:03 +01:00
James Cole
c5928897eb New translations 2016-11-12 19:01:05 +01:00
James Cole
570373e875 Merge pull request #402 from JC5/l10n_develop
New Crowdin translations
2016-11-12 19:00:18 +01:00
James Cole
228afc2eea New translations 2016-11-12 12:31:45 +01:00
James Cole
6b61621d6a New translations 2016-11-12 12:31:42 +01:00
James Cole
424133fa83 New translations 2016-11-12 12:31:35 +01:00
James Cole
02e30c1fcc New translations 2016-11-12 12:31:28 +01:00
James Cole
e17a9d559b New translations 2016-11-12 12:31:25 +01:00
James Cole
36744377f6 New translations 2016-11-12 12:31:07 +01:00
James Cole
7c479f73c0 New translations 2016-11-12 12:31:00 +01:00
James Cole
85b3c4683b Fix redraw bug in category report. 2016-11-12 12:23:55 +01:00
James Cole
c5d2fabfec Optimize some views for category report 2016-11-12 12:12:11 +01:00
James Cole
a294f757ff Fixes all charts in future category report. 2016-11-12 10:14:20 +01:00
James Cole
04515da0bc Fixed the charts 2016-11-12 07:02:32 +01:00
James Cole
6d60d64a82 Some extended code for the category report. 2016-11-12 06:48:38 +01:00
James Cole
32b5a84a0c Fixes #401 2016-11-12 06:34:54 +01:00
James Cole
4b42ef0db8 Fixes #398 2016-11-12 06:27:48 +01:00
James Cole
abc7b9912d Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
2016-11-11 20:53:07 +01:00
James Cole
727717931a Do something fancy with colours. 2016-11-11 20:52:48 +01:00
James Cole
1d66b16468 Merge pull request #397 from JC5/l10n_develop
New Crowdin translations
2016-11-11 11:26:59 +01:00
James Cole
b918429c43 New translations 2016-11-10 06:30:56 +01:00
James Cole
888273d4a0 New translations 2016-11-10 06:30:54 +01:00
James Cole
31b5d5ba72 New translations 2016-11-10 06:30:47 +01:00
James Cole
b148d0868e New translations 2016-11-10 06:30:39 +01:00
James Cole
c1491383a8 New translations 2016-11-10 06:30:36 +01:00
James Cole
5f07918682 New translations 2016-11-10 06:30:17 +01:00
James Cole
8de6bd7ceb New translations 2016-11-10 06:30:10 +01:00
James Cole
5d4f1bc76d First working example of category report. No content, just place holders. #396 2016-11-10 06:23:21 +01:00
James Cole
8583b574ac Multi year was not visible. 2016-11-09 21:46:32 +01:00
James Cole
3600e1b5e7 Extend report capability for issue #396 and related report issues. 2016-11-09 21:36:54 +01:00
James Cole
fe57648349 Allow report options to be pulled using AJAX. Ajax is cool. 2016-11-09 19:25:09 +01:00
James Cole
f0e0cdb49b New website 2016-11-09 11:04:14 +01:00
James Cole
cf69333c6d This fixes #395 2016-11-08 21:34:13 +01:00
James Cole
3f7e16d270 Merge pull request #394 from JC5/l10n_develop
New Crowdin translations
2016-11-08 20:50:57 +01:00
James Cole
a63f1638f4 Upgrade some libraries for #391 2016-11-08 20:50:05 +01:00
James Cole
8ec2a3a391 New translations 2016-11-08 20:41:15 +01:00
James Cole
d875f0e580 New translations 2016-11-08 20:41:12 +01:00
James Cole
729534b4f3 New translations 2016-11-08 20:41:06 +01:00
James Cole
bd6a56a55e New translations 2016-11-08 20:41:04 +01:00
James Cole
96976db350 New translations 2016-11-08 20:40:58 +01:00
James Cole
8735190461 New translations 2016-11-08 20:40:55 +01:00
James Cole
709a14e5c9 New translations 2016-11-08 20:40:53 +01:00
James Cole
c89d2a52b5 New translations 2016-11-08 20:40:48 +01:00
James Cole
6084d16ea8 New translations 2016-11-08 20:40:45 +01:00
James Cole
1688fdb786 Approved. Step name: Proofread 2016-11-08 20:40:38 +01:00
James Cole
6cfb5ee2e9 Approved. Step name: Proofread 2016-11-08 20:40:33 +01:00
James Cole
2db560ed7d New translations 2016-11-08 20:40:27 +01:00
James Cole
45567cdf65 New translations 2016-11-08 20:40:24 +01:00
James Cole
508ad5157b New translations 2016-11-08 20:40:21 +01:00
James Cole
8fc41e0226 Fixes #390 2016-11-08 20:37:53 +01:00
James Cole
a08dfe1e3c Add interface for journal collector. 2016-11-08 20:36:09 +01:00
James Cole
49cc8a97a3 Clean up code, fixes #392 2016-11-08 20:35:30 +01:00
James Cole
5b8583dd2b Make sure scripts don't crash when no database present. 2016-11-07 20:25:09 +01:00
James Cole
f653bc5f6e Expand firefly config. 2016-11-07 18:49:35 +01:00
James Cole
a6a9794fc7 Merge branch 'release/4.1.6' into develop 2016-11-06 16:18:20 +01:00
James Cole
fdb8f61e37 Merge branch 'release/4.1.6' 2016-11-06 16:18:19 +01:00
James Cole
69422cc796 Code for 4.1.6 2016-11-06 16:17:22 +01:00
James Cole
5f9a9bc89a Change log for 4.1.6 2016-11-06 16:16:05 +01:00
James Cole
4d0d05e0f8 Merge pull request #383 from JC5/l10n_develop
New Crowdin translations
2016-11-06 16:14:05 +01:00
James Cole
0113fedbd4 Translated 2016-11-06 15:10:25 +01:00
James Cole
a7d35cd1c3 Fix multi year report. [skip ci] 2016-11-06 15:09:44 +01:00
James Cole
43600fe6cb Merge pull request #382 from JC5/l10n_develop
New Crowdin translations
2016-11-06 15:09:23 +01:00
James Cole
0b5e25960f Fix small JS bug. 2016-11-06 15:04:35 +01:00
James Cole
0c8a1b51e9 Quick bug fix: missing class. 2016-11-06 15:01:04 +01:00
James Cole
cb49f5e8d8 New translations 2016-11-06 15:01:02 +01:00
James Cole
a0e3088ca3 New translations 2016-11-06 15:00:54 +01:00
James Cole
b86be6f52f New translations 2016-11-06 15:00:47 +01:00
James Cole
4c573e1300 New translations 2016-11-06 15:00:43 +01:00
James Cole
1a3d77f117 New translations 2016-11-06 15:00:36 +01:00
James Cole
2656da13b1 Approved. Step name: Proofread 2016-11-06 15:00:29 +01:00
James Cole
d272ebd95c New translations 2016-11-06 15:00:18 +01:00
James Cole
7612f1f91a Small changes to twig files. 2016-11-06 14:52:48 +01:00
James Cole
22a2fe3f61 Improved search. 2016-11-06 14:52:31 +01:00
James Cole
1ebb59b352 Remove .twig extension. [skip ci] 2016-11-06 08:11:43 +01:00
James Cole
77e2cf40df Removed more getJournals functions in favour of the collector. 2016-11-06 08:08:06 +01:00
James Cole
0edffd8ea1 Lighter icon [skip ci] 2016-11-05 18:57:45 +01:00
James Cole
ee6e047596 Do not order the count query. 2016-11-05 18:55:09 +01:00
James Cole
bd55636b3f Add repository move info. 2016-11-05 18:51:26 +01:00
James Cole
b24e97a449 Update version and change log. 2016-11-05 18:50:13 +01:00
James Cole
d45355fc3f Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  Translated
2016-11-05 18:46:10 +01:00
James Cole
b2206f640a Merge pull request #381 from JC5/l10n_develop
New Crowdin translations
2016-11-05 18:45:42 +01:00
James Cole
962cad33e2 Code cleanup. 2016-11-05 18:43:18 +01:00
James Cole
d65214b75a Translated 2016-11-05 18:40:12 +01:00
James Cole
7b4c151df5 Merge pull request #380 from JC5/l10n_develop
New Crowdin translations
2016-11-05 18:30:52 +01:00
James Cole
28d6f51961 New translations 2016-11-05 18:10:55 +01:00
James Cole
d2f9deb82b New translations 2016-11-05 18:10:48 +01:00
James Cole
d9b05b5f59 New translations 2016-11-05 18:10:42 +01:00
James Cole
a8f4b33c57 New translations 2016-11-05 18:10:39 +01:00
James Cole
ee849ea12f New translations 2016-11-05 18:10:32 +01:00
James Cole
f9d3cf231f Approved. Step name: Proofread 2016-11-05 18:10:27 +01:00
James Cole
0713ca7709 New translations 2016-11-05 18:10:17 +01:00
James Cole
1e2124c5ed Moved more stuff to the journal collector. 2016-11-05 18:08:44 +01:00
James Cole
37435da459 Moved more stuff to the journal collector. 2016-11-05 17:47:50 +01:00
James Cole
05dbd30bbd Rename another collector. 2016-11-05 17:17:56 +01:00
James Cole
4b947638a7 Merge pull request #379 from JC5/l10n_develop
New Crowdin translations
2016-11-05 15:16:25 +01:00
James Cole
3d113b9aae New translations 2016-11-05 14:30:14 +01:00
James Cole
d1b3681bf3 New translations 2016-11-05 14:20:16 +01:00
James Cole
9dd4b07314 New translations 2016-11-05 14:20:15 +01:00
James Cole
3814f0f3c3 New translations 2016-11-05 14:20:13 +01:00
James Cole
b1e907fae9 New translations 2016-11-05 14:10:15 +01:00
James Cole
5c03a1a9c8 New translations 2016-11-05 14:10:14 +01:00
James Cole
20ac07a386 Translated 2016-11-05 14:10:11 +01:00
James Cole
13e1292bb7 Automated code cleanup [skip ci] 2016-11-05 11:47:21 +01:00
James Cole
8e542531b3 Move collecting journals to the collector. 2016-11-05 11:44:41 +01:00
James Cole
43afdb021a Move collecting journals to the collector. 2016-11-05 11:24:15 +01:00
James Cole
aeca2ef3b2 Move some code around 2016-11-05 10:42:31 +01:00
James Cole
205a593721 Removed unused method. 2016-11-05 10:28:10 +01:00
James Cole
46649fe228 Solved group thing. 2016-11-05 10:26:57 +01:00
James Cole
adb97fcb05 Fix small javascript bug. 2016-11-05 08:47:05 +01:00
James Cole
98160e9b63 Expand use of journal collector. 2016-11-05 08:46:55 +01:00
James Cole
9c5d192d90 Journal collector may not have been a bad idea after all! 2016-11-05 08:27:25 +01:00
James Cole
47bebb614e Only withdrawal can have a budget. 2016-11-05 07:43:23 +01:00
James Cole
5f7fb77db2 Code to fix #378 2016-11-04 16:04:36 +01:00
James Cole
1d15bc0b10 I am changing some string concatenations to sprintf() routines because they are more readable and safer. [skip ci] 2016-11-03 21:54:07 +01:00
James Cole
7bc4c6d115 Update change log [skip ci] 2016-11-03 21:49:08 +01:00
James Cole
45973a53f5 Merge pull request #376 from JC5/l10n_develop
New Crowdin translations
2016-11-03 21:45:55 +01:00
James Cole
8e5e3de8b0 Update change log (prematurely). [skip ci] 2016-11-03 21:45:35 +01:00
James Cole
8738cd4b04 Approved. Step name: Proofread 2016-11-03 21:40:29 +01:00
James Cole
24a7dac235 Approved. Step name: Proofread 2016-11-03 21:40:28 +01:00
James Cole
a3088f6806 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
  Approved. Step name: Proofread
  New translations
  New translations
  New translations
  Translated
2016-11-03 21:07:48 +01:00
James Cole
72f7b5f3ea This fixes #375 2016-11-03 21:07:12 +01:00
James Cole
a636c508a2 Merge pull request #374 from JC5/l10n_develop
New Crowdin translations
2016-11-03 16:42:52 +01:00
James Cole
599db95f73 New translations 2016-11-02 22:31:16 +01:00
James Cole
f5f78ab79b New translations 2016-11-02 22:31:15 +01:00
James Cole
9af9383c29 New translations 2016-11-02 22:31:08 +01:00
James Cole
4b97b86c09 New translations 2016-11-02 22:31:07 +01:00
James Cole
11fb46830c New translations 2016-11-02 22:31:00 +01:00
James Cole
e8dec6d95c New translations 2016-11-02 22:31:00 +01:00
James Cole
bb4ee7470d New translations 2016-11-02 22:30:57 +01:00
James Cole
2e8071db9e New translations 2016-11-02 22:30:54 +01:00
James Cole
4d2901aa02 New translations 2016-11-02 22:30:50 +01:00
James Cole
37bbfab20a Approved. Step name: Proofread 2016-11-02 22:30:46 +01:00
James Cole
fb9161b82d Approved. Step name: Proofread 2016-11-02 22:30:43 +01:00
James Cole
000c9d8974 New translations 2016-11-02 22:30:36 +01:00
James Cole
878b664930 New translations 2016-11-02 22:30:33 +01:00
James Cole
afe28b5581 New translations 2016-11-02 22:30:33 +01:00
James Cole
4106b2e4c0 Remove some help entries in favour of help pages in the top right corner. 2016-11-02 22:23:40 +01:00
James Cole
e1be4909b9 Redirect when 0 accounts.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 21:24:16 +01:00
James Cole
7a0347c0c2 Translated 2016-11-02 21:00:38 +01:00
James Cole
a7e0e3fc15 Small additions and bug fixes.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 20:52:40 +01:00
James Cole
5e480eca36 Clean up some report code.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 20:45:11 +01:00
James Cole
6c8d594df7 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  New translations
  New translations
  New translations
  New translations
  Approved. Step name: Proofread
  New translations
  New translations

Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 20:08:38 +01:00
James Cole
e24f5ec9f3 Multi year report move to AJAX.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 20:08:11 +01:00
James Cole
1379c0652e Merge pull request #373 from JC5/l10n_develop
New Crowdin translations
2016-11-02 19:50:10 +01:00
James Cole
1f87b0bd2d New translations 2016-11-02 14:41:56 +01:00
James Cole
787a437ca4 New translations 2016-11-02 14:41:44 +01:00
James Cole
c0bdb35cb3 New translations 2016-11-02 14:41:34 +01:00
James Cole
4b9cf67413 New translations 2016-11-02 14:41:26 +01:00
James Cole
86ff3be741 Approved. Step name: Proofread 2016-11-02 14:41:09 +01:00
James Cole
8bc8e8d9fe New translations 2016-11-02 14:40:59 +01:00
James Cole
227a12d75d New translations 2016-11-02 14:40:54 +01:00
James Cole
2ddd4314f1 Extend help pages. 2016-11-02 14:33:57 +01:00
James Cole
b980b5baea Small optimisations.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 07:23:11 +01:00
James Cole
4ba34ab511 Show sum [skip ci]
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 07:16:46 +01:00
James Cole
5be317d73c sprintf ALL THE THINGS
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 07:04:14 +01:00
James Cole
af16205965 Merge branch 'master' into develop
* master:
  New budget table for multi year report.
  Removed everything pointless from multi year report.

Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 07:03:17 +01:00
James Cole
39917b77c1 New GitHub move repository instructions
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 07:02:22 +01:00
James Cole
124ecb1372 New budget table for multi year report.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-02 04:55:44 +01:00
James Cole
33c0c1bea6 Removed everything pointless from multi year report.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-01 19:06:35 +01:00
James Cole
a66990459e Merge branch 'release/4.1.5' 2016-11-01 18:45:25 +01:00
James Cole
fecbdc7fbf New version.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-11-01 18:44:26 +01:00
James Cole
0369ace5f7 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii: (28 commits)
  Approved. Step name: Proofread
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  New translations
  ...
2016-11-01 18:41:15 +01:00
James Cole
1657048181 Fixed bug #370 2016-11-01 18:40:35 +01:00
James Cole
b9bdaa7a56 Merge pull request #369 from JC5/l10n_develop
New Crowdin translations
2016-11-01 11:43:00 +01:00
James Cole
f28d07e17b Approved. Step name: Proofread 2016-11-01 11:40:36 +01:00
James Cole
8b8bf1debc New translations 2016-10-31 18:41:44 +01:00
James Cole
aff1c1e3ef New translations 2016-10-31 18:41:40 +01:00
James Cole
169bb2c9bb New translations 2016-10-31 18:41:29 +01:00
James Cole
fb1eafef43 New translations 2016-10-31 18:41:26 +01:00
James Cole
bfe26ceb39 New translations 2016-10-31 18:41:25 +01:00
James Cole
050f305e80 New translations 2016-10-31 18:41:24 +01:00
James Cole
63a6a4f823 New translations 2016-10-31 18:41:23 +01:00
James Cole
a3b167cab5 New translations 2016-10-31 18:41:23 +01:00
James Cole
48327948e2 New translations 2016-10-31 18:41:22 +01:00
James Cole
93856d4577 New translations 2016-10-31 18:41:21 +01:00
James Cole
7ff068aa95 New translations 2016-10-31 18:41:20 +01:00
James Cole
b2f00c869e New translations 2016-10-31 18:41:18 +01:00
James Cole
b717cab8f6 New translations 2016-10-31 18:41:17 +01:00
James Cole
adaff52707 New translations 2016-10-31 18:41:16 +01:00
James Cole
54050edcc6 New translations 2016-10-31 18:41:16 +01:00
James Cole
9acbb69a6a New translations 2016-10-31 18:41:15 +01:00
James Cole
a5e6de047a New translations 2016-10-31 18:41:14 +01:00
James Cole
3d8d35207b New translations 2016-10-31 18:41:13 +01:00
James Cole
0a95f59813 New translations 2016-10-31 18:41:10 +01:00
James Cole
43a3d28dbd New translations 2016-10-31 18:41:09 +01:00
James Cole
685cb7a505 Translated 2016-10-31 18:41:06 +01:00
James Cole
dd82466d07 Translated 2016-10-31 18:41:05 +01:00
James Cole
2cbe4a013e Translated 2016-10-31 18:41:04 +01:00
James Cole
fb85341844 Translated 2016-10-31 18:41:03 +01:00
James Cole
116b3ecdad Approved. Step name: Proofread 2016-10-31 18:40:58 +01:00
James Cole
af85fbf0a3 New translations 2016-10-31 18:40:50 +01:00
James Cole
1d250593c0 New translations 2016-10-31 18:40:45 +01:00
James Cole
ed33a054ad This update will make the help method fall back to the English content, if it is available. 2016-10-31 18:31:52 +01:00
James Cole
4e3e015912 Fix multi year account report [skip ci] 2016-10-30 20:13:49 +01:00
James Cole
7821c52842 Ajax some report parts. 2016-10-30 18:29:26 +01:00
James Cole
0a6f299ae6 Merge branch 'release/4.1.4' 2016-10-30 08:56:35 +01:00
James Cole
73f87e30c2 Changelog.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-30 08:52:09 +01:00
James Cole
838ece2c89 Merge pull request #368 from JC5/l10n_develop
New Crowdin translations
2016-10-30 07:32:23 +01:00
James Cole
d8b88ea2c0 New translations 2016-10-30 07:20:17 +01:00
James Cole
5908951b75 New translations 2016-10-30 07:20:17 +01:00
James Cole
0b41f4c4d2 New translations 2016-10-30 07:20:16 +01:00
James Cole
35439d4fbc New translations 2016-10-30 07:20:16 +01:00
James Cole
fdce40310f New translations 2016-10-30 07:20:15 +01:00
James Cole
6b4785ae32 New translations 2016-10-30 07:20:15 +01:00
James Cole
f74e8e9cb7 New translations 2016-10-30 07:20:13 +01:00
James Cole
5a4eb7e09e New translations 2016-10-30 07:20:12 +01:00
James Cole
3bc4df03cc New translations 2016-10-30 07:20:11 +01:00
James Cole
5d585132fb New translations 2016-10-30 07:20:11 +01:00
James Cole
eff4905883 New translations 2016-10-30 07:20:10 +01:00
James Cole
8923ac4fe3 New translations 2016-10-30 07:20:09 +01:00
James Cole
073535e5ed New translations 2016-10-30 07:20:09 +01:00
James Cole
d304b90ca6 New translations 2016-10-30 07:20:08 +01:00
James Cole
816c26e14e New translations 2016-10-30 07:20:07 +01:00
James Cole
b1244ffa01 New translations 2016-10-30 07:20:07 +01:00
James Cole
fc1342bff9 New translations 2016-10-30 07:20:06 +01:00
James Cole
d7b95194b5 New translations 2016-10-30 07:20:04 +01:00
James Cole
b58bdeccd2 New translations 2016-10-30 07:20:04 +01:00
James Cole
f260b9bdee New translations 2016-10-30 07:20:02 +01:00
James Cole
fb1bdc9ec5 New translations 2016-10-30 07:20:01 +01:00
James Cole
697eff48fc New translations 2016-10-30 07:20:00 +01:00
James Cole
c05019339a Approved. Step name: Proofread 2016-10-30 07:20:00 +01:00
James Cole
8438efaf41 Approved. Step name: Proofread 2016-10-30 07:19:59 +01:00
James Cole
81c019cc99 Translated 2016-10-30 07:19:59 +01:00
James Cole
c773fdc435 Approved. Step name: Proofread 2016-10-30 07:19:58 +01:00
James Cole
c1406f51f1 Approved. Step name: Proofread 2016-10-30 07:19:58 +01:00
James Cole
92affd3440 Approved. Step name: Proofread 2016-10-30 07:19:57 +01:00
James Cole
d3da0652ef Approved. Step name: Proofread 2016-10-30 07:19:57 +01:00
James Cole
e3fbbd6cf1 Translated 2016-10-30 07:19:56 +01:00
James Cole
fcff13470c Approved. Step name: Proofread 2016-10-30 07:19:56 +01:00
James Cole
e3061ee7e7 Approved. Step name: Proofread 2016-10-30 07:19:55 +01:00
James Cole
0ee305fc4a Approved. Step name: Proofread 2016-10-30 07:19:55 +01:00
James Cole
58b93fd0c4 Approved. Step name: Proofread 2016-10-30 07:19:53 +01:00
James Cole
b30217fa2d Approved. Step name: Proofread 2016-10-30 07:19:52 +01:00
James Cole
ae48eec3a2 Translated 2016-10-30 07:19:52 +01:00
James Cole
948233ba27 Translated 2016-10-30 07:19:52 +01:00
James Cole
c2db9b183a New translations 2016-10-30 07:19:51 +01:00
James Cole
6d2b88fa0b New translations 2016-10-30 07:19:51 +01:00
James Cole
1d5da825c5 New translations 2016-10-30 07:19:50 +01:00
James Cole
330c9b53d6 New translations 2016-10-30 07:19:50 +01:00
James Cole
751fe7d4fb New translations 2016-10-30 07:19:49 +01:00
James Cole
9df1fc6e5d New translations 2016-10-30 07:19:48 +01:00
James Cole
8d660f1701 New translations 2016-10-30 07:19:46 +01:00
James Cole
4d61d3c4aa New translations 2016-10-30 07:19:46 +01:00
James Cole
0457088c99 New translations 2016-10-30 07:19:45 +01:00
James Cole
8e575da74e New translations 2016-10-30 07:19:45 +01:00
James Cole
48ed28888e Translated 2016-10-30 07:19:43 +01:00
James Cole
4084b1124e Translated 2016-10-30 07:19:42 +01:00
James Cole
60ba607027 Translated 2016-10-30 07:19:42 +01:00
James Cole
3df2c11b4a Translated 2016-10-30 07:19:41 +01:00
James Cole
c93221923a Translated 2016-10-30 07:19:41 +01:00
James Cole
375317e932 New translations 2016-10-30 07:19:40 +01:00
James Cole
7ce527957a New translations 2016-10-30 07:19:40 +01:00
James Cole
6946521199 New translations 2016-10-30 07:19:39 +01:00
James Cole
18ee20e680 Update crowdin file [skip ci]
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-30 06:37:00 +01:00
James Cole
c53da15219 Update composer.lock in anticipation of new release.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-30 06:20:18 +01:00
James Cole
d4995e342f Fixed #330 2016-10-30 06:14:07 +01:00
James Cole
c9f14da294 Translations. 2016-10-29 17:30:55 +02:00
James Cole
e9c2446cba Debug log for #366 2016-10-29 16:16:10 +02:00
James Cole
35f179625c New queries for #366 2016-10-29 16:11:54 +02:00
James Cole
39749aa113 First code set for #330 2016-10-29 15:14:33 +02:00
James Cole
ba65e982fd Forgot to include model [skip ci] 2016-10-29 11:42:04 +02:00
James Cole
b50e5d7e59 Can also change destination in new rule. 2016-10-29 09:22:51 +02:00
James Cole
a3148dc172 Code for #321 2016-10-29 09:03:14 +02:00
James Cole
73f1491d2d Updates for translations. 2016-10-29 07:44:46 +02:00
James Cole
28eb54dc96 Initial split for report options. 2016-10-28 19:01:52 +02:00
James Cole
21fb426524 Make sure date is localised. 2016-10-28 18:16:30 +02:00
James Cole
d5710ca809 Update Crowdin configuration file 2016-10-28 14:06:41 +02:00
James Cole
0ba6cdda17 Merge pull request #364 from schoentoon/develop
Added dockerfile
2016-10-27 19:40:27 +02:00
James Cole
afdcfa8525 Tweak reports. 2016-10-26 19:45:10 +02:00
James Cole
5db4f8512b Tweak reports. 2016-10-26 19:37:19 +02:00
James Cole
dc0c1b73bc Better view for expenses. 2016-10-26 19:32:19 +02:00
James Cole
f999257095 New verify database routine. 2016-10-26 19:32:07 +02:00
James Cole
7182909e28 Keep the box [skip ci] 2016-10-26 16:54:52 +02:00
James Cole
fe3f015171 Add more stuff to ajax controllers, making report controller simpler. 2016-10-26 16:46:43 +02:00
Toon Schoenmakers
5bb668be63 Added dockerfile 2016-10-26 15:07:36 +02:00
James Cole
01de147900 Display message about common error. 2016-10-26 06:41:50 +02:00
James Cole
a7e5fcc806 Move some stuff over to AJAX thing. 2016-10-25 18:53:54 +02:00
James Cole
e2d187d74b Various small bug fixes. 2016-10-24 18:01:15 +02:00
James Cole
48b0620629 New help thing. 2016-10-23 17:33:53 +02:00
James Cole
19e9f382e4 Add some rounding to make forms more neat. 2016-10-23 16:56:18 +02:00
James Cole
446eaf6588 Some code cleanup [skip ci] 2016-10-23 14:58:39 +02:00
James Cole
78deb1420d Some fixes for bills. 2016-10-23 14:56:05 +02:00
James Cole
e092515dff Better export. 2016-10-23 12:55:07 +02:00
James Cole
81f6fef978 Add new line to files [skip ci] 2016-10-23 12:42:44 +02:00
James Cole
6a2f8fa9ee No use models directly. 2016-10-23 12:41:54 +02:00
James Cole
a79a8c8874 Various small upgrades. 2016-10-23 12:37:12 +02:00
James Cole
c39659b064 Remove a lot of references to user id. 2016-10-23 12:19:32 +02:00
James Cole
9a30fbd05a Move stuff to request classes for #339 2016-10-23 12:10:22 +02:00
James Cole
83f48418f6 Small updates [skip ci] 2016-10-23 09:57:04 +02:00
James Cole
bcd7b41c91 Simplified export. 2016-10-23 09:44:14 +02:00
James Cole
cefb7d12bc Merge branch 'release/4.1.3' 2016-10-22 22:45:27 +02:00
James Cole
3c0c15103e This fixes #361 2016-10-22 22:44:57 +02:00
James Cole
a8a8afc2be More for #339 2016-10-22 22:03:00 +02:00
James Cole
49e32abd3f Move some code for #339 2016-10-22 21:40:31 +02:00
James Cole
7977eefaca Merge branch 'release/4.1.2' 2016-10-22 20:52:54 +02:00
James Cole
f1fa6c3108 Fixed a bug in the store transaction routine. 2016-10-22 20:50:20 +02:00
James Cole
2fa0d55f39 Merge branch 'release/4.1.1' 2016-10-22 12:03:34 +02:00
James Cole
5bff509346 New translations.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-22 12:03:11 +02:00
James Cole
a147e9b74a Fix edit screen.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-22 11:53:34 +02:00
James Cole
0d87f7c4ca Better implementation of markdown.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-22 11:50:33 +02:00
James Cole
8c675615df Support markdown in notes.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-22 11:47:47 +02:00
James Cole
7edd1bff40 Merge branch 'release/4.1.0' 2016-10-22 10:21:15 +02:00
James Cole
3bfcb1f3ab New change log. [skip ci]
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-22 10:20:25 +02:00
James Cole
7b6c63e6a8 New version number [skip ci]
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-10-22 10:15:50 +02:00
James Cole
5500e5b0aa Remove debug classes 2016-10-22 10:13:56 +02:00
James Cole
e4d249e73c Piggy bank supports notes (#350) 2016-10-22 10:13:49 +02:00
James Cole
091f6e918b Fix some reported issues. 2016-10-22 09:44:47 +02:00
James Cole
5d9b68c3e7 Various code cleanup [skip ci] 2016-10-22 09:39:31 +02:00
James Cole
12a6a61100 Various code cleanup [skip ci] 2016-10-22 09:33:03 +02:00
James Cole
7ce3b8d4ef Updated events, fixes #345 2016-10-22 09:31:27 +02:00
James Cole
3d9b855849 Force larval 5.3.18 2016-10-22 07:52:17 +02:00
James Cole
2346d2ec05 Fine tuning split edit screens. 2016-10-22 07:28:31 +02:00
James Cole
a4c081c8a5 Fix unset variable. [skip ci] 2016-10-21 22:01:42 +02:00
James Cole
316980efbd Fix unset variable. [skip ci] 2016-10-21 22:00:45 +02:00
James Cole
a05bc0eed0 Fix route [skip ci] 2016-10-21 21:57:10 +02:00
James Cole
4d1c271da6 Renamed a route [skip ci] 2016-10-21 21:54:57 +02:00
James Cole
0dd7ecbfbe Remove code no longer used. 2016-10-21 21:43:12 +02:00
James Cole
0dc188b083 Removed old code 2016-10-21 21:41:50 +02:00
James Cole
6a553f77f3 Large update to fix split journals. 2016-10-21 21:41:31 +02:00
James Cole
a74cef439b For simplicity, split controller. 2016-10-21 19:20:03 +02:00
James Cole
9a3cd27700 Many updates to get split transactions and normal transactions working side by side. 2016-10-21 19:06:22 +02:00
James Cole
801c7c0ab6 Remove unused function. 2016-10-21 13:22:45 +02:00
James Cole
a95a4e783a Fix and simplify bill repos 2016-10-21 13:20:51 +02:00
James Cole
af1ee9db93 This fixes bills unpaid. 2016-10-21 07:29:25 +02:00
James Cole
fcdb6fd2a7 Do loop instead of while loop [skip ci] 2016-10-21 06:41:33 +02:00
James Cole
97c0fb389d More logs [skip ci] 2016-10-21 06:38:00 +02:00
James Cole
a9c3992331 Back to old method [skip ci] 2016-10-21 06:33:56 +02:00
James Cole
a38e057fa7 Rewrote some methods to fix #341 2016-10-21 06:26:12 +02:00
James Cole
f83aaf77f1 Improve bill things for issue #341 2016-10-20 21:40:45 +02:00
James Cole
d92768ecbf This code fixes #349 2016-10-20 19:10:43 +02:00
James Cole
b9308cd74a Test flash messages. 2016-10-20 16:51:05 +02:00
James Cole
78b577bc9d Better ip info [skip ci] 2016-10-18 06:50:35 +02:00
James Cole
7d247897ed Should correctly show user info. [skip ci] 2016-10-18 06:47:48 +02:00
James Cole
5dcbdec491 Update composer file and update routine. [skip ci] 2016-10-15 18:52:21 +02:00
James Cole
9bf980431e Remove unused methods. 2016-10-15 14:07:51 +02:00
James Cole
da60bfbcff Better text [skip ci] 2016-10-15 14:05:56 +02:00
James Cole
92553cbc7e Add icon, missing translation [skip ci] 2016-10-15 12:41:45 +02:00
James Cole
8e48e53f17 Restucturing some code. 2016-10-15 12:39:34 +02:00
James Cole
2f9a4bb79a Better text 2016-10-15 12:39:11 +02:00
James Cole
ac968dd6cd Extended the user admin. 2016-10-15 07:11:53 +02:00
James Cole
6e4f2c0c8a Small script to upgrade transactions. 2016-10-15 06:19:21 +02:00
James Cole
d662c18ed7 Fix sorting in chart. [skip ci] 2016-10-14 20:07:15 +02:00
James Cole
e4ea234707 New revenue accounts chart. 2016-10-14 20:01:17 +02:00
James Cole
0b526c0168 New revenue chart 2016-10-14 19:59:10 +02:00
James Cole
2acde5c72a Option to show deposit accounts on the front page. 2016-10-14 19:52:30 +02:00
James Cole
ec8cf2c459 New preferences screen. 2016-10-14 19:48:19 +02:00
James Cole
3598780d54 This should at least catch #357 2016-10-14 19:18:00 +02:00
James Cole
35dd8ac6e6 Revert "This should at least catch #357"
This reverts commit 5ff7c7ffab.
2016-10-14 19:16:39 +02:00
James Cole
5ff7c7ffab This should at least catch #357 2016-10-14 19:16:28 +02:00
James Cole
399db47826 Merge branch 'release/4.0.2' 2016-10-14 17:15:47 +02:00
James Cole
148956a60d Some code reformatting. 2016-10-14 17:14:54 +02:00
James Cole
3670053a58 Some code reformatting [skip ci] 2016-10-14 17:14:28 +02:00
James Cole
e8e2b9704f New translations. 2016-10-14 17:14:04 +02:00
James Cole
fcdeebcc06 Some last minute updated texts. 2016-10-14 16:51:38 +02:00
James Cole
586ed82e88 New changelog. 2016-10-14 16:26:05 +02:00
James Cole
cc400d1e2e Merge pull request #356 from telyn/require-intl
Require PHP intl extension
2016-10-12 10:32:28 +02:00
Telyn
6edbfb27aa Add ext-intl to dependencies 2016-10-12 09:22:21 +01:00
James Cole
8fc9251b93 Fix name of language. [skip ci] 2016-10-10 19:08:09 +02:00
James Cole
10af888a97 Expand view [skip ci] 2016-10-10 13:27:35 +02:00
James Cole
89f2328846 Forgot include [skip ci] 2016-10-10 13:25:27 +02:00
James Cole
48e8cd20b4 Removed unused Twig methods. 2016-10-10 13:08:02 +02:00
James Cole
394ef23eda New local names [skip ci] 2016-10-10 08:27:08 +02:00
James Cole
62aa1eb487 Updated translations [skip ci] 2016-10-10 08:19:00 +02:00
James Cole
1500018ccc A new language arrives! [skip ci] 2016-10-10 08:13:27 +02:00
James Cole
23fad62d46 Completely removed account crud class. 2016-10-10 08:03:03 +02:00
James Cole
3cbf00734f Remove storeMeta 2016-10-10 07:53:25 +02:00
James Cole
1dc17dd59d Move getActiveAccountsByType 2016-10-10 07:53:12 +02:00
James Cole
f8935c92ea Unrelated code cleanup. 2016-10-10 07:49:55 +02:00
James Cole
de6f838413 Moved getAccountsByType 2016-10-10 07:49:39 +02:00
James Cole
e8a095e543 Moved getAccountsById 2016-10-10 07:25:27 +02:00
James Cole
717c1d080e Copied (not yet removed) findByName 2016-10-10 07:20:49 +02:00
James Cole
0ae9afd325 Move findByIban 2016-10-10 07:16:05 +02:00
James Cole
d1b56c2afa Moved findByAccountNumber 2016-10-10 07:14:01 +02:00
James Cole
8ef7c5ac33 Moved find() method to new class. 2016-10-10 07:12:39 +02:00
James Cole
7180a40cd8 Refactored some methods surrounding the opening balance of an account. 2016-10-10 07:01:14 +02:00
James Cole
71804af624 Updated some model code. 2016-10-10 06:50:24 +02:00
James Cole
85dc7f3643 Moved another method. 2016-10-10 06:49:50 +02:00
James Cole
a866d13b75 Forgot to add argument 2016-10-10 06:49:39 +02:00
James Cole
fcb5e4eabc Moved leftOnAccount() 2016-10-10 06:47:42 +02:00
James Cole
ade1cf9c19 Fixed wrong listing. 2016-10-10 06:40:50 +02:00
James Cole
0f1ec7d003 Removed double method. 2016-10-09 21:49:31 +02:00
James Cole
7e038afece Must be unsigned 2016-10-09 21:36:22 +02:00
James Cole
9bb8e182fa Forgot a translation 2016-10-09 21:36:15 +02:00
James Cole
e94ae126fd Refactored accountRepository::getJournals > accountTasker > getJournals 2016-10-09 21:36:03 +02:00
James Cole
5bb8c6a366 This should fix #355 2016-10-09 20:18:46 +02:00
James Cole
30844df5d4 Merge branch 'develop' of https://github.com/JC5/firefly-iii into develop
* 'develop' of https://github.com/JC5/firefly-iii:
  Fixed issue causing all imported transactions to have unknown opposing account with ABN AMRO specific
2016-10-09 20:18:14 +02:00
James Cole
63e4a410a7 Merge pull request #354 from roberthorlings/bugfix/abn-amro-specific
Bugfix for issue with ABN AMRO specific
2016-10-09 20:00:48 +02:00
Robert Horlings
ee9a5d91e2 Merge branch 'develop' into bugfix/abn-amro-specific 2016-10-09 19:53:11 +02:00
Robert Horlings
171ab8a4c3 Fixed issue causing all imported transactions to have unknown opposing account with ABN AMRO specific 2016-10-09 17:19:00 +02:00
James Cole
96740aaac4 Extend transaction model for #351 2016-10-09 17:06:52 +02:00
James Cole
2017720096 Experimental new getJournals method. 2016-10-09 16:22:08 +02:00
James Cole
b77ea6d316 Add some phpdoc 2016-10-09 11:21:41 +02:00
James Cole
f5adb4047f Remove methods no longer used. 2016-10-09 10:59:28 +02:00
James Cole
b082858866 Removed unused blocks from the front page. Savings and piggy banks. 2016-10-09 10:58:54 +02:00
James Cole
a8a014189d Removed method that was already there under another name. 2016-10-09 10:57:06 +02:00
James Cole
39ea9e85a7 Various code cleanup and refactoring. Restored cache. 2016-10-09 10:53:37 +02:00
James Cole
a4d2ed74fc Make sure all journals are included. 2016-10-09 09:41:03 +02:00
James Cole
90f2e27f1f Refactoring income and expense reports. 2016-10-09 09:32:12 +02:00
James Cole
a3359ba47a Moved destroy() method from CRUD to Account repos. 2016-10-09 08:20:29 +02:00
James Cole
1d2d3523d6 Move CRUD method count() to account repository 2016-10-09 08:18:47 +02:00
James Cole
3f40751a1a Forgot to exclude a method. 2016-10-09 08:06:49 +02:00
James Cole
b5b55e862c Clean up code. 2016-10-09 07:59:14 +02:00
James Cole
c64771b76b Move some methods around, refactoring. 2016-10-09 07:58:27 +02:00
James Cole
ea7ee7ee9a Moved a report out of the controller. 2016-10-08 16:24:07 +02:00
James Cole
a1f797c4d1 Moved a method around. 2016-10-08 16:04:05 +02:00
James Cole
d0c92a2244 Clean up account report helper. 2016-10-08 15:59:58 +02:00
James Cole
6e90c033b1 Start of some remodelling. 2016-10-08 14:54:32 +02:00
James Cole
24f62b8fce Some minor refactoring. 2016-10-08 10:02:33 +02:00
James Cole
d43936155c Removed some unused code. 2016-10-07 16:33:17 +02:00
James Cole
39dab4fdd9 Remove unused class. 2016-10-07 12:28:14 +02:00
James Cole
c0fdf44ad2 Small cleaning up. 2016-10-07 11:40:03 +02:00
James Cole
4d91f7d23a This fixes #344 2016-10-07 09:40:50 +02:00
James Cole
49af6522a8 Some code cleanup. 2016-10-07 05:44:21 +02:00
James Cole
3c5f9487a8 Prep change log for next version [skip ci] 2016-10-07 05:43:47 +02:00
James Cole
f5cb87f5c3 Merge pull request #348 from SanderKleykens/feature/postgres-compatibility
PostgreSQL compatibility
2016-10-07 05:32:10 +02:00
Sander Kleykens
cf543613c9 Fix the CSV importer failing when using PostgreSQL
Add ordered column to the list of columns that are selected so PostgreSQL doesn't throw an error
2016-10-06 23:49:33 +02:00
Sander Kleykens
5c239c91db Convert raw XORs to a construct compatible with Laravel's query builder 2016-10-06 22:27:10 +02:00
James Cole
9920504232 Fixes #346 2016-10-06 05:26:38 +02:00
James Cole
5540697dbd Removed a method no longer necessary. 2016-10-05 16:09:37 +02:00
James Cole
b355c18e0c Some code cleanup and copyright cleanup. [skip ci] 2016-10-05 06:52:15 +02:00
James Cole
1e90485c5f Merge branch 'master' into develop
* master:
  added some comments
  removed some debug commands
  Better descriptions for ING accounts
2016-10-05 06:31:47 +02:00
James Cole
dc784c53b5 Fix for #343 2016-10-04 21:51:46 +02:00
James Cole
5a47391a64 Merge branch 'release/4.0.1' 2016-10-04 20:13:50 +02:00
James Cole
8a106bd16a Merge branch 'release/4.0.1' into develop 2016-10-04 20:13:50 +02:00
James Cole
a31ac79173 New version. 2016-10-04 20:13:40 +02:00
James Cole
0d0a604254 Changelog for 4.0.1 [skip ci] 2016-10-04 20:13:09 +02:00
James Cole
724d25f2c2 Merge branch 'develop'
* develop:
  Fixed some rare bugs.
  Extra clear button to reapply rules #307
  Fix trim when null [skip ci]
  Fixed a bug where incoming transactions would not be properly filtered in several reports.
  Removed for #334
  Fix #337 [skip ci]
  Fix #335
  Remove account extra text #336 [skip ci]
  Fixes bug #338
  Refer to correct page [skip ci]
  Catch unset row.
2016-10-04 20:08:35 +02:00
James Cole
8ed22d452d Merge pull request #342 from tomwerf/master
ING Import
2016-10-04 20:02:34 +02:00
Tom van der Werf
d7fef45a56 added some comments 2016-10-04 17:50:01 +00:00
Tom van der Werf
dc22802dec removed some debug commands 2016-10-04 17:30:49 +00:00
Tom van der Werf
ce5af7b1d9 Better descriptions for ING accounts 2016-10-03 17:08:24 +00:00
James Cole
0a147e5c9c Fixed some rare bugs. 2016-10-02 15:09:43 +02:00
James Cole
7d21255f7f Extra clear button to reapply rules #307 2016-10-02 08:14:11 +02:00
James Cole
13f952f182 Fix trim when null [skip ci] 2016-10-01 09:41:16 +02:00
James Cole
b494be228b Fixed a bug where incoming transactions would not be properly filtered in several reports. 2016-10-01 09:37:18 +02:00
James Cole
0fdaac53d0 Removed for #334 2016-10-01 08:49:33 +02:00
James Cole
e1b3a08878 Fix #337 [skip ci] 2016-10-01 08:49:02 +02:00
James Cole
dc893588b0 Fix #335 2016-10-01 08:48:13 +02:00
James Cole
b9fcc443ec Remove account extra text #336 [skip ci] 2016-10-01 08:45:14 +02:00
James Cole
d8586c8043 Fixes bug #338 2016-09-29 19:17:24 +02:00
James Cole
4252a3e53b Refer to correct page [skip ci] 2016-09-29 07:04:58 +02:00
James Cole
dbb5cdb9cf Catch unset row. 2016-09-29 07:02:47 +02:00
James Cole
9bdfecbfdc Merge branch 'release/4.0.0' 2016-09-26 18:37:33 +02:00
James Cole
3ec8a8c375 Merge branch 'release/4.0.0' into develop 2016-09-26 18:37:33 +02:00
James Cole
f85e4a24e5 New license information. 2016-09-26 18:37:20 +02:00
James Cole
0dda87c78e New license. 2016-09-26 18:34:31 +02:00
James Cole
2fc09ff9d7 Fix empty pop-ups in report. 2016-09-25 14:47:55 +02:00
James Cole
e4e0e21293 Smaller method. 2016-09-25 08:59:27 +02:00
James Cole
15089f0d7e Some issues fixed for scrutiniser. 2016-09-25 08:50:12 +02:00
James Cole
7232c1d7bb partial fix for #307 2016-09-25 08:46:57 +02:00
James Cole
9a53d8c21c Some array_keys fixes. 2016-09-25 08:46:42 +02:00
James Cole
0d198193db Some issues fixed for scrutiniser. 2016-09-25 08:36:35 +02:00
James Cole
45bc23b8af Some issues fixed for scrutiniser. 2016-09-25 08:32:53 +02:00
James Cole
3323c31765 Some issues fixed for scrutiniser. 2016-09-25 08:24:03 +02:00
James Cole
bb7c26b77c Some issues fixed for scrutiniser. 2016-09-25 08:20:17 +02:00
James Cole
9101d6a2c0 Add lines to configuration on wiki. [skip ci] 2016-09-24 19:32:00 +02:00
James Cole
ad2b254be0 Fix for issue #328. Turns out the import routine converts accounts back and forth instead of creating new entries. 2016-09-24 18:59:31 +02:00
James Cole
abc4f856ce Fix nullable fields. 2016-09-24 17:22:42 +02:00
James Cole
b3b66a8f92 Merge pull request #329 from niekvanderkooy/develop
Fix assignment of array variables
2016-09-24 17:04:32 +02:00
Niek van der Kooy
2f7cf9b916 Fix assignment of array variables 2016-09-24 17:01:41 +02:00
James Cole
b822e0c6e7 Upgrade stuff for 4.0.0 2016-09-24 15:30:08 +02:00
James Cole
6fef9ee72b #315 2016-09-24 10:58:48 +02:00
James Cole
ab6dd0a1ec #314 2016-09-24 10:55:13 +02:00
James Cole
9deef5ac92 #325 2016-09-24 10:53:39 +02:00
James Cole
577187babe Fix #324 [skip ci] 2016-09-24 10:52:13 +02:00
James Cole
577290e813 add strtolower [skip ci] 2016-09-24 09:14:47 +02:00
James Cole
f3b9798216 Fix some rule things. 2016-09-24 09:12:17 +02:00
James Cole
4dcaa96d16 Fix group error. I hope. 2016-09-24 08:59:29 +02:00
James Cole
0dcbf451d6 Add verify command to composer.json 2016-09-24 08:59:14 +02:00
James Cole
e87f6ca40e Fix some possible NULL values. 2016-09-24 08:55:01 +02:00
James Cole
1f34e33d8c Update composer, improve verify routine. 2016-09-23 22:31:01 +02:00
James Cole
258e87e127 Merge pull request #323 from Mortalife/master
Adding GBP to Seed
2016-09-22 07:58:21 +02:00
Matthew Peck
3ec8efcfc1 Adding GBP to Seed 2016-09-21 20:45:36 +01:00
James Cole
70ea227bd0 Add logging to processor #322 2016-09-21 21:01:10 +02:00
James Cole
27c832ed58 Logging for rule triggers #322 2016-09-21 20:58:12 +02:00
James Cole
a31b4ccf01 Basic logging for willMatchEverything #322 2016-09-21 20:30:09 +02:00
James Cole
d221ea68d0 Gave all rule actions some logging. #322 2016-09-21 20:12:04 +02:00
James Cole
dc9fe58536 Fix tags input width. 2016-09-21 19:23:50 +02:00
James Cole
f871e29bdb Quick fix for broken attachments. 2016-09-21 19:16:47 +02:00
James Cole
1357352276 Merge pull request #320 from Mortalife/master
Decimal place fix on import
2016-09-20 20:21:02 +02:00
James Cole
e169754693 Fix display bug for attachments 2016-09-20 17:23:12 +02:00
James Cole
1cfe4f40ba Fix display bug for attachments 2016-09-20 17:22:07 +02:00
James Cole
5545d1c1ba Fix display bug for attachments 2016-09-20 17:21:26 +02:00
James Cole
e5f7228fa9 Fix future query problems (current users not affected either way) [skip ci] 2016-09-20 09:32:58 +02:00
James Cole
11385494eb Fix for income entry. 2016-09-20 08:57:08 +02:00
James Cole
ae328de469 Fix bug in year report. 2016-09-20 08:26:42 +02:00
James Cole
0574a706c8 Error in decrypt error (yes) 2016-09-20 07:57:04 +02:00
Matthew Peck
70bb85a75b Cleanup 2016-09-20 00:00:11 +01:00
Matthew Peck
8cd901b57b Added support for multiple decimal places 2016-09-19 23:53:51 +01:00
James Cole
8b9818c48e This will fix #316 2016-09-18 20:00:13 +02:00
James Cole
a95099fa46 Update FF configuration. 2016-09-18 19:57:21 +02:00
James Cole
221e4b7fc0 Fix some migrations [skip ci] 2016-09-18 18:14:07 +02:00
James Cole
6cff3eb61e Fix some migrations [skip ci] 2016-09-18 17:52:31 +02:00
James Cole
e4fd97ae77 Some code fixes. [skip ci] 2016-09-17 09:52:28 +02:00
James Cole
5ca9099654 Some code fixes. 2016-09-17 09:50:40 +02:00
James Cole
6e33e26ddf Update copyright notices, update German language. 2016-09-17 07:57:32 +02:00
James Cole
04461a4ab8 Updated composer.lock [skip ci] 2016-09-17 07:22:39 +02:00
James Cole
a4b9bbff54 Update AdminLTE template. 2016-09-17 07:19:09 +02:00
James Cole
4ad4252a77 Extend exclude path. Trigger a new inspection. 2016-09-17 07:10:29 +02:00
James Cole
aac0c9ab98 Various layout updates and tiny upgrade fixes [skip ci] 2016-09-16 13:29:56 +02:00
James Cole
c123e1044a Expand config so people won't get errors here [skip ci] 2016-09-16 12:19:29 +02:00
James Cole
d25d0454fc Code clean up 2016-09-16 12:15:58 +02:00
James Cole
f38984398d Code clean up [skip ci] 2016-09-16 12:07:45 +02:00
James Cole
a07799cfa4 MySQL 5.7 compatible query fixing. [skip ci] 2016-09-16 11:16:31 +02:00
James Cole
7c52f297ee MySQL 5.7 compatible query fixing. [skip ci] 2016-09-16 11:06:21 +02:00
James Cole
50a3279b30 MySQL 5.7 compatible query fixing. [skip ci] 2016-09-16 11:04:24 +02:00
James Cole
0ea14eb987 MySQL 5.7 compatible grouping. [skip ci] 2016-09-16 11:01:35 +02:00
James Cole
cf1b98e569 MySQL 5.7 compatible grouping. 2016-09-16 10:55:26 +02:00
James Cole
63fb435002 Expand code. 2016-09-16 10:50:19 +02:00
James Cole
2f8263f53a Possible fix for reports [skip ci] 2016-09-16 09:36:08 +02:00
James Cole
fb649779d6 Do not need to sort. Fix MySQL 5.7 compatibility. 2016-09-16 09:31:40 +02:00
James Cole
bb58f605f7 Some new login / logout routes 2016-09-16 09:21:36 +02:00
James Cole
fccdf56c5d Fixed some query things. 2016-09-16 09:09:54 +02:00
James Cole
bd53410c71 Some changes in login routes for 5.3 2016-09-16 09:02:35 +02:00
James Cole
7d63f124c4 Fixing some login routes 2016-09-16 07:22:57 +02:00
James Cole
9ffc5d857c Fixed some db bugs. These will only pop up when developing. 2016-09-16 07:16:09 +02:00
James Cole
2f93784acd More code for 5.3 2016-09-16 07:05:34 +02:00
James Cole
d00fbe4eb3 More code for 5.3 2016-09-16 06:48:38 +02:00
James Cole
51d9f041ae Changes for login routes. 2016-09-16 06:43:13 +02:00
James Cole
b872ab8b86 New code and new routes for 5.3 2016-09-16 06:40:45 +02:00
James Cole
3d25fd79ca First set of upgrade to 5.3 stuff. 2016-09-16 06:19:40 +02:00
James Cole
3aad78e6ef Lots of updated libraries.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-09-15 19:14:55 +02:00
James Cole
7d5bb72b0c Fix for #312
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-09-15 19:14:22 +02:00
James Cole
46e5aae8bb Fix changelog. [skip ci]
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-09-15 19:00:22 +02:00
James Cole
b9e2ee7af3 Merge branch 'release/3.10.4' 2016-09-14 20:40:52 +02:00
James Cole
c1a2892788 New changelog.
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-09-14 20:40:12 +02:00
James Cole
2078183e0d Update version and composer file. 2016-09-14 20:37:12 +02:00
James Cole
fab1d53714 Simplified upgrade instructions. 2016-09-14 20:35:45 +02:00
James Cole
3fe831c7d8 Bit of code cleanup courtesy of PHPStorm. 2016-09-13 19:20:09 +02:00
James Cole
6958f71cfd @fuf discovered a bug where FF3 will fall back to the hard-coded system default currency and not the set default currency. See #307 2016-09-13 19:19:58 +02:00
James Cole
a7351f348d Fixed a bug mentioned by @vissert and added some logging for @sandermulders
Signed-off-by: James Cole <thegrumpydictator@gmail.com>
2016-09-12 18:43:10 +02:00
James Cole
5379e03447 Merge pull request #311 from sandermulders/fix/nullable-values
add migration that correctly sets nullable for description fields on rules and rule_groups
2016-09-12 16:52:14 +02:00
Sander Mulders
539058e32d Fix for #310: add migration that correctly sets nullable for description fields on rules and rule_groups 2016-09-12 14:24:01 +02:00
James Cole
11b6b5a63c Merge branch 'release/3.10.3' into develop 2016-09-11 08:17:42 +02:00
1115 changed files with 78743 additions and 36177 deletions

55
.env.docker Normal file
View File

@@ -0,0 +1,55 @@
APP_ENV=${FF_APP_ENV}
APP_DEBUG=false
APP_FORCE_SSL=false
APP_FORCE_ROOT=
APP_KEY=${FF_APP_KEY}
APP_LOG=daily
APP_LOG_LEVEL=warning
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=${FF_DB_HOST}
DB_PORT=3306
DB_DATABASE=${FF_DB_NAME}
DB_USERNAME=${FF_DB_USER}
DB_PASSWORD=${FF_DB_PASSWORD}
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
COOKIE_PATH="/"
COOKIE_DOMAIN=
COOKIE_SECURE=false
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_FROM=changeme@example.com
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
CACHE_PREFIX=firefly
GOOGLE_MAPS_API_KEY=
ANALYTICS_ID=
SITE_OWNER=mail@example.com
USE_ENCRYPTION=true
PUSHER_KEY=
PUSHER_SECRET=
PUSHER_APP_ID=
DEMO_USERNAME=
DEMO_PASSWORD=

View File

@@ -3,14 +3,18 @@ APP_DEBUG=false
APP_FORCE_SSL=false
APP_FORCE_ROOT=
APP_KEY=SomeRandomStringOf32CharsExactly
LOG_LEVEL=warning
APP_LOG=daily
APP_LOG_LEVEL=warning
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=localhost
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
@@ -19,26 +23,35 @@ COOKIE_PATH="/"
COOKIE_DOMAIN=
COOKIE_SECURE=false
DEFAULT_CURRENCY=EUR
DEFAULT_LANGUAGE=en_US
REDIS_HOST=localhost
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_FROM=enter_your_email_here
MAIL_FROM=changeme@example.com
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
MUST_CONFIRM_ACCOUNT=false
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
SHOW_DEMO_WARNING=false
CACHE_PREFIX=firefly
EXCHANGE_RATE_SERVICE=fixerio
GOOGLE_MAPS_API_KEY=
ANALYTICS_ID=
SITE_OWNER=mail@example.com
USE_ENCRYPTION=true
PUSHER_KEY=
PUSHER_SECRET=
PUSHER_APP_ID=
DEMO_USERNAME=
DEMO_PASSWORD=

55
.env.sandstorm Executable file
View File

@@ -0,0 +1,55 @@
APP_ENV=production
APP_DEBUG=true
APP_FORCE_SSL=false
APP_FORCE_ROOT=
APP_KEY=SomeRandomStringOf32CharsExactly
APP_LOG=syslog
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=firefly
DB_USERNAME=firefly
DB_PASSWORD=firefly
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
COOKIE_PATH="/"
COOKIE_DOMAIN=
COOKIE_SECURE=false
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_FROM=changeme@example.com
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
CACHE_PREFIX=firefly
GOOGLE_MAPS_API_KEY=
ANALYTICS_ID=
SITE_OWNER=mail@example.com
USE_ENCRYPTION=true
PUSHER_KEY=
PUSHER_SECRET=
PUSHER_APP_ID=
DEMO_USERNAME=
DEMO_PASSWORD=

View File

@@ -1,38 +1,46 @@
APP_ENV=testing
APP_DEBUG=true
APP_FORCE_SSL=false
APP_KEY=SomeRandomStringOf32CharsExactly
LOG_LEVEL=debug
APP_FORCE_ROOT=
APP_KEY=TestTestTestTestTestTestTestTest
APP_LOG=daily
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=sqlite
DB_HOST=localhost
DB_DATABASE=homestead
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
DEFAULT_CURRENCY=EUR
DEFAULT_LANGUAGE=en_US
COOKIE_PATH="/"
COOKIE_DOMAIN=
COOKIE_SECURE=false
REDIS_HOST=localhost
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=log
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_FROM=your_address_here@example.com
MAIL_FROM=changeme@example.com
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
ANALYTICS_ID=abcde
RUNCLEANUP=false
SITE_OWNER=your_address_here@example.com
ANALYTICS_ID=
SITE_OWNER=mail@example.com
BLOCKED_DOMAINS=
PUSHER_KEY=
PUSHER_SECRET=
PUSHER_APP_ID=

2
.gitattributes vendored
View File

@@ -1,3 +1,3 @@
* text=auto
*.css linguist-vendored
*.less linguist-vendored
*.scss linguist-vendored

23
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,23 @@
# Welcome to Firefly III on Github!
:+1::tada: Thank you for taking the time to contribute something to Firefly III!
## Feature requests
If you are requesting a new feature, please check out the list of [often requested features](https://firefly-iii.github.io/requested-features/).
## Bugs
If you find a bug, please take the time and see if the [demo site](https://firefly-iii.nder.be/) is also suffering from this bug. Include as many log files and details as you think are necessary.
## Installation problems
Take the time to read the [installation guide FAQ](https://firefly-iii.github.io/installation-guide-faq/) and make sure you search through closed issues for the problems other people have had. Your problem may be among them!
## Pull requests
I can only accept pull requests against the `develop` branch, never the `master` branch.
## Translations :us: :fr: :de:
If you see a spelling error, grammatical error or a weird translation in your language, please join [our CrowdIn](https://crowdin.com/project/firefly-iii) project. There, you can submit your translations and fixes. The GitHub repository will download these automatically and they will be included in the next release.

10
.gitignore vendored Normal file → Executable file
View File

@@ -1,9 +1,7 @@
/vendor
/node_modules
/public/storage
/vendor
Homestead.json
Homestead.yaml
.env
_development
.env.local
result.html
test-import.sh
test-import-report.txt
public/google*.html

5
.sandstorm/.gitattributes vendored Normal file
View File

@@ -0,0 +1,5 @@
# vagrant-spk creates shell scripts, which must end in \n, even on a \r\n system.
*.sh text eol=lf

5
.sandstorm/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
# This file stores a list of sub-paths of .sandstorm/ that should be ignored by git.
.vagrant

103
.sandstorm/Vagrantfile vendored Normal file
View File

@@ -0,0 +1,103 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Guess at a reasonable name for the VM based on the folder vagrant-spk is
# run from. The timestamp is there to avoid conflicts if you have multiple
# folders with the same name.
VM_NAME = File.basename(File.dirname(File.dirname(__FILE__))) + "_sandstorm_#{Time.now.utc.to_i}"
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Base on the Sandstorm snapshots of the official Debian 8 (jessie) box.
config.vm.box = "sandstorm/debian-jessie64"
if Vagrant.has_plugin?("vagrant-vbguest") then
# vagrant-vbguest is a Vagrant plugin that upgrades
# the version of VirtualBox Guest Additions within each
# guest. If you have the vagrant-vbguest plugin, then it
# needs to know how to compile kernel modules, etc., and so
# we give it this hint about operating system type.
config.vm.guest = "debian"
end
# We forward port 6080, the Sandstorm web port, so that developers can
# visit their sandstorm app from their browser as local.sandstorm.io:6080
# (aka 127.0.0.1:6080).
config.vm.network :forwarded_port, guest: 6080, host: 6080
# Use a shell script to "provision" the box. This installs Sandstorm using
# the bundled installer.
config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/global-setup.sh", keep_color: true
# Then, do stack-specific and app-specific setup.
config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/setup.sh", keep_color: true
# Shared folders are configured per-provider since vboxsf can't handle >4096 open files,
# NFS requires privilege escalation every time you bring a VM up,
# and 9p is only available on libvirt.
# Calculate the number of CPUs and the amount of RAM the system has,
# in a platform-dependent way; further logic below.
cpus = nil
total_kB_ram = nil
host = RbConfig::CONFIG['host_os']
if host =~ /darwin/
cpus = `sysctl -n hw.ncpu`.to_i
total_kB_ram = `sysctl -n hw.memsize`.to_i / 1024
elsif host =~ /linux/
cpus = `nproc`.to_i
total_kB_ram = `grep MemTotal /proc/meminfo | awk '{print $2}'`.to_i
elsif host =~ /mingw/
# powershell may not be available on Windows XP and Vista, so wrap this in a rescue block
begin
cpus = `powershell -Command "(Get-WmiObject Win32_Processor -Property NumberOfLogicalProcessors | Select-Object -Property NumberOfLogicalProcessors | Measure-Object NumberOfLogicalProcessors -Sum).Sum"`.to_i
total_kB_ram = `powershell -Command "Get-CimInstance -class cim_physicalmemory | % $_.Capacity}"`.to_i / 1024
rescue
end
end
# Use the same number of CPUs within Vagrant as the system, with 1
# as a default.
#
# Use at least 512MB of RAM, and if the system has more than 2GB of
# RAM, use 1/4 of the system RAM. This seems a reasonable compromise
# between having the Vagrant guest operating system not run out of
# RAM entirely (which it basically would if we went much lower than
# 512MB) and also allowing it to use up a healthily large amount of
# RAM so it can run faster on systems that can afford it.
if cpus.nil? or cpus.zero?
cpus = 1
end
if total_kB_ram.nil? or total_kB_ram < 2048000
assign_ram_mb = 512
else
assign_ram_mb = (total_kB_ram / 1024 / 4)
end
# Actually apply these CPU/memory values to the providers.
config.vm.provider :virtualbox do |vb, override|
vb.cpus = cpus
vb.memory = assign_ram_mb
vb.name = VM_NAME
vb.customize ["modifyvm", :id, "--nictype1", "Am79C973"]
# /opt/app and /host-dot-sandstorm are used by vagrant-spk
override.vm.synced_folder "..", "/opt/app"
override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm"
# /vagrant is not used by vagrant-spk; we need this line so it gets disabled; if we removed the
# line, vagrant would automatically insert a synced folder in /vagrant, which is not what we want.
override.vm.synced_folder "..", "/vagrant", disabled: true
end
config.vm.provider :libvirt do |libvirt, override|
libvirt.cpus = cpus
libvirt.memory = assign_ram_mb
libvirt.default_prefix = VM_NAME
# /opt/app and /host-dot-sandstorm are used by vagrant-spk
override.vm.synced_folder "..", "/opt/app", type: "9p", accessmode: "passthrough"
override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm", type: "9p", accessmode: "passthrough"
# /vagrant is not used by vagrant-spk; we need this line so it gets disabled; if we removed the
# line, vagrant would automatically insert a synced folder in /vagrant, which is not what we want.
override.vm.synced_folder "..", "/vagrant", type: "9p", accessmode: "passthrough", disabled: true
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

21
.sandstorm/build.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
# Checks if there's a composer.json, and if so, installs/runs composer.
# This script only runs once, when the app connects to sandstorm.
set -euo pipefail
cd /opt/app
cp .env.sandstorm .env
if [ -f /opt/app/composer.json ] ; then
if [ ! -f composer.phar ] ; then
curl -sS https://getcomposer.org/installer | php
fi
php composer.phar install --no-dev --no-suggest
fi
# link storage folder
rm -rf /opt/app/storage
ln -s /var/storage /opt/app

3
.sandstorm/changelog.md Normal file
View File

@@ -0,0 +1,3 @@
# 3.4.3
* Initial release on Sandstorm.io

View File

@@ -0,0 +1,3 @@
"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! Its pretty fancy. You should use it to save and organise money.
Firefly works on the principle that if you know where youre money is going, you can stop it from going there.

44
.sandstorm/global-setup.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
set -euo pipefail
# Set options for curl. Since we only want to show errors from these curl commands, we also use
# 'cat' to buffer the output; for more information:
# https://github.com/sandstorm-io/vagrant-spk/issues/158
CURL_OPTS="--silent --show-error"
echo localhost > /etc/hostname
hostname localhost
# The following line copies stderr through stderr to cat without accidentally leaving it in the
# output file. Be careful when changing. See: https://github.com/sandstorm-io/vagrant-spk/pull/159
curl $CURL_OPTS https://install.sandstorm.io/ 2>&1 > /host-dot-sandstorm/caches/install.sh | cat
SANDSTORM_CURRENT_VERSION=$(curl $CURL_OPTS -f "https://install.sandstorm.io/dev?from=0&type=install")
SANDSTORM_PACKAGE="sandstorm-$SANDSTORM_CURRENT_VERSION.tar.xz"
if [[ ! -f /host-dot-sandstorm/caches/$SANDSTORM_PACKAGE ]] ; then
echo -n "Downloading Sandstorm version ${SANDSTORM_CURRENT_VERSION}..."
curl $CURL_OPTS --output "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE.partial" "https://dl.sandstorm.io/$SANDSTORM_PACKAGE" 2>&1 | cat
mv "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE.partial" "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE"
echo "...done."
fi
if [ ! -e /opt/sandstorm/latest/sandstorm ] ; then
echo -n "Installing Sandstorm version ${SANDSTORM_CURRENT_VERSION}..."
bash /host-dot-sandstorm/caches/install.sh -d -e "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE" >/dev/null
echo "...done."
fi
modprobe ip_tables
# Make the vagrant user part of the sandstorm group so that commands like
# `spk dev` work.
usermod -a -G 'sandstorm' 'vagrant'
# Bind to all addresses, so the vagrant port-forward works.
sudo sed --in-place='' \
--expression='s/^BIND_IP=.*/BIND_IP=0.0.0.0/' \
/opt/sandstorm/sandstorm.conf
sudo service sandstorm restart
# Enable apt-cacher-ng proxy to make things faster if one appears to be running on the gateway IP
GATEWAY_IP=$(ip route | grep ^default | cut -d ' ' -f 3)
if nc -z "$GATEWAY_IP" 3142 ; then
echo "Acquire::http::Proxy \"http://$GATEWAY_IP:3142\";" > /etc/apt/apt.conf.d/80httpproxy
fi
# Configure apt to retry fetching things that fail to download.
echo "APT::Acquire::Retries \"10\";" > /etc/apt/apt.conf.d/80sandstorm-retry

62
.sandstorm/launcher.sh Executable file
View File

@@ -0,0 +1,62 @@
#!/bin/bash
# Runs every time we create a new grain!
# Create a bunch of folders under the clean /var that php, nginx, and mysql expect to exist
mkdir -p /var/lib/mysql
mkdir -p /var/lib/nginx
mkdir -p /var/lib/php/sessions/
mkdir -p /var/log
mkdir -p /var/log/mysql
mkdir -p /var/log/nginx
# Wipe /var/run, since pidfiles and socket files from previous launches should go away
# TODO someday: I'd prefer a tmpfs for these.
rm -rf /var/run
mkdir -p /var/run
rm -rf /var/tmp
mkdir -p /var/tmp
mkdir -p /var/run/mysqld
# make storage directories
rm -rf /var/storage
mkdir -p /var/storage/app/public
mkdir -p /var/storage/build
mkdir -p /var/storage/database
mkdir -p /var/storage/debugbar
mkdir -p /var/storage/export
mkdir -p /var/storage/framework/cache
mkdir -p /var/storage/framework/sessions
mkdir -p /var/storage/framework/views
mkdir -p /var/storage/logs
mkdir -p /var/storage/upload
# Ensure mysql tables created
HOME=/etc/mysql /usr/bin/mysql_install_db --force
# Spawn mysqld, php
HOME=/etc/mysql /usr/sbin/mysqld &
/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf &
# Wait until mysql and php have bound their sockets, indicating readiness
while [ ! -e /var/run/mysqld/mysqld.sock ] ; do
echo "waiting for mysql to be available at /var/run/mysqld/mysqld.sock"
sleep .5
done
while [ ! -e /var/run/php7.0-fpm.sock ] ; do
echo "waiting for php7.0-fpm to be available at /var/run/php7.0-fpm.sock"
sleep .5
done
echo "Installing database.."
# Install database for Firefly III
echo "CREATE DATABASE IF NOT EXISTS firefly; GRANT ALL on firefly.* TO 'firefly'@'localhost' IDENTIFIED BY 'firefly';" | mysql -uroot
echo "Done!"
echo "Migrating..."
php /opt/app/artisan migrate --seed --force
echo "Done!"
# Start nginx.
/usr/sbin/nginx -c /opt/app/.sandstorm/service-config/nginx.conf -g "daemon off;"

BIN
.sandstorm/pgp-keyring Normal file

Binary file not shown.

BIN
.sandstorm/pgp-signature Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,188 @@
@0x9411e6c8b3c8a4b6;
using Spk = import "/sandstorm/package.capnp";
# This imports:
# $SANDSTORM_HOME/latest/usr/include/sandstorm/package.capnp
# Check out that file to see the full, documented package definition format.
const pkgdef :Spk.PackageDefinition = (
# The package definition. Note that the spk tool looks specifically for the
# "pkgdef" constant.
id = "uws252ya9mep4t77tevn85333xzsgrpgth8q4y1rhknn1hammw70",
# Your app ID is actually its public key. The private key was placed in
# your keyring. All updates must be signed with the same key.
manifest = (
appTitle = (defaultText = "Firefly III"),
appVersion = 1,
appMarketingVersion = (defaultText = "3.4.6"),
actions = [
# Define your "new document" handlers here.
( nounPhrase = (defaultText = "administration"),
command = .myCommand
# The command to run when starting for the first time. (".myCommand"
# is just a constant defined at the bottom of the file.)
)
],
continueCommand = .myCommand,
# This is the command called to start your app back up after it has been
# shut down for inactivity. Here we're using the same command as for
# starting a new instance, but you could use different commands for each
# case.
metadata = (
icons = (
appGrid = (png = (dpi1x = embed "app-graphics/firefly-iii-128.png")),
grain = (png = (dpi1x = embed "app-graphics/firefly-iii-24.png",
dpi2x = embed "app-graphics/firefly-iii-48.png")),
market = (png = (dpi1x = embed "app-graphics/firefly-iii-150.png"))
),
website = "https://firefly-iii.github.io/",
codeUrl = "https://github.com/firefly-iii/firefly-iii",
#license = (openSource = mit),
license = (proprietary = (defaultText = embed "../LICENSE")),
# The license this package is distributed under. See
# https://docs.sandstorm.io/en/latest/developing/publishing-apps/#license
categories = [productivity],
# A list of categories/genres to which this app belongs, sorted with best fit first.
# See the list of categories at
# https://docs.sandstorm.io/en/latest/developing/publishing-apps/#categories
author = (
contactEmail = "thegrumpydictator@gmail.com",
upstreamAuthor = "James Cole",
pgpSignature = embed "pgp-signature",
),
pgpKeyring = embed "pgp-keyring",
description = (defaultText = embed "description.md"),
shortDescription = (defaultText = "Financial management"),
screenshots = [
# Screenshots to use for marketing purposes. Examples below.
# Sizes are given in device-independent pixels, so if you took these
# screenshots on a Retina-style high DPI screen, divide each dimension by two.
(width = 1200, height = 1000, png = embed "screenshots/screenshot-1.png"),
(width = 1200, height = 1000, png = embed "screenshots/screenshot-2.png"),
(width = 1200, height = 1518, png = embed "screenshots/screenshot-3.png"),
],
changeLog = (defaultText = embed "changelog.md"),
),
),
sourceMap = (
# Here we defined where to look for files to copy into your package. The
# `spk dev` command actually figures out what files your app needs
# automatically by running it on a FUSE filesystem. So, the mappings
# here are only to tell it where to find files that the app wants.
searchPath = [
( sourcePath = "." ), # Search this directory first.
( sourcePath = "/", # Then search the system root directory.
hidePaths = [ "home", "proc", "sys",
"etc/passwd", "etc/hosts", "etc/host.conf",
"etc/nsswitch.conf", "etc/resolv.conf" ]
# You probably don't want the app pulling files from these places,
# so we hide them. Note that /dev, /var, and /tmp are implicitly
# hidden because Sandstorm itself provides them.
)
]
),
fileList = "sandstorm-files.list",
# `spk dev` will write a list of all the files your app uses to this file.
# You should review it later, before shipping your app.
alwaysInclude = ["app","bootstrap","config","database","public","resources","routes"],
# Fill this list with more names of files or directories that should be
# included in your package, even if not listed in sandstorm-files.list.
# Use this to force-include stuff that you know you need but which may
# not have been detected as a dependency during `spk dev`. If you list
# a directory here, its entire contents will be included recursively.
#bridgeConfig = (
# # Used for integrating permissions and roles into the Sandstorm shell
# # and for sandstorm-http-bridge to pass to your app.
# # Uncomment this block and adjust the permissions and roles to make
# # sense for your app.
# # For more information, see high-level documentation at
# # https://docs.sandstorm.io/en/latest/developing/auth/
# # and advanced details in the "BridgeConfig" section of
# # https://github.com/sandstorm-io/sandstorm/blob/master/src/sandstorm/package.capnp
# viewInfo = (
# # For details on the viewInfo field, consult "ViewInfo" in
# # https://github.com/sandstorm-io/sandstorm/blob/master/src/sandstorm/grain.capnp
#
# permissions = [
# # Permissions which a user may or may not possess. A user's current
# # permissions are passed to the app as a comma-separated list of `name`
# # fields in the X-Sandstorm-Permissions header with each request.
# #
# # IMPORTANT: only ever append to this list! Reordering or removing fields
# # will change behavior and permissions for existing grains! To deprecate a
# # permission, or for more information, see "PermissionDef" in
# # https://github.com/sandstorm-io/sandstorm/blob/master/src/sandstorm/grain.capnp
# (
# name = "editor",
# # Name of the permission, used as an identifier for the permission in cases where string
# # names are preferred. Used in sandstorm-http-bridge's X-Sandstorm-Permissions HTTP header.
#
# title = (defaultText = "editor"),
# # Display name of the permission, e.g. to display in a checklist of permissions
# # that may be assigned when sharing.
#
# description = (defaultText = "grants ability to modify data"),
# # Prose describing what this role means, suitable for a tool tip or similar help text.
# ),
# ],
# roles = [
# # Roles are logical collections of permissions. For instance, your app may have
# # a "viewer" role and an "editor" role
# (
# title = (defaultText = "editor"),
# # Name of the role. Shown in the Sandstorm UI to indicate which users have which roles.
#
# permissions = [true],
# # An array indicating which permissions this role carries.
# # It should be the same length as the permissions array in
# # viewInfo, and the order of the lists must match.
#
# verbPhrase = (defaultText = "can make changes to the document"),
# # Brief explanatory text to show in the sharing UI indicating
# # what a user assigned this role will be able to do with the grain.
#
# description = (defaultText = "editors may view all site data and change settings."),
# # Prose describing what this role means, suitable for a tool tip or similar help text.
# ),
# (
# title = (defaultText = "viewer"),
# permissions = [false],
# verbPhrase = (defaultText = "can view the document"),
# description = (defaultText = "viewers may view what other users have written."),
# ),
# ],
# ),
# #apiPath = "/api",
# # Apps can export an API to the world. The API is to be used primarily by Javascript
# # code and native apps, so it can't serve out regular HTML to browsers. If a request
# # comes in to your app's API, sandstorm-http-bridge will prefix the request's path with
# # this string, if specified.
#),
);
const myCommand :Spk.Manifest.Command = (
# Here we define the command used to start up your server.
argv = ["/sandstorm-http-bridge", "8000", "--", "/opt/app/.sandstorm/launcher.sh"],
environ = [
# Note that this defines the *entire* environment seen by your app.
(key = "PATH", value = "/usr/local/bin:/usr/bin:/bin"),
(key = "SANDSTORM", value = "1"),
# Export SANDSTORM=1 into the environment, so that apps running within Sandstorm
# can detect if $SANDSTORM="1" at runtime, switching UI and/or backend to use
# the app's Sandstorm-specific integration code.
]
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

View File

@@ -0,0 +1,89 @@
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
image/svg+xml svg svgz;
image/webp webp;
application/font-woff woff;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.wap.wmlc wmlc;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}

View File

@@ -0,0 +1,87 @@
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
# Basic Settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_names_hash_bucket_size 64;
server_tokens off;
server_name_in_redirect off;
include mime.types;
default_type application/octet-stream;
# Logging
access_log off;
error_log stderr;
# Prevent nginx from adding compression; this interacts badly with Sandstorm
# WebSession due to https://github.com/sandstorm-io/sandstorm/issues/289
gzip off;
# Trust the sandstorm-http-bridge's X-Forwarded-Proto.
map $http_x_forwarded_proto $fe_https {
default "";
https on;
}
server {
listen 8000 default_server;
listen [::]:8000 default_server ipv6only=on;
# Allow arbitrarily large bodies - Sandstorm can handle them, and requests
# are authenticated already, so there's no reason for apps to add additional
# limits by default.
client_max_body_size 0;
server_name localhost;
root /opt/app/public;
location / {
index index.php;
try_files $uri $uri/ /index.php?$query_string;
autoindex on;
sendfile off;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $fe_https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param REDIRECT_STATUS 200;
}
}
}

61
.sandstorm/setup.sh Executable file
View File

@@ -0,0 +1,61 @@
#!/bin/bash
# When you change this file, you must take manual action. Read this doc:
# - https://docs.sandstorm.io/en/latest/vagrant-spk/customizing/#setupsh
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
# install packages so we can install apt-add-repository.
apt-get update
apt-get install -y python-software-properties software-properties-common
# actually add repository
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E9C74FEEA2098A6E
add-apt-repository "deb http://packages.dotdeb.org jessie all"
# install packages.
apt-get update
apt-get install -y nginx php7.0-fpm php7.0-mysql php7.0-cli php7.0-curl git php7.0-dev php7.0-intl php7.0-dom php7.0-mbstring php7.0-bcmath mysql-server
service nginx stop
service php7.0-fpm stop
service mysql stop
systemctl disable nginx
systemctl disable php7.0-fpm
systemctl disable mysql
# patch /etc/php/7.0/fpm/pool.d/www.conf to not change uid/gid to www-data
sed --in-place='' \
--expression='s/^listen.owner = www-data/;listen.owner = www-data/' \
--expression='s/^listen.group = www-data/;listen.group = www-data/' \
/etc/php/7.0/fpm/pool.d/www.conf
# patch /etc/php/7.0/fpm/php-fpm.conf to not have a pidfile
sed --in-place='' \
--expression='s/^pid =/;pid =/' \
/etc/php/7.0/fpm/php-fpm.conf
# move sock file to better dir:
sed --in-place='' \
--expression='s/^listen = \/run\/php\/php7.0-fpm.sock/listen = \/var\/run\/php7.0-fpm.sock/' \
/etc/php/7.0/fpm/pool.d/www.conf
# patch /etc/php/7.0/fpm/pool.d/www.conf to no clear environment variables
# so we can pass in SANDSTORM=1 to apps
sed --in-place='' \
--expression='s/^;clear_env = no/clear_env=no/' \
/etc/php/7.0/fpm/pool.d/www.conf
# patch mysql conf to not change uid, and to use /var/tmp over /tmp
# for secure-file-priv see https://github.com/sandstorm-io/vagrant-spk/issues/195
sed --in-place='' \
--expression='s/^user\t\t= mysql/#user\t\t= mysql/' \
--expression='s,^tmpdir\t\t= /tmp,tmpdir\t\t= /var/tmp,' \
--expression='/\[mysqld]/ a\ secure-file-priv = ""\' \
/etc/mysql/my.cnf
# patch mysql conf to use smaller transaction logs to save disk space
cat <<EOF > /etc/mysql/conf.d/sandstorm.cnf
[mysqld]
# Set the transaction log file to the minimum allowed size to save disk space.
# innodb_log_file_size = 1048576
# Set the main data file to grow by 1MB at a time, rather than 8MB at a time.
innodb_autoextend_increment = 1
EOF

1
.sandstorm/stack Normal file
View File

@@ -0,0 +1 @@
lemp

View File

@@ -2,6 +2,50 @@
tools:
external_code_coverage: false
filter:
excluded_paths:
- app/Support/Migration/*
- app/database/migrations/*
paths:
- app/*
- public/js/ff/*
excluded_paths:
- "database/migrations/*"
- "bootstrap/*"
- "config/*"
- "docker/*"
- "public/js/lib/*"
- "public/lib/adminlte/js/*"
- "public/lib/bootstrap/js/*"
- "resources/*"
- "routes/*"
- "storage/*"
checks:
php:
use_self_instead_of_fqcn: true
uppercase_constants: true
return_doc_comments: true
return_doc_comment_if_not_inferrable: true
remove_extra_empty_lines: true
parameter_doc_comments: true
optional_parameters_at_the_end: true
no_short_variable_names:
minimum: '3'
no_short_method_names:
minimum: '3'
no_long_variable_names:
maximum: '20'
no_goto: true
newline_at_end_of_file: true
encourage_single_quotes: true
avoid_todo_comments: true
avoid_perl_style_comments: true
avoid_fixme_comments: true
avoid_multiple_statements_on_same_line: true
align_assignments: true
duplication: false
javascript: true
coding_style:
php:
spaces:
around_operators:
concatenation: true
other:
after_type_cast: false

32
.travis.yml Normal file
View File

@@ -0,0 +1,32 @@
language: php
php:
- 7.0
- 7.1
cache:
directories:
- vendor
- $HOME/.composer/cache
install:
- rm composer.lock
- composer update --no-scripts
- cp .env.testing .env
- php artisan clear-compiled
- php artisan optimize
- php artisan env
- cp .env.testing .env
- mv storage/database/databasecopy.sqlite storage/database/database.sqlite
- mkdir -p build/logs
script:
- phpunit -c phpunit.coverage.xml
after_success:
- travis_retry php vendor/bin/coveralls -x storage/build/clover.xml
# safelist
branches:
only:
- develop
- master

View File

@@ -2,12 +2,386 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
- No unreleased changes yet.
## [4.4.1] - 2017-04-27
### Added
- Support for deployment on Heroku
### Fixed
- Bug in new-user routine.
## [4.4.0] - 2017-04-23
### Added
- Firefly III can now handle foreign currencies better, including some code to get the exchange rate live from the web.
- Can now make rules for attachments, see #608, as suggested by dzaikos.
### Fixed
- Fixed #629, reported by forcaeluz
- Fixed #630, reported by welbert
- And more various bug fixes.
## [4.3.8] - 2017-04-08
### Added
- Better overview / show pages.
- #628, as reported by [xzaz](https://github.com/xzaz).
- Greatly expanded test coverage
### Fixed
- #619, as reported by [dfiel](https://github.com/dfiel).
- #620, as reported by [forcaeluz](https://github.com/forcaeluz).
- Attempt to fix #624, as reported by [TheSerenin](https://github.com/TheSerenin).
- Favicon link is relative now, fixed by [welbert](https://github.com/welbert).
- Some search bugs
## [4.3.7] - 2017-03-06
### Added
- Nice user friendly views for empty lists.
- Extended contribution guidelines.
- First version of financial report filtered on tags.
- Suggested monthly savings for piggy banks, by [Zsub](https://github.com/Zsub)
- Better test coverage.
### Changed
- Slightly changed tag overview.
- Consistent icon for bill in list.
- Slightly changed account overview.
### Removed
- Removed IDE specific views from .gitignore, issue #598
### Fixed
- Force key generation during installation.
- The `date` function takes the fieldname where a date is stored, not the literal date by [Zsub](https://github.com/Zsub)
- Improved budget frontpage chart, as suggested by [skibbipl](https://github.com/skibbipl)
- Issue #602 and #607, as reported by [skibbipl](https://github.com/skibbipl) and [dzaikos](https://github.com/dzaikos).
- Issue #605, as reported by [Zsub](https://github.com/Zsub).
- Issue #599, as reported by [leander091](https://github.com/leander091).
- Issue #610, as reported by [skibbipl](https://github.com/skibbipl).
- Issue #611, as reported by [ragnarkarlsson](https://github.com/ragnarkarlsson).
- Issue #612, as reported by [ragnarkarlsson](https://github.com/ragnarkarlsson).
- Issue #614, as reported by [worldworm](https://github.com/worldworm).
- Various other bug fixes.
## [4.3.6] - 2017-02-20
### Fixed
- #578, reported by [xpfgsyb](https://github.com/xpfgsyb).
## [4.3.5] - 2017-02-19
### Added
- Beta support for Sandstorm.IO
- Docker support by [@schoentoon](https://github.com/schoentoon), [@elohmeier](https://github.com/elohmeier), [@patrickkostjens](https://github.com/patrickkostjens) and [@crash7](https://github.com/crash7)!
- Can now use special keywords in the search to search for specic dates, categories, etc.
### Changed
- Updated to laravel 5.4!
- User friendly error message
- Updated locales to support more operating systems, first reported in #536 by [dabenzel](https://github.com/dabenzel)
- Updated budget report
- Improved 404 page
- Smooth curves, improved by [elamperti](https://github.com/elamperti).
### Fixed
- #549
- #553
- Fixed #559 reported by [elamperti](https://github.com/elamperti).
- #565, as reported by a user over the mail
- #566, as reported by [dspeckmann](https://github.com/dspeckmann)
- #567, as reported by [winsomniak](https://github.com/winsomniak)
- #569, as reported by [winsomniak](https://github.com/winsomniak)
- #572, as reported by [zjean](https://github.com/zjean)
- Many issues with the transaction filters which will fix reports (they tended to display the wrong amount).
## [4.3.4] - 2017-02-02
### Fixed
- Fixed bug #550, reported by [worldworm](https://github.com/worldworm)!
- Fixed bug #551, reported by [t-me](https://github.com/t-me)!
## [4.3.3] - 2017-01-30
_The 100th release of Firefly!_
### Added
- Add locales to Docker (#534) by [elohmeier](https://github.com/elohmeier).
- Optional database encryption. On by default.
- Datepicker for Firefox and other browsers.
- New instruction block for updating and installing.
- Ability to clone transactions.
- Use multi-select Bootstrap thing instead of massive lists of checkboxes.
### Removed
- Lots of old Javascript
### Fixed
- Missing sort broke various charts
- Bug in reports that made amounts behave weird
- Various bug fixes
### Security
- Tested FF against the naughty string list.
## [4.3.2] - 2017-01-09
An intermediate release because something in the Twig and Twigbridge libraries is broken and I have to make sure it doesn't affect you guys. But some cool features were on their way so there's that oo.
### Added
- Some code for issue #475, consistent overviews.
- Better currency display. Make sure you have locale packages installed.
### Changed
- Uses a new version of Laravel.
### Fixed
- The password reset routine was broken.
- Issue #522, thanks to [xpfgsyb](https://github.com/xpfgsyb)
- Issue #524, thanks to [worldworm](https://github.com/worldworm)
- Issue #526, thanks to [worldworm](https://github.com/worldworm)
- Issue #528, thanks to [skibbipl](https://github.com/skibbipl)
- Various other fixes.
## [4.3.1] - 2017-01-04
### Added
- Support for Russian and Polish.
- Support for a proper demo website.
- Support for custom decimal places in currencies (#506, suggested by [xpfgsyb](https://github.com/xpfgsyb)).
- Most amounts are now right-aligned (#511, suggested by [xpfgsyb](https://github.com/xpfgsyb)).
- German is now a "complete" language, more than 75% translated!
### Changed
- **[New Github repository!](github.com/firefly-iii/firefly-iii)**
- Better category overview.
- #502, thanks to [zjean](https://github.com/zjean)
### Removed
- Removed a lot of administration functions.
- Removed ability to activate users.
### Fixed
- #501, thanks to [zjean](https://github.com/zjean)
- #513, thanks to [skibbipl](https://github.com/skibbipl)
### Security
- #519, thanks to [xpfgsyb](https://github.com/xpfgsyb)
## [4.3.0] - 2015-12-26
### Added
- New method of keeping track of available budget, see issue #489
- Support for Spanish
- Firefly III now has an extended demo mode. Will expand further in the future.
### Changed
- New favicon
- Import routine no longer gives transactions a description #483
### Removed
- All test data generation code.
### Fixed
- Removed import accounts from search results #478
- Redirect after delete will no longer go back to deleted item #477
- Cannot math #482
- Fixed bug in virtual balance field #479
## [4.2.2] - 2016-12-18
### Added
- New budget report (still a bit of a beta)
- Can now edit user
### Changed
- New config for specific events. Still need to build Notifications.
### Fixed
- Various bugs
- Issue #472 thanks to [zjean](https://github.com/zjean)
## [4.2.1] - 2016-12-09
### Added
- BIC support (see #430)
- New category report section and chart (see the general financial report)
### Changed
- Date range picker now also available on mobile devices (see #435)
- Extended range of amounts for issue #439
- Rewrote all routes. Old bookmarks may break.
## [4.2.0] - 2016-11-27
### Added
- Lots of (empty) tests
- Expanded transaction lists (#377)
- New charts at account view
- First code for #305
### Changed
- Updated all email messages.
- Made some fonts local
### Fixed
- Issue #408
- Various issues with split journals
- Issue #414, thx [zjean](https://github.com/zjean)
- Issue #419, thx [schwalberich](https://github.com/schwalberich)
- Issue #422, thx [xzaz](https://github.com/xzaz)
- Various import bugs, such as #416 ([zjean](https://github.com/zjean))
## [4.1.7] - 2016-11-19
### Added
- Check for database table presence in console commands.
- Category report
- Reinstated old test routines.
### Changed
- Confirm account setting is no longer in `.env` file.
- Titles are now in reverse (current page > parent > firefly iii)
- Easier update of language files thanks to Github implementation.
- Uniform colours for charts.
### Fixed
- Made all pages more mobile friendly.
- Fixed #395 found by [marcoveeneman](https://github.com/marcoveeneman).
- Fixed #398 found by [marcoveeneman](https://github.com/marcoveeneman).
- Fixed #401 found by [marcoveeneman](https://github.com/marcoveeneman).
- Many optimizations.
- Updated many libraries.
- Various bugs found by myself.
## [4.1.6] - 2016-11-06
### Added
- New budget table for multi year report.
### Changed
- Greatly expanded help pages and their function.
- Built a new transaction collector, which I think was the idea of [roberthorlings](https://github.com/roberthorlings) originally.
- Rebuilt seach engine.
### Fixed
- #375, thanks to [schoentoon](https://github.com/schoentoon) which made it impossible to resurrect currencies.
- #370 thanks to [ksmolder](https://github.com/ksmolder)
- #378, thanks to [HomelessAvatar](https://github.com/HomelessAvatar)
## [4.1.5] - 2016-11-01
### Changed
- Report parts are loaded using AJAX, making a lot of code more simple.
- Help content will fall back to English.
- Help content is translated through Crowdin.
### Fixed
- Issue #370
## [4.1.4] - 2016-10-30
### Added
- New Dockerfile thanks to [schoentoon](https://github.com/schoentoon)
- Added changing the destination account as rule action.
- Added changing the source account as rule action.
- Can convert transactions into different types.
### Changed
- Changed the export routine to be more future-proof.
- Improved help routine.
- Integrated CrowdIn translations.
- Simplified reports
- Change error message to refer to solution.
### Fixed
- #367 thanks to [HungryFeline](https://github.com/HungryFeline)
- #366 thanks to [3mz3t](https://github.com/3mz3t)
- #362 and #341 thanks to [bnw](https://github.com/bnw)
- #355 thanks to [roberthorlings](https://github.com/roberthorlings)
## [4.1.3] - 2016-10-22
### Fixed
- Some event handlers called the wrong method.
## [4.1.2] - 2016-10-22
### Fixed
- A bug is fixed in the journal event handler that prevented Firefly III from actually storing journals.
## [4.1.1] - 2016-10-22
### Added
- Option to show deposit accounts on the front page.
- Script to upgrade split transactions
- Can now save notes on piggy banks.
- Extend user admin options.
- Run import jobs from the command line
### Changed
- New preferences screen layout.
### Deprecated
- ``firefly:import`` is now ``firefly:start-import``
### Removed
- Lots of old code
### Fixed
- #357, where non utf-8 files would break Firefly.
- Tab delimiter is not properly loaded from import configuration ([roberthorlings](https://github.com/roberthorlings))
- System response to yearly bills
## [4.0.2] - 2016-10-14
### Added
- Added ``intl`` dependency to composer file to ease installation (thanks [telyn](https://github.com/telyn))
- Added support for Croatian.
### Changed
- Updated all copyright notices to refer to the [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/)
- Fixed #344
- Fixed #346, thanks to [SanderKleykens](https://github.com/SanderKleykens)
- #351
- Did some internal remodelling.
### Fixed
- PostgreSQL compatibility thanks to [SanderKleykens](https://github.com/SanderKleykens)
- [roberthorlings](https://github.com/roberthorlings) fixed a bug in the ABN Amro import specific.
## [4.0.1] - 2016-10-04
### Added
- New ING import specific by [tomwerf](https://github.com/tomwerf)
- New Presidents Choice specific to fix #307
- Added some trimming (#335)
### Fixed
- Fixed a bug where incoming transactions would not be properly filtered in several reports.
- #334 by [cyberkov](https://github.com/cyberkov)
- #337
- #336
- #338 found by [roberthorlings](https://github.com/roberthorlings)
## [4.0.0] - 2015-09-26
### Added
- Upgraded to Laravel 5.3, most other libraries upgraded as well.
- Added GBP as currency, thanks to [Mortalife](https://github.com/Mortalife)
### Changed
- Jump to version 4.0.0.
- Firefly III is now subject to a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/) license. Previous versions of this software are still MIT licensed.
### Fixed
- Support for specific decimal places, thanks to [Mortalife](https://github.com/Mortalife)
- Various CSS fixes
- Various bugs, thanks to [fuf](https://github.com/fuf), [sandermulders](https://github.com/sandermulders) and [vissert](https://github.com/vissert)
- Various queries optimized for MySQL 5.7
## [3.10.4] - 2015-09-14
### Fixed
- Migration fix by [sandermulders](https://github.com/sandermulders)
- Tricky import bug fix thanks to [vissert](https://github.com/vissert)
- Currency preference will be correctly pulled from user settings, thanks to [fuf](https://github.com/fuf)
- Simplified code for upgrade instructions.
## [3.10.3] - 2016-08-29
### Added
- More fields for mass-edit, thanks to @Vissert (#282)
- More fields for mass-edit, thanks to [vissert](https://github.com/vissert) (#282)
- First start of German translation
### Changed
@@ -18,7 +392,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Fixed
- A bug in the translation routine broke the import.
- It was possible to destroy your Firefly installation by removing all currencies. Thanks @mondjef
- It was possible to destroy your Firefly installation by removing all currencies. Thanks [mondjef](https://github.com/mondjef)
- Translation bugs.
- Import bug.
@@ -38,8 +412,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Fixed
- Bug in the mass edit routines.
- Firefly III over a proxy will now work (see [issue #290](https://github.com/JC5/firefly-iii/issues/290)), thanks @dfiel for reporting.
- Sneaky bug in the import routine, fixed by @Bonno
- Firefly III over a proxy will now work (see [issue #290](https://github.com/firefly-iii/firefly-iii/issues/290)), thanks [dfiel](https://github.com/dfiel) for reporting.
- Sneaky bug in the import routine, fixed by [Bonno](https://github.com/Bonno)
## [3.10.1] - 2016-08-25
### Added
@@ -59,7 +433,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Fixed a bug where a migration would check an empty table name.
- Fixed various bugs in the import routine.
- Fixed various bugs in the piggy banks pages.
- Fixed a bug in the ``firefly:verify`` routine
- Fixed a bug in the `firefly:verify` routine
## [3.10] - 2015-05-25
### Added
@@ -74,39 +448,28 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- The date picker now supports more ranges and periods.
- Rewrote all migrations. #272
### Deprecated
- Initial release.
### Removed
- Initial release.
### Fixed
- Issue #264
- Issue #265
- Fixed amount calculation problems, #266, thanks @xzaz
- Fixed amount calculation problems, #266, thanks [xzaz](https://github.com/xzaz)
- Issue #271
- Issue #278, #273, thanks @StevenReitsma and @rubella
- Issue #278, #273, thanks [StevenReitsma](https://github.com/StevenReitsma) and [rubella](https://github.com/rubella)
- Bug in attachment download routine would report the wrong size to the user's browser.
- Various NULL errors fixed.
- Various strict typing errors fixed.
- Fixed pagination problems, #276, thanks @xzaz
- Fixed pagination problems, #276, thanks [xzaz](https://github.com/xzaz)
- Fixed a bug where an expense would be assigned to a piggy bank if you created a transfer first.
- Bulk update problems, #280, thanks @stickgrinder
- Bulk update problems, #280, thanks [stickgrinder](https://github.com/stickgrinder)
- Fixed various problems with amount reporting of split transactions.
### Security
- Initial release.
[3.9.1]
## [3.9.1]
### Fixed
- Fixed a bug where removing money from a piggy bank would not work. See issue #265 and #269
[3.9.0]
## [3.9.0]
### Added
- @zjean has added code that allows you to force "https://"-URL's.
- @tonicospinelli has added Portuguese (Brazil) translations.
- [zjean](https://github.com/zjean) has added code that allows you to force "https://"-URL's.
- [tonicospinelli](https://github.com/tonicospinelli) has added Portuguese (Brazil) translations.
- Firefly III supports the *splitting* of transactions:
- A withdrawal (expense) can be split into multiple sub-transactions (with multiple destinations)
- Likewise for deposits (incomes). You can set multiple sources.
@@ -137,7 +500,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Fixed
- Several CSV related bugs.
- Several other bugs.
- Bugs fixed by @Bonno.
- Bugs fixed by [Bonno](https://github.com/Bonno).
## [3.8.3] - 2016-04-17
### Added
@@ -184,7 +547,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Added
- Two factor authentication, thanks to the excellent work of [zjean](https://github.com/zjean).
- A new chart showing your net worth in year and multi-year reports.
- You can now see if your current or future rules actually match any transactions, thanks to the excellent work of @roberthorlings.
- You can now see if your current or future rules actually match any transactions, thanks to the excellent work of [roberthorlings](https://github.com/roberthorlings).
- New date fields for transactions. They are not used yet in reports or anything, but they can be filled in.
- New routine to export your data.
- Firefly III will mail the site owner when blocked users try to login, or when blocked domains are used in registrations.

49
Dockerfile Normal file
View File

@@ -0,0 +1,49 @@
FROM php:7-apache
RUN apt-get update -y && \
apt-get install -y --no-install-recommends libcurl4-openssl-dev \
zlib1g-dev \
libjpeg62-turbo-dev \
libpng12-dev \
libicu-dev \
libmcrypt-dev \
libedit-dev \
libtidy-dev \
libxml2-dev \
libsqlite3-dev \
libbz2-dev \
gettext-base \
locales && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install -j$(nproc) curl gd intl json mcrypt readline tidy zip bcmath xml mbstring pdo_sqlite pdo_mysql bz2
# Generate locales supported by firefly
RUN echo "en_US.UTF-8 UTF-8\nde_DE.UTF-8 UTF-8\nnl_NL.UTF-8 UTF-8\npt_BR.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
# Enable apache mod rewrite..
RUN a2enmod rewrite
# Setup the Composer installer
RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer && \
curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig && \
php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" && \
chmod +x /tmp/composer-setup.php && \
php /tmp/composer-setup.php && \
mv composer.phar /usr/local/bin/composer && \
rm -f /tmp/composer-setup.{php,sig}
ADD . /var/www/firefly-iii
RUN chown -R www-data:www-data /var/www/
ADD docker/apache-firefly.conf /etc/apache2/sites-available/000-default.conf
USER www-data
WORKDIR /var/www/firefly-iii
RUN composer install --no-scripts --no-dev
USER root
ENTRYPOINT ["/var/www/firefly-iii/docker/entrypoint.sh"]

View File

@@ -1,7 +1,7 @@
Copyright (C) 2016 thegrumpydictator@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
https://creativecommons.org/licenses/by-sa/4.0/
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

1
Procfile Normal file
View File

@@ -0,0 +1 @@
web: vendor/bin/heroku-php-nginx -C nginx_app.conf public/

View File

@@ -1,16 +1,20 @@
# Firefly III [![Requires PHP7](https://img.shields.io/badge/php-7.0-red.svg)](https://secure.php.net/downloads.php#v7.0.4) [![Latest Stable Version](https://poser.pugx.org/grumpydictator/firefly-iii/v/stable)](https://packagist.org/packages/grumpydictator/firefly-iii) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/JC5/firefly-iii/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/JC5/firefly-iii/?branch=master)
# Firefly III: A personal finances manager
## A personal finances manager
[![Requires PHP7](https://img.shields.io/badge/php-7.0-red.svg)](https://secure.php.net/downloads.php) [![Latest Stable Version](https://poser.pugx.org/grumpydictator/firefly-iii/v/stable)](https://packagist.org/packages/grumpydictator/firefly-iii) [![License](https://img.shields.io/badge/license-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=44UKUT455HUFA)
[![Screenshot](https://i.nder.be/hhfv03hp/400)](https://i.nder.be/hhfv03hp) [![Screenshot](https://i.nder.be/hhmwmqw9/400)](https://i.nder.be/hhmwmqw9)
[![The index of Firefly III](https://i.nder.be/hurdhgyg/400)](https://i.nder.be/h2b37243) [![The account overview of Firefly III](https://i.nder.be/hnkfkdpr/400)](https://i.nder.be/hv70pbwc)
[![Screenshot](https://i.nder.be/g63q05m0/400)](https://i.nder.be/g63q05m0) [![Screenshot](https://i.nder.be/c2g30ngg/400)](https://i.nder.be/c2g30ngg)
[![The useful financial reports of Firefly III](https://i.nder.be/h7sk6nb7/400)](https://i.nder.be/ccn0u2mp) [![Even more useful reports in Firefly III](https://i.nder.be/g237hr35/400)](https://i.nder.be/gm8hbh7z)
"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.
## Try it out!
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/firefly-iii/firefly-iii/tree/master)
## Installation
To install Firefly III, you'll need a web server (preferrably on Linux) and access to the command line. Then, please read the [installation guide](https://jc5.github.io/firefly-iii/installation-guide/).
To install Firefly III, you'll need a web server (preferrably on Linux) and access to the command line. Then, please read the [installation guide](https://firefly-iii.github.io/using-installing.html).
## More about Firefly III
@@ -22,9 +26,13 @@ Firefly works on the principle that if you know where you're money is going, you
- Firefly can import any CSV file, so migrating from other systems is easy.
- Firefly runs on your own server, so you are fully in control of your data. Remember, there is no such thing as "the cloud", its just somebody elses computer!
- Firefly has lots of features without becoming fancy or bloated.
- Firefly has lots of features without being fancy or bloated.
- If you feel you're missing something you can just ask me and I'll add it!
Firefly is pretty awesome. [You can read more about Firefly III, and its features, on the Github Pages](https://jc5.github.io/firefly-iii/).
Firefly is pretty awesome. [You can read more about Firefly III, and its features, on the Github Pages](https://firefly-iii.github.io/).
If you want to contact me, please open an issue or [email me](mailto:thegrumpydictator@gmail.com).
If you like Firefly and if it helps you save lots of money, why not send me [a dime for every dollar saved](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=44UKUT455HUFA) (this is a joke, although the Paypal form works just fine, try it!)
If you want to contact me, please open an issue or [email me](mailto:thegrumpydictator@gmail.com).
[![Build Status](https://travis-ci.org/firefly-iii/firefly-iii.svg?branch=master)](https://travis-ci.org/firefly-iii/firefly-iii) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/firefly-iii/firefly-iii/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/firefly-iii/firefly-iii/?branch=master) [![Coverage Status](https://coveralls.io/repos/github/firefly-iii/firefly-iii/badge.svg?branch=master)](https://coveralls.io/github/firefly-iii/firefly-iii?branch=master)

59
app.json Normal file
View File

@@ -0,0 +1,59 @@
{
"name": "Firefly III",
"description": "A free and open source personal finances manager",
"repository": "https://github.com/firefly-iii/firefly-iii",
"logo": "https://raw.githubusercontent.com/firefly-iii/firefly-iii/master/public/mstile-150x150.png",
"keywords": [
"finance",
"finances",
"manager",
"management",
"euro",
"dollar",
"laravel",
"money",
"currency",
"financials",
"financial",
"budgets",
"administration",
"tool",
"tooling",
"help",
"helper",
"assistant",
"planning",
"organizing",
"bills",
"personal finance",
"budgets",
"budgeting",
"budgeting tool",
"budgeting application",
"transactions",
"self hosted",
"self-hosted",
"transfers",
"management"
],
"website": "https://firefly-iii.github.io/",
"addons": [
{
"plan": "heroku-postgresql"
}
],
"scripts": {
"postdeploy": "export APP_KEY=$(php artisan --no-ansi key:generate --show)"
},
"buildpacks": [
{
"url": "heroku/php"
}
],
"env": {
"APP_KEY": {
"description": "This key is used to encrypt your data.",
"value": "base64:If1gJN4pyycXTq+WS5TjneDympKuu+8SKvTl6RZnhJg="
}
}
}

View File

@@ -1,45 +0,0 @@
<?php
/**
* ConfigureLogging.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Bootstrap;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Foundation\Bootstrap\ConfigureLogging as IlluminateConfigureLogging;
use Illuminate\Log\Writer;
/**
* Class ConfigureLogging
*
* @package FireflyIII\Bootstrap
*/
class ConfigureLogging extends IlluminateConfigureLogging
{
/**
* @param Application $app
* @param Writer $log
*/
protected function configureDailyHandler(Application $app, Writer $log)
{
$log->useDailyFiles(
$app->storagePath() . '/logs/firefly-iii.log',
$app->make('config')->get('app.log_max_files', 5)
);
}
/**
* @param Application $app
* @param Writer $log
*/
protected function configureSingleHandler(Application $app, Writer $log)
{
$log->useFiles($app->storagePath() . '/logs/firefly-iii.log');
}
}

View File

@@ -0,0 +1,145 @@
<?php
/**
* CreateImport.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use Artisan;
use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Console\Command;
use Log;
/**
* Class CreateImport
*
* @package FireflyIII\Console\Commands
*/
class CreateImport extends Command
{
/**
* The console command description.
*
* @var string
*/
protected $description = 'Use this command to create a new import. Your user ID can be found on the /profile page.';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'firefly:create-import {file} {configuration} {--user=1} {--type=csv} {--start}';
/**
* Create a new command instance.
*
*/
public function __construct()
{
parent::__construct();
}
/**
* @SuppressWarnings(PHPMD.ExcessiveMethodLength) // cannot be helped
*/
public function handle()
{
/** @var UserRepositoryInterface $userRepository */
$userRepository = app(UserRepositoryInterface::class);
$file = $this->argument('file');
$configuration = $this->argument('configuration');
$user = $userRepository->find(intval($this->option('user')));
$cwd = getcwd();
$type = strtolower($this->option('type'));
if (!$this->validArguments()) {
return;
}
$configurationData = json_decode(file_get_contents($configuration));
if (is_null($configurationData)) {
$this->error(sprintf('Firefly III cannot read the contents of configuration file "%s" (working directory: "%s").', $configuration, $cwd));
return;
}
$this->info(sprintf('Going to create a job to import file: %s', $file));
$this->info(sprintf('Using configuration file: %s', $configuration));
$this->info(sprintf('Import into user: #%d (%s)', $user->id, $user->email));
$this->info(sprintf('Type of import: %s', $type));
/** @var ImportJobRepositoryInterface $jobRepository */
$jobRepository = app(ImportJobRepositoryInterface::class);
$jobRepository->setUser($user);
$job = $jobRepository->create($type);
$this->line(sprintf('Created job "%s"...', $job->key));
Artisan::call('firefly:encrypt-file', ['file' => $file, 'key' => $job->key]);
$this->line('Stored import data...');
$job->configuration = $configurationData;
$job->status = 'settings_complete';
$job->save();
$this->line('Stored configuration...');
if ($this->option('start') === true) {
$this->line('The import will start in a moment. This process is not visible...');
Log::debug('Go for import!');
Artisan::call('firefly:start-import', ['key' => $job->key]);
$this->line('Done!');
}
return;
}
/**
* @return bool
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five exactly.
*/
private function validArguments(): bool
{
/** @var UserRepositoryInterface $userRepository */
$userRepository = app(UserRepositoryInterface::class);
$file = $this->argument('file');
$configuration = $this->argument('configuration');
$user = $userRepository->find(intval($this->option('user')));
$cwd = getcwd();
$validTypes = array_keys(config('firefly.import_formats'));
$type = strtolower($this->option('type'));
if (is_null($user->id)) {
$this->error(sprintf('There is no user with ID %d.', $this->option('user')));
return false;
}
if (!in_array($type, $validTypes)) {
$this->error(sprintf('Cannot import file of type "%s"', $type));
return false;
}
if (!file_exists($file)) {
$this->error(sprintf('Firefly III cannot find file "%s" (working directory: "%s").', $file, $cwd));
return false;
}
if (!file_exists($configuration)) {
$this->error(sprintf('Firefly III cannot find configuration file "%s" (working directory: "%s").', $configuration, $cwd));
return false;
}
return true;
}
}

View File

@@ -3,11 +3,13 @@
* EncryptFile.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -33,7 +35,7 @@ class EncryptFile extends Command
*
* @var string
*/
protected $signature = 'firefly:encrypt {file} {key}';
protected $signature = 'firefly:encrypt-file {file} {key}';
/**
* Create a new command instance.

View File

@@ -3,11 +3,13 @@
* Import.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -16,6 +18,7 @@ use FireflyIII\Import\Logging\CommandHandler;
use FireflyIII\Models\ImportJob;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Console\Command;
use Illuminate\Support\Collection;
use Log;
/**
@@ -30,14 +33,14 @@ class Import extends Command
*
* @var string
*/
protected $description = 'Import stuff into Firefly III.';
protected $description = 'This will start a new import.';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'firefly:import {key}';
protected $signature = 'firefly:start-import {key}';
/**
* Create a new command instance.
@@ -49,49 +52,38 @@ class Import extends Command
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
Log::debug('Start start-import command');
$jobKey = $this->argument('key');
$job = ImportJob::whereKey($jobKey)->first();
$job = ImportJob::where('key', $jobKey)->first();
if (is_null($job)) {
$this->error(sprintf('No job found with key "%s"', $jobKey));
return;
}
if (!$this->isValid($job)) {
Log::error('Job is not valid for some reason. Exit.');
return;
}
$this->line('Going to import job with key "' . $job->key . '" of type ' . $job->file_type);
$this->line(sprintf('Going to import job with key "%s" of type "%s"', $job->key, $job->file_type));
$monolog = Log::getMonolog();
$handler = new CommandHandler($this);
$monolog->pushHandler($handler);
$importProcedure = new ImportProcedure;
$result = $importProcedure->runImport($job);
$result = ImportProcedure::runImport($job);
/**
* @var int $index
* @var TransactionJournal $journal
*/
foreach ($result as $index => $journal) {
if (!is_null($journal->id)) {
$this->line(sprintf('Line #%d has been imported as transaction #%d.', $index, $journal->id));
continue;
}
$this->error(sprintf('Could not store line #%d', $index));
}
// display result to user:
$this->presentResults($result);
$this->line('The import has completed.');
// get any errors from the importer:
$extendedStatus = $job->extended_status;
if (isset($extendedStatus['errors']) && count($extendedStatus['errors']) > 0) {
$this->line(sprintf('The following %d error(s) occured during the import:', count($extendedStatus['errors'])));
foreach ($extendedStatus['errors'] as $error) {
$this->error($error);
}
}
$this->presentErrors($job);
return;
}
@@ -117,4 +109,36 @@ class Import extends Command
return true;
}
/**
* @param ImportJob $job
*/
private function presentErrors(ImportJob $job)
{
$extendedStatus = $job->extended_status;
if (isset($extendedStatus['errors']) && count($extendedStatus['errors']) > 0) {
$this->line(sprintf('The following %d error(s) occured during the import:', count($extendedStatus['errors'])));
foreach ($extendedStatus['errors'] as $error) {
$this->error($error);
}
}
}
/**
* @param Collection $result
*/
private function presentResults(Collection $result)
{
/**
* @var int $index
* @var TransactionJournal $journal
*/
foreach ($result as $index => $journal) {
if (!is_null($journal->id)) {
$this->line(sprintf('Line #%d has been imported as transaction #%d.', $index, $journal->id));
continue;
}
$this->error(sprintf('Could not store line #%d', $index));
}
}
}

View File

@@ -0,0 +1,85 @@
<?php
/**
* ScanAttachments.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use Crypt;
use FireflyIII\Models\Attachment;
use Illuminate\Console\Command;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Storage;
/**
* Class ScanAttachments
*
* @package FireflyIII\Console\Commands
*/
class ScanAttachments extends Command
{
/**
* The console command description.
*
* @var string
*/
protected $description = 'Rescan all attachments and re-set the MD5 hash and mime.';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'firefly:scan-attachments';
/**
* Create a new command instance.
*
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$attachments = Attachment::get();
$disk = Storage::disk('upload');
/** @var Attachment $attachment */
foreach ($attachments as $attachment) {
$fileName = $attachment->fileName();
try {
$content = $disk->get($fileName);
} catch (FileNotFoundException $e) {
$this->error(sprintf('Could not find data for attachment #%d', $attachment->id));
continue;
}
try {
$decrypted = Crypt::decrypt($content);
} catch (DecryptException $e) {
$this->error(sprintf('Could not decrypt data of attachment #%d', $attachment->id));
continue;
}
$tmpfname = tempnam(sys_get_temp_dir(), 'FireflyIII');
file_put_contents($tmpfname, $decrypted);
$md5 = md5_file($tmpfname);
$mime = mime_content_type($tmpfname);
$attachment->md5 = $md5;
$attachment->mime = $mime;
$attachment->save();
$this->line(sprintf('Fixed attachment #%d', $attachment->id));
}
}
}

View File

@@ -0,0 +1,337 @@
<?php
/**
* UpgradeDatabase.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use DB;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
use FireflyIII\Models\PiggyBankEvent;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use Illuminate\Console\Command;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Database\QueryException;
use Log;
use Preferences;
use Schema;
/**
* Class UpgradeDatabase
*
* @package FireflyIII\Console\Commands
*/
class UpgradeDatabase extends Command
{
/**
* The console command description.
*
* @var string
*/
protected $description = 'Will run various commands to update database records.';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'firefly:upgrade-database';
/**
* Create a new command instance.
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$this->setTransactionIdentifier();
$this->migrateRepetitions();
$this->repairPiggyBanks();
$this->updateAccountCurrencies();
$this->updateJournalCurrencies();
$this->info('Firefly III database is up to date.');
}
/**
* Migrate budget repetitions to new format.
*/
private function migrateRepetitions()
{
if (!Schema::hasTable('budget_limits')) {
return;
}
// get all budget limits with end_date NULL
$set = BudgetLimit::whereNull('end_date')->get();
if ($set->count() > 0) {
$this->line(sprintf('Found %d budget limit(s) to update', $set->count()));
}
/** @var BudgetLimit $budgetLimit */
foreach ($set as $budgetLimit) {
// get limit repetition (should be just one):
/** @var LimitRepetition $repetition */
$repetition = $budgetLimit->limitrepetitions()->first();
if (!is_null($repetition)) {
$budgetLimit->end_date = $repetition->enddate;
$budgetLimit->save();
$this->line(sprintf('Updated budget limit #%d', $budgetLimit->id));
$repetition->delete();
}
}
}
/**
* Make sure there are only transfers linked to piggy bank events.
*/
private function repairPiggyBanks()
{
// if table does not exist, return false
if (!Schema::hasTable('piggy_bank_events')) {
return;
}
$set = PiggyBankEvent::with(['PiggyBank', 'TransactionJournal', 'TransactionJournal.TransactionType'])->get();
/** @var PiggyBankEvent $event */
foreach ($set as $event) {
if (is_null($event->transaction_journal_id)) {
continue;
}
/** @var TransactionJournal $journal */
$journal = $event->transactionJournal()->first();
if (is_null($journal)) {
continue;
}
$type = $journal->transactionType->type;
if ($type !== TransactionType::TRANSFER) {
$event->transaction_journal_id = null;
$event->save();
$this->line(sprintf('Piggy bank #%d was referenced by an invalid event. This has been fixed.', $event->piggy_bank_id));
}
}
}
/**
* This is strangely complex, because the HAVING modifier is a no-no. And subqueries in Laravel are weird.
*/
private function setTransactionIdentifier()
{
// if table does not exist, return false
if (!Schema::hasTable('transaction_journals')) {
return;
}
$subQuery = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNull('transaction_journals.deleted_at')
->whereNull('transactions.deleted_at')
->groupBy(['transaction_journals.id'])
->select(['transaction_journals.id', DB::raw('COUNT(transactions.id) AS t_count')]);
$result = DB::table(DB::raw('(' . $subQuery->toSql() . ') AS derived'))
->mergeBindings($subQuery->getQuery())
->where('t_count', '>', 2)
->select(['id', 't_count']);
$journalIds = array_unique($result->pluck('id')->toArray());
foreach ($journalIds as $journalId) {
$this->updateJournal(intval($journalId));
}
}
/**
*
*/
private function updateAccountCurrencies()
{
$accounts = Account::leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id')
->whereIn('account_types.type', [AccountType::DEFAULT, AccountType::ASSET])->get(['accounts.*']);
/** @var Account $account */
foreach ($accounts as $account) {
// get users preference, fall back to system pref.
$defaultCurrencyCode = Preferences::getForUser($account->user, 'currencyPreference', config('firefly.default_currency', 'EUR'))->data;
$defaultCurrency = TransactionCurrency::where('code', $defaultCurrencyCode)->first();
$accountCurrency = intval($account->getMeta('currency_id'));
$openingBalance = $account->getOpeningBalance();
$openingBalanceCurrency = intval($openingBalance->transaction_currency_id);
// both 0? set to default currency:
if ($accountCurrency === 0 && $openingBalanceCurrency === 0) {
AccountMeta::create(['account_id' => $account->id, 'name' => 'currency_id', 'data' => $defaultCurrency->id]);
$this->line(sprintf('Account #%d ("%s") now has a currency setting (%s).', $account->id, $account->name, $defaultCurrencyCode));
continue;
}
// opening balance 0, account not zero? just continue:
if ($accountCurrency > 0 && $openingBalanceCurrency === 0) {
continue;
}
// account is set to 0, opening balance is not?
if ($accountCurrency === 0 && $openingBalanceCurrency > 0) {
AccountMeta::create(['account_id' => $account->id, 'name' => 'currency_id', 'data' => $openingBalanceCurrency]);
$this->line(sprintf('Account #%d ("%s") now has a currency setting (%s).', $account->id, $account->name, $defaultCurrencyCode));
continue;
}
// both are equal, just continue:
if ($accountCurrency === $openingBalanceCurrency) {
continue;
}
// do not match:
if ($accountCurrency !== $openingBalanceCurrency) {
// update opening balance:
$openingBalance->transaction_currency_id = $accountCurrency;
$openingBalance->save();
$this->line(sprintf('Account #%d ("%s") now has a correct currency for opening balance.', $account->id, $account->name));
continue;
}
}
}
/**
* grab all positive transactiosn from this journal that are not deleted. for each one, grab the negative opposing one
* which has 0 as an identifier and give it the same identifier.
*
* @param int $journalId
*/
private function updateJournal(int $journalId)
{
$identifier = 0;
$processed = [];
$transactions = Transaction::where('transaction_journal_id', $journalId)->where('amount', '>', 0)->get();
/** @var Transaction $transaction */
foreach ($transactions as $transaction) {
// find opposing:
$amount = bcmul(strval($transaction->amount), '-1');
try {
/** @var Transaction $opposing */
$opposing = Transaction::where('transaction_journal_id', $journalId)
->where('amount', $amount)->where('identifier', '=', 0)
->whereNotIn('id', $processed)
->first();
} catch (QueryException $e) {
Log::error($e->getMessage());
$this->error('Firefly III could not find the "identifier" field in the "transactions" table.');
$this->error(sprintf('This field is required for Firefly III version %s to run.', config('firefly.version')));
$this->error('Please run "php artisan migrate" to add this field to the table.');
$this->info('Then, run "php artisan firefly:upgrade-database" to try again.');
return;
}
if (!is_null($opposing)) {
// give both a new identifier:
$transaction->identifier = $identifier;
$transaction->save();
$opposing->identifier = $identifier;
$opposing->save();
$processed[] = $transaction->id;
$processed[] = $opposing->id;
}
$identifier++;
}
}
/**
* Makes sure that withdrawals, deposits and transfers have
* a currency setting matching their respective accounts
*/
private function updateJournalCurrencies()
{
$types = [
TransactionType::WITHDRAWAL => '<',
TransactionType::DEPOSIT => '>',
];
$repository = app(CurrencyRepositoryInterface::class);
$notification = '%s #%d uses %s but should use %s. It has been updated. Please verify this in Firefly III.';
$transfer = 'Transfer #%d has been updated to use the correct currencies. Please verify this in Firefly III.';
foreach ($types as $type => $operator) {
$set = TransactionJournal
::leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')->leftJoin(
'transactions', function (JoinClause $join) use ($operator) {
$join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('transactions.amount', $operator, '0');
}
)
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
->leftJoin('account_meta', 'account_meta.account_id', '=', 'accounts.id')
->where('transaction_types.type', $type)
->where('account_meta.name', 'currency_id')
->where('transaction_journals.transaction_currency_id', '!=', DB::raw('account_meta.data'))
->get(['transaction_journals.*', 'account_meta.data as expected_currency_id', 'transactions.amount as transaction_amount']);
/** @var TransactionJournal $journal */
foreach ($set as $journal) {
$expectedCurrency = $repository->find(intval($journal->expected_currency_id));
$line = sprintf($notification, $type, $journal->id, $journal->transactionCurrency->code, $expectedCurrency->code);
$journal->setMeta('foreign_amount', $journal->transaction_amount);
$journal->setMeta('foreign_currency_id', $journal->transaction_currency_id);
$journal->transaction_currency_id = $expectedCurrency->id;
$journal->save();
$this->line($line);
}
}
/*
* For transfers it's slightly different. Both source and destination
* must match the respective currency preference. So we must verify ALL
* transactions.
*/
$set = TransactionJournal
::leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
->where('transaction_types.type', TransactionType::TRANSFER)
->get(['transaction_journals.*']);
/** @var TransactionJournal $journal */
foreach ($set as $journal) {
$updated = false;
/** @var Transaction $sourceTransaction */
$sourceTransaction = $journal->transactions()->where('amount', '<', 0)->first();
$sourceCurrency = $repository->find(intval($sourceTransaction->account->getMeta('currency_id')));
if ($sourceCurrency->id !== $journal->transaction_currency_id) {
$updated = true;
$journal->transaction_currency_id = $sourceCurrency->id;
$journal->save();
}
// destination
$destinationTransaction = $journal->transactions()->where('amount', '>', 0)->first();
$destinationCurrency = $repository->find(intval($destinationTransaction->account->getMeta('currency_id')));
if ($destinationCurrency->id !== $journal->transaction_currency_id) {
$updated = true;
$journal->deleteMeta('foreign_amount');
$journal->deleteMeta('foreign_currency_id');
$journal->setMeta('foreign_amount', $destinationTransaction->amount);
$journal->setMeta('foreign_currency_id', $destinationCurrency->id);
}
if ($updated) {
$line = sprintf($transfer, $journal->id);
$this->line($line);
}
}
}
}

View File

@@ -3,11 +3,13 @@
* UpgradeFireflyInstructions.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -31,7 +33,7 @@ class UpgradeFireflyInstructions extends Command
*
* @var string
*/
protected $signature = 'firefly:upgrade-instructions';
protected $signature = 'firefly:instructions {task}';
/**
* Create a new command instance.
@@ -47,28 +49,118 @@ class UpgradeFireflyInstructions extends Command
*/
public function handle()
{
//
if ($this->argument('task') == 'update') {
$this->updateInstructions();
}
if ($this->argument('task') == 'install') {
$this->installInstructions();
}
}
/**
* Show a nice box
*
* @param string $text
*/
private function boxed(string $text)
{
$parts = explode("\n", wordwrap($text));
foreach ($parts as $string) {
$this->line('| ' . sprintf('%-77s', $string) . '|');
}
}
/**
* Show a nice info box
*
* @param string $text
*/
private function boxedInfo(string $text)
{
$parts = explode("\n", wordwrap($text));
foreach ($parts as $string) {
$this->info('| ' . sprintf('%-77s', $string) . '|');
}
}
private function installInstructions()
{
/** @var string $version */
$version = config('firefly.version');
$config = config('upgrade.text');
$text = $config[$version] ?? null;
$this->line('+------------------------------------------------------------------------------+');
$this->line('');
$config = config('upgrade.text.install');
$text = '';
foreach (array_keys($config) as $compare) {
// if string starts with:
$len = strlen($compare);
if (substr($version, 0, $len) === $compare) {
$text = $config[$compare];
}
}
$this->showLine();
$this->boxed('');
if (is_null($text)) {
$this->line('Thank you for installing Firefly III, v' . $version);
$this->line('If you are upgrading from a previous version,');
$this->info('there are no extra upgrade instructions.');
$this->line('Firefly III should be ready for use.');
} else {
$this->line('Thank you for installing Firefly III, v' . $version);
$this->line('If you are upgrading from a previous version,');
$this->line('please follow these upgrade instructions carefully:');
$this->info(wordwrap($text));
$this->boxed(sprintf('Thank you for installin Firefly III, v%s!', $version));
$this->boxedInfo('There are no extra installation instructions.');
$this->boxed('Firefly III should be ready for use.');
$this->boxed('');
$this->showLine();
return;
}
$this->line('');
$this->line('+------------------------------------------------------------------------------+');
$this->boxed(sprintf('Thank you for installing Firefly III, v%s!', $version));
$this->boxedInfo($text);
$this->boxed('');
$this->showLine();
}
/**
* Show a line
*/
private function showLine()
{
$line = '+';
for ($i = 0; $i < 78; $i++) {
$line .= '-';
}
$line .= '+';
$this->line($line);
}
private function updateInstructions()
{
/** @var string $version */
$version = config('firefly.version');
$config = config('upgrade.text.upgrade');
$text = '';
foreach (array_keys($config) as $compare) {
// if string starts with:
$len = strlen($compare);
if (substr($version, 0, $len) === $compare) {
$text = $config[$compare];
}
}
$this->showLine();
$this->boxed('');
if (is_null($text)) {
$this->boxed(sprintf('Thank you for updating to Firefly III, v%s', $version));
$this->boxedInfo('There are no extra upgrade instructions.');
$this->boxed('Firefly III should be ready for use.');
$this->boxed('');
$this->showLine();
return;
}
$this->boxed(sprintf('Thank you for updating to Firefly III, v%s!', $version));
$this->boxedInfo($text);
$this->boxed('');
$this->showLine();
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace FireflyIII\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Str;
class UseEncryption extends Command
{
/**
* The console command description.
*
* @var string
*/
protected $description = 'This command will make sure that entries in the database will be encrypted (or not) according to the settings in .env';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'firefly:use-encryption';
/**
* Create a new command instance.
*
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
//
$this->handleObjects('Account', 'name', 'encrypted');
$this->handleObjects('Bill', 'name', 'name_encrypted');
$this->handleObjects('Bill', 'match', 'match_encrypted');
$this->handleObjects('Budget', 'name', 'encrypted');
$this->handleObjects('Category', 'name', 'encrypted');
$this->handleObjects('PiggyBank', 'name', 'encrypted');
$this->handleObjects('TransactionJournal', 'description', 'encrypted');
}
/**
* @param string $class
* @param string $field
* @param string $indicator
*/
public function handleObjects(string $class, string $field, string $indicator)
{
$fqn = sprintf('FireflyIII\Models\%s', $class);
$encrypt = config('firefly.encryption') ? 0 : 1;
$set = $fqn::where($indicator, $encrypt)->get();
foreach ($set as $entry) {
$newName = $entry->$field;
$entry->$field = $newName;
$entry->save();
}
$this->line(sprintf('Updated %d %s.', $set->count(), strtolower(Str::plural($class))));
}
}

View File

@@ -3,26 +3,29 @@
* VerifyDatabase.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use Crypt;
use DB;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\Tag;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use FireflyIII\User;
use Illuminate\Console\Command;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Database\Eloquent\Builder;
use Schema;
use stdClass;
/**
@@ -58,16 +61,21 @@ class VerifyDatabase extends Command
*/
public function handle()
{
// if table does not exist, return false
if (!Schema::hasTable('users')) {
return;
}
$this->reportObject('budget');
$this->reportObject('category');
$this->reportObject('tag');
// accounts with no transactions.
$this->reportAccounts();
// budgets with no limits
$this->reportBudgetLimits();
// budgets with no transactions
$this->reportBudgets();
// categories with no transactions
$this->reportCategories();
// tags with no transactions
$this->reportTags();
// sum of transactions is not zero.
$this->reportSum();
// any deleted transaction journals that have transactions that are NOT deleted:
@@ -79,6 +87,13 @@ class VerifyDatabase extends Command
// report on journals with no transactions at all.
$this->reportNoTransactions();
// transfers with budgets.
$this->reportTransfersBudgets();
// report on journals with the wrong types of accounts.
$this->reportIncorrectJournals();
}
/**
@@ -86,15 +101,13 @@ class VerifyDatabase extends Command
*/
private function reportAccounts()
{
$set = Account
::leftJoin('transactions', 'transactions.account_id', '=', 'accounts.id')
->leftJoin('users', 'accounts.user_id', '=', 'users.id')
->groupBy('accounts.id')
->having('transaction_count', '=', 0)
->get(
['accounts.id', 'accounts.encrypted', 'accounts.name', 'accounts.user_id', 'users.email',
DB::raw('COUNT(`transactions`.`id`) AS `transaction_count`')]
);
$set = Account::leftJoin('transactions', 'transactions.account_id', '=', 'accounts.id')
->leftJoin('users', 'accounts.user_id', '=', 'users.id')
->groupBy(['accounts.id', 'accounts.encrypted', 'accounts.name', 'accounts.user_id', 'users.email'])
->whereNull('transactions.account_id')
->get(
['accounts.id', 'accounts.encrypted', 'accounts.name', 'accounts.user_id', 'users.email']
);
/** @var stdClass $entry */
foreach ($set as $entry) {
@@ -110,59 +123,18 @@ class VerifyDatabase extends Command
*/
private function reportBudgetLimits()
{
$set = Budget
::leftJoin('budget_limits', 'budget_limits.budget_id', '=', 'budgets.id')
->leftJoin('users', 'budgets.user_id', '=', 'users.id')
->groupBy('budgets.id')
->having('budget_limit_count', '=', 0)
->get(['budgets.id', 'budgets.name', 'budgets.user_id', 'users.email', DB::raw('COUNT(`budget_limits`.`id`) AS `budget_limit_count`')]);
$set = Budget::leftJoin('budget_limits', 'budget_limits.budget_id', '=', 'budgets.id')
->leftJoin('users', 'budgets.user_id', '=', 'users.id')
->groupBy(['budgets.id', 'budgets.name', 'budgets.encrypted', 'budgets.user_id', 'users.email'])
->whereNull('budget_limits.id')
->get(['budgets.id', 'budgets.name', 'budgets.user_id', 'budgets.encrypted', 'users.email']);
/** @var stdClass $entry */
/** @var Budget $entry */
foreach ($set as $entry) {
$line = 'Notice: User #' . $entry->user_id . ' (' . $entry->email . ') has budget #' . $entry->id . ' ("' . Crypt::decrypt($entry->name)
. '") which has no budget limits.';
$this->line($line);
}
}
/**
* Reports on budgets without any transactions.
*/
private function reportBudgets()
{
$set = Budget
::leftJoin('budget_transaction_journal', 'budgets.id', '=', 'budget_transaction_journal.budget_id')
->leftJoin('users', 'budgets.user_id', '=', 'users.id')
->distinct()
->whereNull('budget_transaction_journal.budget_id')
->whereNull('budgets.deleted_at')
->get(['budgets.id', 'budgets.name', 'budgets.user_id', 'users.email']);
/** @var stdClass $entry */
foreach ($set as $entry) {
$line = 'Notice: User #' . $entry->user_id . ' (' . $entry->email . ') has budget #' . $entry->id . ' ("' . Crypt::decrypt($entry->name)
. '") which has no transactions.';
$this->line($line);
}
}
/**
* Reports on categories without any transactions.
*/
private function reportCategories()
{
$set = Category
::leftJoin('category_transaction_journal', 'categories.id', '=', 'category_transaction_journal.category_id')
->leftJoin('users', 'categories.user_id', '=', 'users.id')
->distinct()
->whereNull('category_transaction_journal.category_id')
->whereNull('categories.deleted_at')
->get(['categories.id', 'categories.name', 'categories.user_id', 'users.email']);
/** @var stdClass $entry */
foreach ($set as $entry) {
$line = 'Notice: User #' . $entry->user_id . ' (' . $entry->email . ') has category #' . $entry->id . ' ("' . Crypt::decrypt($entry->name)
. '") which has no transactions.';
$line = sprintf(
'User #%d (%s) has budget #%d ("%s") which has no budget limits.',
$entry->user_id, $entry->email, $entry->id, $entry->name
);
$this->line($line);
}
}
@@ -172,81 +144,147 @@ class VerifyDatabase extends Command
*/
private function reportDeletedAccounts()
{
$set = Account
::leftJoin('transactions', 'transactions.account_id', '=', 'accounts.id')
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->whereNotNull('accounts.deleted_at')
->whereNotNull('transactions.id')
->where(
function (Builder $q) {
$q->whereNull('transactions.deleted_at');
$q->orWhereNull('transaction_journals.deleted_at');
}
)
->get(
['accounts.id as account_id', 'accounts.deleted_at as account_deleted_at', 'transactions.id as transaction_id',
'transactions.deleted_at as transaction_deleted_at', 'transaction_journals.id as journal_id',
'transaction_journals.deleted_at as journal_deleted_at']
);
$set = Account::leftJoin('transactions', 'transactions.account_id', '=', 'accounts.id')
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->whereNotNull('accounts.deleted_at')
->whereNotNull('transactions.id')
->where(
function (Builder $q) {
$q->whereNull('transactions.deleted_at');
$q->orWhereNull('transaction_journals.deleted_at');
}
)
->get(
['accounts.id as account_id', 'accounts.deleted_at as account_deleted_at', 'transactions.id as transaction_id',
'transactions.deleted_at as transaction_deleted_at', 'transaction_journals.id as journal_id',
'transaction_journals.deleted_at as journal_deleted_at']
);
/** @var stdClass $entry */
foreach ($set as $entry) {
$date = is_null($entry->transaction_deleted_at) ? $entry->journal_deleted_at : $entry->transaction_deleted_at;
$this->error(
'Error: Account #' . $entry->account_id . ' should have been deleted, but has not.' .
' Find it in the table called `accounts` and change the `deleted_at` field to: "' . $date . '"'
' Find it in the table called "accounts" and change the "deleted_at" field to: "' . $date . '"'
);
}
}
private function reportIncorrectJournals()
{
$configuration = [
// a withdrawal can not have revenue account:
TransactionType::WITHDRAWAL => [AccountType::REVENUE],
// deposit cannot have an expense account:
TransactionType::DEPOSIT => [AccountType::EXPENSE],
// transfer cannot have either:
TransactionType::TRANSFER => [AccountType::EXPENSE, AccountType::REVENUE],
];
foreach ($configuration as $transactionType => $accountTypes) {
$set = TransactionJournal::leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
->leftJoin('account_types', 'account_types.id', 'accounts.account_type_id')
->leftJoin('users', 'users.id', '=', 'transaction_journals.user_id')
->where('transaction_types.type', $transactionType)
->whereIn('account_types.type', $accountTypes)
->whereNull('transaction_journals.deleted_at')
->get(
['transaction_journals.id', 'transaction_journals.user_id', 'users.email', 'account_types.type as a_type',
'transaction_types.type']
);
foreach ($set as $entry) {
$this->error(
sprintf(
'Transaction journal #%d (user #%d, %s) is of type "%s" but ' .
'is linked to a "%s". The transaction journal should be recreated.',
$entry->id,
$entry->user_id,
$entry->email,
$entry->type,
$entry->a_type
)
);
}
}
}
/**
* Any deleted transaction journals that have transactions that are NOT deleted:
*/
private function reportJournals()
{
$set = TransactionJournal
::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNotNull('transaction_journals.deleted_at')// USE THIS
->whereNull('transactions.deleted_at')
->whereNotNull('transactions.id')
->get(
[
'transaction_journals.id as journal_id',
'transaction_journals.description',
'transaction_journals.deleted_at as journal_deleted',
'transactions.id as transaction_id',
'transactions.deleted_at as transaction_deleted_at']
);
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNotNull('transaction_journals.deleted_at')// USE THIS
->whereNull('transactions.deleted_at')
->whereNotNull('transactions.id')
->get(
[
'transaction_journals.id as journal_id',
'transaction_journals.description',
'transaction_journals.deleted_at as journal_deleted',
'transactions.id as transaction_id',
'transactions.deleted_at as transaction_deleted_at']
);
/** @var stdClass $entry */
foreach ($set as $entry) {
$this->error(
'Error: Transaction #' . $entry->transaction_id . ' should have been deleted, but has not.' .
' Find it in the table called `transactions` and change the `deleted_at` field to: "' . $entry->journal_deleted . '"'
' Find it in the table called "transactions" and change the "deleted_at" field to: "' . $entry->journal_deleted . '"'
);
}
}
/**
*
*/
private function reportNoTransactions()
{
/*
* select transaction_journals.id, count(transactions.id) as transaction_count from transaction_journals
left join transactions ON transaction_journals.id = transactions.transaction_journal_id
group by transaction_journals.id
having transaction_count = 0
*/
$set = TransactionJournal
::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->groupBy('transaction_journals.id')
->having('transaction_count', '=', 0)
->get(['transaction_journals.id', DB::raw('COUNT(`transactions`.`id`) as `transaction_count`')]);
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->groupBy('transaction_journals.id')
->whereNull('transactions.transaction_journal_id')
->get(['transaction_journals.id']);
foreach ($set as $entry) {
$this->error(
'Error: Journal #' . $entry->id . ' has zero transactions. Open table `transaction_journals` and delete the entry with id #' . $entry->id
'Error: Journal #' . $entry->id . ' has zero transactions. Open table "transaction_journals" and delete the entry with id #' . $entry->id
);
}
}
/**
* @param string $name
*/
private function reportObject(string $name)
{
$plural = str_plural($name);
$class = sprintf('FireflyIII\Models\%s', ucfirst($name));
$field = $name == 'tag' ? 'tag' : 'name';
$set = $class::leftJoin($name . '_transaction_journal', $plural . '.id', '=', $name . '_transaction_journal.' . $name . '_id')
->leftJoin('users', $plural . '.user_id', '=', 'users.id')
->distinct()
->whereNull($name . '_transaction_journal.' . $name . '_id')
->whereNull($plural . '.deleted_at')
->get([$plural . '.id', $plural . '.' . $field . ' as name', $plural . '.user_id', 'users.email']);
/** @var stdClass $entry */
foreach ($set as $entry) {
$objName = $entry->name;
try {
$objName = Crypt::decrypt($objName);
} catch (DecryptException $e) {
// it probably was not encrypted.
}
$line = sprintf(
'User #%d (%s) has %s #%d ("%s") which has no transactions.',
$entry->user_id, $entry->email, $name, $entry->id, $objName
);
$this->line($line);
}
}
/**
* Reports for each user when the sum of their transactions is not zero.
*/
@@ -264,46 +302,48 @@ having transaction_count = 0
}
}
/**
* Reports on tags without any transactions.
*/
private function reportTags()
{
$set = Tag
::leftJoin('tag_transaction_journal', 'tags.id', '=', 'tag_transaction_journal.tag_id')
->leftJoin('users', 'tags.user_id', '=', 'users.id')
->distinct()
->whereNull('tag_transaction_journal.tag_id')
->whereNull('tags.deleted_at')
->get(['tags.id', 'tags.tag', 'tags.user_id', 'users.email']);
/** @var stdClass $entry */
foreach ($set as $entry) {
$line = 'Notice: User #' . $entry->user_id . ' (' . $entry->email . ') has tag #' . $entry->id . ' ("' . $entry->tag
. '") which has no transactions.';
$this->line($line);
}
}
/**
* Reports on deleted transactions that are connected to a not deleted journal.
*/
private function reportTransactions()
{
$set = Transaction
::leftJoin('transaction_journals', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNotNull('transactions.deleted_at')
->whereNull('transaction_journals.deleted_at')
->get(
['transactions.id as transaction_id', 'transactions.deleted_at as transaction_deleted', 'transaction_journals.id as journal_id',
'transaction_journals.deleted_at']
);
$set = Transaction::leftJoin('transaction_journals', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNotNull('transactions.deleted_at')
->whereNull('transaction_journals.deleted_at')
->get(
['transactions.id as transaction_id', 'transactions.deleted_at as transaction_deleted', 'transaction_journals.id as journal_id',
'transaction_journals.deleted_at']
);
/** @var stdClass $entry */
foreach ($set as $entry) {
$this->error(
'Error: Transaction journal #' . $entry->journal_id . ' should have been deleted, but has not.' .
' Find it in the table called `transaction_journals` and change the `deleted_at` field to: "' . $entry->transaction_deleted . '"'
' Find it in the table called "transaction_journals" and change the "deleted_at" field to: "' . $entry->transaction_deleted . '"'
);
}
}
/**
*
*/
private function reportTransfersBudgets()
{
$set = TransactionJournal::distinct()
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
->leftJoin('budget_transaction_journal', 'transaction_journals.id', '=', 'budget_transaction_journal.transaction_journal_id')
->where('transaction_types.type', TransactionType::TRANSFER)
->whereNotNull('budget_transaction_journal.budget_id')->get(['transaction_journals.id']);
/** @var TransactionJournal $entry */
foreach ($set as $entry) {
$this->error(
sprintf(
'Error: Transaction journal #%d is a transfer, but has a budget. Edit it without changing anything, so the budget will be removed.',
$entry->id
)
);
}
}
}

View File

@@ -3,17 +3,23 @@
* Kernel.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Console;
use FireflyIII\Console\Commands\CreateImport;
use FireflyIII\Console\Commands\EncryptFile;
use FireflyIII\Console\Commands\Import;
use FireflyIII\Console\Commands\ScanAttachments;
use FireflyIII\Console\Commands\UpgradeDatabase;
use FireflyIII\Console\Commands\UpgradeFireflyInstructions;
use FireflyIII\Console\Commands\UseEncryption;
use FireflyIII\Console\Commands\VerifyDatabase;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
@@ -24,19 +30,17 @@ use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
*/
class Kernel extends ConsoleKernel
{
/**
* The bootstrap classes for the application.
*
* This needs to be for with the next upgrade.
* Next upgrade verify these are the same.
*
* @var array
*/
protected $bootstrappers
= [
'Illuminate\Foundation\Bootstrap\DetectEnvironment',
'Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables',
'Illuminate\Foundation\Bootstrap\LoadConfiguration',
'FireflyIII\Bootstrap\ConfigureLogging',
'Illuminate\Foundation\Bootstrap\HandleExceptions',
'Illuminate\Foundation\Bootstrap\RegisterFacades',
'Illuminate\Foundation\Bootstrap\SetRequestForConsole',
@@ -54,6 +58,20 @@ class Kernel extends ConsoleKernel
UpgradeFireflyInstructions::class,
VerifyDatabase::class,
Import::class,
CreateImport::class,
EncryptFile::class,
ScanAttachments::class,
UpgradeDatabase::class,
UseEncryption::class,
];
/**
* Register the Closure based commands for the application.
*
* @return void
*/
protected function commands()
{
require base_path('routes/console.php');
}
}

View File

@@ -1,530 +0,0 @@
<?php
/**
* AccountCrud.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Crud\Account;
use Carbon\Carbon;
use DB;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use FireflyIII\User;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Collection;
use Log;
/**
* Class AccountCrud
*
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
*
* @package FireflyIII\Crud\Account
*/
class AccountCrud implements AccountCrudInterface
{
/** @var User */
private $user;
/** @var array */
private $validFields = ['accountRole', 'ccMonthlyPaymentDate', 'ccType', 'accountNumber'];
/**
* AccountCrud constructor.
*
* @param User $user
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* @param Account $account
* @param Account $moveTo
*
* @return bool
*/
public function destroy(Account $account, Account $moveTo): bool
{
if (!is_null($moveTo->id)) {
DB::table('transactions')->where('account_id', $account->id)->update(['account_id' => $moveTo->id]);
}
if (!is_null($account)) {
$account->delete();
}
return true;
}
/**
* @param $accountId
*
* @return Account
*/
public function find(int $accountId): Account
{
$account = $this->user->accounts()->find($accountId);
if (is_null($account)) {
return new Account;
}
return $account;
}
/**
* @param string $number
* @param array $types
*
* @return Account
*/
public function findByAccountNumber(string $number, array $types): Account
{
$query = $this->user->accounts()
->leftJoin('account_meta', 'account_meta.account_id', '=', 'accounts.id')
->where('account_meta.name', 'accountNumber')
->where('account_meta.data', json_encode($number));
if (count($types) > 0) {
$query->leftJoin('account_types', 'accounts.account_type_id', '=', 'account_types.id');
$query->whereIn('account_types.type', $types);
}
/** @var Collection $accounts */
$accounts = $query->get(['accounts.*']);
if ($accounts->count() > 0) {
return $accounts->first();
}
return new Account;
}
/**
* @param string $iban
* @param array $types
*
* @return Account
*/
public function findByIban(string $iban, array $types): Account
{
$query = $this->user->accounts()->where('iban', '!=', '');
if (count($types) > 0) {
$query->leftJoin('account_types', 'accounts.account_type_id', '=', 'account_types.id');
$query->whereIn('account_types.type', $types);
}
$accounts = $query->get(['accounts.*']);
/** @var Account $account */
foreach ($accounts as $account) {
if ($account->iban === $iban) {
return $account;
}
}
return new Account;
}
/**
* @param string $name
* @param array $types
*
* @return Account
*/
public function findByName(string $name, array $types): Account
{
$query = $this->user->accounts();
if (count($types) > 0) {
$query->leftJoin('account_types', 'accounts.account_type_id', '=', 'account_types.id');
$query->whereIn('account_types.type', $types);
}
$accounts = $query->get(['accounts.*']);
/** @var Account $account */
foreach ($accounts as $account) {
if ($account->name === $name) {
return $account;
}
}
return new Account;
}
/**
* @param array $accountIds
*
* @return Collection
*/
public function getAccountsById(array $accountIds): Collection
{
/** @var Collection $result */
$query = $this->user->accounts()->with(
['accountmeta' => function (HasMany $query) {
$query->where('name', 'accountRole');
}]
);
if (count($accountIds) > 0) {
$query->whereIn('accounts.id', $accountIds);
}
$result = $query->get(['accounts.*']);
$result = $result->sortBy(
function (Account $account) {
return strtolower($account->name);
}
);
return $result;
}
/**
* @param array $types
*
* @return Collection
*/
public function getAccountsByType(array $types): Collection
{
/** @var Collection $result */
$query = $this->user->accounts()->with(
['accountmeta' => function (HasMany $query) {
$query->where('name', 'accountRole');
}]
);
if (count($types) > 0) {
$query->accountTypeIn($types);
}
$result = $query->get(['accounts.*']);
$result = $result->sortBy(
function (Account $account) {
return strtolower($account->name);
}
);
return $result;
}
/**
* @param array $data
*
* @return Account
*/
public function store(array $data): Account
{
$newAccount = $this->storeAccount($data);
if (!is_null($newAccount->id)) {
$this->storeMetadata($newAccount, $data);
}
if ($data['openingBalance'] != 0) {
$this->storeInitialBalance($newAccount, $data);
}
return $newAccount;
}
/**
* @param $account
* @param $name
* @param $value
*
* @return AccountMeta
*/
public function storeMeta(Account $account, string $name, $value): AccountMeta
{
return AccountMeta::create(['name' => $name, 'data' => $value, 'account_id' => $account->id,]);
}
/**
* @param Account $account
* @param array $data
*
* @return Account
*/
public function update(Account $account, array $data): Account
{
// update the account:
$account->name = $data['name'];
$account->active = $data['active'] == '1' ? true : false;
$account->virtual_balance = $data['virtualBalance'];
$account->iban = $data['iban'];
$account->save();
$this->updateMetadata($account, $data);
$this->updateInitialBalance($account, $data);
return $account;
}
/**
* @param Account $account
* @param string $type
*
* @return Account
*/
public function updateAccountType(Account $account, string $type): Account
{
$type = AccountType::whereType($type)->first();
if (!is_null($type)) {
$account->accountType()->associate($type);
$account->save();
}
return $this->find($account->id);
}
/**
* @param array $data
*
* @return Account
*/
protected function storeAccount(array $data): Account
{
$type = config('firefly.accountTypeByIdentifier.' . $data['accountType']);
$accountType = AccountType::whereType($type)->first();
$newAccount = new Account(
[
'user_id' => $data['user'],
'account_type_id' => $accountType->id,
'name' => $data['name'],
'virtual_balance' => $data['virtualBalance'],
'active' => $data['active'] === true ? true : false,
'iban' => $data['iban'],
]
);
if (!$newAccount->isValid()) {
// does the account already exist?
$searchData = [
'user_id' => $data['user'],
'account_type_id' => $accountType->id,
'virtual_balance' => $data['virtualBalance'],
'name' => $data['name'],
'iban' => $data['iban'],
];
$existingAccount = Account::firstOrNullEncrypted($searchData);
if (!$existingAccount) {
Log::error('Account create error', $newAccount->getErrors()->toArray());
return new Account;
}
$newAccount = $existingAccount;
}
$newAccount->save();
return $newAccount;
}
/**
* @param Account $account
* @param array $data
*
* @return TransactionJournal
*/
protected function storeInitialBalance(Account $account, array $data): TransactionJournal
{
$amount = $data['openingBalance'];
$user = $data['user'];
$name = $data['name'];
$opposing = $this->storeOpposingAccount($amount, $user, $name);
$transactionType = TransactionType::whereType(TransactionType::OPENING_BALANCE)->first();
$journal = TransactionJournal::create(
[
'user_id' => $data['user'],
'transaction_type_id' => $transactionType->id,
'transaction_currency_id' => $data['openingBalanceCurrency'],
'description' => 'Initial balance for "' . $account->name . '"',
'completed' => true,
'date' => $data['openingBalanceDate'],
'encrypted' => true,
]
);
$firstAccount = $account;
$secondAccount = $opposing;
$firstAmount = $amount;
$secondAmount = $amount * -1;
if ($data['openingBalance'] < 0) {
$firstAccount = $opposing;
$secondAccount = $account;
$firstAmount = $amount * -1;
$secondAmount = $amount;
}
$one = new Transaction(['account_id' => $firstAccount->id, 'transaction_journal_id' => $journal->id, 'amount' => $firstAmount]);
$one->save();// first transaction: from
$two = new Transaction(['account_id' => $secondAccount->id, 'transaction_journal_id' => $journal->id, 'amount' => $secondAmount]);
$two->save(); // second transaction: to
return $journal;
}
/**
* @param Account $account
* @param array $data
*/
protected function storeMetadata(Account $account, array $data)
{
foreach ($this->validFields as $field) {
if (isset($data[$field])) {
$metaData = new AccountMeta(
[
'account_id' => $account->id,
'name' => $field,
'data' => $data[$field],
]
);
$metaData->save();
}
}
}
/**
* @param Account $account
* @param array $data
*
* @return bool
*/
protected function updateInitialBalance(Account $account, array $data): bool
{
$openingBalance = $this->openingBalanceTransaction($account);
if ($data['openingBalance'] != 0) {
if (!is_null($openingBalance->id)) {
$date = $data['openingBalanceDate'];
$amount = $data['openingBalance'];
return $this->updateJournal($account, $openingBalance, $date, $amount);
}
$this->storeInitialBalance($account, $data);
return true;
}
// else, delete it:
if ($openingBalance) { // opening balance is zero, should we delete it?
$openingBalance->delete(); // delete existing opening balance.
}
return true;
}
/**
* @param Account $account
* @param array $data
*
*/
protected function updateMetadata(Account $account, array $data)
{
foreach ($this->validFields as $field) {
$entry = $account->accountMeta()->where('name', $field)->first();
if (isset($data[$field])) {
// update if new data is present:
if (!is_null($entry)) {
$entry->data = $data[$field];
$entry->save();
continue;
}
$metaData = new AccountMeta(
[
'account_id' => $account->id,
'name' => $field,
'data' => $data[$field],
]
);
$metaData->save();
}
}
}
/**
* @param Account $account
*
* @return TransactionJournal|null
*/
private function openingBalanceTransaction(Account $account): TransactionJournal
{
$journal = TransactionJournal
::sortCorrectly()
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->where('transactions.account_id', $account->id)
->transactionTypes([TransactionType::OPENING_BALANCE])
->first(['transaction_journals.*']);
if (is_null($journal)) {
return new TransactionJournal;
}
return $journal;
}
/**
* @param float $amount
* @param int $user
* @param string $name
*
* @return Account
*/
private function storeOpposingAccount(float $amount, int $user, string $name):Account
{
$type = $amount < 0 ? 'expense' : 'revenue';
$opposingData = [
'user' => $user,
'accountType' => $type,
'name' => $name . ' initial balance',
'active' => false,
'iban' => '',
'virtualBalance' => 0,
];
return $this->storeAccount($opposingData);
}
/**
* @param Account $account
* @param TransactionJournal $journal
* @param Carbon $date
* @param float $amount
*
* @return bool
*/
private function updateJournal(Account $account, TransactionJournal $journal, Carbon $date, float $amount): bool
{
// update date:
$journal->date = $date;
$journal->save();
// update transactions:
/** @var Transaction $transaction */
foreach ($journal->transactions()->get() as $transaction) {
if ($account->id == $transaction->account_id) {
$transaction->amount = $amount;
$transaction->save();
}
if ($account->id != $transaction->account_id) {
$transaction->amount = $amount * -1;
$transaction->save();
}
}
return true;
}
}

View File

@@ -1,109 +0,0 @@
<?php
/**
* AccountCrudInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Crud\Account;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta;
use Illuminate\Support\Collection;
/**
* Interface AccountCrudInterface
*
* @package FireflyIII\Crud\Account
*/
interface AccountCrudInterface
{
/**
* @param Account $account
* @param Account $moveTo
*
* @return bool
*/
public function destroy(Account $account, Account $moveTo): bool;
/**
* @param int $accountId
*
* @return Account
*/
public function find(int $accountId): Account;
/**
* @param string $number
* @param array $types
*
* @return Account
*/
public function findByAccountNumber(string $number, array $types): Account;
/**
* @param string $iban
* @param array $types
*
* @return Account
*/
public function findByIban(string $iban, array $types): Account;
/**
* @param string $name
* @param array $types
*
* @return Account
*/
public function findByName(string $name, array $types): Account;
/**
* @param array $accountIds
*
* @return Collection
*/
public function getAccountsById(array $accountIds): Collection;
/**
* @param array $types
*
* @return Collection
*/
public function getAccountsByType(array $types): Collection;
/**
* @param array $data
*
* @return Account
*/
public function store(array $data) : Account;
/**
* @param $account
* @param $name
* @param $value
*
* @return AccountMeta
*/
public function storeMeta(Account $account, string $name, $value): AccountMeta;
/**
* @param Account $account
* @param array $data
*
* @return Account
*/
public function update(Account $account, array $data): Account;
/**
* @param Account $account
* @param string $type
*
* @return Account
*/
public function updateAccountType(Account $account, string $type): Account;
}

View File

@@ -1,216 +0,0 @@
<?php
/**
* Journal.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Crud\Split;
use FireflyIII\Events\TransactionStored;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use FireflyIII\User;
use Illuminate\Support\Collection;
/**
* Class Journal
*
* @package FireflyIII\Crud\Split
*/
class Journal implements JournalInterface
{
/** @var User */
private $user;
/**
* AttachmentRepository constructor.
*
* @param User $user
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* @param $journal
*
* @return bool
*/
public function markAsComplete(TransactionJournal $journal)
{
$journal->completed = 1;
$journal->save();
return true;
}
/**
* @param TransactionJournal $journal
* @param array $transaction
*
* @return Collection
*/
public function storeTransaction(TransactionJournal $journal, array $transaction): Collection
{
// store accounts (depends on type)
list($sourceAccount, $destinationAccount) = $this->storeAccounts($journal->transactionType->type, $transaction);
// store transaction one way:
/** @var Transaction $one */
$one = Transaction::create(
['account_id' => $sourceAccount->id, 'transaction_journal_id' => $journal->id, 'amount' => $transaction['amount'] * -1,
'description' => $transaction['description']]
);
$two = Transaction::create(
['account_id' => $destinationAccount->id, 'transaction_journal_id' => $journal->id, 'amount' => $transaction['amount'],
'description' => $transaction['description']]
);
if (strlen($transaction['category']) > 0) {
$category = Category::firstOrCreateEncrypted(['name' => $transaction['category'], 'user_id' => $journal->user_id]);
$one->categories()->save($category);
$two->categories()->save($category);
}
if (intval($transaction['budget_id']) > 0) {
$budget = Budget::find($transaction['budget_id']);
$one->budgets()->save($budget);
$two->budgets()->save($budget);
}
if ($transaction['piggy_bank_id'] > 0) {
$transaction['date'] = $journal->date->format('Y-m-d');
event(new TransactionStored($transaction));
}
return new Collection([$one, $two]);
}
/**
* @param TransactionJournal $journal
* @param array $data
*
* @return TransactionJournal
*/
public function updateJournal(TransactionJournal $journal, array $data): TransactionJournal
{
$journal->description = $data['journal_description'];
$journal->transaction_currency_id = $data['journal_currency_id'];
$journal->date = $data['date'];
$journal->interest_date = $data['interest_date'];
$journal->book_date = $data['book_date'];
$journal->process_date = $data['process_date'];
$journal->save();
// delete original transactions, and recreate them.
$journal->transactions()->delete();
foreach ($data['transactions'] as $transaction) {
$this->storeTransaction($journal, $transaction);
}
$journal->completed = true;
$journal->save();
return $journal;
}
/**
* @param string $type
* @param array $transaction
*
* @return array
* @throws FireflyException
*/
private function storeAccounts(string $type, array $transaction): array
{
$sourceAccount = null;
$destinationAccount = null;
switch ($type) {
case TransactionType::WITHDRAWAL:
list($sourceAccount, $destinationAccount) = $this->storeWithdrawalAccounts($transaction);
break;
case TransactionType::DEPOSIT:
list($sourceAccount, $destinationAccount) = $this->storeDepositAccounts($transaction);
break;
case TransactionType::TRANSFER:
$sourceAccount = Account::where('user_id', $this->user->id)->where('id', $transaction['source_account_id'])->first();
$destinationAccount = Account::where('user_id', $this->user->id)->where('id', $transaction['destination_account_id'])->first();
break;
default:
throw new FireflyException('Cannot handle ' . e($type));
}
return [$sourceAccount, $destinationAccount];
}
/**
* @param array $data
*
* @return array
*/
private function storeDepositAccounts(array $data): array
{
$destinationAccount = Account::where('user_id', $this->user->id)->where('id', $data['destination_account_id'])->first(['accounts.*']);
if (isset($data['source_account_name']) && strlen($data['source_account_name']) > 0) {
$sourceType = AccountType::where('type', 'Revenue account')->first();
$sourceAccount = Account::firstOrCreateEncrypted(
['user_id' => $this->user->id, 'account_type_id' => $sourceType->id, 'name' => $data['source_account_name'], 'active' => 1]
);
return [$sourceAccount, $destinationAccount];
}
$sourceType = AccountType::where('type', 'Cash account')->first();
$sourceAccount = Account::firstOrCreateEncrypted(
['user_id' => $this->user->id, 'account_type_id' => $sourceType->id, 'name' => 'Cash account', 'active' => 1]
);
return [$sourceAccount, $destinationAccount];
}
/**
* @param array $data
*
* @return array
*/
private function storeWithdrawalAccounts(array $data): array
{
$sourceAccount = Account::where('user_id', $this->user->id)->where('id', $data['source_account_id'])->first(['accounts.*']);
if (strlen($data['destination_account_name']) > 0) {
$destinationType = AccountType::where('type', 'Expense account')->first();
$destinationAccount = Account::firstOrCreateEncrypted(
[
'user_id' => $this->user->id,
'account_type_id' => $destinationType->id,
'name' => $data['destination_account_name'],
'active' => 1,
]
);
return [$sourceAccount, $destinationAccount];
}
$destinationType = AccountType::where('type', 'Cash account')->first();
$destinationAccount = Account::firstOrCreateEncrypted(
['user_id' => $this->user->id, 'account_type_id' => $destinationType->id, 'name' => 'Cash account', 'active' => 1]
);
return [$sourceAccount, $destinationAccount];
}
}

View File

@@ -1,47 +0,0 @@
<?php
/**
* JournalInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Crud\Split;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Support\Collection;
/**
* Interface JournalInterface
*
* @package FireflyIII\Crud\Split
*/
interface JournalInterface
{
/**
* @param $journal
*
* @return bool
*/
public function markAsComplete(TransactionJournal $journal);
/**
* @param TransactionJournal $journal
* @param array $transaction
*
* @return Collection
*/
public function storeTransaction(TransactionJournal $journal, array $transaction): Collection;
/**
* @param TransactionJournal $journal
* @param array $data
*
* @return TransactionJournal
*/
public function updateJournal(TransactionJournal $journal, array $data): TransactionJournal;
}

View File

@@ -1,48 +0,0 @@
<?php
/**
* BudgetLimitStored.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Events;
use Carbon\Carbon;
use FireflyIII\Models\BudgetLimit;
use Illuminate\Queue\SerializesModels;
/**
* Class BudgetLimitStored
*
* @package FireflyIII\Events
*/
class BudgetLimitStored extends Event
{
use SerializesModels;
/** @var BudgetLimit */
public $budgetLimit;
/** @var Carbon */
public $end; // the only variable we can't get from the budget limit (if necessary).
/**
* BudgetLimitEvents constructor.
*
* @param BudgetLimit $budgetLimit
* @param Carbon $end
*/
public function __construct(BudgetLimit $budgetLimit, Carbon $end)
{
//
$this->budgetLimit = $budgetLimit;
$this->end = $end;
}
}

View File

@@ -1,48 +0,0 @@
<?php
/**
* BudgetLimitUpdated.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Events;
use Carbon\Carbon;
use FireflyIII\Models\BudgetLimit;
use Illuminate\Queue\SerializesModels;
/**
* Class BudgetLimitUpdated
*
* @package FireflyIII\Events
*/
class BudgetLimitUpdated extends Event
{
use SerializesModels;
/** @var BudgetLimit */
public $budgetLimit;
/** @var Carbon */
public $end; // the only variable we can't get from the budget limit (if necessary).
/**
* BudgetLimitEvents constructor.
*
* @param BudgetLimit $budgetLimit
* @param Carbon $end
*/
public function __construct(BudgetLimit $budgetLimit, Carbon $end)
{
//
$this->budgetLimit = $budgetLimit;
$this->end = $end;
}
}

View File

@@ -3,11 +3,14 @@
* Event.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Events;
/**

View File

@@ -1,13 +1,15 @@
<?php
/**
* ResendConfirmation.php
* RegisteredUser.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -15,11 +17,11 @@ use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class ResendConfirmation
* Class RegisteredUser
*
* @package FireflyIII\Events
*/
class ResendConfirmation extends Event
class RegisteredUser extends Event
{
use SerializesModels;
@@ -27,7 +29,7 @@ class ResendConfirmation extends Event
public $user;
/**
* Create a new event instance.
* Create a new event instance. This event is triggered when a new user registers.
*
* @param User $user
* @param string $ipAddress

View File

@@ -0,0 +1,46 @@
<?php
/**
* RequestedNewPassword.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class RequestedNewPassword
*
* @package FireflyIII\Events
*/
class RequestedNewPassword extends Event
{
use SerializesModels;
public $ipAddress;
public $token;
public $user;
/**
* Create a new event instance. This event is triggered when a users tries to reset his or her password.
*
* @param User $user
* @param string $token
* @param string $ipAddress
*/
public function __construct(User $user, string $token, string $ipAddress)
{
$this->user = $user;
$this->token = $token;
$this->ipAddress = $ipAddress;
}
}

View File

@@ -1,13 +1,15 @@
<?php
/**
* TransactionJournalStored.php
* StoredTransactionJournal.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -15,11 +17,11 @@ use FireflyIII\Models\TransactionJournal;
use Illuminate\Queue\SerializesModels;
/**
* Class TransactionJournalStored
* Class StoredTransactionJournal
*
* @package FireflyIII\Events
*/
class TransactionJournalStored extends Event
class StoredTransactionJournal extends Event
{
use SerializesModels;

View File

@@ -1,39 +0,0 @@
<?php
/**
* TransactionStored.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Events;
use Illuminate\Queue\SerializesModels;
/**
* Class TransactionJournalStored
*
* @package FireflyIII\Events
*/
class TransactionStored extends Event
{
use SerializesModels;
public $transaction = [];
/**
* Create a new event instance.
*
* @param array $transaction
*/
public function __construct(array $transaction)
{
//
$this->transaction = $transaction;
}
}

View File

@@ -1,13 +1,15 @@
<?php
/**
* TransactionJournalUpdated.php
* UpdatedTransactionJournal.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -15,11 +17,11 @@ use FireflyIII\Models\TransactionJournal;
use Illuminate\Queue\SerializesModels;
/**
* Class TransactionJournalUpdated
* Class UpdatedTransactionJournal
*
* @package FireflyIII\Events
*/
class TransactionJournalUpdated extends Event
class UpdatedTransactionJournal extends Event
{
use SerializesModels;

View File

@@ -1,40 +0,0 @@
<?php
/**
* UserIsConfirmed.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Events;
use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class UserIsConfirmed
*
* @package FireflyIII\Events
*/
class UserIsConfirmed extends Event
{
use SerializesModels;
public $ipAddress;
public $user;
/**
* Create a new event instance.
*
* @param User $user
* @param string $ipAddress
*/
public function __construct(User $user, string $ipAddress)
{
$this->user = $user;
$this->ipAddress = $ipAddress;
}
}

View File

@@ -1,40 +0,0 @@
<?php
/**
* UserIsDeleted.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Events;
use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class UserIsDeleted
*
* @package FireflyIII\Events
*/
class UserIsDeleted extends Event
{
use SerializesModels;
public $ipAddress;
public $user;
/**
* Create a new event instance.
*
* @param User $user
* @param string $ipAddress
*/
public function __construct(User $user, string $ipAddress)
{
$this->user = $user;
$this->ipAddress = $ipAddress;
}
}

View File

@@ -1,40 +0,0 @@
<?php
/**
* UserRegistration.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Events;
use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class UserRegistration
*
* @package FireflyIII\Events
*/
class UserRegistration extends Event
{
use SerializesModels;
public $ipAddress;
public $user;
/**
* Create a new event instance.
*
* @param User $user
* @param string $ipAddress
*/
public function __construct(User $user, string $ipAddress)
{
$this->user = $user;
$this->ipAddress = $ipAddress;
}
}

View File

@@ -3,11 +3,14 @@
* FireflyException.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Exceptions;

View File

@@ -3,20 +3,25 @@
* Handler.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Exceptions;
use Auth;
use ErrorException;
use Exception;
use FireflyIII\Jobs\MailError;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Session\TokenMismatchException;
use Illuminate\Validation\ValidationException as ValException;
use Request;
use Symfony\Component\HttpKernel\Exception\HttpException;
@@ -34,9 +39,12 @@ class Handler extends ExceptionHandler
*/
protected $dontReport
= [
AuthenticationException::class,
AuthorizationException::class,
HttpException::class,
ModelNotFoundException::class,
TokenMismatchException::class,
ValException::class,
];
/**
@@ -66,20 +74,21 @@ class Handler extends ExceptionHandler
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param Exception $exception
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's exactly five.
*
* @return void
*/
public function report(Exception $exception)
{
if ($exception instanceof FireflyException || $exception instanceof ErrorException) {
$doMailError = env('SEND_ERROR_MESSAGE', true);
if (($exception instanceof FireflyException || $exception instanceof ErrorException) && $doMailError) {
$userData = [
'id' => 0,
'email' => 'unknown@example.com',
];
if (Auth::check()) {
$userData['id'] = Auth::user()->id;
$userData['email'] = Auth::user()->email;
if (auth()->check()) {
$userData['id'] = auth()->user()->id;
$userData['email'] = auth()->user()->email;
}
$data = [
'class' => get_class($exception),
@@ -89,13 +98,31 @@ class Handler extends ExceptionHandler
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'code' => $exception->getCode(),
'version' => config('firefly.version'),
];
// create job that will mail.
$job = new MailError($userData, env('SITE_OWNER'), Request::ip(), $data);
$ipAddress = Request::ip() ?? '0.0.0.0';
$job = new MailError($userData, env('SITE_OWNER', ''), $ipAddress, $data);
dispatch($job);
}
parent::report($exception);
}
/**
* Convert an authentication exception into an unauthenticated response.
*
* @param $request
*
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
*/
protected function unauthenticated($request)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->guest('login');
}
}

View File

@@ -3,11 +3,14 @@
* NotImplementedException.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Exceptions;

View File

@@ -3,11 +3,14 @@
* ValidationException.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Exceptions;
/**

View File

@@ -3,19 +3,19 @@
* AttachmentCollector.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
use Amount;
use Carbon\Carbon;
use Crypt;
use FireflyIII\Models\Attachment;
use FireflyIII\Models\ExportJob;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Collection;
@@ -29,21 +29,21 @@ use Storage;
*/
class AttachmentCollector extends BasicCollector implements CollectorInterface
{
/** @var string */
private $explanationString = '';
/** @var Carbon */
private $end;
/** @var \Illuminate\Contracts\Filesystem\Filesystem */
private $exportDisk;
/** @var AttachmentRepositoryInterface */
private $repository;
/** @var Carbon */
private $start;
/** @var \Illuminate\Contracts\Filesystem\Filesystem */
private $uploadDisk;
/**
* AttachmentCollector constructor.
*
* @param ExportJob $job
*/
public function __construct(ExportJob $job)
public function __construct()
{
/** @var AttachmentRepositoryInterface repository */
$this->repository = app(AttachmentRepositoryInterface::class);
@@ -51,7 +51,7 @@ class AttachmentCollector extends BasicCollector implements CollectorInterface
$this->uploadDisk = Storage::disk('upload');
$this->exportDisk = Storage::disk('export');
parent::__construct($job);
parent::__construct();
}
/**
@@ -67,34 +67,17 @@ class AttachmentCollector extends BasicCollector implements CollectorInterface
$this->exportAttachment($attachment);
}
// put the explanation string in a file and attach it as well.
$file = $this->job->key . '-Source of all your attachments explained.txt';
$this->exportDisk->put($file, $this->explanationString);
$this->getFiles()->push($file);
return true;
}
/**
* @param Attachment $attachment
* @param Carbon $start
* @param Carbon $end
*/
private function explain(Attachment $attachment)
public function setDates(Carbon $start, Carbon $end)
{
/** @var TransactionJournal $journal */
$journal = $attachment->attachable;
$args = [
'attachment_name' => e($attachment->filename),
'attachment_id' => $attachment->id,
'type' => strtolower($journal->transactionType->type),
'description' => e($journal->description),
'journal_id' => $journal->id,
'date' => $journal->date->formatLocalized(strval(trans('config.month_and_day'))),
'amount' => Amount::formatJournal($journal, false),
];
$string = trans('firefly.attachment_explanation', $args) . "\n";
Log::debug('Appended explanation string', ['string' => $string]);
$this->explanationString .= $string;
$this->start = $start;
$this->end = $end;
}
/**
@@ -110,10 +93,8 @@ class AttachmentCollector extends BasicCollector implements CollectorInterface
$decrypted = Crypt::decrypt($this->uploadDisk->get($file));
$exportFile = $this->exportFileName($attachment);
$this->exportDisk->put($exportFile, $decrypted);
$this->getFiles()->push($exportFile);
$this->getEntries()->push($exportFile);
// explain:
$this->explain($attachment);
} catch (DecryptException $e) {
Log::error('Catchable error: could not decrypt attachment #' . $attachment->id . ' because: ' . $e->getMessage());
}
@@ -141,7 +122,7 @@ class AttachmentCollector extends BasicCollector implements CollectorInterface
*/
private function getAttachments(): Collection
{
$attachments = $this->repository->get();
$attachments = $this->repository->getBetween($this->start, $this->end);
return $attachments;
}

View File

@@ -3,11 +3,13 @@
* BasicCollector.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
@@ -25,33 +27,38 @@ class BasicCollector
/** @var ExportJob */
protected $job;
/** @var Collection */
private $files;
private $entries;
/**
* BasicCollector constructor.
*
* @param ExportJob $job
*/
public function __construct(ExportJob $job)
public function __construct()
{
$this->files = new Collection;
$this->job = $job;
$this->entries = new Collection;
}
/**
* @return Collection
*/
public function getFiles(): Collection
public function getEntries(): Collection
{
return $this->files;
return $this->entries;
}
/**
* @param Collection $files
* @param Collection $entries
*/
public function setFiles(Collection $files)
public function setEntries(Collection $entries)
{
$this->files = $files;
$this->entries = $entries;
}
/**
* @param ExportJob $job
*/
public function setJob(ExportJob $job)
{
$this->job = $job;
}

View File

@@ -3,14 +3,17 @@
* CollectorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
use FireflyIII\Models\ExportJob;
use Illuminate\Support\Collection;
/**
@@ -23,7 +26,7 @@ interface CollectorInterface
/**
* @return Collection
*/
public function getFiles(): Collection;
public function getEntries(): Collection;
/**
* @return bool
@@ -31,9 +34,18 @@ interface CollectorInterface
public function run(): bool;
/**
* @param Collection $files
* @param Collection $entries
*
* @return void
*
*/
public function setFiles(Collection $files);
public function setEntries(Collection $entries);
/**
* @param ExportJob $job
*
* @return mixed
*/
public function setJob(ExportJob $job);
}

View File

@@ -0,0 +1,347 @@
<?php
/**
* JournalExportCollector.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
use Carbon\Carbon;
use DB;
use FireflyIII\Models\Transaction;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
use Steam;
/**
* Class JournalExportCollector
*
* @package FireflyIII\Export\Collector
*/
class JournalExportCollector extends BasicCollector implements CollectorInterface
{
/** @var Collection */
private $accounts;
/** @var Carbon */
private $end;
/** @var Carbon */
private $start;
/** @var Collection */
private $workSet;
/**
* @return bool
*/
public function run(): bool
{
/*
* Instead of collecting journals we collect transactions for the given accounts.
* We left join the OPPOSING transaction AND some journal data.
* After that we complement this info with budgets, categories, etc.
*
* This is way more efficient and will also work on split journals.
*/
$this->getWorkSet();
/*
* Extract:
* possible budget ids for journals
* possible category ids journals
* possible budget ids for transactions
* possible category ids for transactions
*
* possible IBAN and account numbers?
*
*/
$journals = $this->extractJournalIds();
$transactions = $this->extractTransactionIds();
// extend work set with category data from journals:
$this->categoryDataForJournals($journals);
// extend work set with category cate from transactions (overrules journals):
$this->categoryDataForTransactions($transactions);
// same for budgets:
$this->budgetDataForJournals($journals);
$this->budgetDataForTransactions($transactions);
$this->setEntries($this->workSet);
return true;
}
/**
* @param Collection $accounts
*/
public function setAccounts(Collection $accounts)
{
$this->accounts = $accounts;
}
/**
* @param Carbon $start
* @param Carbon $end
*/
public function setDates(Carbon $start, Carbon $end)
{
$this->start = $start;
$this->end = $end;
}
/**
* @param array $journals
*
* @return bool
*/
private function budgetDataForJournals(array $journals): bool
{
$set = DB::table('budget_transaction_journal')
->leftJoin('budgets', 'budgets.id', '=', 'budget_transaction_journal.budget_id')
->whereIn('budget_transaction_journal.transaction_journal_id', $journals)
->get(
[
'budget_transaction_journal.budget_id',
'budget_transaction_journal.transaction_journal_id',
'budgets.name',
'budgets.encrypted',
]
);
$set->each(
function ($obj) {
$obj->name = Steam::decrypt(intval($obj->encrypted), $obj->name);
}
);
$array = [];
foreach ($set as $obj) {
$array[$obj->transaction_journal_id] = ['id' => $obj->budget_id, 'name' => $obj->name];
}
$this->workSet->each(
function ($obj) use ($array) {
if (isset($array[$obj->transaction_journal_id])) {
$obj->budget_id = $array[$obj->transaction_journal_id]['id'];
$obj->budget_name = $array[$obj->transaction_journal_id]['name'];
}
}
);
return true;
}
/**
* @param array $transactions
*
* @return bool
*/
private function budgetDataForTransactions(array $transactions): bool
{
$set = DB::table('budget_transaction')
->leftJoin('budgets', 'budgets.id', '=', 'budget_transaction.budget_id')
->whereIn('budget_transaction.transaction_id', $transactions)
->get(
[
'budget_transaction.budget_id',
'budget_transaction.transaction_id',
'budgets.name',
'budgets.encrypted',
]
);
$set->each(
function ($obj) {
$obj->name = Steam::decrypt(intval($obj->encrypted), $obj->name);
}
);
$array = [];
foreach ($set as $obj) {
$array[$obj->transaction_id] = ['id' => $obj->budget_id, 'name' => $obj->name];
}
$this->workSet->each(
function ($obj) use ($array) {
// first transaction
if (isset($array[$obj->id])) {
$obj->budget_id = $array[$obj->id]['id'];
$obj->budget_name = $array[$obj->id]['name'];
}
}
);
return true;
}
/**
* @param array $journals
*
* @return bool
*/
private function categoryDataForJournals(array $journals): bool
{
$set = DB::table('category_transaction_journal')
->leftJoin('categories', 'categories.id', '=', 'category_transaction_journal.category_id')
->whereIn('category_transaction_journal.transaction_journal_id', $journals)
->get(
[
'category_transaction_journal.category_id',
'category_transaction_journal.transaction_journal_id',
'categories.name',
'categories.encrypted',
]
);
$set->each(
function ($obj) {
$obj->name = Steam::decrypt(intval($obj->encrypted), $obj->name);
}
);
$array = [];
foreach ($set as $obj) {
$array[$obj->transaction_journal_id] = ['id' => $obj->category_id, 'name' => $obj->name];
}
$this->workSet->each(
function ($obj) use ($array) {
if (isset($array[$obj->transaction_journal_id])) {
$obj->category_id = $array[$obj->transaction_journal_id]['id'];
$obj->category_name = $array[$obj->transaction_journal_id]['name'];
}
}
);
return true;
}
/**
* @param array $transactions
*
* @return bool
*/
private function categoryDataForTransactions(array $transactions): bool
{
$set = DB::table('category_transaction')
->leftJoin('categories', 'categories.id', '=', 'category_transaction.category_id')
->whereIn('category_transaction.transaction_id', $transactions)
->get(
[
'category_transaction.category_id',
'category_transaction.transaction_id',
'categories.name',
'categories.encrypted',
]
);
$set->each(
function ($obj) {
$obj->name = Steam::decrypt(intval($obj->encrypted), $obj->name);
}
);
$array = [];
foreach ($set as $obj) {
$array[$obj->transaction_id] = ['id' => $obj->category_id, 'name' => $obj->name];
}
$this->workSet->each(
function ($obj) use ($array) {
// first transaction
if (isset($array[$obj->id])) {
$obj->category_id = $array[$obj->id]['id'];
$obj->category_name = $array[$obj->id]['name'];
}
}
);
return true;
}
/**
* @return array
*/
private function extractJournalIds(): array
{
return $this->workSet->pluck('transaction_journal_id')->toArray();
}
/**
* @return array
*/
private function extractTransactionIds()
{
$set = $this->workSet->pluck('id')->toArray();
$opposing = $this->workSet->pluck('opposing_id')->toArray();
$complete = $set + $opposing;
return array_unique($complete);
}
/**
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
private function getWorkSet()
{
$accountIds = $this->accounts->pluck('id')->toArray();
$this->workSet = Transaction::leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->leftJoin(
'transactions AS opposing', function (JoinClause $join) {
$join->on('opposing.transaction_journal_id', '=', 'transactions.transaction_journal_id')
->where('opposing.amount', '=', DB::raw('transactions.amount * -1'))
->where('transactions.identifier', '=', DB::raw('opposing.identifier'));
}
)
->leftJoin('accounts', 'transactions.account_id', '=', 'accounts.id')
->leftJoin('accounts AS opposing_accounts', 'opposing.account_id', '=', 'opposing_accounts.id')
->leftJoin('transaction_types', 'transaction_journals.transaction_type_id', 'transaction_types.id')
->leftJoin('transaction_currencies', 'transaction_journals.transaction_currency_id', '=', 'transaction_currencies.id')
->whereIn('transactions.account_id', $accountIds)
->where('transaction_journals.user_id', $this->job->user_id)
->where('transaction_journals.date', '>=', $this->start->format('Y-m-d'))
->where('transaction_journals.date', '<=', $this->end->format('Y-m-d'))
->where('transaction_journals.completed', 1)
->whereNull('transaction_journals.deleted_at')
->whereNull('transactions.deleted_at')
->whereNull('opposing.deleted_at')
->orderBy('transaction_journals.date', 'DESC')
->orderBy('transactions.identifier', 'ASC')
->get(
[
'transactions.id',
'transactions.amount',
'transactions.description',
'transactions.account_id',
'accounts.name as account_name',
'accounts.encrypted as account_name_encrypted',
'transactions.identifier',
'opposing.id as opposing_id',
'opposing.amount AS opposing_amount',
'opposing.description as opposing_description',
'opposing.account_id as opposing_account_id',
'opposing_accounts.name as opposing_account_name',
'opposing_accounts.encrypted as opposing_account_encrypted',
'opposing.identifier as opposing_identifier',
'transaction_journals.id as transaction_journal_id',
'transaction_journals.date',
'transaction_journals.description as journal_description',
'transaction_journals.encrypted as journal_encrypted',
'transaction_journals.transaction_type_id',
'transaction_types.type as transaction_type',
'transaction_journals.transaction_currency_id',
'transaction_currencies.code AS transaction_currency_code',
]
);
}
}

View File

@@ -3,17 +3,17 @@
* UploadCollector.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
use Auth;
use Crypt;
use FireflyIII\Models\ExportJob;
use Illuminate\Contracts\Encryption\DecryptException;
use Log;
use Storage;
@@ -25,75 +25,92 @@ use Storage;
*/
class UploadCollector extends BasicCollector implements CollectorInterface
{
/** @var string */
private $expected;
/** @var \Illuminate\Contracts\Filesystem\Filesystem */
private $exportDisk;
private $importKeys = [];
/** @var \Illuminate\Contracts\Filesystem\Filesystem */
private $uploadDisk;
/** @var string */
private $vintageFormat;
/**
*
* AttachmentCollector constructor.
*
* @param ExportJob $job
*/
public function __construct(ExportJob $job)
public function __construct()
{
parent::__construct($job);
Log::debug('Going to collect attachments', ['key' => $job->key]);
// make storage:
parent::__construct();
$this->uploadDisk = Storage::disk('upload');
$this->exportDisk = Storage::disk('export');
// file names associated with the old import routine.
$this->expected = 'csv-upload-' . Auth::user()->id . '-';
// for the new import routine:
$this->getImportKeys();
}
/**
* Is called from the outside to actually start the export.
*
* @return bool
*/
public function run(): bool
{
// grab upload directory.
$files = $this->uploadDisk->files();
Log::debug('Going to collect attachments', ['key' => $this->job->key]);
foreach ($files as $entry) {
$this->processUpload($entry);
// file names associated with the old import routine.
$this->vintageFormat = sprintf('csv-upload-%d-', $this->job->user->id);
// collect old upload files (names beginning with "csv-upload".
$this->collectVintageUploads();
// then collect current upload files:
$this->collectModernUploads();
return true;
}
/**
* This method collects all the uploads that are uploaded using the new importer. So after the summer of 2016.
*
* @return bool
*/
private function collectModernUploads(): bool
{
$set = $this->job->user->importJobs()->where('status', 'import_complete')->get(['import_jobs.*']);
$keys = [];
if ($set->count() > 0) {
$keys = $set->pluck('key')->toArray();
}
foreach ($keys as $key) {
$this->processModernUpload($key);
}
return true;
}
/**
* This method collects all the uploads that are uploaded using the "old" importer. So from before the summer of 2016.
*
* @return bool
*/
private function getImportKeys()
private function collectVintageUploads(): bool
{
$set = Auth::user()->importJobs()->where('status', 'import_complete')->get(['import_jobs.*']);
if ($set->count() > 0) {
$keys = $set->pluck('key')->toArray();
$this->importKeys = $keys;
// grab upload directory.
$files = $this->uploadDisk->files();
foreach ($files as $entry) {
$this->processVintageUpload($entry);
}
Log::debug('Valid import keys are ', $this->importKeys);
return true;
}
/**
* This method tells you when the vintage upload file was actually uploaded.
*
* @param string $entry
*
* @return string
*/
private function getOriginalUploadDate(string $entry): string
private function getVintageUploadDate(string $entry): string
{
// this is an original upload.
$parts = explode('-', str_replace(['.csv.encrypted', $this->expected], '', $entry));
$parts = explode('-', str_replace(['.csv.encrypted', $this->vintageFormat], '', $entry));
$originalUpload = intval($parts[1]);
$date = date('Y-m-d \a\t H-i-s', $originalUpload);
@@ -101,33 +118,17 @@ class UploadCollector extends BasicCollector implements CollectorInterface
}
/**
* Tells you if a file name is a vintage upload.
*
* @param string $entry
*
* @return bool
*/
private function isImportFile(string $entry): bool
private function isVintageImport(string $entry): bool
{
$name = str_replace('.upload', '', $entry);
if (in_array($name, $this->importKeys)) {
Log::debug(sprintf('Import file "%s" is in array', $name), $this->importKeys);
return true;
}
Log::debug(sprintf('Import file "%s" is NOT in array', $name), $this->importKeys);
return false;
}
/**
* @param string $entry
*
* @return bool
*/
private function isOldImport(string $entry): bool
{
$len = strlen($this->expected);
$len = strlen($this->vintageFormat);
// file is part of the old import routine:
if (substr($entry, 0, $len) === $this->expected) {
if (substr($entry, 0, $len) === $this->vintageFormat) {
return true;
}
@@ -136,49 +137,62 @@ class UploadCollector extends BasicCollector implements CollectorInterface
}
/**
* @param $entry
* @param string $key
*
* @return bool
*/
private function processUpload(string $entry)
{
// file is old import:
if ($this->isOldImport($entry)) {
$this->saveOldImportFile($entry);
}
// file is current import.
if ($this->isImportFile($entry)) {
$this->saveImportFile($entry);
}
}
/**
* @param string $entry
*/
private function saveImportFile(string $entry)
private function processModernUpload(string $key): bool
{
// find job associated with import file:
$name = str_replace('.upload', '', $entry);
$job = Auth::user()->importJobs()->where('key', $name)->first();
$content = '';
try {
$content = Crypt::decrypt($this->uploadDisk->get($entry));
} catch (DecryptException $e) {
Log::error('Could not decrypt old import file ' . $entry . '. Skipped because ' . $e->getMessage());
$job = $this->job->user->importJobs()->where('key', $key)->first();
if (is_null($job)) {
return false;
}
if (!is_null($job) && strlen($content) > 0) {
// find the file for this import:
$content = '';
try {
$content = Crypt::decrypt($this->uploadDisk->get(sprintf('%s.upload', $key)));
} catch (DecryptException $e) {
Log::error(sprintf('Could not decrypt old import file "%s". Skipped because: %s', $key, $e->getMessage()));
}
if (strlen($content) > 0) {
// add to export disk.
$date = $job->created_at->format('Y-m-d');
$file = sprintf('%s-Old %s import dated %s.%s', $this->job->key, strtoupper($job->file_type), $date, $job->file_type);
$this->exportDisk->put($file, $content);
$this->getFiles()->push($file);
$this->getEntries()->push($file);
}
return true;
}
/**
* If the file is a vintage upload, process it.
*
* @param string $entry
*
* @return bool
*/
private function processVintageUpload(string $entry): bool
{
if ($this->isVintageImport($entry)) {
$this->saveVintageImportFile($entry);
return true;
}
return false;
}
/**
* This will store the content of the old vintage upload somewhere.
*
* @param string $entry
*/
private function saveOldImportFile(string $entry)
private function saveVintageImportFile(string $entry)
{
$content = '';
try {
@@ -189,10 +203,10 @@ class UploadCollector extends BasicCollector implements CollectorInterface
if (strlen($content) > 0) {
// add to export disk.
$date = $this->getOriginalUploadDate($entry);
$date = $this->getVintageUploadDate($entry);
$file = $this->job->key . '-Old import dated ' . $date . '.csv';
$this->exportDisk->put($file, $content);
$this->getFiles()->push($file);
$this->getEntries()->push($file);
}
}

View File

@@ -1,66 +0,0 @@
<?php
/**
* ConfigurationFile.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Export;
use FireflyIII\Export\Entry\Entry;
use FireflyIII\Models\ExportJob;
use Storage;
/**
* Class ConfigurationFile
*
* @package FireflyIII\Export
*/
class ConfigurationFile
{
/** @var \Illuminate\Contracts\Filesystem\Filesystem */
private $exportDisk;
/** @var ExportJob */
private $job;
/**
* ConfigurationFile constructor.
*
* @param ExportJob $job
*/
public function __construct(ExportJob $job)
{
$this->job = $job;
$this->exportDisk = Storage::disk('export');
}
/**
* @return string
*/
public function make(): string
{
$fields = array_keys(Entry::getFieldsAndTypes());
$types = Entry::getFieldsAndTypes();
$configuration = [
'date-format' => 'Y-m-d', // unfortunately, this is hard-coded.
'has-headers' => true,
'map' => [], // we could build a map if necessary for easy re-import.
'roles' => [],
'mapped' => [],
'specifix' => [],
];
foreach ($fields as $field) {
$configuration['roles'][] = $types[$field];
}
$file = $this->job->key . '-configuration.json';
$this->exportDisk->put($file, json_encode($configuration, JSON_PRETTY_PRINT));
return $file;
}
}

View File

@@ -3,16 +3,17 @@
* Entry.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Entry;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Support\Collection;
use Steam;
/**
* To extend the exported object, in case of new features in Firefly III for example,
@@ -28,103 +29,71 @@ use Illuminate\Support\Collection;
*
*
* Class Entry
* @SuppressWarnings(PHPMD.LongVariable)
*
* @package FireflyIII\Export\Entry
*/
final class Entry
{
/** @var string */
public $amount;
/** @var EntryBill */
public $bill;
/** @var EntryBudget */
public $budget;
/** @var EntryCategory */
public $category;
/** @var string */
// @formatter:off
public $journal_id;
public $date;
/** @var string */
public $description;
/** @var EntryAccount */
public $destinationAccount;
/** @var Collection */
public $destinationAccounts;
/** @var EntryAccount */
public $sourceAccount;
/** @var Collection */
public $sourceAccounts;
public $currency_code;
public $amount;
public $transaction_type;
public $source_account_id;
public $source_account_name;
public $destination_account_id;
public $destination_account_name;
public $budget_id;
public $budget_name;
public $category_id;
public $category_name;
// @formatter:on
/**
* Entry constructor.
*/
private function __construct()
{
$this->sourceAccounts = new Collection;
$this->destinationAccounts = new Collection;
}
/**
* @param TransactionJournal $journal
* @param $object
*
* @return Entry
*/
public static function fromJournal(TransactionJournal $journal)
public static function fromObject($object): Entry
{
$entry = new self;
$entry->journal_id = $object->transaction_journal_id;
$entry->description = Steam::decrypt(intval($object->journal_encrypted), $object->journal_description);
$entry->amount = $object->amount;
$entry->date = $object->date;
$entry->transaction_type = $object->transaction_type;
$entry->currency_code = $object->transaction_currency_code;
$entry->source_account_id = $object->account_id;
$entry->source_account_name = Steam::decrypt(intval($object->account_name_encrypted), $object->account_name);
$entry->destination_account_id = $object->opposing_account_id;
$entry->destination_account_name = Steam::decrypt(intval($object->opposing_account_encrypted), $object->opposing_account_name);
$entry->category_id = $object->category_id ?? '';
$entry->category_name = $object->category_name ?? '';
$entry->budget_id = $object->budget_id ?? '';
$entry->budget_name = $object->budget_name ?? '';
$entry = new self;
$entry->description = $journal->description;
$entry->date = $journal->date->format('Y-m-d');
$entry->amount = TransactionJournal::amount($journal);
$entry->budget = new EntryBudget($journal->budgets->first());
$entry->category = new EntryCategory($journal->categories->first());
$entry->bill = new EntryBill($journal->bill);
$sources = TransactionJournal::sourceAccountList($journal);
$destinations = TransactionJournal::destinationAccountList($journal);
$entry->sourceAccount = new EntryAccount($sources->first());
$entry->destinationAccount = new EntryAccount($destinations->first());
foreach ($sources as $source) {
$entry->sourceAccounts->push(new EntryAccount($source));
}
foreach ($destinations as $destination) {
$entry->destinationAccounts->push(new EntryAccount($destination));
// update description when transaction description is different:
if (!is_null($object->description) && $object->description != $entry->description) {
$entry->description = $entry->description . ' (' . $object->description . ')';
}
return $entry;
}
/**
* @return array
*/
public static function getFieldsAndTypes(): array
{
// key = field name (see top of class)
// value = field type (see csv.php under 'roles')
return [
'description' => 'description',
'amount' => 'amount',
'date' => 'date-transaction',
'source_account_id' => 'account-id',
'source_account_name' => 'account-name',
'source_account_iban' => 'account-iban',
'source_account_type' => '_ignore',
'source_account_number' => 'account-number',
'destination_account_id' => 'opposing-id',
'destination_account_name' => 'opposing-name',
'destination_account_iban' => 'opposing-iban',
'destination_account_type' => '_ignore',
'destination_account_number' => 'account-number',
'budget_id' => 'budget-id',
'budget_name' => 'budget-name',
'category_id' => 'category-id',
'category_name' => 'category-name',
'bill_id' => 'bill-id',
'bill_name' => 'bill-name',
];
}
}

View File

@@ -1,47 +0,0 @@
<?php
/**
* EntryAccount.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Export\Entry;
use FireflyIII\Models\Account;
/**
* Class EntryAccount
*
* @package FireflyIII\Export\Entry
*/
class EntryAccount
{
/** @var int */
public $accountId;
/** @var string */
public $iban;
/** @var string */
public $name;
/** @var string */
public $number;
/** @var string */
public $type;
/**
* EntryAccount constructor.
*
* @param Account $account
*/
public function __construct(Account $account)
{
$this->accountId = $account->id;
$this->name = $account->name;
$this->iban = $account->iban;
$this->type = $account->accountType->type;
$this->number = $account->getMeta('accountNumber');
}
}

View File

@@ -1,41 +0,0 @@
<?php
/**
* EntryBill.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Export\Entry;
use FireflyIII\Models\Bill;
/**
* Class EntryBill
*
* @package FireflyIII\Export\Entry
*/
class EntryBill
{
/** @var int */
public $billId = '';
/** @var string */
public $name = '';
/**
* EntryBill constructor.
*
* @param Bill $bill
*/
public function __construct(Bill $bill = null)
{
if (!is_null($bill)) {
$this->billId = $bill->id;
$this->name = $bill->name;
}
}
}

View File

@@ -1,41 +0,0 @@
<?php
/**
* EntryBudget.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Export\Entry;
use FireflyIII\Models\Budget;
/**
* Class EntryBudget
*
* @package FireflyIII\Export\Entry
*/
class EntryBudget
{
/** @var int */
public $budgetId = '';
/** @var string */
public $name = '';
/**
* EntryBudget constructor.
*
* @param Budget $budget
*/
public function __construct(Budget $budget = null)
{
if (!is_null($budget)) {
$this->budgetId = $budget->id;
$this->name = $budget->name;
}
}
}

View File

@@ -1,40 +0,0 @@
<?php
/**
* EntryCategory.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Export\Entry;
use FireflyIII\Models\Category;
/**
* Class EntryCategory
*
* @package FireflyIII\Export\Entry
*/
class EntryCategory
{
/** @var int */
public $categoryId = '';
/** @var string */
public $name = '';
/**
* EntryCategory constructor.
*
* @param Category $category
*/
public function __construct(Category $category = null)
{
if (!is_null($category)) {
$this->categoryId = $category->id;
$this->name = $category->name;
}
}
}

View File

@@ -3,11 +3,13 @@
* BasicExporter.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Exporter;
@@ -24,17 +26,15 @@ class BasicExporter
{
/** @var ExportJob */
protected $job;
private $entries;
/** @var Collection */
private $entries;
/**
* BasicExporter constructor.
*
* @param ExportJob $job
*/
public function __construct(ExportJob $job)
public function __construct()
{
$this->entries = new Collection;
$this->job = $job;
}
/**
@@ -53,5 +53,13 @@ class BasicExporter
$this->entries = $entries;
}
/**
* @param ExportJob $job
*/
public function setJob(ExportJob $job)
{
$this->job = $job;
}
}

View File

@@ -3,18 +3,17 @@
* CsvExporter.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Exporter;
use FireflyIII\Export\Entry\Entry;
use FireflyIII\Export\Entry\EntryAccount;
use FireflyIII\Models\ExportJob;
use Illuminate\Support\Collection;
use League\Csv\Writer;
use SplFileObject;
@@ -30,13 +29,10 @@ class CsvExporter extends BasicExporter implements ExporterInterface
/**
* CsvExporter constructor.
*
* @param ExportJob $job
*/
public function __construct(ExportJob $job)
public function __construct()
{
parent::__construct($job);
parent::__construct();
}
/**
@@ -60,110 +56,24 @@ class CsvExporter extends BasicExporter implements ExporterInterface
$writer = Writer::createFromPath(new SplFileObject($fullPath, 'a+'), 'w');
$rows = [];
// Count the maximum number of sources and destinations each entry has. May need to expand the number of export fields:
$maxSourceAccounts = 1;
$maxDestAccounts = 1;
/** @var Entry $entry */
foreach ($this->getEntries() as $entry) {
$sources = $entry->sourceAccounts->count();
$destinations = $entry->destinationAccounts->count();
$maxSourceAccounts = max($maxSourceAccounts, $sources);
$maxDestAccounts = max($maxDestAccounts, $destinations);
}
$rows[] = array_keys($this->getFieldsAndTypes($maxSourceAccounts, $maxDestAccounts));
// get field names for header row:
$first = $this->getEntries()->first();
$headers = array_keys(get_object_vars($first));
$rows[] = $headers;
/** @var Entry $entry */
foreach ($this->getEntries() as $entry) {
// order is defined in Entry::getFieldsAndTypes.
$current = [$entry->description, $entry->amount, $entry->date];
$sourceData = $this->getAccountData($maxSourceAccounts, $entry->sourceAccounts);
$current = array_merge($current, $sourceData);
$destData = $this->getAccountData($maxDestAccounts, $entry->destinationAccounts);
$current = array_merge($current, $destData);
$rest = [$entry->budget->budgetId, $entry->budget->name, $entry->category->categoryId, $entry->category->name, $entry->bill->billId,
$entry->bill->name];
$current = array_merge($current, $rest);
$rows[] = $current;
$line = [];
foreach ($headers as $header) {
$line[] = $entry->$header;
}
$rows[] = $line;
}
$writer->insertAll($rows);
return true;
}
/**
* @param int $max
* @param Collection $accounts
*
* @return array
*/
private function getAccountData(int $max, Collection $accounts): array
{
$current = [];
for ($i = 0; $i < $max; $i++) {
/** @var EntryAccount $source */
$source = $accounts->get($i);
$currentId = '';
$currentName = '';
$currentIban = '';
$currentType = '';
$currentNumber = '';
if ($source) {
$currentId = $source->accountId;
$currentName = $source->name;
$currentIban = $source->iban;
$currentType = $source->type;
$currentNumber = $source->number;
}
$current[] = $currentId;
$current[] = $currentName;
$current[] = $currentIban;
$current[] = $currentType;
$current[] = $currentNumber;
}
unset($source);
return $current;
}
/**
* @param int $sources
* @param int $destinations
*
* @return array
*/
private function getFieldsAndTypes(int $sources, int $destinations): array
{
// key = field name (see top of class)
// value = field type (see csv.php under 'roles')
$array = [
'description' => 'description',
'amount' => 'amount',
'date' => 'date-transaction',
];
for ($i = 0; $i < $sources; $i++) {
$array['source_account_' . $i . '_id'] = 'account-id';
$array['source_account_' . $i . '_name'] = 'account-name';
$array['source_account_' . $i . '_iban'] = 'account-iban';
$array['source_account_' . $i . '_type'] = '_ignore';
$array['source_account_' . $i . '_number'] = 'account-number';
}
for ($i = 0; $i < $destinations; $i++) {
$array['destination_account_' . $i . '_id'] = 'account-id';
$array['destination_account_' . $i . '_name'] = 'account-name';
$array['destination_account_' . $i . '_iban'] = 'account-iban';
$array['destination_account_' . $i . '_type'] = '_ignore';
$array['destination_account_' . $i . '_number'] = 'account-number';
}
$array['budget_id'] = 'budget-id';
$array['budget_name'] = 'budget-name';
$array['category_id'] = 'category-id';
$array['category_name'] = 'category-name';
$array['bill_id'] = 'bill-id';
$array['bill_name'] = 'bill-name';
return $array;
}
private function tempFile()
{

View File

@@ -3,14 +3,17 @@
* ExporterInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export\Exporter;
use FireflyIII\Models\ExportJob;
use Illuminate\Support\Collection;
/**
@@ -38,7 +41,14 @@ interface ExporterInterface
/**
* @param Collection $entries
*
* @return void
*
*/
public function setEntries(Collection $entries);
/**
* @param ExportJob $job
*/
public function setJob(ExportJob $job);
}

View File

@@ -3,23 +3,24 @@
* Processor.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace FireflyIII\Export;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Export\Collector\AttachmentCollector;
use FireflyIII\Export\Collector\JournalExportCollector;
use FireflyIII\Export\Collector\UploadCollector;
use FireflyIII\Export\Entry\Entry;
use FireflyIII\Models\ExportJob;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Collection;
use Log;
use Storage;
use ZipArchive;
@@ -28,7 +29,7 @@ use ZipArchive;
*
* @package FireflyIII\Export
*/
class Processor
class Processor implements ProcessorInterface
{
/** @var Collection */
@@ -38,15 +39,11 @@ class Processor
/** @var bool */
public $includeAttachments;
/** @var bool */
public $includeConfig;
/** @var bool */
public $includeOldUploads;
/** @var ExportJob */
public $job;
/** @var array */
public $settings;
/** @var \FireflyIII\Export\ConfigurationFile */
private $configurationMaker;
/** @var Collection */
private $exportEntries;
/** @var Collection */
@@ -56,22 +53,12 @@ class Processor
/**
* Processor constructor.
*
* @param array $settings
*/
public function __construct(array $settings)
public function __construct()
{
// save settings
$this->settings = $settings;
$this->accounts = $settings['accounts'];
$this->exportFormat = $settings['exportFormat'];
$this->includeAttachments = $settings['includeAttachments'];
$this->includeConfig = $settings['includeConfig'];
$this->includeOldUploads = $settings['includeOldUploads'];
$this->job = $settings['job'];
$this->journals = new Collection;
$this->exportEntries = new Collection;
$this->files = new Collection;
$this->journals = new Collection;
$this->exportEntries = new Collection;
$this->files = new Collection;
}
@@ -81,9 +68,11 @@ class Processor
public function collectAttachments(): bool
{
/** @var AttachmentCollector $attachmentCollector */
$attachmentCollector = app(AttachmentCollector::class, [$this->job]);
$attachmentCollector = app(AttachmentCollector::class);
$attachmentCollector->setJob($this->job);
$attachmentCollector->setDates($this->settings['startDate'], $this->settings['endDate']);
$attachmentCollector->run();
$this->files = $this->files->merge($attachmentCollector->getFiles());
$this->files = $this->files->merge($attachmentCollector->getEntries());
return true;
}
@@ -93,9 +82,14 @@ class Processor
*/
public function collectJournals(): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$this->journals = $repository->getJournalsInRange($this->accounts, $this->settings['startDate'], $this->settings['endDate']);
/** @var JournalExportCollector $collector */
$collector = app(JournalExportCollector::class);
$collector->setJob($this->job);
$collector->setDates($this->settings['startDate'], $this->settings['endDate']);
$collector->setAccounts($this->settings['accounts']);
$collector->run();
$this->journals = $collector->getEntries();
Log::debug(sprintf('Count %d journals in collectJournals() ', $this->journals->count()));
return true;
}
@@ -106,10 +100,11 @@ class Processor
public function collectOldUploads(): bool
{
/** @var UploadCollector $uploadCollector */
$uploadCollector = app(UploadCollector::class, [$this->job]);
$uploadCollector = app(UploadCollector::class);
$uploadCollector->setJob($this->job);
$uploadCollector->run();
$this->files = $this->files->merge($uploadCollector->getFiles());
$this->files = $this->files->merge($uploadCollector->getEntries());
return true;
}
@@ -120,22 +115,11 @@ class Processor
public function convertJournals(): bool
{
$count = 0;
/** @var TransactionJournal $journal */
foreach ($this->journals as $journal) {
$this->exportEntries->push(Entry::fromJournal($journal));
foreach ($this->journals as $object) {
$this->exportEntries->push(Entry::fromObject($object));
$count++;
}
return true;
}
/**
* @return bool
*/
public function createConfigFile(): bool
{
$this->configurationMaker = app(ConfigurationFile::class, [$this->job]);
$this->files->push($this->configurationMaker->make());
Log::debug(sprintf('Count %d entries in exportEntries (convertJournals)', $this->exportEntries->count()));
return true;
}
@@ -164,7 +148,7 @@ class Processor
$zip->close();
// delete the files:
$this->deleteFiles($disk);
$this->deleteFiles();
return true;
}
@@ -175,7 +159,8 @@ class Processor
public function exportJournals(): bool
{
$exporterClass = config('firefly.export_formats.' . $this->exportFormat);
$exporter = app($exporterClass, [$this->job]);
$exporter = app($exporterClass);
$exporter->setJob($this->job);
$exporter->setEntries($this->exportEntries);
$exporter->run();
$this->files->push($exporter->getFileName());
@@ -192,10 +177,25 @@ class Processor
}
/**
* @param FilesystemAdapter $disk
* @param array $settings
*/
private function deleteFiles(FilesystemAdapter $disk)
public function setSettings(array $settings)
{
// save settings
$this->settings = $settings;
$this->accounts = $settings['accounts'];
$this->exportFormat = $settings['exportFormat'];
$this->includeAttachments = $settings['includeAttachments'];
$this->includeOldUploads = $settings['includeOldUploads'];
$this->job = $settings['job'];
}
/**
*
*/
private function deleteFiles()
{
$disk = Storage::disk('export');
foreach ($this->getFiles() as $file) {
$disk->delete($file);
}

View File

@@ -0,0 +1,70 @@
<?php
/**
* ProcessorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Export;
use Illuminate\Support\Collection;
/**
* Interface ProcessorInterface
*
* @package FireflyIII\Export
*/
interface ProcessorInterface
{
/**
* Processor constructor.
*/
public function __construct();
/**
* @return bool
*/
public function collectAttachments(): bool;
/**
* @return bool
*/
public function collectJournals(): bool;
/**
* @return bool
*/
public function collectOldUploads(): bool;
/**
* @return bool
*/
public function convertJournals(): bool;
/**
* @return bool
*/
public function createZipFile(): bool;
/**
* @return bool
*/
public function exportJournals(): bool;
/**
* @return Collection
*/
public function getFiles(): Collection;
/**
* @param array $settings
*/
public function setSettings(array $settings);
}

View File

@@ -1,52 +0,0 @@
<?php
/**
* AccountChartGeneratorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Account;
use Carbon\Carbon;
use FireflyIII\Models\Account;
use Illuminate\Support\Collection;
/**
* Interface AccountChartGeneratorInterface
*
* @package FireflyIII\Generator\Chart\Account
*/
interface AccountChartGeneratorInterface
{
/**
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function expenseAccounts(Collection $accounts, Carbon $start, Carbon $end): array;
/**
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function frontpage(Collection $accounts, Carbon $start, Carbon $end): array;
/**
* @param Account $account
* @param array $labels
* @param array $dataSet
*
* @return array
*/
public function single(Account $account, array $labels, array $dataSet): array;
}

View File

@@ -1,107 +0,0 @@
<?php
/**
* ChartJsAccountChartGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Account;
use Carbon\Carbon;
use FireflyIII\Models\Account;
use Illuminate\Support\Collection;
/**
* Class ChartJsAccountChartGenerator
*
* @package FireflyIII\Generator\Chart\Account
*/
class ChartJsAccountChartGenerator implements AccountChartGeneratorInterface
{
/**
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function expenseAccounts(Collection $accounts, Carbon $start, Carbon $end): array
{
$data = [
'count' => 1,
'labels' => [], 'datasets' => [[
'label' => trans('firefly.spent'),
'data' => []]]];
foreach ($accounts as $account) {
if ($account->difference > 0) {
$data['labels'][] = $account->name;
$data['datasets'][0]['data'][] = $account->difference;
}
}
return $data;
}
/**
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
public function frontpage(Collection $accounts, Carbon $start, Carbon $end): array
{
// language:
$format = (string)trans('config.month_and_day');
$data = ['count' => 0, 'labels' => [], 'datasets' => [],];
$current = clone $start;
while ($current <= $end) {
$data['labels'][] = $current->formatLocalized($format);
$current->addDay();
}
foreach ($accounts as $account) {
$data['datasets'][] = [
'label' => $account->name,
'fillColor' => 'rgba(220,220,220,0.2)',
'strokeColor' => 'rgba(220,220,220,1)',
'pointColor' => 'rgba(220,220,220,1)',
'pointStrokeColor' => '#fff',
'pointHighlightFill' => '#fff',
'pointHighlightStroke' => 'rgba(220,220,220,1)',
'data' => $account->balances,
];
}
$data['count'] = count($data['datasets']);
return $data;
}
/**
* @param Account $account
* @param array $labels
* @param array $dataSet
*
* @return array
*/
public function single(Account $account, array $labels, array $dataSet): array
{
$data = [
'count' => 1,
'labels' => $labels,
'datasets' => [
[
'label' => $account->name,
'data' => $dataSet,
],
],
];
return $data;
}
}

View File

@@ -0,0 +1,154 @@
<?php
/**
* ChartJsGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Chart\Basic;
use FireflyIII\Support\ChartColour;
use Steam;
/**
* Class ChartJsGenerator
*
* @package FireflyIII\Generator\Chart\Basic
*/
class ChartJsGenerator implements GeneratorInterface
{
/**
* Will generate a Chart JS compatible array from the given input. Expects this format
*
* Will take labels for all from first set.
*
* 0: [
* 'label' => 'label of set',
* 'type' => bar or line, optional
* 'yAxisID' => ID of yAxis, optional, will not be included when unused.
* 'fill' => if to fill a line? optional, will not be included when unused.
* 'entries' =>
* [
* 'label-of-entry' => 'value'
* ]
* ]
* 1: [
* 'label' => 'label of another set',
* 'type' => bar or line, optional
* 'yAxisID' => ID of yAxis, optional, will not be included when unused.
* 'fill' => if to fill a line? optional, will not be included when unused.
* 'entries' =>
* [
* 'label-of-entry' => 'value'
* ]
* ]
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five.
*
* @param array $data
*
* @return array
*/
public function multiSet(array $data): array
{
reset($data);
$first = current($data);
$labels = is_array($first['entries']) ? array_keys($first['entries']) : [];
$chartData = [
'count' => count($data),
'labels' => $labels, // take ALL labels from the first set.
'datasets' => [],
];
unset($first, $labels);
foreach ($data as $set) {
$currentSet = [
'label' => $set['label'],
'type' => $set['type'] ?? 'line',
'data' => array_values($set['entries']),
];
if (isset($set['yAxisID'])) {
$currentSet['yAxisID'] = $set['yAxisID'];
}
if (isset($set['fill'])) {
$currentSet['fill'] = $set['fill'];
}
if (isset($set['currency_symbol'])) {
$currentSet['currency_symbol'] = $set['currency_symbol'];
}
$chartData['datasets'][] = $currentSet;
}
return $chartData;
}
/**
* Expects data as:
*
* key => value
*
* @param array $data
*
* @return array
*/
public function pieChart(array $data): array
{
$chartData = [
'datasets' => [
0 => [],
],
'labels' => [],
];
// sort by value, keep keys.
asort($data);
$index = 0;
foreach ($data as $key => $value) {
// make larger than 0
$chartData['datasets'][0]['data'][] = floatval(Steam::positive($value));
$chartData['datasets'][0]['backgroundColor'][] = ChartColour::getColour($index);
$chartData['labels'][] = $key;
$index++;
}
return $chartData;
}
/**
* Will generate a (ChartJS) compatible array from the given input. Expects this format:
*
* 'label-of-entry' => value
* 'label-of-entry' => value
*
* @param string $setLabel
* @param array $data
*
* @return array
*/
public function singleSet(string $setLabel, array $data): array
{
$chartData = [
'count' => 1,
'labels' => array_keys($data), // take ALL labels from the first set.
'datasets' => [
[
'label' => $setLabel,
'data' => array_values($data),
],
],
];
return $chartData;
}
}

View File

@@ -0,0 +1,73 @@
<?php
/**
* GeneratorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Chart\Basic;
/**
* Interface GeneratorInterface
*
* @package FireflyIII\Generator\Chart\Basic
*/
interface GeneratorInterface
{
/**
* Will generate a (ChartJS) compatible array from the given input. Expects this format:
*
* 0: [
* 'label' => 'label of set',
* 'entries' =>
* [
* 'label-of-entry' => 'value'
* ]
* ]
* 1: [
* 'label' => 'label of another set',
* 'entries' =>
* [
* 'label-of-entry' => 'value'
* ]
* ]
*
*
* @param array $data
*
* @return array
*/
public function multiSet(array $data): array;
/**
* Expects data as:
*
* key => value
*
* @param array $data
*
* @return array
*/
public function pieChart(array $data): array;
/**
* Will generate a (ChartJS) compatible array from the given input. Expects this format:
*
* 'label-of-entry' => value
* 'label-of-entry' => value
*
* @param string $setLabel
* @param array $data
*
* @return array
*/
public function singleSet(string $setLabel, array $data): array;
}

View File

@@ -1,42 +0,0 @@
<?php
/**
* BillChartGeneratorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Bill;
use FireflyIII\Models\Bill;
use Illuminate\Support\Collection;
/**
* Interface BillChartGeneratorInterface
*
* @package FireflyIII\Generator\Chart\Bill
*/
interface BillChartGeneratorInterface
{
/**
* @param string $paid
* @param string $unpaid
*
* @return array
*/
public function frontpage(string $paid, string $unpaid): array;
/**
* @param Bill $bill
* @param Collection $entries
*
* @return array
*/
public function single(Bill $bill, Collection $entries): array;
}

View File

@@ -1,91 +0,0 @@
<?php
/**
* ChartJsBillChartGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Bill;
use FireflyIII\Models\Bill;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Support\Collection;
/**
* Class ChartJsBillChartGenerator
*
* @package FireflyIII\Generator\Chart\Bill
*/
class ChartJsBillChartGenerator implements BillChartGeneratorInterface
{
/**
* @param string $paid
* @param string $unpaid
*
* @return array
*/
public function frontpage(string $paid, string $unpaid): array
{
$data = [
'datasets' => [
[
'data' => [round($unpaid, 2), round(bcmul($paid, '-1'), 2)],
'backgroundColor' => ['rgba(53, 124, 165,0.7)', 'rgba(0, 141, 76, 0.7)',],
],
],
'labels' => [strval(trans('firefly.unpaid')), strval(trans('firefly.paid'))],
];
return $data;
}
/**
* @param Bill $bill
* @param Collection $entries
*
* @return array
*/
public function single(Bill $bill, Collection $entries): array
{
$format = (string)trans('config.month');
$data = ['count' => 3, 'labels' => [], 'datasets' => [],];
$minAmount = [];
$maxAmount = [];
$actualAmount = [];
/** @var TransactionJournal $entry */
foreach ($entries as $entry) {
$data['labels'][] = $entry->date->formatLocalized($format);
$minAmount[] = round($bill->amount_min, 2);
$maxAmount[] = round($bill->amount_max, 2);
// journalAmount has been collected in BillRepository::getJournals
$actualAmount[] = round(TransactionJournal::amountPositive($entry), 2);
}
$data['datasets'][] = [
'type' => 'bar',
'label' => trans('firefly.minAmount'),
'data' => $minAmount,
];
$data['datasets'][] = [
'type' => 'line',
'label' => trans('firefly.billEntry'),
'data' => $actualAmount,
];
$data['datasets'][] = [
'type' => 'bar',
'label' => trans('firefly.maxAmount'),
'data' => $maxAmount,
];
$data['count'] = count($data['datasets']);
return $data;
}
}

View File

@@ -1,62 +0,0 @@
<?php
/**
* BudgetChartGeneratorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Budget;
use Illuminate\Support\Collection;
/**
* Interface BudgetChartGeneratorInterface
*
* @package FireflyIII\Generator\Chart\Budget
*/
interface BudgetChartGeneratorInterface
{
/**
* @param Collection $entries
* @param string $dateFormat
*
* @return array
*/
public function budgetLimit(Collection $entries, string $dateFormat): array;
/**
* @param Collection $entries
*
* @return array
*/
public function frontpage(Collection $entries): array;
/**
* @param Collection $entries
*
* @return array
*/
public function multiYear(Collection $entries): array;
/**
* @param Collection $entries
* @param string $viewRange
*
* @return array
*/
public function period(Collection $entries, string $viewRange) : array;
/**
* @param Collection $budgets
* @param Collection $entries
*
* @return array
*/
public function year(Collection $budgets, Collection $entries): array;
}

View File

@@ -1,208 +0,0 @@
<?php
/**
* ChartJsBudgetChartGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Budget;
use Illuminate\Support\Collection;
use Navigation;
/**
* Class ChartJsBudgetChartGenerator
*
* @package FireflyIII\Generator\Chart\Budget
*/
class ChartJsBudgetChartGenerator implements BudgetChartGeneratorInterface
{
/**
*
* @param Collection $entries
* @param string $dateFormat
*
* @return array
*/
public function budgetLimit(Collection $entries, string $dateFormat = 'month_and_day'): array
{
$format = strval(trans('config.' . $dateFormat));
$data = [
'labels' => [],
'datasets' => [
[
'label' => 'Amount',
'data' => [],
],
],
];
/** @var array $entry */
foreach ($entries as $entry) {
$data['labels'][] = $entry[0]->formatLocalized($format);
$data['datasets'][0]['data'][] = $entry[1];
}
$data['count'] = count($data['datasets']);
return $data;
}
/**
* @param Collection $entries
*
* @return array
*/
public function frontpage(Collection $entries): array
{
$data = [
'count' => 0,
'labels' => [],
'datasets' => [],
];
$left = [];
$spent = [];
$overspent = [];
$filtered = $entries->filter(
function ($entry) {
return ($entry[1] != 0 || $entry[2] != 0 || $entry[3] != 0);
}
);
foreach ($filtered as $entry) {
$data['labels'][] = $entry[0];
$left[] = round($entry[1], 2);
$spent[] = round(bcmul($entry[2], '-1'), 2); // spent is coming in negative, must be positive
$overspent[] = round(bcmul($entry[3], '-1'), 2); // same
}
$data['datasets'][] = [
'label' => trans('firefly.overspent'),
'data' => $overspent,
];
$data['datasets'][] = [
'label' => trans('firefly.left'),
'data' => $left,
];
$data['datasets'][] = [
'label' => trans('firefly.spent'),
'data' => $spent,
];
$data['count'] = 3;
return $data;
}
/**
* @param Collection $entries
*
* @return array
*/
public function multiYear(Collection $entries): array
{
// dataset:
$data = [
'count' => 0,
'labels' => [],
'datasets' => [],
];
// get labels from one of the budgets (assuming there's at least one):
$first = $entries->first();
$keys = array_keys($first['budgeted']);
foreach ($keys as $year) {
$data['labels'][] = strval($year);
}
// then, loop all entries and create datasets:
foreach ($entries as $entry) {
$name = $entry['name'];
$spent = $entry['spent'];
$budgeted = $entry['budgeted'];
$data['datasets'][] = ['label' => 'Spent on ' . $name, 'data' => array_values($spent)];
$data['datasets'][] = ['label' => 'Budgeted for ' . $name, 'data' => array_values($budgeted)];
}
$data['count'] = count($data['datasets']);
return $data;
}
/**
* @param Collection $entries
* @param string $viewRange
*
* @return array
*/
public function period(Collection $entries, string $viewRange) : array
{
$data = [
'labels' => [],
'datasets' => [
0 => [
'label' => trans('firefly.budgeted'),
'data' => [],
],
1 => [
'label' => trans('firefly.spent'),
'data' => [],
],
],
'count' => 2,
];
foreach ($entries as $entry) {
$label = Navigation::periodShow($entry['date'], $viewRange);
$data['labels'][] = $label;
// data set 0 is budgeted
// data set 1 is spent:
$data['datasets'][0]['data'][] = $entry['budgeted'];
$data['datasets'][1]['data'][] = round(($entry['spent'] * -1), 2);
}
return $data;
}
/**
* @param Collection $budgets
* @param Collection $entries
*
* @return array
*/
public function year(Collection $budgets, Collection $entries): array
{
// language:
$format = (string)trans('config.month');
$data = [
'labels' => [],
'datasets' => [],
];
foreach ($budgets as $budget) {
$data['labels'][] = $budget->name;
}
// also add "no budget"
$data['labels'][] = strval(trans('firefly.no_budget'));
/** @var array $entry */
foreach ($entries as $entry) {
$array = [
'label' => $entry[0]->formatLocalized($format),
'data' => [],
];
array_shift($entry);
$array['data'] = $entry;
$data['datasets'][] = $array;
}
$data['count'] = count($data['datasets']);
return $data;
}
}

View File

@@ -1,67 +0,0 @@
<?php
/**
* CategoryChartGeneratorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Category;
use Illuminate\Support\Collection;
/**
* Interface CategoryChartGeneratorInterface
*
* @package FireflyIII\Generator\Chart\Category
*/
interface CategoryChartGeneratorInterface
{
/**
* @param Collection $entries
*
* @return array
*/
public function all(Collection $entries): array;
/**
* @param Collection $categories
* @param Collection $entries
*
* @return array
*/
public function earnedInPeriod(Collection $categories, Collection $entries): array;
/**
* @param Collection $entries
*
* @return array
*/
public function frontpage(Collection $entries): array;
/**
* @param Collection $entries
*
* @return array
*/
public function multiYear(Collection $entries): array;
/**
* @param Collection $entries
*
* @return array
*/
public function period(Collection $entries): array;
/**
* @param Collection $categories
* @param Collection $entries
*
* @return array
*/
public function spentInPeriod(Collection $categories, Collection $entries): array;
}

View File

@@ -1,190 +0,0 @@
<?php
/**
* ChartJsCategoryChartGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Category;
use Illuminate\Support\Collection;
/**
* Class ChartJsCategoryChartGenerator
*
* @package FireflyIII\Generator\Chart\Category
*/
class ChartJsCategoryChartGenerator implements CategoryChartGeneratorInterface
{
/**
* @param Collection $entries
*
* @return array
*/
public function all(Collection $entries): array
{
$data = [
'count' => 2,
'labels' => [],
'datasets' => [
[
'label' => trans('firefly.spent'),
'data' => [],
],
[
'label' => trans('firefly.earned'),
'data' => [],
],
],
];
foreach ($entries as $entry) {
$data['labels'][] = $entry[1];
$spent = $entry[2];
$earned = $entry[3];
$data['datasets'][0]['data'][] = bccomp($spent, '0') === 0 ? null : round(bcmul($spent, '-1'), 4);
$data['datasets'][1]['data'][] = bccomp($earned, '0') === 0 ? null : round($earned, 4);
}
return $data;
}
/**
* @param Collection $categories
* @param Collection $entries
*
* @return array
*/
public function earnedInPeriod(Collection $categories, Collection $entries): array
{
// language:
$format = (string)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 $entries
*
* @return array
*/
public function frontpage(Collection $entries): array
{
$data = [
'count' => 1,
'labels' => [],
'datasets' => [
[
'label' => trans('firefly.spent'),
'data' => [],
],
],
];
foreach ($entries as $entry) {
if ($entry->spent != 0) {
$data['labels'][] = $entry->name;
$data['datasets'][0]['data'][] = round(bcmul($entry->spent, '-1'), 2);
}
}
return $data;
}
/**
* @param Collection $entries
*
* @return array
*/
public function multiYear(Collection $entries): array
{
// get labels from one of the categories (assuming there's at least one):
$first = $entries->first();
$data = ['count' => 0, 'labels' => array_keys($first['spent']), 'datasets' => [],];
// then, loop all entries and create datasets:
foreach ($entries as $entry) {
$name = $entry['name'];
$spent = $entry['spent'];
$earned = $entry['earned'];
if (array_sum(array_values($spent)) != 0) {
$data['datasets'][] = ['label' => 'Spent in category ' . $name, 'data' => array_values($spent)];
}
if (array_sum(array_values($earned)) != 0) {
$data['datasets'][] = ['label' => 'Earned in category ' . $name, 'data' => array_values($earned)];
}
}
$data['count'] = count($data['datasets']);
return $data;
}
/**
*
* @param Collection $entries
*
* @return array
*/
public function period(Collection $entries): array
{
return $this->all($entries);
}
/**
* @param Collection $categories
* @param Collection $entries
*
* @return array
*/
public function spentInPeriod(Collection $categories, Collection $entries): array
{
// language:
$format = (string)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;
}
}

View File

@@ -1,56 +0,0 @@
<?php
/**
* ChartJsPiggyBankChartGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\PiggyBank;
use Carbon\Carbon;
use Illuminate\Support\Collection;
/**
* Class ChartJsPiggyBankChartGenerator
*
* @package FireflyIII\Generator\Chart\PiggyBank
*/
class ChartJsPiggyBankChartGenerator implements PiggyBankChartGeneratorInterface
{
/**
* @param Collection $set
*
* @return array
*/
public function history(Collection $set): array
{
// language:
$format = (string)trans('config.month_and_day');
$data = [
'count' => 1,
'labels' => [],
'datasets' => [
[
'label' => 'Diff',
'data' => [],
],
],
];
$sum = '0';
foreach ($set as $key => $value) {
$date = new Carbon($key);
$sum = bcadd($sum, $value);
$data['labels'][] = $date->formatLocalized($format);
$data['datasets'][0]['data'][] = round($sum, 2);
}
return $data;
}
}

View File

@@ -1,29 +0,0 @@
<?php
/**
* PiggyBankChartGeneratorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\PiggyBank;
use Illuminate\Support\Collection;
/**
* Interface PiggyBankChartGeneratorInterface
*
* @package FireflyIII\Generator\Chart\PiggyBank
*/
interface PiggyBankChartGeneratorInterface
{
/**
* @param Collection $set
*
* @return array
*/
public function history(Collection $set): array;
}

View File

@@ -1,178 +0,0 @@
<?php
/**
* ChartJsReportChartGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Report;
use Illuminate\Support\Collection;
/**
* Class ChartJsReportChartGenerator
*
* @package FireflyIII\Generator\Chart\Report
*/
class ChartJsReportChartGenerator implements ReportChartGeneratorInterface
{
/**
* Same as above but other translations.
*
* @param Collection $entries
*
* @return array
*/
public function multiYearInOut(Collection $entries): array
{
$data = [
'count' => 2,
'labels' => [],
'datasets' => [
[
'label' => trans('firefly.income'),
'data' => [],
],
[
'label' => trans('firefly.expenses'),
'data' => [],
],
],
];
foreach ($entries as $entry) {
$data['labels'][] = $entry[0]->formatLocalized('%Y');
$data['datasets'][0]['data'][] = round($entry[1], 2);
$data['datasets'][1]['data'][] = round($entry[2], 2);
}
return $data;
}
/**
* @param string $income
* @param string $expense
* @param int $count
*
* @return array
*/
public function multiYearInOutSummarized(string $income, string $expense, int $count): array
{
$data = [
'count' => 2,
'labels' => [trans('firefly.sum_of_years'), trans('firefly.average_of_years')],
'datasets' => [
[
'label' => trans('firefly.income'),
'data' => [],
],
[
'label' => trans('firefly.expenses'),
'data' => [],
],
],
];
$data['datasets'][0]['data'][] = round($income, 2);
$data['datasets'][1]['data'][] = round($expense, 2);
$data['datasets'][0]['data'][] = round(($income / $count), 2);
$data['datasets'][1]['data'][] = round(($expense / $count), 2);
return $data;
}
/**
* @param Collection $entries
*
* @return array
*/
public function netWorth(Collection $entries) : array
{
$format = (string)trans('config.month_and_day');
$data = [
'count' => 1,
'labels' => [],
'datasets' => [
[
'label' => trans('firefly.net_worth'),
'data' => [],
],
],
];
foreach ($entries as $entry) {
$data['labels'][] = trim($entry['date']->formatLocalized($format));
$data['datasets'][0]['data'][] = round($entry['net-worth'], 2);
}
return $data;
}
/**
* @param Collection $entries
*
* @return array
*/
public function yearInOut(Collection $entries): array
{
// language:
$format = (string)trans('config.month');
$data = [
'count' => 2,
'labels' => [],
'datasets' => [
[
'label' => trans('firefly.income'),
'data' => [],
],
[
'label' => trans('firefly.expenses'),
'data' => [],
],
],
];
foreach ($entries as $entry) {
$data['labels'][] = $entry[0]->formatLocalized($format);
$data['datasets'][0]['data'][] = round($entry[1], 2);
$data['datasets'][1]['data'][] = round($entry[2], 2);
}
return $data;
}
/**
* @param string $income
* @param string $expense
* @param int $count
*
* @return array
*/
public function yearInOutSummarized(string $income, string $expense, int $count): array
{
$data = [
'count' => 2,
'labels' => [trans('firefly.sum_of_year'), trans('firefly.average_of_year')],
'datasets' => [
[
'label' => trans('firefly.income'),
'data' => [],
],
[
'label' => trans('firefly.expenses'),
'data' => [],
],
],
];
$data['datasets'][0]['data'][] = round($income, 2);
$data['datasets'][1]['data'][] = round($expense, 2);
$data['datasets'][0]['data'][] = round(($income / $count), 2);
$data['datasets'][1]['data'][] = round(($expense / $count), 2);
return $data;
}
}

View File

@@ -1,63 +0,0 @@
<?php
/**
* ReportChartGeneratorInterface.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
declare(strict_types = 1);
namespace FireflyIII\Generator\Chart\Report;
use Illuminate\Support\Collection;
/**
* Interface ReportChartGeneratorInterface
*
* @package FireflyIII\Generator\Chart\Report
*/
interface ReportChartGeneratorInterface
{
/**
* @param Collection $entries
*
* @return array
*/
public function multiYearInOut(Collection $entries): array;
/**
* @param string $income
* @param string $expense
* @param int $count
*
* @return array
*/
public function multiYearInOutSummarized(string $income, string $expense, int $count): array;
/**
* @param Collection $entries
*
* @return array
*/
public function netWorth(Collection $entries) : array;
/**
* @param Collection $entries
*
* @return array
*/
public function yearInOut(Collection $entries): array;
/**
* @param string $income
* @param string $expense
* @param int $count
*
* @return array
*/
public function yearInOutSummarized(string $income, string $expense, int $count): array;
}

View File

@@ -0,0 +1,183 @@
<?php
/**
* MonthReportGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Audit;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
use FireflyIII\Models\Account;
use FireflyIII\Models\Transaction;
use Illuminate\Support\Collection;
use Steam;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Audit
*/
class MonthReportGenerator implements ReportGeneratorInterface
{
/** @var Collection */
private $accounts;
/** @var Carbon */
private $end;
/** @var Carbon */
private $start;
/**
* @return string
*/
public function generate(): string
{
$auditData = [];
$dayBefore = clone $this->start;
$dayBefore->subDay();
/** @var Account $account */
foreach ($this->accounts as $account) {
// balance the day before:
$id = $account->id;
$auditData[$id] = $this->getAuditReport($account, $dayBefore);
}
$defaultShow = ['icon', 'description', 'balance_before', 'amount', 'balance_after', 'date', 'to'];
$reportType = 'audit';
$accountIds = join(',', $this->accounts->pluck('id')->toArray());
$hideable = ['buttons', 'icon', 'description', 'balance_before', 'amount', 'balance_after', 'date',
'interest_date', 'book_date', 'process_date',
// three new optional fields.
'due_date', 'payment_date', 'invoice_date',
'from', 'to', 'budget', 'category', 'bill',
// more new optional fields
'internal_reference', 'notes',
'create_date', 'update_date',
];
return view('reports.audit.report', compact('reportType', 'accountIds', 'auditData', 'hideable', 'defaultShow'))
->with('start', $this->start)->with('end', $this->end)->with('accounts', $this->accounts)
->render();
}
/**
* @param Collection $accounts
*
* @return ReportGeneratorInterface
*/
public function setAccounts(Collection $accounts): ReportGeneratorInterface
{
$this->accounts = $accounts;
return $this;
}
/**
* @param Collection $budgets
*
* @return ReportGeneratorInterface
*/
public function setBudgets(Collection $budgets): ReportGeneratorInterface
{
return $this;
}
/**
* @param Collection $categories
*
* @return ReportGeneratorInterface
*/
public function setCategories(Collection $categories): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*
* @return ReportGeneratorInterface
*/
public function setEndDate(Carbon $date): ReportGeneratorInterface
{
$this->end = $date;
return $this;
}
/**
* @param Carbon $date
*
* @return ReportGeneratorInterface
*/
public function setStartDate(Carbon $date): ReportGeneratorInterface
{
$this->start = $date;
return $this;
}
/**
* @param Collection $tags
*
* @return ReportGeneratorInterface
*/
public function setTags(Collection $tags): ReportGeneratorInterface
{
return $this;
}
/**
* @param Account $account
* @param Carbon $date
*
* @return array
*/
private function getAuditReport(Account $account, Carbon $date): array
{
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class);
$collector->setAccounts(new Collection([$account]))->setRange($this->start, $this->end);
$journals = $collector->getJournals();
$journals = $journals->reverse();
$dayBeforeBalance = Steam::balance($account, $date);
$startBalance = $dayBeforeBalance;
/** @var Transaction $journal */
foreach ($journals as $transaction) {
$transaction->before = $startBalance;
$transactionAmount = $transaction->transaction_amount;
$newBalance = bcadd($startBalance, $transactionAmount);
$transaction->after = $newBalance;
$startBalance = $newBalance;
}
/*
* Reverse set again.
*/
$return = [
'journals' => $journals->reverse(),
'exists' => $journals->count() > 0,
'end' => $this->end->formatLocalized(strval(trans('config.month_and_day'))),
'endBalance' => Steam::balance($account, $this->end),
'dayBefore' => $date->formatLocalized(strval(trans('config.month_and_day'))),
'dayBeforeBalance' => $dayBeforeBalance,
];
return $return;
}
}

View File

@@ -0,0 +1,27 @@
<?php
/**
* MultiYearReportGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Audit;
/**
* Class MultiYearReportGenerator
*
* @package FireflyIII\Generator\Report\Audit
*/
class MultiYearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
}

View File

@@ -0,0 +1,28 @@
<?php
/**
* YearReportGenerator.php
* Copyright (C) 2016 thegrumpydictator@gmail.com
*
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Audit;
/**
* Class YearReportGenerator
*
* @package FireflyIII\Generator\Report\Audit
*/
class YearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
}

Some files were not shown because too many files have changed in this diff Show More