From 6da6a68e3383c77f60be9589d92b88d77911db49 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 29 Jan 2022 14:15:34 +0100 Subject: [PATCH] Move v1 views --- resources/views/accounts/create.twig | 97 ++++ resources/views/accounts/delete.twig | 58 +++ resources/views/accounts/edit.twig | 128 +++++ resources/views/accounts/index.twig | 83 +++ resources/views/accounts/reconcile/edit.twig | 119 +++++ resources/views/accounts/reconcile/index.twig | 137 +++++ .../views/accounts/reconcile/overview.twig | 107 ++++ resources/views/accounts/reconcile/show.twig | 109 ++++ .../accounts/reconcile/transactions.twig | 176 +++++++ resources/views/accounts/show.twig | 220 ++++++++ .../views/admin/configuration/index.twig | 69 +++ resources/views/admin/index.twig | 67 +++ resources/views/admin/link/create.twig | 46 ++ resources/views/admin/link/delete.twig | 53 ++ resources/views/admin/link/edit.twig | 50 ++ resources/views/admin/link/index.twig | 68 +++ resources/views/admin/link/show.twig | 87 ++++ resources/views/admin/update/index.twig | 75 +++ resources/views/admin/users/delete.twig | 38 ++ resources/views/admin/users/edit.twig | 57 +++ resources/views/admin/users/index.twig | 93 ++++ resources/views/admin/users/show.twig | 121 +++++ resources/views/attachments/delete.twig | 34 ++ resources/views/attachments/edit.twig | 61 +++ resources/views/attachments/index.twig | 77 +++ resources/views/auth/login.twig | 98 ++++ resources/views/auth/lost-two-factor.twig | 47 ++ resources/views/auth/mfa.twig | 32 ++ resources/views/auth/passwords/email.twig | 53 ++ resources/views/auth/passwords/reset.twig | 49 ++ resources/views/auth/register.twig | 50 ++ resources/views/auth/two-factor.twig | 37 ++ resources/views/bills/create.twig | 80 +++ resources/views/bills/delete.twig | 40 ++ resources/views/bills/edit.twig | 86 ++++ resources/views/bills/index.twig | 46 ++ resources/views/bills/show.twig | 177 +++++++ .../available-budgets/create-alternative.twig | 37 ++ .../budgets/available-budgets/create.twig | 37 ++ .../views/budgets/available-budgets/edit.twig | 33 ++ .../views/budgets/budget-limits/create.twig | 36 ++ resources/views/budgets/create.twig | 64 +++ resources/views/budgets/delete.twig | 44 ++ resources/views/budgets/edit.twig | 62 +++ resources/views/budgets/index.twig | 482 ++++++++++++++++++ resources/views/budgets/no-budget.twig | 64 +++ resources/views/budgets/show.twig | 229 +++++++++ resources/views/categories/create.twig | 57 +++ resources/views/categories/delete.twig | 41 ++ resources/views/categories/edit.twig | 58 +++ resources/views/categories/index.twig | 49 ++ resources/views/categories/no-category.twig | 64 +++ resources/views/categories/show.twig | 122 +++++ resources/views/currencies/create.twig | 47 ++ resources/views/currencies/delete.twig | 35 ++ resources/views/currencies/edit.twig | 48 ++ resources/views/currencies/index.twig | 108 ++++ resources/views/demo/accounts/index.twig | 1 + resources/views/demo/budgets/index.twig | 1 + resources/views/demo/currencies/index.twig | 1 + resources/views/demo/home.twig | 1 + resources/views/demo/index.twig | 1 + resources/views/demo/no-demo-text.twig | 3 + resources/views/demo/piggy-banks/index.twig | 1 + resources/views/demo/profile/index.twig | 1 + resources/views/demo/recurring/index.twig | 1 + .../demo/recurring/recurring-create.twig | 1 + resources/views/demo/reports/index.twig | 7 + resources/views/demo/transactions/index.twig | 1 + resources/views/error.twig | 32 ++ resources/views/export/index.twig | 36 ++ resources/views/form/amount-no-currency.twig | 8 + resources/views/form/amount-small.twig | 24 + resources/views/form/amount.twig | 33 ++ .../views/form/assetAccountCheckList.twig | 24 + resources/views/form/balance.twig | 33 ++ resources/views/form/checkbox.twig | 19 + resources/views/form/date.twig | 14 + resources/views/form/feedback.twig | 4 + resources/views/form/file.twig | 9 + resources/views/form/help.twig | 3 + resources/views/form/integer.twig | 9 + resources/views/form/location.twig | 114 +++++ .../views/form/non-selectable-amount.twig | 11 + resources/views/form/number.twig | 9 + resources/views/form/object_group.twig | 9 + resources/views/form/options.twig | 34 ++ resources/views/form/password.twig | 9 + resources/views/form/percentage.twig | 12 + resources/views/form/select.twig | 10 + resources/views/form/static.twig | 7 + resources/views/form/tags.twig | 8 + resources/views/form/text.twig | 9 + resources/views/form/textarea.twig | 9 + resources/views/index.twig | 191 +++++++ resources/views/install/index.twig | 24 + resources/views/javascript/accounts.twig | 4 + resources/views/javascript/currencies.twig | 4 + resources/views/javascript/variables.twig | 66 +++ resources/views/json/piggy-banks.twig | 22 + resources/views/layout/default.twig | 247 +++++++++ resources/views/layout/empty.twig | 77 +++ resources/views/layout/guest.twig | 92 ++++ resources/views/layout/install.twig | 52 ++ resources/views/list/accounts.twig | 121 +++++ resources/views/list/attachments.twig | 47 ++ resources/views/list/bills.twig | 210 ++++++++ resources/views/list/categories.twig | 47 ++ resources/views/list/groups-tiny.twig | 65 +++ resources/views/list/groups.twig | 314 ++++++++++++ resources/views/list/journals-array-tiny.twig | 12 + resources/views/list/periods.twig | 84 +++ resources/views/list/piggy-bank-events.twig | 35 ++ resources/views/list/piggy-banks.twig | 131 +++++ resources/views/new-user/index.twig | 71 +++ resources/views/object-groups/delete.twig | 42 ++ resources/views/object-groups/edit.twig | 58 +++ resources/views/object-groups/index.twig | 77 +++ .../views/pagination/bootstrap-4.blade.php | 46 ++ resources/views/pagination/default.blade.php | 46 ++ .../views/pagination/semantic-ui.blade.php | 36 ++ .../pagination/simple-bootstrap-4.blade.php | 27 + .../views/pagination/simple-default.blade.php | 19 + .../pagination/simple-tailwind.blade.php | 25 + resources/views/pagination/tailwind.blade.php | 102 ++++ resources/views/partials/boxes.twig | 78 +++ resources/views/partials/control-bar.twig | 132 +++++ resources/views/partials/empty.twig | 26 + resources/views/partials/favicons.twig | 11 + resources/views/partials/flashes.twig | 108 ++++ resources/views/partials/journal-row.twig | 1 + .../views/partials/layout/breadcrumbs.twig | 13 + resources/views/partials/menu-sidebar.twig | 234 +++++++++ resources/views/partials/page-header.twig | 14 + resources/views/partials/password-modal.twig | 35 ++ resources/views/partials/transaction-row.twig | 1 + resources/views/piggy-banks/add-mobile.twig | 44 ++ resources/views/piggy-banks/add.twig | 37 ++ resources/views/piggy-banks/create.twig | 75 +++ resources/views/piggy-banks/delete.twig | 35 ++ resources/views/piggy-banks/edit.twig | 77 +++ resources/views/piggy-banks/index.twig | 80 +++ .../views/piggy-banks/remove-mobile.twig | 40 ++ resources/views/piggy-banks/remove.twig | 30 ++ resources/views/piggy-banks/show.twig | 146 ++++++ resources/views/popup/list/journals.twig | 151 ++++++ .../views/popup/report/balance-amount.twig | 18 + .../popup/report/budget-spent-amount.twig | 17 + .../views/popup/report/category-entry.twig | 16 + .../views/popup/report/expense-entry.twig | 16 + .../views/popup/report/income-entry.twig | 19 + resources/views/preferences/index.twig | 251 +++++++++ resources/views/profile/change-email.twig | 47 ++ resources/views/profile/change-password.twig | 69 +++ resources/views/profile/code.twig | 62 +++ resources/views/profile/delete-account.twig | 55 ++ resources/views/profile/index.twig | 294 +++++++++++ .../views/profile/logout-other-sessions.twig | 35 ++ resources/views/profile/new-backup-codes.twig | 29 ++ resources/views/recurring/create.twig | 223 ++++++++ resources/views/recurring/delete.twig | 41 ++ resources/views/recurring/edit.twig | 220 ++++++++ resources/views/recurring/index.twig | 166 ++++++ resources/views/recurring/show.twig | 185 +++++++ resources/views/reports/audit/report.twig | 92 ++++ resources/views/reports/budget/month.twig | 186 +++++++ .../budget/partials/account-per-budget.twig | 30 ++ .../reports/budget/partials/accounts.twig | 32 ++ .../reports/budget/partials/avg-expenses.twig | 46 ++ .../reports/budget/partials/budgets.twig | 44 ++ .../reports/budget/partials/top-expenses.twig | 54 ++ resources/views/reports/category/month.twig | 257 ++++++++++ .../partials/account-per-category.twig | 31 ++ .../reports/category/partials/accounts.twig | 46 ++ .../category/partials/avg-expenses.twig | 46 ++ .../reports/category/partials/avg-income.twig | 46 ++ .../reports/category/partials/categories.twig | 56 ++ .../category/partials/top-expenses.twig | 54 ++ .../reports/category/partials/top-income.twig | 54 ++ resources/views/reports/default/month.twig | 180 +++++++ .../views/reports/default/multi-year.twig | 224 ++++++++ resources/views/reports/default/year.twig | 222 ++++++++ .../double/partials/accounts-per-asset.twig | 44 ++ .../reports/double/partials/accounts.twig | 55 ++ .../reports/double/partials/avg-expenses.twig | 46 ++ .../reports/double/partials/avg-income.twig | 46 ++ .../reports/double/partials/top-expenses.twig | 55 ++ .../reports/double/partials/top-income.twig | 55 ++ resources/views/reports/double/report.twig | 234 +++++++++ resources/views/reports/index.twig | 195 +++++++ resources/views/reports/options/budget.twig | 10 + resources/views/reports/options/category.twig | 11 + resources/views/reports/options/double.twig | 10 + .../views/reports/options/no-options.twig | 3 + resources/views/reports/options/tag.twig | 10 + .../views/reports/partials/accounts.twig | 48 ++ resources/views/reports/partials/balance.twig | 61 +++ resources/views/reports/partials/bills.twig | 84 +++ .../views/reports/partials/budget-period.twig | 46 ++ resources/views/reports/partials/budgets.twig | 100 ++++ .../views/reports/partials/categories.twig | 54 ++ .../reports/partials/category-period.twig | 50 ++ .../views/reports/partials/exp-budgets.twig | 30 ++ .../reports/partials/exp-categories.twig | 41 ++ .../reports/partials/exp-not-grouped.twig | 32 ++ .../reports/partials/income-expenses.twig | 61 +++ .../reports/partials/journals-audit.twig | 184 +++++++ .../views/reports/partials/operations.twig | 26 + resources/views/reports/partials/tags.twig | 23 + .../reports/partials/top-transactions.twig | 31 ++ resources/views/reports/tag/month.twig | 290 +++++++++++ .../reports/tag/partials/account-per-tag.twig | 40 ++ .../views/reports/tag/partials/accounts.twig | 46 ++ .../reports/tag/partials/avg-expenses.twig | 46 ++ .../reports/tag/partials/avg-income.twig | 46 ++ .../views/reports/tag/partials/tags.twig | 64 +++ .../reports/tag/partials/top-expenses.twig | 54 ++ .../reports/tag/partials/top-income.twig | 54 ++ resources/views/rules/index.twig | 204 ++++++++ resources/views/rules/partials/action.twig | 32 ++ .../rules/partials/test-trigger-modal.twig | 21 + resources/views/rules/partials/trigger.twig | 34 ++ resources/views/rules/rule-group/create.twig | 56 ++ resources/views/rules/rule-group/delete.twig | 54 ++ resources/views/rules/rule-group/edit.twig | 60 +++ .../rules/rule-group/select-transactions.twig | 56 ++ resources/views/rules/rule/create.twig | 158 ++++++ resources/views/rules/rule/delete.twig | 34 ++ resources/views/rules/rule/edit.twig | 139 +++++ .../views/rules/rule/select-transactions.twig | 56 ++ resources/views/search/index.twig | 154 ++++++ resources/views/search/search.twig | 11 + resources/views/tags/create.twig | 73 +++ resources/views/tags/delete.twig | 40 ++ resources/views/tags/edit.twig | 78 +++ resources/views/tags/index.twig | 76 +++ resources/views/tags/show.twig | 308 +++++++++++ resources/views/test/test.twig | 2 + resources/views/transactions/bulk/edit.twig | 199 ++++++++ resources/views/transactions/convert.twig | 285 +++++++++++ resources/views/transactions/create.twig | 20 + resources/views/transactions/delete.twig | 35 ++ resources/views/transactions/edit.twig | 28 + resources/views/transactions/index.twig | 140 +++++ .../views/transactions/links/delete.twig | 33 ++ resources/views/transactions/links/modal.twig | 52 ++ resources/views/transactions/mass/delete.twig | 109 ++++ resources/views/transactions/mass/edit.twig | 182 +++++++ resources/views/transactions/show.twig | 455 +++++++++++++++++ .../views/transactions/single/delete.twig | 43 ++ resources/views/transactions/single/edit.twig | 1 + 251 files changed, 17989 insertions(+) create mode 100644 resources/views/accounts/create.twig create mode 100644 resources/views/accounts/delete.twig create mode 100644 resources/views/accounts/edit.twig create mode 100644 resources/views/accounts/index.twig create mode 100644 resources/views/accounts/reconcile/edit.twig create mode 100644 resources/views/accounts/reconcile/index.twig create mode 100644 resources/views/accounts/reconcile/overview.twig create mode 100644 resources/views/accounts/reconcile/show.twig create mode 100644 resources/views/accounts/reconcile/transactions.twig create mode 100644 resources/views/accounts/show.twig create mode 100644 resources/views/admin/configuration/index.twig create mode 100644 resources/views/admin/index.twig create mode 100644 resources/views/admin/link/create.twig create mode 100644 resources/views/admin/link/delete.twig create mode 100644 resources/views/admin/link/edit.twig create mode 100644 resources/views/admin/link/index.twig create mode 100644 resources/views/admin/link/show.twig create mode 100644 resources/views/admin/update/index.twig create mode 100644 resources/views/admin/users/delete.twig create mode 100644 resources/views/admin/users/edit.twig create mode 100644 resources/views/admin/users/index.twig create mode 100644 resources/views/admin/users/show.twig create mode 100644 resources/views/attachments/delete.twig create mode 100644 resources/views/attachments/edit.twig create mode 100644 resources/views/attachments/index.twig create mode 100644 resources/views/auth/login.twig create mode 100644 resources/views/auth/lost-two-factor.twig create mode 100644 resources/views/auth/mfa.twig create mode 100644 resources/views/auth/passwords/email.twig create mode 100644 resources/views/auth/passwords/reset.twig create mode 100644 resources/views/auth/register.twig create mode 100644 resources/views/auth/two-factor.twig create mode 100644 resources/views/bills/create.twig create mode 100644 resources/views/bills/delete.twig create mode 100644 resources/views/bills/edit.twig create mode 100644 resources/views/bills/index.twig create mode 100644 resources/views/bills/show.twig create mode 100644 resources/views/budgets/available-budgets/create-alternative.twig create mode 100644 resources/views/budgets/available-budgets/create.twig create mode 100644 resources/views/budgets/available-budgets/edit.twig create mode 100644 resources/views/budgets/budget-limits/create.twig create mode 100644 resources/views/budgets/create.twig create mode 100644 resources/views/budgets/delete.twig create mode 100644 resources/views/budgets/edit.twig create mode 100644 resources/views/budgets/index.twig create mode 100644 resources/views/budgets/no-budget.twig create mode 100644 resources/views/budgets/show.twig create mode 100644 resources/views/categories/create.twig create mode 100644 resources/views/categories/delete.twig create mode 100644 resources/views/categories/edit.twig create mode 100644 resources/views/categories/index.twig create mode 100644 resources/views/categories/no-category.twig create mode 100644 resources/views/categories/show.twig create mode 100644 resources/views/currencies/create.twig create mode 100644 resources/views/currencies/delete.twig create mode 100644 resources/views/currencies/edit.twig create mode 100644 resources/views/currencies/index.twig create mode 100644 resources/views/demo/accounts/index.twig create mode 100644 resources/views/demo/budgets/index.twig create mode 100644 resources/views/demo/currencies/index.twig create mode 100644 resources/views/demo/home.twig create mode 100644 resources/views/demo/index.twig create mode 100644 resources/views/demo/no-demo-text.twig create mode 100644 resources/views/demo/piggy-banks/index.twig create mode 100644 resources/views/demo/profile/index.twig create mode 100644 resources/views/demo/recurring/index.twig create mode 100644 resources/views/demo/recurring/recurring-create.twig create mode 100644 resources/views/demo/reports/index.twig create mode 100644 resources/views/demo/transactions/index.twig create mode 100644 resources/views/error.twig create mode 100644 resources/views/export/index.twig create mode 100644 resources/views/form/amount-no-currency.twig create mode 100644 resources/views/form/amount-small.twig create mode 100644 resources/views/form/amount.twig create mode 100644 resources/views/form/assetAccountCheckList.twig create mode 100644 resources/views/form/balance.twig create mode 100644 resources/views/form/checkbox.twig create mode 100644 resources/views/form/date.twig create mode 100644 resources/views/form/feedback.twig create mode 100644 resources/views/form/file.twig create mode 100644 resources/views/form/help.twig create mode 100644 resources/views/form/integer.twig create mode 100644 resources/views/form/location.twig create mode 100644 resources/views/form/non-selectable-amount.twig create mode 100644 resources/views/form/number.twig create mode 100644 resources/views/form/object_group.twig create mode 100644 resources/views/form/options.twig create mode 100644 resources/views/form/password.twig create mode 100644 resources/views/form/percentage.twig create mode 100644 resources/views/form/select.twig create mode 100644 resources/views/form/static.twig create mode 100644 resources/views/form/tags.twig create mode 100644 resources/views/form/text.twig create mode 100644 resources/views/form/textarea.twig create mode 100644 resources/views/index.twig create mode 100644 resources/views/install/index.twig create mode 100644 resources/views/javascript/accounts.twig create mode 100644 resources/views/javascript/currencies.twig create mode 100644 resources/views/javascript/variables.twig create mode 100644 resources/views/json/piggy-banks.twig create mode 100644 resources/views/layout/default.twig create mode 100644 resources/views/layout/empty.twig create mode 100644 resources/views/layout/guest.twig create mode 100644 resources/views/layout/install.twig create mode 100644 resources/views/list/accounts.twig create mode 100644 resources/views/list/attachments.twig create mode 100644 resources/views/list/bills.twig create mode 100644 resources/views/list/categories.twig create mode 100644 resources/views/list/groups-tiny.twig create mode 100644 resources/views/list/groups.twig create mode 100644 resources/views/list/journals-array-tiny.twig create mode 100644 resources/views/list/periods.twig create mode 100644 resources/views/list/piggy-bank-events.twig create mode 100644 resources/views/list/piggy-banks.twig create mode 100644 resources/views/new-user/index.twig create mode 100644 resources/views/object-groups/delete.twig create mode 100644 resources/views/object-groups/edit.twig create mode 100644 resources/views/object-groups/index.twig create mode 100644 resources/views/pagination/bootstrap-4.blade.php create mode 100644 resources/views/pagination/default.blade.php create mode 100644 resources/views/pagination/semantic-ui.blade.php create mode 100644 resources/views/pagination/simple-bootstrap-4.blade.php create mode 100644 resources/views/pagination/simple-default.blade.php create mode 100644 resources/views/pagination/simple-tailwind.blade.php create mode 100644 resources/views/pagination/tailwind.blade.php create mode 100644 resources/views/partials/boxes.twig create mode 100644 resources/views/partials/control-bar.twig create mode 100644 resources/views/partials/empty.twig create mode 100644 resources/views/partials/favicons.twig create mode 100644 resources/views/partials/flashes.twig create mode 100644 resources/views/partials/journal-row.twig create mode 100644 resources/views/partials/layout/breadcrumbs.twig create mode 100644 resources/views/partials/menu-sidebar.twig create mode 100644 resources/views/partials/page-header.twig create mode 100644 resources/views/partials/password-modal.twig create mode 100644 resources/views/partials/transaction-row.twig create mode 100644 resources/views/piggy-banks/add-mobile.twig create mode 100644 resources/views/piggy-banks/add.twig create mode 100644 resources/views/piggy-banks/create.twig create mode 100644 resources/views/piggy-banks/delete.twig create mode 100644 resources/views/piggy-banks/edit.twig create mode 100644 resources/views/piggy-banks/index.twig create mode 100644 resources/views/piggy-banks/remove-mobile.twig create mode 100644 resources/views/piggy-banks/remove.twig create mode 100644 resources/views/piggy-banks/show.twig create mode 100644 resources/views/popup/list/journals.twig create mode 100644 resources/views/popup/report/balance-amount.twig create mode 100644 resources/views/popup/report/budget-spent-amount.twig create mode 100644 resources/views/popup/report/category-entry.twig create mode 100644 resources/views/popup/report/expense-entry.twig create mode 100644 resources/views/popup/report/income-entry.twig create mode 100644 resources/views/preferences/index.twig create mode 100644 resources/views/profile/change-email.twig create mode 100644 resources/views/profile/change-password.twig create mode 100644 resources/views/profile/code.twig create mode 100644 resources/views/profile/delete-account.twig create mode 100644 resources/views/profile/index.twig create mode 100644 resources/views/profile/logout-other-sessions.twig create mode 100644 resources/views/profile/new-backup-codes.twig create mode 100644 resources/views/recurring/create.twig create mode 100644 resources/views/recurring/delete.twig create mode 100644 resources/views/recurring/edit.twig create mode 100644 resources/views/recurring/index.twig create mode 100644 resources/views/recurring/show.twig create mode 100644 resources/views/reports/audit/report.twig create mode 100644 resources/views/reports/budget/month.twig create mode 100644 resources/views/reports/budget/partials/account-per-budget.twig create mode 100644 resources/views/reports/budget/partials/accounts.twig create mode 100644 resources/views/reports/budget/partials/avg-expenses.twig create mode 100644 resources/views/reports/budget/partials/budgets.twig create mode 100644 resources/views/reports/budget/partials/top-expenses.twig create mode 100644 resources/views/reports/category/month.twig create mode 100644 resources/views/reports/category/partials/account-per-category.twig create mode 100644 resources/views/reports/category/partials/accounts.twig create mode 100644 resources/views/reports/category/partials/avg-expenses.twig create mode 100644 resources/views/reports/category/partials/avg-income.twig create mode 100644 resources/views/reports/category/partials/categories.twig create mode 100644 resources/views/reports/category/partials/top-expenses.twig create mode 100644 resources/views/reports/category/partials/top-income.twig create mode 100644 resources/views/reports/default/month.twig create mode 100644 resources/views/reports/default/multi-year.twig create mode 100644 resources/views/reports/default/year.twig create mode 100644 resources/views/reports/double/partials/accounts-per-asset.twig create mode 100644 resources/views/reports/double/partials/accounts.twig create mode 100644 resources/views/reports/double/partials/avg-expenses.twig create mode 100644 resources/views/reports/double/partials/avg-income.twig create mode 100644 resources/views/reports/double/partials/top-expenses.twig create mode 100644 resources/views/reports/double/partials/top-income.twig create mode 100644 resources/views/reports/double/report.twig create mode 100644 resources/views/reports/index.twig create mode 100644 resources/views/reports/options/budget.twig create mode 100644 resources/views/reports/options/category.twig create mode 100644 resources/views/reports/options/double.twig create mode 100644 resources/views/reports/options/no-options.twig create mode 100644 resources/views/reports/options/tag.twig create mode 100644 resources/views/reports/partials/accounts.twig create mode 100644 resources/views/reports/partials/balance.twig create mode 100644 resources/views/reports/partials/bills.twig create mode 100644 resources/views/reports/partials/budget-period.twig create mode 100644 resources/views/reports/partials/budgets.twig create mode 100644 resources/views/reports/partials/categories.twig create mode 100644 resources/views/reports/partials/category-period.twig create mode 100644 resources/views/reports/partials/exp-budgets.twig create mode 100644 resources/views/reports/partials/exp-categories.twig create mode 100644 resources/views/reports/partials/exp-not-grouped.twig create mode 100644 resources/views/reports/partials/income-expenses.twig create mode 100644 resources/views/reports/partials/journals-audit.twig create mode 100644 resources/views/reports/partials/operations.twig create mode 100644 resources/views/reports/partials/tags.twig create mode 100644 resources/views/reports/partials/top-transactions.twig create mode 100644 resources/views/reports/tag/month.twig create mode 100644 resources/views/reports/tag/partials/account-per-tag.twig create mode 100644 resources/views/reports/tag/partials/accounts.twig create mode 100644 resources/views/reports/tag/partials/avg-expenses.twig create mode 100644 resources/views/reports/tag/partials/avg-income.twig create mode 100644 resources/views/reports/tag/partials/tags.twig create mode 100644 resources/views/reports/tag/partials/top-expenses.twig create mode 100644 resources/views/reports/tag/partials/top-income.twig create mode 100644 resources/views/rules/index.twig create mode 100644 resources/views/rules/partials/action.twig create mode 100644 resources/views/rules/partials/test-trigger-modal.twig create mode 100644 resources/views/rules/partials/trigger.twig create mode 100644 resources/views/rules/rule-group/create.twig create mode 100644 resources/views/rules/rule-group/delete.twig create mode 100644 resources/views/rules/rule-group/edit.twig create mode 100644 resources/views/rules/rule-group/select-transactions.twig create mode 100644 resources/views/rules/rule/create.twig create mode 100644 resources/views/rules/rule/delete.twig create mode 100644 resources/views/rules/rule/edit.twig create mode 100644 resources/views/rules/rule/select-transactions.twig create mode 100644 resources/views/search/index.twig create mode 100644 resources/views/search/search.twig create mode 100644 resources/views/tags/create.twig create mode 100644 resources/views/tags/delete.twig create mode 100644 resources/views/tags/edit.twig create mode 100644 resources/views/tags/index.twig create mode 100644 resources/views/tags/show.twig create mode 100644 resources/views/test/test.twig create mode 100644 resources/views/transactions/bulk/edit.twig create mode 100644 resources/views/transactions/convert.twig create mode 100644 resources/views/transactions/create.twig create mode 100644 resources/views/transactions/delete.twig create mode 100644 resources/views/transactions/edit.twig create mode 100644 resources/views/transactions/index.twig create mode 100644 resources/views/transactions/links/delete.twig create mode 100644 resources/views/transactions/links/modal.twig create mode 100644 resources/views/transactions/mass/delete.twig create mode 100644 resources/views/transactions/mass/edit.twig create mode 100644 resources/views/transactions/show.twig create mode 100644 resources/views/transactions/single/delete.twig create mode 100644 resources/views/transactions/single/edit.twig diff --git a/resources/views/accounts/create.twig b/resources/views/accounts/create.twig new file mode 100644 index 0000000000..f5e4aeceb8 --- /dev/null +++ b/resources/views/accounts/create.twig @@ -0,0 +1,97 @@ +{% extends './v1/layout/default' %} +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, objectType) }} +{% endblock %} +{% block content %} + + + +
+ + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name') }} + {% if objectType == 'asset' or objectType == 'liabilities' %} + {{ CurrencyForm.currencyList('currency_id', null, {helpText:'account_default_currency'|_}) }} + {% endif %} + {% if objectType == 'liabilities' %} + {{ ExpandedForm.select('liability_type_id', liabilityTypes) }} + {{ ExpandedForm.amountNoCurrency('opening_balance', null, {label:'debt_start_amount'|_}) }} + {{ ExpandedForm.select('liability_direction', liabilityDirections) }} + {{ ExpandedForm.date('opening_balance_date', null, {label:'debt_start_date'|_}) }} + {{ ExpandedForm.percentage('interest') }} + {{ ExpandedForm.select('interest_period', interestPeriods, null, {helpText: 'interest_period_help'|_}) }} + {% endif %} +
+
+
+ +
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ + {{ ExpandedForm.text('iban') }} + {{ ExpandedForm.text('BIC', null, {maxlength: 11}) }} + {{ ExpandedForm.text('account_number') }} + + {% if objectType == 'asset' %} + + {{ ExpandedForm.amountNoCurrency('opening_balance') }} + {{ ExpandedForm.date('opening_balance_date') }} + {{ ExpandedForm.select('account_role', roles,null,{helpText : 'asset_account_role_help'|_}) }} + {{ ExpandedForm.amountNoCurrency('virtual_balance') }} + {% endif %} + {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('include_net_worth', 1) }} + {{ ExpandedForm.textarea('notes',null,{helpText: trans('firefly.field_supports_markdown')}) }} + {{ ExpandedForm.location('location', null, {locations: locations}) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+
+
+
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','account') }} +
+ +
+
+
+
+{% endblock %} +{% block scripts %} + + + + +{% endblock %} + +{% block styles %} + + + +{% endblock %} diff --git a/resources/views/accounts/delete.twig b/resources/views/accounts/delete.twig new file mode 100644 index 0000000000..c005555dd0 --- /dev/null +++ b/resources/views/accounts/delete.twig @@ -0,0 +1,58 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, account) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_account', {'name': account.name}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.account_areYouSure', {'name': account.name}) }} +

+ + {% if account.transactions|length > 0 or account.piggyBanks|length > 0 %} +

+ {% if account.transactions|length > 0 %} + {{ Lang.choice('form.also_delete_transactions', account.transactions|length, {count: account.transactions|length}) }} + {% endif %}
+ {% if account.piggyBanks|length > 0 %} + {{ Lang.choice('form.also_delete_piggyBanks', account.piggyBanks|length, {count: account.piggyBanks|length}) }} + {% endif %} +

+ {% endif %} + {% if account.transactions.count() > 0 and account.accountType.type == 'Asset account' %} +

+ {{ trans_choice('firefly.save_transactions_by_moving', account.transactions|length ) }} +

+ +

+ {{ Form.select('move_account_before_delete', accountList, null, {class: 'form-control'}) }} +

+ {% else %} + + {% endif %} + +
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/accounts/edit.twig b/resources/views/accounts/edit.twig new file mode 100644 index 0000000000..a52a1e5f56 --- /dev/null +++ b/resources/views/accounts/edit.twig @@ -0,0 +1,128 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute().getName(), account) }} +{% endblock %} + +{% block content %} + + + + {{ Form.model(account, { + 'class': 'form-horizontal', + 'id': 'update', + 'url': route('accounts.update',account.id), + 'enctype': 'multipart/form-data' + } ) }} + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name') }} + {% if account.accountType.type == 'Default account' or account.accountType.type == 'Asset account' or objectType == 'liabilities' %} + {{ CurrencyForm.currencyList('currency_id', null, {helpText:'account_default_currency'|_}) }} + + {% endif %} + + {% if objectType == 'liabilities' %} + {{ ExpandedForm.select('liability_type_id', liabilityTypes) }} + {{ ExpandedForm.amountNoCurrency('opening_balance', null, {label:'debt_start_amount'|_, helpText: 'debt_start_amount_help'|_}) }} + {{ ExpandedForm.select('liability_direction', liabilityDirections) }} + {{ ExpandedForm.date('opening_balance_date', null, {label:'debt_start_date'|_}) }} + {{ ExpandedForm.percentage('interest') }} + {{ ExpandedForm.select('interest_period', interestPeriods) }} + {% endif %} +
+
+ +
+
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.text('iban') }} + {{ ExpandedForm.text('BIC', null, {maxlength: 11}) }} + {% if preFilled.account_role == 'ccAsset' %} + {{ ExpandedForm.text('account_number', null , {label:trans('form.creditCardNumber')}) }} + {% else %} + {{ ExpandedForm.text('account_number') }} + {% endif %} + + {% if account.accounttype.type == 'Default account' or account.accounttype.type == 'Asset account' %} + + {# get opening balance entry for this thing! #} + {{ ExpandedForm.amountNoCurrency('opening_balance',null) }} + {{ ExpandedForm.date('opening_balance_date') }} + {{ ExpandedForm.select('account_role', roles) }} + {{ ExpandedForm.amountNoCurrency('virtual_balance',null) }} + + {% endif %} + {{ ExpandedForm.checkbox('include_net_worth', 1) }} + {{ ExpandedForm.textarea('notes',preFilled.notes,{helpText: trans('firefly.field_supports_markdown')}) }} + {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('active', 1) }} + {# only correct way to do active checkbox #} + + {{ ExpandedForm.location('location', null, {locations: locations}) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} + +
+
+ + {# panel for credit card options #} + {% if preFilled.account_role == 'ccAsset' %} +
+
+

{{ 'credit_card_options'|_ }}

+
+
+ {{ ExpandedForm.select('cc_type',Config.get('firefly.ccTypes')) }} + {{ ExpandedForm.date('cc_monthly_payment_date',null,{'helpText' : trans('firefly.cc_monthly_payment_date_help')}) }} +
+
+ {% endif %} +
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','account') }} +
+ +
+
+
+ +{% endblock %} +{% block scripts %} + + + + +{% endblock %} + +{% block styles %} + + + +{% endblock %} diff --git a/resources/views/accounts/index.twig b/resources/views/accounts/index.twig new file mode 100644 index 0000000000..cb13757c87 --- /dev/null +++ b/resources/views/accounts/index.twig @@ -0,0 +1,83 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, objectType) }} +{% endblock %} + +{% block content %} + {% if accounts.count() > 0 %} +
+
+
+
+

+ {{ subTitle }} +

+ + + +
+ +
+ + + {% include 'list.accounts' %} +
+ +
+
+
+ {% endif %} + {% if accounts.count() == 0 and page == 1 %} + {% include 'partials.empty' with {objectType: objectType, type: 'accounts',route: route('accounts.create', [objectType])} %} + {% endif %} +{% endblock %} + +{% block styles %} + +{% endblock %} + +{% block scripts %} + + + +{% endblock %} diff --git a/resources/views/accounts/reconcile/edit.twig b/resources/views/accounts/reconcile/edit.twig new file mode 100644 index 0000000000..72f76ea93f --- /dev/null +++ b/resources/views/accounts/reconcile/edit.twig @@ -0,0 +1,119 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, journal) }} +{% endblock %} + +{% block content %} +
+ + + + + {% if errors.all|length > 0 %} +
+
+

{{ 'errors'|_ }}

+
    + {% for err in errors.all %} +
  • {{ err }}
  • + {% endfor %} +
+
+
+ {% endif %} + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {# ALWAYS AVAILABLE #} + {{ ExpandedForm.staticText('description',journal.description) }} + + {# ALWAYS SHOW AMOUNT #} + {{ ExpandedForm.nonSelectableAmount('amount',data.amount, {'currency' : data.currency}) }} + + {# ALWAYS SHOW DATE #} + {{ ExpandedForm.staticText('date',journal.date.formatLocalized(monthAndDayFormat)) }} +
+
+ +
+
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ {# category always #} + {{ ExpandedForm.text('category',data.category) }} + + {# tags #} + {{ ExpandedForm.text('tags') }} +
+
+ + {# box for attachments #} + {% if optionalFields.attachments %} +
+
+

{{ 'optional_field_attachments'|_ }}

+
+
+ {% if optionalFields.attachments %} + {# attachments #} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} + {% endif %} +
+
+ {% endif %} +
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','transaction') }} +
+ +
+
+
+ +
+ + +{% endblock %} +{% block scripts %} + + + + + + + + + + +{% endblock %} +{% block styles %} + + + +{% endblock %} diff --git a/resources/views/accounts/reconcile/index.twig b/resources/views/accounts/reconcile/index.twig new file mode 100644 index 0000000000..cdc9299848 --- /dev/null +++ b/resources/views/accounts/reconcile/index.twig @@ -0,0 +1,137 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, account, start, end) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ 'reconcile_range'|_ }}

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ 'start_balance'|_ }}{{ 'end_balance'|_ }}
+ {{ 'date'|_ }} + + {{ 'balance'|_ }} + + {{ 'date'|_ }} + + {{ 'balance'|_ }} +
+
+
+ +
+ +
+
+
+ {{ currency.symbol }} + +
+
+
+
+ +
+ +
+
+
+ {{ currency.symbol }} + +
+
+
+ {{ 'update_balance_dates_instruction'|_ }} +
+ + +
+ {{ 'start_reconcile'|_ }} + +
+
+
+
+
+
+
+

{{ 'reconcile_options'|_ }}

+
+
+

+ +
+ +
+
+
+
+ +
+ +
+
+
+
+

{{ 'transactions'|_ }}

+
+
+
+

{{ 'select_range_and_balance'|_ }}

+
+
+
+
+
+{% endblock %} + +{% block scripts %} + + +{% endblock %} diff --git a/resources/views/accounts/reconcile/overview.twig b/resources/views/accounts/reconcile/overview.twig new file mode 100644 index 0000000000..7116cf6ed4 --- /dev/null +++ b/resources/views/accounts/reconcile/overview.twig @@ -0,0 +1,107 @@ + + diff --git a/resources/views/accounts/reconcile/show.twig b/resources/views/accounts/reconcile/show.twig new file mode 100644 index 0000000000..4a74ec2dd9 --- /dev/null +++ b/resources/views/accounts/reconcile/show.twig @@ -0,0 +1,109 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, account, journal) }} +{% endblock %} + +{% block content %} +
+
+
+
+

{{ 'transaction_journal_information'|_ }}

+ + + +
+
+ + + + + + + + + + + {# total amount #} + + + + + + + + + +
{{ trans('list.type') }}{{ journal.transactiontype.type|_ }}
{{ trans('list.description') }}{{ journal.description }}
{{ 'total_amount'|_ }} + {{ formatAmountByAccount(transaction.account, transaction.amount) }} + +
{{ trans('list.date') }}{{ journal.date.formatLocalized(monthAndDayFormat) }}
+
+ +
+
+
+ +
+
+

{{ 'transaction_journal_meta'|_ }}

+
+
+ + + {# + + + + + #} + {% if journal.tags|length > 0 %} + + + + + {% endif %} + +
{{ 'categories'|_ }}{{ journalCategories(journal)|raw }}
{{ 'tags'|_ }} + {% for tag in journal.tags %} + +

+ {% if tag.tagMode == 'nothing' %} + + {% endif %} + {% if tag.tagMode == 'balancingAct' %} + + {% endif %} + {% if tag.tagMode == 'advancePayment' %} + + {% endif %} + {{ tag.tag }} +

+ {% endfor %} +
+
+
+
+
+ +{% endblock %} +{% block scripts %} +{% endblock %} diff --git a/resources/views/accounts/reconcile/transactions.twig b/resources/views/accounts/reconcile/transactions.twig new file mode 100644 index 0000000000..0b3389205e --- /dev/null +++ b/resources/views/accounts/reconcile/transactions.twig @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + {# data for previous/next markers #} + {% set endSet = false %} + {% set startSet = false %} + {% for journal in journals %} + {# start marker #} + {% if journal.date < start and startSet == false %} + + + + + + + {% set startSet = true %} + {% endif %} + + {# end marker #} + {% if journal.date <= end and endSet == false %} + + + + + + + {% set endSet = true %} + {% endif %} + + + + + + + + + + + + + + + + + + + {# + + + #} + + + {% endfor %} + + {# if the start marker has not been generated yet, do it now, at the end of the loop. #} + {% if startSet == false %} + + + + + + {% set startSet = true %} + {% endif %} + +
{{ trans('list.description') }}{{ trans('list.amount') }}
+   + + + + + {{ trans('firefly.start_of_reconcile_period', {period: start.formatLocalized(monthAndDayFormat) }) }} + + +   +
+   + + + + + {{ trans('firefly.end_of_reconcile_period', {period: end.formatLocalized(monthAndDayFormat) }) }} + + +   +
+ + {% if journal.group_title %} + {{ journal.group_title }}: + {% endif %} + {{ journal.description }} + + + {{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% endif %} + + + {% if journal.date >= start and journal.date <= end %} + {% if journal.reconciled %} + + + {% else %} + + {% endif %} + {% else %} + + {% if journal.reconciled %} + + {% else %} + + {% endif %} + + {% endif %} + +
+   + + + {{ trans('firefly.start_of_reconcile_period', {period: start.formatLocalized(monthAndDayFormat) }) }} + + +   +
diff --git a/resources/views/accounts/show.twig b/resources/views/accounts/show.twig new file mode 100644 index 0000000000..ffaf5a8395 --- /dev/null +++ b/resources/views/accounts/show.twig @@ -0,0 +1,220 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, account, start, end) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

+ {{ trans('firefly.chart_account_in_period', { + balance: formatAmountBySymbol(balance, currency.symbol, currency.decimal_places, true), + name: account.name|escape, start: start.formatLocalized(monthAndDayFormat), end: end.formatLocalized(monthAndDayFormat) })|raw }} +

+ +
+
+
+ +
+
+
+
+ {% if attachments.count() > 0 %} +
+
+
+

+ {{ 'attachments'|_ }} +

+
+
+ {% include 'list.attachments' %} +
+
+
+ {% endif %} +
+ {% if not showAll and isLiability %} +
+
+
+
+

pay-off by date

+
+
+ Content +
+
+
+
+ {% endif %} + {% if not showAll and not isLiability %} +
+
+
+
+

{{ 'expenses_by_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'expenses_by_budget'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_by_category'|_ }}

+
+
+
+ +
+
+
+
+
+ {% endif %} + +
+ {% if(location) %} +
+
+
+

{{ 'location'|_ }}

+
+
+
+
+
+
+ {% endif %} + {% if account.notes.count() == 1 %} +
+
+
+

{{ 'notes'|_ }}

+
+
+ {{ account.notes.first().text|markdown }} +
+
+
+ {% endif %} +
+ +
+
+
+
+

{{ 'transactions'|_ }} ({{ formatAmountBySymbol(balance, currency.symbol, currency.decimal_places, true)|raw }})

+
+
+ {% if account.accountType.type == 'Asset account' %} + {% set showReconcile = true %} + {% else %} + {% set showReconcile = false %} + {% endif %} + + {% include 'list.groups' %} +

+ + {% if periods|length > 0 %} + + {{ 'show_all_no_filter'|_ }} + + {% else %} + + {{ 'show_the_current_period_and_overview'|_ }} + + {% endif %} +

+
+
+
+ {% if periods|length > 0 %} +
+ {% include 'list.periods' %} +
+ {% endif %} +
+{% endblock %} + +{% block scripts %} + + {% if location %} + + {% endif %} + + + + + + + + + {# required for groups.twig #} + +{% endblock %} + +{% block styles %} + {% if location %} + + {% endif %} +{% endblock %} diff --git a/resources/views/admin/configuration/index.twig b/resources/views/admin/configuration/index.twig new file mode 100644 index 0000000000..bd07e74df3 --- /dev/null +++ b/resources/views/admin/configuration/index.twig @@ -0,0 +1,69 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render }} +{% endblock %} +{% block content %} +
+ +
+ + + + {# single user mode #} +
+
+
+

{{ 'setting_single_user_mode'|_ }}

+
+
+

+ {{ 'setting_single_user_mode_explain'|_ }} +

+ {{ ExpandedForm.checkbox('single_user_mode','1', singleUserMode) }} +
+
+
+ + {# installation is demo site #} +
+
+
+

{{ 'setting_is_demo_site'|_ }}

+
+
+

+ {{ 'setting_is_demo_site_explain'|_ }} +

+ {{ ExpandedForm.checkbox('is_demo_site','1', isDemoSite) }} +
+
+
+ + {# block for config setting #} + {# +
+
+
+

{{ 'setting_x'|_ }}

+
+
+

+ {{ 'setting_x_explain'|_ }} +

+
+
+
+ #} +
+
+
+ +
+
+ +
+ +{% endblock %} diff --git a/resources/views/admin/index.twig b/resources/views/admin/index.twig new file mode 100644 index 0000000000..5cd009cffc --- /dev/null +++ b/resources/views/admin/index.twig @@ -0,0 +1,67 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render }} +{% endblock %} +{% block content %} +
+
+ +
+
+

{{ 'user_administration'|_ }}

+
+ +
+
+
+
+
+

{{ 'send_test_email'|_ }}

+
+
+
+

+ {{ trans('firefly.send_test_email_text', {email:email})|raw }} +

+ +
+ +
+
+
+
+

{{ 'admin_maintanance_title'|_ }}

+
+
+

+ {{ 'admin_maintanance_expl'|_ }} +

+

+ {{ 'admin_maintenance_clear_cache'|_ }} +

+
+
+
+
+ +{% endblock %} diff --git a/resources/views/admin/link/create.twig b/resources/views/admin/link/create.twig new file mode 100644 index 0000000000..76eac6df3d --- /dev/null +++ b/resources/views/admin/link/create.twig @@ -0,0 +1,46 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name', null, {helpText: trans('firefly.link_type_help_name')}) }} + {{ ExpandedForm.text('inward', null, {helpText: trans('firefly.link_type_help_inward')}) }} + {{ ExpandedForm.text('outward', null, {helpText: trans('firefly.link_type_help_outward')}) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','link_type') }} +
+ +
+ +
+ +
+
+ + +{% endblock %} diff --git a/resources/views/admin/link/delete.twig b/resources/views/admin/link/delete.twig new file mode 100644 index 0000000000..7aa4a5529a --- /dev/null +++ b/resources/views/admin/link/delete.twig @@ -0,0 +1,53 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, linkType) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_link_type', {'name': linkType.name}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.linkType_areYouSure', {'name': linkType.name,'inward': linkType.inward,'outward': linkType.outward}) }} +

+ + {% if count > 0 %} +

+ {{ Lang.choice('form.also_delete_connections', count, {count: count}) }} +

+ {% endif %} + {% if count > 0 %} +

+ {{ 'save_connections_by_moving'|_ }} +

+ +

+ {{ Form.select('move_link_type_before_delete', moveTo, null, {class: 'form-control'}) }} +

+ {% else %} + + {% endif %} + +
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/admin/link/edit.twig b/resources/views/admin/link/edit.twig new file mode 100644 index 0000000000..4f996c8ac1 --- /dev/null +++ b/resources/views/admin/link/edit.twig @@ -0,0 +1,50 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, linkType) }} +{% endblock %} + +{% block content %} + + {{ Form.model(linkType, {'class' : 'form-horizontal','id' : 'update','url' : route('admin.links.update', linkType.id) } ) }} + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name', null, {helpText: trans('firefly.link_type_help_name')}) }} + {{ ExpandedForm.text('inward', null, {helpText: trans('firefly.link_type_help_inward')}) }} + {{ ExpandedForm.text('outward', null, {helpText: trans('firefly.link_type_help_outward')}) }} +
+
+
+
+
+
+ + {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','link_type') }} +
+ +
+ +
+ +
+ + + +{% endblock %} diff --git a/resources/views/admin/link/index.twig b/resources/views/admin/link/index.twig new file mode 100644 index 0000000000..57fa4b64be --- /dev/null +++ b/resources/views/admin/link/index.twig @@ -0,0 +1,68 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render }} +{% endblock %} +{% block content %} +
+
+
+
+

{{ 'journal_link_configuration'|_ }}

+
+
+ + + + + + + + + + + + {% for linkType in linkTypes %} + + + + + + + + {% endfor %} + +
{{ trans('list.name') }}{{ trans('list.number_of_transactions') }}
+ {% if linkType.editable %} +
+ + +
+ {% endif %} +
+ {{ journalLinkTranslation('name', linkType.name) }} + + {{ journalLinkTranslation('inward', linkType.inward) }} + + {{ journalLinkTranslation('outward', linkType.outward) }} + + {{ linkType.journalCount }} +
+
+ +
+
+
+{% endblock %} + +{% block scripts %} + +{% endblock %} + +{% block styles %} + +{% endblock %} diff --git a/resources/views/admin/link/show.twig b/resources/views/admin/link/show.twig new file mode 100644 index 0000000000..72840d920c --- /dev/null +++ b/resources/views/admin/link/show.twig @@ -0,0 +1,87 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, linkType) }} +{% endblock %} +{% block content %} +
+
+
+
+

{{ trans('firefly.overview_for_link', {name: journalLinkTranslation('name', linkType.name)}) }}

+
+
+ + + + + + + + + + + + + {% for link in links %} + + + + + + + + + {% endfor %} + +
 {{ trans('firefly.inward_transaction') }} {{ trans('firefly.link_description') }}{{ trans('firefly.outward_transaction') }} 
+
+ + +
+
+ {{ link.source.description }} + + {{ journalObjectAmount(link.source) }} + {{ journalLinkTranslation('outward', linkType.outward) }} + {{ link.destination.description }} + + {{ journalObjectAmount(link.destination) }} +
+
+
+
+
+ + +{% endblock %} +{% block scripts %} + + +{% endblock %} + +{% block styles %} + +{% endblock %} diff --git a/resources/views/admin/update/index.twig b/resources/views/admin/update/index.twig new file mode 100644 index 0000000000..8a192b7a2b --- /dev/null +++ b/resources/views/admin/update/index.twig @@ -0,0 +1,75 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render }} +{% endblock %} +{% block content %} +
+ +
+ + + +
+
+
+

{{ 'admin_update_channel_title'|_ }}

+
+
+

+ {{ 'admin_update_channel_explain'|_ }} +

+ {{ ExpandedForm.select('update_channel', channelOptions, channelSelected) }} +
+
+
+ + {# do update check. #} +
+
+
+

{{ 'admin_update_check_title'|_ }}

+
+
+

+ {{ 'admin_update_check_explain'|_ }} +

+ {{ ExpandedForm.select('check_for_updates',options, selected) }} +
+
+
+ + {# check now button #} +
+
+
+

{{ 'admin_update_check_now_title'|_ }}

+
+
+

+ {{ 'admin_update_check_now_explain'|_ }} +

+

+ {{ 'check_for_updates_button'|_ }} +

+
+
+
+
+
+
+ +
+
+ +
+ +{% endblock %} +{% block scripts %} + + +{% endblock %} diff --git a/resources/views/admin/users/delete.twig b/resources/views/admin/users/delete.twig new file mode 100644 index 0000000000..0d190e4a3c --- /dev/null +++ b/resources/views/admin/users/delete.twig @@ -0,0 +1,38 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, user) }} +{% endblock %} + +{% block content %} + +
+ + +
+
+
+
+

{{ trans('form.delete_user', {'email': user.email}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.user_areYouSure', {'email': user.email}) }} +

+
+ + + +
+
+
+
+{% endblock %} diff --git a/resources/views/admin/users/edit.twig b/resources/views/admin/users/edit.twig new file mode 100644 index 0000000000..e9ec513dc2 --- /dev/null +++ b/resources/views/admin/users/edit.twig @@ -0,0 +1,57 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, user) }} +{% endblock %} +{% block content %} + + + {{ Form.model(user, {'class' : 'form-horizontal','id' : 'update','url' : route('admin.users.update',user.id) } ) }} + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {% if canEditDetails %} + {{ ExpandedForm.text('email',null,{'helpText': trans('firefly.admin_update_email')}) }} + {{ ExpandedForm.password('password') }} + {{ ExpandedForm.password('password_confirmation') }} + {% else %} + + + + {% endif %} + {{ ExpandedForm.checkbox('blocked') }} + {{ ExpandedForm.select('blocked_code', codes, user.blocked_code) }} + {% if user.id != currentUser.id %} + {{ ExpandedForm.checkbox('is_owner',1,isAdmin) }} + {% endif %} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','account') }} +
+ +
+
+
+ +{% endblock %} diff --git a/resources/views/admin/users/index.twig b/resources/views/admin/users/index.twig new file mode 100644 index 0000000000..9e0cf78e80 --- /dev/null +++ b/resources/views/admin/users/index.twig @@ -0,0 +1,93 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render }} +{% endblock %} +{% block content %} +
+
+
+
+

{{ 'all_users'|_ }}

+
+
+ + + + + + + + + + + + + + + {% for user in users %} + + + + + + + + + + + + {% endfor %} + +
{{ trans('list.email') }}{{ trans('list.is_blocked') }}
+ {{ user.email }} + {% if user.blocked == 1 %} + + {% else %} + + {% endif %} +
+
+
+
+
+{% endblock %} +{% block styles %} + +{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/admin/users/show.twig b/resources/views/admin/users/show.twig new file mode 100644 index 0000000000..1f0eb5233e --- /dev/null +++ b/resources/views/admin/users/show.twig @@ -0,0 +1,121 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, user) }} +{% endblock %} +{% block content %} +
+
+
+
+

{{ 'user_information'|_ }}

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ trans('list.id') }}#{{ user.id }}
{{ trans('list.email') }}{{ user.email }} + +
{{ trans('list.created_at') }} + {{ user.created_at.formatLocalized(monthAndDayFormat) }} + {{ user.created_at.format('H:i') }}
{{ trans('list.is_admin') }} + {% if information.is_admin %} + {{ 'yes'|_ }} + {% else %} + {{ 'no'|_ }} + {% endif %} +
{{ trans('list.has_two_factor') }} + {% if information.has_2fa %} + {{ 'yes'|_ }} + {% else %} + {{ 'no'|_ }} + {% endif %} +
{{ trans('list.is_blocked') }} + {% if information.blocked %} + {{ 'yes'|_ }}: + + {% if information.blocked_code == "" %} + ~ + {% else %} + {{ information.blocked_code }} + {% endif %} + + {% else %} + {{ 'no'|_ }} + {% endif %} +
+
+
+
+
+
+
+

{{ 'user_data_information'|_ }}

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ trans('list.accounts_count') }}{{ information.accounts }}
{{ trans('list.journals_count') }}{{ information.journals }} ({{ information.transactions }} {{ trans('firefly.transactions') }})
{{ trans('list.attachments_count') }}{{ information.attachments }} ({{ trans('firefly.total_size') }}: {{ information.attachments_size|filesize }})
{{ trans('list.bills_count') }}{{ information.bills }}
{{ trans('list.categories_count') }}{{ information.categories }}
{{ trans('list.budget_count') }}{{ trans_choice('firefly.budget_or_budgets', information.budgets ) }}, + {{ trans_choice('firefly.budgets_with_limits', information.budgets_with_limits ) }}
{{ trans('list.rule_and_groups_count') }} + {{ trans('firefly.nr_of_rules_in_total_groups', {count_rules: information.rules, count_groups: information.rule_groups}) }} +
{{ trans('list.tags_count') }}{{ trans_choice('firefly.tag_or_tags', information.tags ) }}
+
+
+
+
+{% endblock %} diff --git a/resources/views/attachments/delete.twig b/resources/views/attachments/delete.twig new file mode 100644 index 0000000000..db78a162a6 --- /dev/null +++ b/resources/views/attachments/delete.twig @@ -0,0 +1,34 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute().getName(), attachment) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_attachment', {'name': attachment.filename}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.attachment_areYouSure', {'name': attachment.filename}) }} +

+
+ +
+
+
+
+{% endblock %} diff --git a/resources/views/attachments/edit.twig b/resources/views/attachments/edit.twig new file mode 100644 index 0000000000..d7ab2eb582 --- /dev/null +++ b/resources/views/attachments/edit.twig @@ -0,0 +1,61 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute().getName(), attachment) }} +{% endblock %} + +{% block content %} +
+ + + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.staticText('filename',attachment.filename|escape) }} + {{ ExpandedForm.staticText('mime',attachment.mime|escape) }} + {{ ExpandedForm.staticText('size',attachment.size|filesize) }} +
+
+ +
+
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.text('title', attachment.title) }} + {{ ExpandedForm.textarea('notes',null,{helpText: trans('firefly.field_supports_markdown')}) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','attachment') }} +
+ +
+
+
+ + +
+{% endblock %} diff --git a/resources/views/attachments/index.twig b/resources/views/attachments/index.twig new file mode 100644 index 0000000000..13c945d304 --- /dev/null +++ b/resources/views/attachments/index.twig @@ -0,0 +1,77 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+
+
+
+

+ {{ 'list_all_attachments'|_ }} +

+
+
+ + + + + + + + + + + + + {% for att in set %} + + + + + + + + + {% endfor %} + +
 {{ trans('list.file_name') }}{{ trans('list.file_size') }}{{ trans('list.file_type') }}{{ trans('list.attached_to') }}{{ trans('list.file_exists') }}
+
+ + + +
+
+ + {{ att.filename }} + + {{ att.size|filesize }}{{ att.mime }} + {% if att.attachable_type == 'FireflyIII\\Models\\TransactionJournal' %} + + {{ att.attachable.description }} + + {% else %} + {{ att.attachable_type }} + {% endif %} + + {% if att.file_exists %} + + {% else %} + + {% endif %} +
+
+
+
+
+{% endblock %} +{% block scripts %} + +{% endblock %} + +{% block styles %} + +{% endblock %} + diff --git a/resources/views/auth/login.twig b/resources/views/auth/login.twig new file mode 100644 index 0000000000..d9d7c98adc --- /dev/null +++ b/resources/views/auth/login.twig @@ -0,0 +1,98 @@ +{% extends "./v1/layout/guest" %} +{% block content %} + {% if IS_DEMO_SITE %} +
+
+

+ Welcome to the Firefly III demonstration website!
+
+ To log in, please use email address {{ DEMO_USERNAME }} with password {{ DEMO_PASSWORD }} +

+
+
+ {% endif %} + + {# SUCCESS MESSAGE (ALWAYS SINGULAR) #} + {% if Session.has('success') %} + + {% endif %} + + + {% if errors.count > 0 %} +
+
+ +
+
+ {% endif %} + + {% if session('logoutMessage') %} +
+
+ +
+
+ {% endif %} + + {# LDAP warning #} + {% if ldapWarning %} +
+ +
+ {% endif %} + +
+ + +
+ + +
+ {% if config('firefly.authentication_guard') == 'web' %} + + {% else %} + + {% endif %} +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ {% if allowRegistration %} + {{ 'register_new_account'|_ }}
+ {% endif %} + {% if allowReset %} + {{ 'forgot_my_password'|_ }} + {% endif %} +
+{% endblock %} + diff --git a/resources/views/auth/lost-two-factor.twig b/resources/views/auth/lost-two-factor.twig new file mode 100644 index 0000000000..dabf4dae0c --- /dev/null +++ b/resources/views/auth/lost-two-factor.twig @@ -0,0 +1,47 @@ + + + + + + Firefly III + + + + + + + + {# favicons #} + {% include('v1.partials.favicons') %} + + + +
+ +
+ +
+
+

{{ 'two_factor_lost_header'|_ }}

+
+
+ +
+
+

+ {{ 'two_factor_lost_intro'|_ }} +

+
    +
  • + {{ 'two_factor_lost_fix_self'|_ }} +
  • +
  • + {{ trans('firefly.two_factor_lost_fix_owner', {site_owner: siteOwner})|raw }} +
  • +
+
+
+ + diff --git a/resources/views/auth/mfa.twig b/resources/views/auth/mfa.twig new file mode 100644 index 0000000000..403b3a4845 --- /dev/null +++ b/resources/views/auth/mfa.twig @@ -0,0 +1,32 @@ +{% extends "./v1/layout/guest" %} + +{% block content %} + {% if session_has('error') %} + + {% endif %} + +
+ + + +
+ + +
+ +
+ +
+
+ +
+
+
+ {{ 'two_factor_forgot'|_ }} +
+{% endblock %} diff --git a/resources/views/auth/passwords/email.twig b/resources/views/auth/passwords/email.twig new file mode 100644 index 0000000000..748949fcfe --- /dev/null +++ b/resources/views/auth/passwords/email.twig @@ -0,0 +1,53 @@ +{% extends "./v1/layout/guest" %} + +{% block content %} + + + {% if session.status %} +
+ {{ session.status }} +
+ {% endif %} + + {% if errors|length > 0 %} +
+ {{ 'flash_error'|_ }} {{ 'problems_with_input'|_ }}

+ +
+ {% endif %} +
+ {% if session('status') %} + + {% else %} + + +
+ + +
+ +
+ +
+
+ +
+
+ +
+ + {% endif %} + {{ 'want_to_login'|_ }}
+ {% if allowRegistration %} + {{ 'register_new_account'|_ }}
+ {% endif %} + +
+ +{% endblock %} diff --git a/resources/views/auth/passwords/reset.twig b/resources/views/auth/passwords/reset.twig new file mode 100644 index 0000000000..82512ed5fb --- /dev/null +++ b/resources/views/auth/passwords/reset.twig @@ -0,0 +1,49 @@ +{% extends "./v1/layout/guest" %} + +{% block content %} + + {% if errors|length > 0 %} +
+ {{ 'flash_error'|_ }} {{ 'problems_with_input'|_ }}

+ +
+ {% endif %} + +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+ +
+
+ +
+ + {{ 'want_to_login'|_ }}
+ {% if allowRegistration %} + {{ 'register_new_account'|_ }}
+ {% endif %} +
+ +{% endblock %} diff --git a/resources/views/auth/register.twig b/resources/views/auth/register.twig new file mode 100644 index 0000000000..873870cf42 --- /dev/null +++ b/resources/views/auth/register.twig @@ -0,0 +1,50 @@ +{% extends "./v1/layout/guest" %} + +{% block content %} + + {% if errors|length > 0 %} +
+ {{ 'flash_error'|_ }} {{ 'problems_with_input'|_ }}

+ +
+ {% endif %} +
+ + +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ + {{ 'want_to_login'|_ }}
+ {{ 'forgot_my_password'|_ }} +
+ + {% include 'v1.partials.password-modal' %} + +{% endblock %} diff --git a/resources/views/auth/two-factor.twig b/resources/views/auth/two-factor.twig new file mode 100644 index 0000000000..76822f7bca --- /dev/null +++ b/resources/views/auth/two-factor.twig @@ -0,0 +1,37 @@ +{% extends "./v1/layout/guest" %} + +{% block content %} + + {% if errors.has('code') %} +
+
+ +
+
+ {% endif %} + +
+ + + +
+ + +
+ +
+ +
+
+ +
+
+
+ {{ 'two_factor_forgot'|_ }} +
+{% endblock %} + diff --git a/resources/views/bills/create.twig b/resources/views/bills/create.twig new file mode 100644 index 0000000000..1c5bb19716 --- /dev/null +++ b/resources/views/bills/create.twig @@ -0,0 +1,80 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, piggyBank) }} +{% endblock %} + +{% block content %} + +
+ + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name') }} + {{ CurrencyForm.currencyList('transaction_currency_id', defaultCurrency.id) }} + {{ ExpandedForm.amountNoCurrency('amount_min') }} + {{ ExpandedForm.amountNoCurrency('amount_max') }} + {{ ExpandedForm.date('date',phpdate('Y-m-d')) }} + {{ ExpandedForm.select('repeat_freq',periods,'monthly') }} +
+
+ +
+
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('notes',null,{helpText: trans('firefly.field_supports_markdown')}) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} + {{ ExpandedForm.integer('skip',0) }} + {{ ExpandedForm.objectGroup() }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','bill') }} +
+ +
+ +
+
+
+ +{% endblock %} + +{% block styles %} + + + +{% endblock %} +{% block scripts %} + + + + + + {# auto complete for object groups #} + + +{% endblock %} diff --git a/resources/views/bills/delete.twig b/resources/views/bills/delete.twig new file mode 100644 index 0000000000..8d10d2785b --- /dev/null +++ b/resources/views/bills/delete.twig @@ -0,0 +1,40 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, bill) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_bill', {'name': bill.name}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.bill_areYouSure', {'name': bill.name}) }} +

+ +

+ {% if bill.transactionjournals.count() > 0 %} + {{ Lang.choice('form.bill_keep_transactions', bill.transactionjournals.count(),{count: bill.transactionjournals.count()}) }} + {% endif %} +

+
+ +
+
+
+
+{% endblock %} diff --git a/resources/views/bills/edit.twig b/resources/views/bills/edit.twig new file mode 100644 index 0000000000..8c90123d32 --- /dev/null +++ b/resources/views/bills/edit.twig @@ -0,0 +1,86 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, bill) }} +{% endblock %} + +{% block content %} + + {{ Form.model(bill, {'class' : 'form-horizontal','enctype': 'multipart/form-data','id' : 'update','url' : route('bills.update', bill.id)}) }} + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {% if rules.count() > 0 %} + {{ ExpandedForm.text('name',null, {helpText: trans_choice('firefly.bill_edit_rules', rules.count())}) }} + {% else %} + {{ ExpandedForm.text('name') }} + {% endif %} + {{ CurrencyForm.currencyList('transaction_currency_id') }} + {{ ExpandedForm.amountNoCurrency('amount_min') }} + {{ ExpandedForm.amountNoCurrency('amount_max') }} + {{ ExpandedForm.date('date',bill.date.format('Y-m-d')) }} + {{ ExpandedForm.select('repeat_freq',periods) }} +
+
+ + +
+
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('notes',null,{helpText: trans('firefly.field_supports_markdown')}) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} + {{ ExpandedForm.integer('skip') }} + {{ ExpandedForm.objectGroup() }} + {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('active', 1) }} + +
+
+
+
+
+
+
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','bill') }} +
+ +
+
+
+ + +{% endblock %} +{% block styles %} + + + +{% endblock %} +{% block scripts %} + + + + + + {# auto complete for object groups #} + + +{% endblock %} diff --git a/resources/views/bills/index.twig b/resources/views/bills/index.twig new file mode 100644 index 0000000000..2051403308 --- /dev/null +++ b/resources/views/bills/index.twig @@ -0,0 +1,46 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + {% if total == 0 %} + {% include 'partials.empty' with {objectType: 'default', type: 'bills',route: route('bills.create')} %} + {% else %} +
+
+
+
+

{{ title }}

+
+ +
+
+
+ + {% include 'list/bills' %} +
+ +
+
+
+{% endif %} +{% endblock %} + +{% block styles %} +{% endblock %} + +{% block scripts %} + + +{% endblock %} diff --git a/resources/views/bills/show.twig b/resources/views/bills/show.twig new file mode 100644 index 0000000000..9ca38d57b8 --- /dev/null +++ b/resources/views/bills/show.twig @@ -0,0 +1,177 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, bill) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ object.data.name }}

+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ {{ trans('firefly.match_between_amounts', {low: formatAmountByCurrency(object.data.currency,object.data.amount_min), high: formatAmountByCurrency(object.data.currency,object.data.amount_max) })|raw }} + {{ 'repeats'|_ }} + {{ trans('firefly.repeat_freq_' ~object.data.repeat_freq) }}. +
{{ 'bill_is_active'|_ }} + {% if object.data.active %} + {{ 'yes'|_ }} + {% else %} + {{ 'no'|_ }} + {% endif %} +
{{ 'next_expected_match'|_ }} + {% if object.data.next_expected_match|length > 0 %} + {{ formatDate(object.data.next_expected_match, monthAndDayFormat) }} + {% else %} + {{ 'unknown'|_ }} + {% endif %} +
{{ trans('firefly.average_bill_amount_year', {year: year}) }} + {% for avg in yearAverage %} + {{ formatAmountBySymbol(avg.avg, avg.currency_symbol, avg.currency_decimal_places, true) }}
+ {% endfor %} +
{{ 'average_bill_amount_overall'|_ }} + {% for avg in overallAverage %} + {{ formatAmountBySymbol(avg.avg, avg.currency_symbol, avg.currency_decimal_places, true) }}
+ {% endfor %} +
+
+ +
+
+
+
+
+

{{ 'bill_related_rules'|_ }}

+
+
+ {% if rules.count() > 0 %} +
    + {% for rule in rules %} +
  • {{ rule.title }} + {% if not rule.active %}({{ 'list_inactive_rule'|_|lower }}){% endif %} +
  • + {% endfor %} +
+ {% endif %} +
+ +
+ {% if object.data.notes %} +
+
+

{{ 'notes'|_ }}

+
+
+ {{ object.data.notes|default('')|markdown }} +
+
+ {% endif %} + + + {% if attachments.count() > 0 %} +
+
+

{{ 'attachments'|_ }}

+
+
+ {% include 'list.attachments' %} +
+
+ {% endif %} +
+
+ +
+
+
+
+

{{ 'chart'|_ }}

+
+
+ +
+
+
+
+ +
+
+
+
+

{{ 'connected_journals'|_ }}

+
+
+ {% include 'list.groups' %} +
+
+
+
+ +{% endblock %} + +{% block scripts %} + + + + + + {# required for groups.twig #} + +{% endblock %} diff --git a/resources/views/budgets/available-budgets/create-alternative.twig b/resources/views/budgets/available-budgets/create-alternative.twig new file mode 100644 index 0000000000..d212385217 --- /dev/null +++ b/resources/views/budgets/available-budgets/create-alternative.twig @@ -0,0 +1,37 @@ + + diff --git a/resources/views/budgets/available-budgets/create.twig b/resources/views/budgets/available-budgets/create.twig new file mode 100644 index 0000000000..9a77295ea4 --- /dev/null +++ b/resources/views/budgets/available-budgets/create.twig @@ -0,0 +1,37 @@ + + diff --git a/resources/views/budgets/available-budgets/edit.twig b/resources/views/budgets/available-budgets/edit.twig new file mode 100644 index 0000000000..bdb04fc34b --- /dev/null +++ b/resources/views/budgets/available-budgets/edit.twig @@ -0,0 +1,33 @@ + + diff --git a/resources/views/budgets/budget-limits/create.twig b/resources/views/budgets/budget-limits/create.twig new file mode 100644 index 0000000000..be92a9849b --- /dev/null +++ b/resources/views/budgets/budget-limits/create.twig @@ -0,0 +1,36 @@ + + diff --git a/resources/views/budgets/create.twig b/resources/views/budgets/create.twig new file mode 100644 index 0000000000..cc12b1296d --- /dev/null +++ b/resources/views/budgets/create.twig @@ -0,0 +1,64 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+ + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name') }} +
+
+
+
+ {# panel for auto-budget#} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.select('auto_budget_type', autoBudgetTypes,null, {helpText: trans('firefly.auto_budget_help')}) }} + {{ CurrencyForm.currencyList('auto_budget_currency_id') }} + {{ ExpandedForm.amountNoCurrency('auto_budget_amount') }} + {{ ExpandedForm.select('auto_budget_period', autoBudgetPeriods, null) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','budget') }} +
+ +
+ +
+ +
+
+ + +{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/budgets/delete.twig b/resources/views/budgets/delete.twig new file mode 100644 index 0000000000..cf7439c288 --- /dev/null +++ b/resources/views/budgets/delete.twig @@ -0,0 +1,44 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, budget) }} +{% endblock %} + +{% block content %} + +
+ + +
+
+
+
+

{{ trans('form.delete_budget', {'name': budget.name}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.budget_areYouSure', {'name': budget.name}) }} +

+ +

+ {% if budget.transactionjournals.count() > 0 %} + {{ Lang.choice('form.budget_keep_transactions', budget.transactionjournals.count(), {count: budget.transactionjournals.count() }) }} + {% endif %} +

+ +
+ + + +
+
+
+
+{% endblock %} diff --git a/resources/views/budgets/edit.twig b/resources/views/budgets/edit.twig new file mode 100644 index 0000000000..e313778c18 --- /dev/null +++ b/resources/views/budgets/edit.twig @@ -0,0 +1,62 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, budget) }} +{% endblock %} + +{% block content %} + {{ Form.model(budget, {'class' : 'form-horizontal','enctype': 'multipart/form-data','id' : 'update','url' : route('budgets.update',budget.id) } ) }} + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('active', 1) }} + {{ ExpandedForm.text('name') }} +
+
+ +
+
+ {# panel for auto-budget #} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.select('auto_budget_type', autoBudgetTypes, autoBudget.auto_budget_type) }} + {{ CurrencyForm.currencyList('auto_budget_currency_id', autoBudget.transaction_currency_id) }} + {{ ExpandedForm.amountNoCurrency('auto_budget_amount', preFilled.auto_budget_amount) }} + {{ ExpandedForm.select('auto_budget_period', autoBudgetPeriods, autoBudget.period) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','budget') }} +
+ +
+
+
+ + + +{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/budgets/index.twig b/resources/views/budgets/index.twig new file mode 100644 index 0000000000..5e66c97b28 --- /dev/null +++ b/resources/views/budgets/index.twig @@ -0,0 +1,482 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ 'budget_period_navigator'|_ }}

+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ + {% if availableBudgets|length == 0 %} +
+
+
+
+

+ {{ trans('firefly.total_available_budget_in_currency', {currency: defaultCurrency.name}) }} +
+ {{ trans('firefly.between_dates_breadcrumb', {start: start.formatLocalized(monthAndDayFormat), end: end.formatLocalized(monthAndDayFormat)}) }} +

+
+
+
+ {# info about the amount budgeted #} +
+ {{ 'budgeted'|_ }} ({{ 'see_below'|_ }}): + + {{ formatAmountBySymbol(budgeted, defaultCurrency.symbol, defaultCurrency.decimal_places) }} + + +
+ {# info about the amount spent #} +
+ {{ trans('firefly.available_between', {start: start.formatLocalized(monthAndDayFormat), end: end.formatLocalized(monthAndDayFormat) }) }} + : + {{ formatAmountBySymbol(0, defaultCurrency.symbol, defaultCurrency.decimal_places, true) }} + + +
+
+ {# info text to show how much is spent (in currency). #} +
+
+ {{ trans('firefly.spent_between', {start: start.formatLocalized(monthAndDayFormat), end: end.formatLocalized(monthAndDayFormat)}) }} + : {{ formatAmountBySymbol(spent, defaultCurrency.symbol, defaultCurrency.decimal_places) }} +
+
+
+
+ {% if enableAddButton %} + + {% endif %} +
+
+ {% endif %} + + {% set boxSize = 12 %} + {% if availableBudgets|length > 1 %} + {% set boxSize = 6 %} + {% endif %} + {% if availableBudgets|length > 0 %} +
+ {% for budget in availableBudgets %} +
+
+
+

+ {{ trans('firefly.total_available_budget_in_currency', {currency: budget.transaction_currency.name}) }} +
+ {{ trans('firefly.between_dates_breadcrumb', {start: budget.start_date.formatLocalized(monthAndDayFormat), end: budget.end_date.formatLocalized(monthAndDayFormat)}) }} +

+
+
+
+ {# info about the amount budgeted #} +
+ {{ 'budgeted'|_ }}: + + {{ formatAmountBySymbol(budget.budgeted, budget.transaction_currency.symbol, budget.transaction_currency.decimal_places, false) }} + + +
+ {# info about the amount spent #} +
+ {{ trans('firefly.available_between', {start: budget.start_date.formatLocalized(monthAndDayFormat), end: budget.end_date.formatLocalized(monthAndDayFormat) }) }} + : + {{ formatAmountBySymbol(budget.amount, budget.transaction_currency.symbol, budget.transaction_currency.decimal_places, true) }} + + + +
+
+ {# progresss bar to visualise available vs budgeted. #} +
+
+
+ {# red: the exact amount of the available budget, if more has budgeted. #} +
+ + {# orange: overbudgeted amount #} +
+ + {# budgeted amount if enough or les #} +
+
+
+
+ {# info text to show how much is spent (in currency). #} +
+
+ {{ trans('firefly.spent_between', {start: budget.start_date.formatLocalized(monthAndDayFormat), end: budget.end_date.formatLocalized(monthAndDayFormat)}) }} + : {{ formatAmountBySymbol(budget.spent, budget.transaction_currency.symbol, budget.transaction_currency.decimal_places) }} +
+
+ + {# bar to visualise spending in budget .#} +
+
+
+
+
+
+
+
+
+
+
+
+ {% endfor %} + {% if enableAddButton %} + + {% endif %} +
+ {% endif %} + {% if budgets|length == 0 and inactive.count() == 0 %} + {% include 'partials.empty' with {objectType: 'default', type: 'budgets',route: route('budgets.create')} %} + {# make FF ignore demo for now. #} + {% set shownDemo = true %} + {% else %} + +
+
+
+
+

{{ 'budgets'|_ }}

+
+
+ + + + + + + + + + + + + {% for budget in budgets %} + + + + + + + + {% endfor %} + + + + + + + + + + +
{{ 'budget'|_ }}{{ 'budgeted'|_ }}{{ 'left'|_ }} ({{ 'per_day'|_|lower }})
+ {% if 0 == budget.budgeted|length %} + {{ budget.name }} + {% endif %} + {% if 1 == budget.budgeted|length %} + {% for budgetLimit in budget.budgeted %} + {{ budget.name }} + {% endfor %} + {% endif %} + + {% if budget.budgeted|length > 1 %} + {% for budgetLimit in budget.budgeted %} + {{ budget.name }} ({{ budgetLimit.currency_name }})
+ {% endfor %} + {% endif %} + + {% if budget.auto_budget %} + {% if 1 == budget.auto_budget.auto_budget_type %} + + {% endif %} + {% if 2 == budget.auto_budget.auto_budget_type %} + + {% endif %} + {% endif %} + {% if budget.attachments.count() > 0 %} + + {% endif %} +
+ {% if 0==budget.budgeted|length %} +
+
{{ defaultCurrency.symbol }}
+ + +
+ + {% endif %} + {% if budget.budgeted|length > 0 %} + {% for budgetLimit in budget.budgeted %} + {% if not budgetLimit.in_range %} + + {{ trans('firefly.budget_limit_not_in_range', {start: budgetLimit.start_date, end: budgetLimit.end_date}) }} +
+ {% endif %} +
+
{{ budgetLimit.currency_symbol }}
+ + +
+ + {% endfor %} + {% endif %} + {% if budget.budgeted|length < currencies.count() %} + + + + {% endif %} +
+ {% for spentInfo in budget.spent %} + {% set countLimit = 0 %} + {% for budgetLimit in budget.budgeted %} + {% if spentInfo.currency_id == budgetLimit.currency_id and budgetLimit.in_range %} + {% set countLimit = countLimit + 1 %} + + {{ formatAmountBySymbol(spentInfo.spent + budgetLimit.amount, spentInfo.currency_symbol, spentInfo.currency_decimal_places) }} + {% if spentInfo.spent + budgetLimit.amount > 0 %} + ({{ formatAmountBySymbol((spentInfo.spent + budgetLimit.amount) / activeDaysLeft, spentInfo.currency_symbol, spentInfo.currency_decimal_places) }}) + {% else %} + ({{ formatAmountBySymbol(0, spentInfo.currency_symbol, spentInfo.currency_decimal_places) }}) + {% endif %} + +
+ {% endif %} + {% endfor %} + {% if countLimit == 0 %} + + {{ formatAmountBySymbol(spentInfo.spent, spentInfo.currency_symbol, spentInfo.currency_decimal_places) }} + +
+ {% endif %} + {% endfor %} + {% for budgetLimit in budget.budgeted %} + {% if null == budget.spent[budgetLimit.currency_id] %} + + {{ formatAmountBySymbol(budgetLimit.amount, budgetLimit.currency_symbol, budgetLimit.currency_decimal_places) }} + {% if budgetLimit.in_range %} + ({{ formatAmountBySymbol(budgetLimit.amount / activeDaysLeft, budgetLimit.currency_symbol, budgetLimit.currency_decimal_places) }}) + {% endif %} + +
+ {% endif %} + {% endfor %} +
 {{ 'sum'|_ }} + {% for arr in sums.left %} + {{ formatAmountBySymbol(arr.amount, arr.currency_symbol, arr.currency_decimal_places) }} + ({{ formatAmountBySymbol(arr.amount / activeDaysLeft, arr.currency_symbol, arr.currency_decimal_places) }}) +
+ {% endfor %} +
+
+ +
+
+
+ + +
+ + {% if paginator.count() > 0 and inactive.count() > 0 %} +
+
+
+

{{ 'createBudget'|_ }}

+
+ +
+
+ {% endif %} + {% if inactive|length > 0 %} +
+
+
+

{{ 'inactiveBudgets'|_ }}

+
+
+ {% for budget in inactive %} + {% if loop.index == inactive.count() %} + {{ budget.name }} + {% else %} + {{ budget.name }}, + {% endif %} + {% endfor %} +
+
+
+ {% endif %} +
+ {% endif %} + +{% endblock %} + +{% block styles %} + +{% endblock %} + +{% block scripts %} + + + + +{% endblock %} diff --git a/resources/views/budgets/no-budget.twig b/resources/views/budgets/no-budget.twig new file mode 100644 index 0000000000..138a332eac --- /dev/null +++ b/resources/views/budgets/no-budget.twig @@ -0,0 +1,64 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, start, end) }} +{% endblock %} + +{% block content %} + + {# upper show-all instruction #} + {% if periods|length > 0 %} +
+ +
+ {% endif %} + +
+
+
+
+

{{ subTitle }}

+
+
+ + {% if periods|length > 0 %} + {% include 'list.groups' %} +

+ + {{ 'show_all_no_filter'|_ }} +

+ {% else %} + {% include 'list.groups' %} +

+ + {{ 'show_the_current_period_and_overview'|_ }} +

+ {% endif %} +
+
+
+ + {% if periods|length > 0 %} +
+ {% include 'list.periods' %} +
+ {% endif %} + +
+ + {# lower show-all instruction #} + {% if periods|length > 0 %} +
+ +
+ {% endif %} + +{% endblock %} +{% block scripts %} + {# required for groups.twig #} + +{% endblock %} diff --git a/resources/views/budgets/show.twig b/resources/views/budgets/show.twig new file mode 100644 index 0000000000..eb8506fd7c --- /dev/null +++ b/resources/views/budgets/show.twig @@ -0,0 +1,229 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, budget, budgetLimit) }} +{% endblock %} + +{% block content %} +
+
+
+
+

+ {% if budgetLimit %} + {{ trans('firefly.chart_budget_in_period', {name: budget.name, start: budgetLimit.start_date.formatLocalized(monthAndDayFormat), end: budgetLimit.end_date.formatLocalized(monthAndDayFormat),currency: budgetLimit.transactionCurrency.name }) }} + {% else %} + {{ trans('firefly.chart_all_journals_for_budget', {name:budget.name}) }} + {% endif %} +

+ +
+
+ +
+ {% if budgetLimit %} + + {% endif %} +
+
+ {% if attachments.count() > 0 %} +
+
+
+

+ {{ 'attachments'|_ }} +

+
+
+ {% include 'list.attachments' %} +
+
+
+ {% endif %} +
+
+
+
+
+

{{ 'expenses_by_category'|_ }}

+
+
+
+ +
+
+ {% if budgetLimit %} + + {% endif %} +
+
+
+
+
+

{{ 'expenses_by_asset_account'|_ }}

+
+
+
+ +
+
+ {% if budgetLimit %} + + {% endif %} +
+
+
+
+
+

{{ 'expenses_by_expense_account'|_ }}

+
+
+
+ +
+
+ {% if budgetLimit %} + + {% endif %} +
+
+
+ {% if limits|length > 0 %} +
+ +
+ {% endif %} + +
+
+ +
+
+

{{ 'transactions'|_ }}

+
+
+ {% include 'list.groups' %} + {% if budgetLimit %} +

+ + + {{ 'show_all_no_filter'|_ }} + +

+ {% endif %} +
+
+
+ {% if limits|length > 0 %} +
+ {% for limit in limits %} +
+ +
+ + + + + + + + + + {% if limit.spent > 0 %} + + + + {% endif %} +
{{ 'amount'|_ }} + {{ formatAmountBySymbol(limit.amount, limit.transactionCurrency.symbol, limit.transactionCurrency.decimal_places) }} +
{{ 'spent'|_ }} + {{ formatAmountBySymbol(limit.spent, limit.transactionCurrency.symbol, limit.transactionCurrency.decimal_places) }} +
+ {% set overspent = limit.amount + limit.spent < 0 %} + + {% if overspent %} + {% set pct = (limit.spent != 0 ? (limit.amount / (limit.spent*-1))*100 : 0) %} {# must have -1 here #} +
+
+
+
+ {% else %} + {% set pct = (limit.amount != 0 ? (((limit.spent*-1) / limit.amount)*100) : 0) %} {# must have -1 here #} +
+
+
+ {% endif %} +
+
+
+ {% endfor %} +

{{ 'showEverything'|_ }}

+
+ {% endif %} +
+ +{% endblock %} +{% block scripts %} + + + + + + + {# required for groups.twig #} + +{% endblock %} diff --git a/resources/views/categories/create.twig b/resources/views/categories/create.twig new file mode 100644 index 0000000000..b3a2b83b19 --- /dev/null +++ b/resources/views/categories/create.twig @@ -0,0 +1,57 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name') }} +
+
+
+
+ {# panel for optional fields#} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('notes', null, {helpText: trans('firefly.field_supports_markdown')} ) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','category') }} +
+ +
+
+
+
+{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/categories/delete.twig b/resources/views/categories/delete.twig new file mode 100644 index 0000000000..600f8fda52 --- /dev/null +++ b/resources/views/categories/delete.twig @@ -0,0 +1,41 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, category) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_category', {'name': category.name}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.category_areYouSure', {'name': category.name}) }} +

+ +

+ {% if category.transactionjournals.count() > 0 %} + {{ Lang.choice('form.category_keep_transactions', category.transactionjournals.count(), {count: category.transactionjournals.count() }) }} + {% endif %} +

+
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/categories/edit.twig b/resources/views/categories/edit.twig new file mode 100644 index 0000000000..6abbbb0da9 --- /dev/null +++ b/resources/views/categories/edit.twig @@ -0,0 +1,58 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, category) }} +{% endblock %} + +{% block content %} + {{ Form.model(category, {'class' : 'form-horizontal','enctype': 'multipart/form-data','id' : 'update','url' : route('categories.update',category.id)}) }} + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name') }} +
+
+
+
+ {# panel for optional fields#} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('notes', preFilled.notes, {helpText: trans('firefly.field_supports_markdown')} ) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+
+
+ + + {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','category') }} +
+ +
+
+
+ +{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/categories/index.twig b/resources/views/categories/index.twig new file mode 100644 index 0000000000..2175f264ba --- /dev/null +++ b/resources/views/categories/index.twig @@ -0,0 +1,49 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + {% if categories.count() > 0 %} +
+
+
+
+

{{ 'categories'|_ }}

+ + +
+
+ + {% include 'list/categories' %} +
+ +
+ +
+
+{% else %} + {% include 'partials.empty' with {objectType: 'default', type: 'categories',route: route('categories.create')} %} + {% endif %} +{% endblock %} + +{% block styles %} + +{% endblock %} + +{% block scripts %} + + +{% endblock %} diff --git a/resources/views/categories/no-category.twig b/resources/views/categories/no-category.twig new file mode 100644 index 0000000000..c093435b93 --- /dev/null +++ b/resources/views/categories/no-category.twig @@ -0,0 +1,64 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, start, end) }} +{% endblock %} + +{% block content %} + + {# upper show-all instruction #} + {% if periods|length > 0 %} +
+ +
+ {% endif %} + +
+
+
+
+

{{ subTitle }}

+
+
+ + {% if periods|length > 0 %} + {% include 'list.groups' %} +

+ + {{ 'show_all_no_filter'|_ }} +

+ {% else %} + {% include 'list.groups' %} +

+ + {{ 'show_the_current_period_and_overview'|_ }} +

+ {% endif %} +
+
+
+ + {% if periods|length > 0 %} +
+ {% include 'list.periods' %} +
+ {% endif %} + +
+ + {# lower show-all instruction #} + {% if periods|length > 0 %} +
+ +
+ {% endif %} + +{% endblock %} +{% block scripts %} + {# required for groups.twig #} + +{% endblock %} diff --git a/resources/views/categories/show.twig b/resources/views/categories/show.twig new file mode 100644 index 0000000000..5a061c4b76 --- /dev/null +++ b/resources/views/categories/show.twig @@ -0,0 +1,122 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, category, start, end) }} +{% endblock %} + +{% block content %} +
+ {% if Route.getCurrentRoute.getName == 'categories.show' %} + {# both charts #} +
+
+
+

+ {{ trans('firefly.chart_category_in_period', {name: category.name, start: start.formatLocalized(monthAndDayFormat), end: end.formatLocalized(monthAndDayFormat) }) }} +

+
+
+ +
+
+
+
+
+
+

+ {{ trans('firefly.chart_category_all', {name: category.name }) }} +

+
+
+ +
+
+
+ {% endif %} + {% if Route.getCurrentRoute.getName == 'categories.show.all' %} + {# all chart #} +
+
+
+

+ {{ trans('firefly.chart_category_all', {name: category.name }) }} +

+
+
+ +
+
+
+ {% endif %} + {% if attachments.count() > 0 %} +
+
+
+

+ {{ 'attachments'|_ }} +

+
+
+ {% include 'list.attachments' %} +
+
+
+ {% endif %} +
+ {% if periods|length > 0 %} +
+ +
+ {% endif %} + +
+
+ +
+
+

{{ 'transactions'|_ }}

+
+
+ {% if periods|length > 0 %} + {% include 'list.groups' %} +

+ + + {{ 'show_all_no_filter'|_ }} + +

+ {% else %} + {% include 'list.groups' %} +

+ + + {{ 'show_the_current_period_and_overview'|_ }} + +

+ {% endif %} +
+
+
+ {% if periods|length > 0 %} +
+ {% include 'list.periods' %} +
+ {% endif %} +
+ +{% endblock %} +{% block scripts %} + + + + + + {# required for groups.twig #} + +{% endblock %} diff --git a/resources/views/currencies/create.twig b/resources/views/currencies/create.twig new file mode 100644 index 0000000000..5295540adc --- /dev/null +++ b/resources/views/currencies/create.twig @@ -0,0 +1,47 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name',null,{'maxlength' : 48}) }} + {{ ExpandedForm.text('symbol',null,{'maxlength': 51}) }} + {{ ExpandedForm.text('code',null,{'maxlength' : 51}) }} + {{ ExpandedForm.integer('decimal_places',2,{'maxlength' : 2,'min': 0,'max': 12}) }} +
+
+ +
+
+
+
+ + {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','currency') }} +
+ +
+ +
+
+
+{% endblock %} diff --git a/resources/views/currencies/delete.twig b/resources/views/currencies/delete.twig new file mode 100644 index 0000000000..1ef83a4dc6 --- /dev/null +++ b/resources/views/currencies/delete.twig @@ -0,0 +1,35 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, currency) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_currency', {'name': currency.name}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.currency_areYouSure', {'name': currency.name}) }} +

+
+ +
+
+
+
+ +{% endblock %} diff --git a/resources/views/currencies/edit.twig b/resources/views/currencies/edit.twig new file mode 100644 index 0000000000..6dd3fb8f6d --- /dev/null +++ b/resources/views/currencies/edit.twig @@ -0,0 +1,48 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, currency) }} +{% endblock %} + +{% block content %} + {{ Form.model(currency, {'class' : 'form-horizontal','id' : 'update','url' : route('currencies.update',currency.id)}) }} + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('name',null,{'maxlength' : 48}) }} + {{ ExpandedForm.text('symbol',null,{'maxlength' : 51}) }} + {{ ExpandedForm.text('code',null,{'maxlength' : 51}) }} + {{ ExpandedForm.integer('decimal_places',null,{'maxlength' : 2,'min': 0,'max': 12}) }} + {{ ExpandedForm.checkbox('enabled',null) }} +
+
+
+
+
+
+ + {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','currency') }} +
+ +
+ +
+
+ +{% endblock %} diff --git a/resources/views/currencies/index.twig b/resources/views/currencies/index.twig new file mode 100644 index 0000000000..15a99e1064 --- /dev/null +++ b/resources/views/currencies/index.twig @@ -0,0 +1,108 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+
+
+
+

{{ 'currencies'|_ }}

+ {{ 'create_currency'|_ }} +
+
+

+ {{ 'currencies_intro'|_ }} +

+

+ {{ 'currencies_default_disabled'|_ }} +

+ {% if currencies|length > 0 %} +
+ {{ currencies.links('pagination.bootstrap-4')|raw }} +
+ + + + {% if isOwner %} + + {% endif %} + + + + + + + {% for currency in currencies %} + + {% if isOwner %} + + {% endif %} + + + + + + {% endfor %} + +
 {{ 'currency'|_ }}{{ 'number_of_decimals'|_ }} 
+
+ + +
+
+ {% if currency.enabled == false %} + + {% endif %} + {{ currency.name }} ({{ currency.code }}) ({{ currency.symbol|raw }}) + {% if currency.id == defaultCurrency.id %} + {{ 'default_currency'|_ }} + {% endif %} + {% if currency.enabled == false %} + +
{{ 'currency_is_disabled'|_ }} + {% endif %} +
{{ currency.decimal_places }} +
+ {% if currency.id != defaultCurrency.id %} + + {% endif %} + {% if currency.enabled %} + + + {{ 'disable_currency'|_ }} + {% endif %} + {% if not currency.enabled %} + + + {{ 'enable_currency'|_ }} + {% endif %} +
+
+
+ {{ currencies.links('pagination.bootstrap-4')|raw }} +
+ {% endif %} +
+ +
+
+
+{% endblock %} +{% block scripts %} + + +{% endblock %} diff --git a/resources/views/demo/accounts/index.twig b/resources/views/demo/accounts/index.twig new file mode 100644 index 0000000000..9d3cf18a02 --- /dev/null +++ b/resources/views/demo/accounts/index.twig @@ -0,0 +1 @@ +{{ trans('demo.accounts-index') }} diff --git a/resources/views/demo/budgets/index.twig b/resources/views/demo/budgets/index.twig new file mode 100644 index 0000000000..5717ecfce4 --- /dev/null +++ b/resources/views/demo/budgets/index.twig @@ -0,0 +1 @@ +{{ trans('demo.budgets-index') }} diff --git a/resources/views/demo/currencies/index.twig b/resources/views/demo/currencies/index.twig new file mode 100644 index 0000000000..1ea152a0f2 --- /dev/null +++ b/resources/views/demo/currencies/index.twig @@ -0,0 +1 @@ +{{ trans('demo.currencies-index') }} diff --git a/resources/views/demo/home.twig b/resources/views/demo/home.twig new file mode 100644 index 0000000000..85268e795a --- /dev/null +++ b/resources/views/demo/home.twig @@ -0,0 +1 @@ +{{ trans('demo.index', {asset: route('accounts.index', ['asset']), budgets: route('budgets.index'), reports: route('reports.index')})|raw }} diff --git a/resources/views/demo/index.twig b/resources/views/demo/index.twig new file mode 100644 index 0000000000..85268e795a --- /dev/null +++ b/resources/views/demo/index.twig @@ -0,0 +1 @@ +{{ trans('demo.index', {asset: route('accounts.index', ['asset']), budgets: route('budgets.index'), reports: route('reports.index')})|raw }} diff --git a/resources/views/demo/no-demo-text.twig b/resources/views/demo/no-demo-text.twig new file mode 100644 index 0000000000..1e7116dc6b --- /dev/null +++ b/resources/views/demo/no-demo-text.twig @@ -0,0 +1,3 @@ +{{ trans('demo.no_demo_text', {route: Route.getCurrentRoute.getName})|raw }} + +{{ trans('demo.see_help_icon')|raw }} diff --git a/resources/views/demo/piggy-banks/index.twig b/resources/views/demo/piggy-banks/index.twig new file mode 100644 index 0000000000..7c0415fc31 --- /dev/null +++ b/resources/views/demo/piggy-banks/index.twig @@ -0,0 +1 @@ +{{ trans('demo.piggy-banks-index') }} diff --git a/resources/views/demo/profile/index.twig b/resources/views/demo/profile/index.twig new file mode 100644 index 0000000000..4ab30d6088 --- /dev/null +++ b/resources/views/demo/profile/index.twig @@ -0,0 +1 @@ +{{ trans('demo.profile-index') }} diff --git a/resources/views/demo/recurring/index.twig b/resources/views/demo/recurring/index.twig new file mode 100644 index 0000000000..366736f634 --- /dev/null +++ b/resources/views/demo/recurring/index.twig @@ -0,0 +1 @@ +{{ trans('demo.recurring-index') }} diff --git a/resources/views/demo/recurring/recurring-create.twig b/resources/views/demo/recurring/recurring-create.twig new file mode 100644 index 0000000000..f97b5249ed --- /dev/null +++ b/resources/views/demo/recurring/recurring-create.twig @@ -0,0 +1 @@ +{{ trans('demo.recurring-create') }} diff --git a/resources/views/demo/reports/index.twig b/resources/views/demo/reports/index.twig new file mode 100644 index 0000000000..adf49baea5 --- /dev/null +++ b/resources/views/demo/reports/index.twig @@ -0,0 +1,7 @@ +{{ trans('demo.reports-index-start')|raw }} +
+
+{{ trans('demo.reports-index-examples', { + one: route('reports.report.default', ['1,2,3','currentMonthStart','currentMonthEnd']), + two: route('reports.report.default', ['1,2,3','20160101','20161231']), + three: route('reports.report.budget', ['1,2,3','2,1','20160101','20161231'])})|raw }} diff --git a/resources/views/demo/transactions/index.twig b/resources/views/demo/transactions/index.twig new file mode 100644 index 0000000000..247ad41218 --- /dev/null +++ b/resources/views/demo/transactions/index.twig @@ -0,0 +1 @@ +{{ trans('demo.transactions-index') }} diff --git a/resources/views/error.twig b/resources/views/error.twig new file mode 100644 index 0000000000..f402e8478d --- /dev/null +++ b/resources/views/error.twig @@ -0,0 +1,32 @@ +{% extends "./v1/layout/guest" %} + +{% block content %} + +
+
+

Sorry, an error occurred.

+
+
+ +
+
+

{{ message |default('General unknown errror')|raw }}

+
+
+ +
+
+

+ If you do not know how to handle this error, please open an issue on + GitHub + or send me a message. +

+
+
+ +
+ +
+{% endblock %} diff --git a/resources/views/export/index.twig b/resources/views/export/index.twig new file mode 100644 index 0000000000..7df7cf179c --- /dev/null +++ b/resources/views/export/index.twig @@ -0,0 +1,36 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+
+
+
+

{{ 'export_data_main_title'|_ }}

+
+
+

+ {{ 'export_data_expl'|_ }} +

+
+ + +
+

+ {{ 'export_data_advanced_expl'|_ }} +

+
+
+
+
+ +{% endblock %} + +{% block styles %} +{% endblock %} + +{% block scripts %} +{% endblock %} diff --git a/resources/views/form/amount-no-currency.twig b/resources/views/form/amount-no-currency.twig new file mode 100644 index 0000000000..411bd76787 --- /dev/null +++ b/resources/views/form/amount-no-currency.twig @@ -0,0 +1,8 @@ +
+ +
+ {{ Form.input('number', name, value, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/amount-small.twig b/resources/views/form/amount-small.twig new file mode 100644 index 0000000000..213c3f25ad --- /dev/null +++ b/resources/views/form/amount-small.twig @@ -0,0 +1,24 @@ +
+
+ + +
+ {{ Form.input('number', name, value, options) }} + + +
+ diff --git a/resources/views/form/amount.twig b/resources/views/form/amount.twig new file mode 100644 index 0000000000..4f318676b3 --- /dev/null +++ b/resources/views/form/amount.twig @@ -0,0 +1,33 @@ +
+ + +
+
+
+ + +
+ {{ Form.input('number', name, value, options) }} + + +
+ + {% include 'form.feedback' %} +
+ + +
diff --git a/resources/views/form/assetAccountCheckList.twig b/resources/views/form/assetAccountCheckList.twig new file mode 100644 index 0000000000..836ab52449 --- /dev/null +++ b/resources/views/form/assetAccountCheckList.twig @@ -0,0 +1,24 @@ +
+ + +
+ {% for groupName, accounts in grouped %} + {{ groupName }}
+ {% for id, account in accounts %} +
+ +
+ {% endfor %} + {% endfor %} + {% include 'form.help' %} + {% include 'form.feedback' %} + +
+
diff --git a/resources/views/form/balance.twig b/resources/views/form/balance.twig new file mode 100644 index 0000000000..627bd5ce8c --- /dev/null +++ b/resources/views/form/balance.twig @@ -0,0 +1,33 @@ +
+ + +
+
+
+ + +
+ {{ Form.input('number', name, value, options) }} + + +
+ + {% include 'form.feedback' %} +
+ + +
diff --git a/resources/views/form/checkbox.twig b/resources/views/form/checkbox.twig new file mode 100644 index 0000000000..e235ffc557 --- /dev/null +++ b/resources/views/form/checkbox.twig @@ -0,0 +1,19 @@ +
+ + +
+
+ +
+ {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/date.twig b/resources/views/form/date.twig new file mode 100644 index 0000000000..4eba6608ea --- /dev/null +++ b/resources/views/form/date.twig @@ -0,0 +1,14 @@ +
+ + +
+
+
+ +
+ {{ Form.input('date', name, value, options) }} +
+ {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/feedback.twig b/resources/views/form/feedback.twig new file mode 100644 index 0000000000..64d5875b83 --- /dev/null +++ b/resources/views/form/feedback.twig @@ -0,0 +1,4 @@ +{% if errors.has(name) %} + +

{{ errors.first(name) }}

+{% endif %} diff --git a/resources/views/form/file.twig b/resources/views/form/file.twig new file mode 100644 index 0000000000..0533dda5dc --- /dev/null +++ b/resources/views/form/file.twig @@ -0,0 +1,9 @@ +
+ + +
+ {{ Form.file(name, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/help.twig b/resources/views/form/help.twig new file mode 100644 index 0000000000..d402fb623b --- /dev/null +++ b/resources/views/form/help.twig @@ -0,0 +1,3 @@ +{% if options.helpText %} +

{{ options.helpText|raw }}

+{% endif %} diff --git a/resources/views/form/integer.twig b/resources/views/form/integer.twig new file mode 100644 index 0000000000..1eac145903 --- /dev/null +++ b/resources/views/form/integer.twig @@ -0,0 +1,9 @@ +
+ + +
+ {{ Form.input('number', name, value, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/location.twig b/resources/views/form/location.twig new file mode 100644 index 0000000000..df18f28068 --- /dev/null +++ b/resources/views/form/location.twig @@ -0,0 +1,114 @@ +
+ +
+ {% if config('firefly.mapbox_api_key') == '' %} +

+ {{ trans('firefly.mapbox_api_key')|raw }} +

+ {% else %} +
+
+

+ {{ 'press_object_location'|_ }} + +

+ {# latitude #} + + + {# longitude #} + + + {# zoomlevel #} + + + {# has location set? #} + + {% include 'form.feedback' %} + {% endif %} +
+
+ +{% if config('firefly.mapbox_api_key') != '' %} + {% set latitudevar = name~'_latitude' %} + {% set longitudevar = name~'_longitude' %} + {% set zoomlevelvar = name~'_zoom_level' %} + {% set haslocationvar = name~'_has_location' %} + {% set clearvar = name~'_clear_location' %} + + +{% endif %} diff --git a/resources/views/form/non-selectable-amount.twig b/resources/views/form/non-selectable-amount.twig new file mode 100644 index 0000000000..e9eb950ebf --- /dev/null +++ b/resources/views/form/non-selectable-amount.twig @@ -0,0 +1,11 @@ +
+ + +
+
+ {{ selectedCurrency.symbol }} + {{ Form.input('number', name, value, options) }} +
+ {% include 'v1.form.feedback' %} +
+
diff --git a/resources/views/form/number.twig b/resources/views/form/number.twig new file mode 100644 index 0000000000..1eac145903 --- /dev/null +++ b/resources/views/form/number.twig @@ -0,0 +1,9 @@ +
+ + +
+ {{ Form.input('number', name, value, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/object_group.twig b/resources/views/form/object_group.twig new file mode 100644 index 0000000000..565c8332e0 --- /dev/null +++ b/resources/views/form/object_group.twig @@ -0,0 +1,9 @@ +
+ + +
+ {{ Form.input('text', name, value, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/options.twig b/resources/views/form/options.twig new file mode 100644 index 0000000000..ee638c0460 --- /dev/null +++ b/resources/views/form/options.twig @@ -0,0 +1,34 @@ +{% if type == 'create' %} +
+ + +
+
+ +
+
+
+{% endif %} + +{% if type == 'update' %} +
+ + +
+
+
+
+
+{% endif %} + diff --git a/resources/views/form/password.twig b/resources/views/form/password.twig new file mode 100644 index 0000000000..b4536fb876 --- /dev/null +++ b/resources/views/form/password.twig @@ -0,0 +1,9 @@ +
+ + +
+ {{ Form.input('password', name, value, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/percentage.twig b/resources/views/form/percentage.twig new file mode 100644 index 0000000000..03b5275cbd --- /dev/null +++ b/resources/views/form/percentage.twig @@ -0,0 +1,12 @@ +
+ + +
+
+ {{ Form.input('number', name, value, options) }} +
%
+
+ {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/select.twig b/resources/views/form/select.twig new file mode 100644 index 0000000000..01d24305fa --- /dev/null +++ b/resources/views/form/select.twig @@ -0,0 +1,10 @@ +
+ + +
+ {{ Form.select(name, list, selected , options ) }} + {% include 'form.help' %} + {% include 'form.feedback' %} + +
+
diff --git a/resources/views/form/static.twig b/resources/views/form/static.twig new file mode 100644 index 0000000000..7600723086 --- /dev/null +++ b/resources/views/form/static.twig @@ -0,0 +1,7 @@ +
+ + +
+

{{ value|raw }}

+
+
diff --git a/resources/views/form/tags.twig b/resources/views/form/tags.twig new file mode 100644 index 0000000000..41780c98d4 --- /dev/null +++ b/resources/views/form/tags.twig @@ -0,0 +1,8 @@ +
+ + +
+ {{ Form.input('text', name, value, options) }} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/text.twig b/resources/views/form/text.twig new file mode 100644 index 0000000000..565c8332e0 --- /dev/null +++ b/resources/views/form/text.twig @@ -0,0 +1,9 @@ +
+ + +
+ {{ Form.input('text', name, value, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/form/textarea.twig b/resources/views/form/textarea.twig new file mode 100644 index 0000000000..5c553dc07e --- /dev/null +++ b/resources/views/form/textarea.twig @@ -0,0 +1,9 @@ +
+ + +
+ {{ Form.textarea(name, value, options) }} + {% include 'form.help' %} + {% include 'form.feedback' %} +
+
diff --git a/resources/views/index.twig b/resources/views/index.twig new file mode 100644 index 0000000000..254bd66297 --- /dev/null +++ b/resources/views/index.twig @@ -0,0 +1,191 @@ +{% extends "./layout/default" %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render }} +{% endblock %} +{% block content %} + {% include 'v1.partials.boxes' %} +
+
+ {# ACCOUNTS #} + + + {# BUDGETS #} + + {# CATEGORIES #} + +
+
+ + {# TRANSACTIONS #} +
+ {% for data in transactions %} +
+ + + {% if data.transactions|length > 0 %} +
+ {% include 'v1.list.groups-tiny' with {'transactions': data.transactions,'account': data.account} %} +
+ {% else %} +
+

+ + {{ trans('firefly.no_transactions_account', {name: data.account.name}) }} + +

+ +
+ {% endif %} + + +
+ {% endfor %} +
+ + {% if billCount > 0 %} + {# BILLS #} +
+ +
+
+ +
+
+ +
+ {% endif %} + + {# box for piggy bank data (JSON) #} +
+ +
+
+
+
+
+ {# EXPENSE ACCOUNTS #} + + {# OPTIONAL REVENUE ACCOUNTS #} + +
+
+{% endblock %} +{% block scripts %} + + + + + + + +{% endblock %} +{% block styles %} +{% endblock %} diff --git a/resources/views/install/index.twig b/resources/views/install/index.twig new file mode 100644 index 0000000000..38ce44ef28 --- /dev/null +++ b/resources/views/install/index.twig @@ -0,0 +1,24 @@ +{% extends "./v1/layout/install" %} + +{% block content %} +
+ +
+
+
+ Waiting to start... +
+
+
+
+{% endblock %} +{% block scripts %} + + +{% endblock %} + diff --git a/resources/views/javascript/accounts.twig b/resources/views/javascript/accounts.twig new file mode 100644 index 0000000000..9382fdbd6a --- /dev/null +++ b/resources/views/javascript/accounts.twig @@ -0,0 +1,4 @@ +var accountInfo = []; +{% for id, account in accounts %} + accountInfo[{{ id }}] = {preferredCurrency: {{ account.preferredCurrency }}, name: "{{ account.name }}"}; +{% endfor %} diff --git a/resources/views/javascript/currencies.twig b/resources/views/javascript/currencies.twig new file mode 100644 index 0000000000..12e04fcd9a --- /dev/null +++ b/resources/views/javascript/currencies.twig @@ -0,0 +1,4 @@ +var currencyInfo = []; +{% for id, currency in currencies %} + currencyInfo[{{ id }}] = {name: "{{ currency.name }}", symbol: "{{ currency.symbol }}", code: "{{ currency.code }}"}; +{% endfor %} diff --git a/resources/views/javascript/variables.twig b/resources/views/javascript/variables.twig new file mode 100644 index 0000000000..2efd9f9125 --- /dev/null +++ b/resources/views/javascript/variables.twig @@ -0,0 +1,66 @@ +// date ranges +var ranges = {}; +{% for title, range in dateRangeConfig.ranges %} + ranges["{{ title }}"] = [moment("{{ range[0].format('Y-m-d') }}"), moment("{{ range[1].format('Y-m-d') }}")]; +{% endfor %} + +// date range meta configuration +var dateRangeMeta = { +title: "{{ dateRangeTitle }}", +uri: "{{ route('daterange') }}", +labels: { +apply: "{{ 'apply'|_ }}", +cancel: "{{ 'cancel'|_ }}", +from: "{{ 'from'|_ }}", +to: "{{ 'to'|_ }}", +customRange: "{{ 'customRange'|_ }}" +} +}; + +// date range actual configuration: +var dateRangeConfig = { +startDate: moment("{{ dateRangeConfig.start }}"), +endDate: moment("{{ dateRangeConfig.end }}"), +ranges: ranges + +}; + +var uid = "{{ uid }}"; +var language = "{{ language|escape }}"; +var locale = "{{ locale|escape }}"; +var currencyCode = '{{ currencyCode|escape('js') }}'; +var currencySymbol = '{{ currencySymbol|escape('js') }}'; +var mon_decimal_point = "{{ accountingLocaleInfo.mon_decimal_point|escape('js') }}"; +var mon_thousands_sep = "{{ accountingLocaleInfo.mon_thousands_sep|escape('js') }}"; +var frac_digits = {{ accountingLocaleInfo.frac_digits|default('0') }}; +var noDataForChart = '{{ trans('firefly.no_data_for_chart')|escape('js') }}'; +var showFullList = '{{ trans('firefly.show_full_list')|escape('js') }}'; +var showOnlyTop = '{{ trans('firefly.show_only_top',{number:listLength})|escape('js') }}'; +var accountingConfig = {{ accountingLocaleInfo.format|json_encode|raw }}; +var token = '{{ csrf_token() }}'; +var sessionStart = '{{ session('start').format('Y-m-d') }}'; +var sessionEnd = '{{ session('end').format('Y-m-d') }}'; +var todayText = ' {{ trans('firefly.today')|escape('js') }}'; + +// some formatting stuff: +var month_and_day_js = "{{ trans('config.month_and_day_js') }}"; +var acc_config_new = {format: accountingConfig}; + +// strings and translations used often: +var helpPageTitle = "{{ trans('firefly.help_for_this_page')|escape('js') }}"; +var noHelpForPage = "{{ trans('firefly.no_help_could_be_found')|escape('js') }}"; +var noHelpForPageTitle = "{{ trans('firefly.no_help_title')|escape('js') }}"; + +var edit_selected_txt = "{{ trans('firefly.mass_edit')|escape('js') }}"; +var edit_bulk_selected_txt = "{{ trans('firefly.bulk_edit')|escape('js') }}"; +var delete_selected_txt = "{{ trans('firefly.mass_delete')|escape('js') }}"; + +var mass_edit_url = '{{ route('transactions.mass.edit', ['']) }}'; +var bulk_edit_url = '{{ route('transactions.bulk.edit', ['']) }}'; +var mass_delete_url = '{{ route('transactions.mass.delete', ['']) }}'; + +// for demo: +var nextLabel = "{{ trans('firefly.intro_next_label')|escape('js') }}"; +var prevLabel = "{{ trans('firefly.intro_prev_label')|escape('js') }}"; +var skipLabel = "{{ trans('firefly.intro_skip_label')|escape('js') }}"; +var doneLabel = "{{ trans('firefly.intro_done_label')|escape('js') }}"; diff --git a/resources/views/json/piggy-banks.twig b/resources/views/json/piggy-banks.twig new file mode 100644 index 0000000000..3938f4a3ad --- /dev/null +++ b/resources/views/json/piggy-banks.twig @@ -0,0 +1,22 @@ +
+ +
+ {% for entry in info %} + {{ entry.name }}
+
+
+ {% if entry.percentage >=20 %}{{ entry.amount|formatAmountPlain }}{% endif %} +
+ {% if entry.percentage < 20 %} {{ entry.amount|formatAmountPlain }}{% endif %} +
+ {% endfor %} +
+ +
diff --git a/resources/views/layout/default.twig b/resources/views/layout/default.twig new file mode 100644 index 0000000000..02edacd333 --- /dev/null +++ b/resources/views/layout/default.twig @@ -0,0 +1,247 @@ + + + + + + + + + + + + {% if subTitle %} + {{ subTitle }} » + {% endif %} + {% if title != "Firefly III" %} + {{ title }} » + {% endif %} + + Firefly III + + + + {# CSS things #} + {# libraries #} + + + + + {# the theme #} + + + + {# Firefly III customisations #} + + + {# Extra CSS for the demo: #} + {% if not shownDemo %} + + {% endif %} + + {# Any local custom CSS. #} + {% block styles %}{% endblock %} + + + {# this entry is in the header so it's loaded early #} + + + {# favicons #} + {% include 'partials.favicons' %} + + + +
+ +
+ + {# Logo #} + + + +
+ + +
+
+ {% include('partials.page-header') %} + {% block breadcrumbs %}{% endblock %} +
+ +
+ {% if IS_DEMO_SITE %} +
+
+

+ {% include ['demo.' ~ Route.getCurrentRoute.getName, 'demo.no-demo-text'] %} +

+
+
+ {% endif %} + + {% include('partials.flashes') %} + + {% block content %}{% endblock %} +
+
+ + + {% include('partials.control-bar') %} + +
+ + + + +{# Java libraries and stuff: #} + +{% block definitions %}{% endblock %} + +{# Moment JS #} + + + +{# All kinds of variables. #} + + +{# Base script: jquery and bootstrap #} + + +{# Vue scripts and components. Only loaded when needed #} +{% if VUE_SCRIPT_NAME %} + + +{% endif %} + +{# date range picker, current template, etc.#} + + + + +{# Firefly III code#} + + +{% if not shownDemo %} + + + +{% endif %} + +{% block scripts %}{% endblock %} + +{% if config('firefly.tracker_site_id') != '' and config('firefly.tracker_url') != '' %} + + + + +{% endif %} + + + + + + diff --git a/resources/views/layout/empty.twig b/resources/views/layout/empty.twig new file mode 100644 index 0000000000..66d336b59c --- /dev/null +++ b/resources/views/layout/empty.twig @@ -0,0 +1,77 @@ + + + + + + + Firefly III + + + + + + {# CSS things #} + + {# libraries #} + + + + + {# the theme #} + + + + {# Firefly III customisations #} + + + + + {# favicons #} + {% include('partials.favicons') %} + + + +
+ + {% block content %}{% endblock %} +
+ + + +{% if config('firefly.tracker_site_id') != '' and config('firefly.tracker_url') != '' %} + + + + +{% endif %} + + + + + diff --git a/resources/views/layout/guest.twig b/resources/views/layout/guest.twig new file mode 100644 index 0000000000..8e2ce34b15 --- /dev/null +++ b/resources/views/layout/guest.twig @@ -0,0 +1,92 @@ + + + + + + + + + Firefly III + + {% if title != "Firefly" and title != "" %} + // {{ title }} + {% endif %} + + {% if subTitle %} + // {{ subTitle }} + {% endif %} + + + + + + {# CSS things #} + + {# libraries #} + + + + + {# the theme #} + + + + {# Firefly III customisations #} + + + + + {# favicons #} + {% include('partials.favicons') %} + + + +
+ + {% block content %}{% endblock %} +
+
+ + Developed by James Cole, the source code is licensed under the AGPL-3.0-or-later. + +
+ + + +{% if config('firefly.tracker_site_id') != '' and config('firefly.tracker_url') != '' %} + + + + +{% endif %} + + + + + diff --git a/resources/views/layout/install.twig b/resources/views/layout/install.twig new file mode 100644 index 0000000000..459e3f03dd --- /dev/null +++ b/resources/views/layout/install.twig @@ -0,0 +1,52 @@ + + + + + + + Firefly III - Installation and update + + + + + + {# libraries #} + + + + + + + + + {# favicons #} + {% include('partials.favicons') %} + + + +
+ + {% block content %}{% endblock %} +
+ +{% block scripts %}{% endblock %} + + + + diff --git a/resources/views/list/accounts.twig b/resources/views/list/accounts.twig new file mode 100644 index 0000000000..c470d93b5a --- /dev/null +++ b/resources/views/list/accounts.twig @@ -0,0 +1,121 @@ +
+ {{ accounts.links('pagination.bootstrap-4')|raw }} +
+ + + + + + {% if objectType == 'asset' %} + + {% endif %} + {% if objectType == 'liabilities' %} + + + + {% endif %} + + + {% if objectType == 'liabilities' %} + + {% endif %} + + {# hide last activity to make room for other stuff #} + {% if objectType != 'liabilities' %} + + {% endif %} + + + + + + {% for account in accounts %} + + + + {% if objectType == "asset" %} + + {% endif %} + {% if objectType == 'liabilities' %} + + + + {% endif %} + + + {% if objectType == 'liabilities' %} + + {% endif %} + + {# hide last activity to make room for other stuff #} + {% if objectType != 'liabilities' %} + {% if account.lastActivityDate %} + + {% else %} + + {% endif %} + {% endif %} + + + + + {% endfor %} + +
{{ trans('list.name') }}{{ trans('list.liability_type') }}{{ trans('form.liability_direction') }}{{ trans('list.interest') }} ({{ trans('list.interest_period') }}){{ trans('list.currentBalance') }} + {{ trans('firefly.left_in_debt') }} +
+ {{ account.name }} + {% if account.location %} + + {% endif %} + {% if account.attachments.count() > 0 %} + + {% endif %} + {{ account.accountTypeString }}{{ trans('firefly.liability_direction_'~account.liability_direction~'_short') }}{{ account.interest }}% ({{ account.interestPeriod|lower }}) + + {{ formatAmountByAccount(account, account.endBalance) }} + + + {% if '-' != account.current_debt %} + {{ formatAmountByAccount(account, account.current_debt, false) }} + {% endif %} +
+
+ {{ accounts.links('pagination.bootstrap-4')|raw }} +
diff --git a/resources/views/list/attachments.twig b/resources/views/list/attachments.twig new file mode 100644 index 0000000000..e67e669062 --- /dev/null +++ b/resources/views/list/attachments.twig @@ -0,0 +1,47 @@ + + {% for attachment in attachments %} + + + + + {% endfor %} +
+
+ + + {% if attachment.file_exists %} + + {% endif %} + {% if not attachment.file_exists %} + + {% endif %} +
+
+ {% if attachment.file_exists %} + + + {% if attachment.title %} + {{ attachment.title }} + {% else %} + {{ attachment.filename }} + {% endif %} + + ({{ attachment.size|filesize }}) + {% if null != attachment.notes_text and '' != attachment.notes_text %} + {{ attachment.notes_text|default('')|markdown }} + {% endif %} + {% endif %} + {% if not attachment.file_exists %} + + {% if attachment.title %} + {{ attachment.title }} + {% else %} + {{ attachment.filename }} + {% endif %} +
+ {{ 'attachment_not_found'|_ }} + {% endif %} +
diff --git a/resources/views/list/bills.twig b/resources/views/list/bills.twig new file mode 100644 index 0000000000..47ac1bcfe4 --- /dev/null +++ b/resources/views/list/bills.twig @@ -0,0 +1,210 @@ +
+ {{ paginator.links('pagination.bootstrap-4')|raw }} +
+ + + + + + + + + + + + + + {% for objectGroupOrder, objectGroup in bills %} + {% if objectGroup.bills|length > 0 %} + + + + + + + {% for entry in objectGroup.bills %} + + + + + + + + {# + paidDates = 0 (bill not paid in period) + pay_dates = 0 (bill not expected to be paid in this period) + bill is active. + #} + {% if entry.paid_dates|length == 0 and entry.pay_dates|length == 0 and entry.active %} + + + {% endif %} + + {# + paid_dates = 0 (bill not paid in period) + pay_dates > 0 (bill IS expected to be paid in this period) + bill is active + first pay date is in the past. + #} + {% if entry.paid_dates|length == 0 and entry.pay_dates|length > 0 and entry.active %} + + + {% endif %} + + {# + paid_dates >= 0 (bill is paid X times). + Don't care about pay_dates. + #} + {% if entry.paid_dates|length > 0 and entry.active %} + + + {% endif %} + {# bill is not active #} + {% if not entry.active %} + + + {% endif %} + + + {% endfor %} + {% for sum in sums[objectGroupOrder] %} + {% if '0' != sum.avg %} + + + + + + + + + + {% endif %} + {% if '0' != sum.per_period %} + + + + + + + + + + {% endif %} + {% endfor %} + + {% endif %} + {% endfor %} + {% if totals|length > 0 %} + + + + + {% for sum in totals %} + {% if '0' != sum.avg %} + + + + + + + + + + {% endif %} + {% if '0' != sum.per_period %} + + + + + + + + + + {% endif %} + {% endfor %} + + {% endif %} + +
{{ trans('list.name') }}{{ trans('list.matchingAmount') }}
{{ objectGroup.object_group_title }}
+ {% if not entry.active %} + + {% endif %} + {{ entry.name }} + {# count attachments #} + {% if entry.attachments.count() > 0 %} + + {% endif %} + + + + ~ {{ formatAmountBySymbol((entry.amount_max + entry.amount_min)/2, entry.currency_symbol, entry.currency_decimal_places) }} + +
+ {{ 'sum'|_ }} ({{ sum.currency_name }}) ({{ 'active_exp_bills_only'|_ }}) + + {{ formatAmountBySymbol(sum.avg, sum.currency_symbol, sum.currency_decimal_places) }} +  
+ {{ ('per_period_sum_'~sum.period)|_ }} ({{ sum.currency_name }}) ({{ 'active_bills_only'|_ }}) + + {{ formatAmountBySymbol(sum.per_period, sum.currency_symbol, sum.currency_decimal_places) }} +  
+ {{ 'sum'|_ }} ({{ sum.currency_name }}) ({{ 'active_exp_bills_only_total'|_ }}) + + {{ formatAmountBySymbol(sum.avg, sum.currency_symbol, sum.currency_decimal_places) }} +  
+ {{ ('per_period_sum_'~sum.period)|_ }} ({{ sum.currency_name }}) ({{ 'active_bills_only_total'|_ }}) + + {{ formatAmountBySymbol(sum.per_period, sum.currency_symbol, sum.currency_decimal_places) }} +  
+
+ {{ paginator.links('pagination.bootstrap-4')|raw }} +
diff --git a/resources/views/list/categories.twig b/resources/views/list/categories.twig new file mode 100644 index 0000000000..7438f4311e --- /dev/null +++ b/resources/views/list/categories.twig @@ -0,0 +1,47 @@ +
+ {{ categories.links('pagination.bootstrap-4')|raw }} +
+ + + + + + + + + + + + + + + {% for category in categories %} + + + + {% if category.lastActivity %} + + {% else %} + + {% endif %} + + {% endfor %} + +
 {{ trans('list.name') }}
 {{ 'without_category'|_ }}
+
+ + +
+
+ {{ category.name }} + {% if category.attachments.count() > 0 %} + + {% endif %} +
+
+ {{ categories.links('pagination.bootstrap-4')|raw }} +
diff --git a/resources/views/list/groups-tiny.twig b/resources/views/list/groups-tiny.twig new file mode 100644 index 0000000000..722f7d2f0a --- /dev/null +++ b/resources/views/list/groups-tiny.twig @@ -0,0 +1,65 @@ +
+ {% for transaction in transactions %} + + {% if transaction.transaction_group_title %} + {{ transaction.transaction_group_title }}: + {% endif %} + {{ transaction.description }} + + + {% if transaction.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% elseif transaction.transaction_type_type == 'Transfer' %} + + {# transfer away: #} + {% if transaction.source_account_id == account.id %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places, false) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places, false) }}) + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places, false) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places, false) }}) + {% endif %} + {% endif %} + + {# transfer to #} + + {% elseif transaction.transaction_type_type == 'Opening balance' %} + {% if transaction.source_account_type == 'Initial balance account' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + {% elseif transaction.transaction_type_type == 'Reconciliation' %} + {% if transaction.source_account_type == 'Reconciliation account' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + + + {% endfor %} +
diff --git a/resources/views/list/groups.twig b/resources/views/list/groups.twig new file mode 100644 index 0000000000..436cf28129 --- /dev/null +++ b/resources/views/list/groups.twig @@ -0,0 +1,314 @@ + + + + {% if showCategory or showBudget %} + + {% else %} + + {% endif %} + + + + + + + + + + + {% if showCategory %} + + {% endif %} + {% if showBudget %} + + {% endif %} + + + + + + {% for group in groups %} + {% if group.count > 1 %} + + + + + {% if showCategory or showBudget %} + + {% else %} + + {% endif %} + + + + {% endif %} + {% for index, transaction in group.transactions %} + {% set style="" %} + {% if group.transactions|length == loop.index and group.count > 1 %} + {% set style="border-bottom:1px #aaa solid;" %} + {% endif %} + + + + + + + + {% if showCategory %} + + {% endif %} + {% if showBudget %} + + {% endif %} + + {% if group.count == 1 %} + + + {% endif %} + {% if group.count != 1 %} + + {% endif %} + + + {% endfor %} + {% endfor %} + + + + + + + {% if showCategory or showBudget %} + + {% else %} + + {% endif %} + + +
{{ groups.links('pagination.bootstrap-4')|raw }}{{ groups.links('pagination.bootstrap-4')|raw }}
{{ trans('list.description') }}{{ trans('list.amount') }}{{ trans('list.source_account') }}{{ trans('list.destination_account') }}
+ + {{ group.title }} + + + {% for sum in group.sums %} + {% if group.transaction_type == 'Deposit' %} + {{ formatAmountBySymbol(sum.amount*-1, sum.currency_symbol, sum.currency_decimal_places) }}{% if loop.index != group.sums|length %},{% endif %} + {% elseif group.transaction_type == 'Transfer' %} + + {{ formatAmountBySymbol(sum.amount*-1, sum.currency_symbol, sum.currency_decimal_places, false) }}{% if loop.index != group.sums|length %},{% endif %}X + + {% else %} + {{ formatAmountBySymbol(sum.amount, sum.currency_symbol, sum.currency_decimal_places) }}{% if loop.index != group.sums|length %},{% endif %} + {% endif %} + {% endfor %} +   
+ {% if transaction.reconciled %} + + {% endif %} + {% if transaction.attachments|length > 0 %} + + {% endif %} + {% if group.count == 1 %} + + {% endif %} + {{ transaction.description }} + {% if group.count == 1 %} + + {% endif %} + + {# deposit #} + {% if transaction.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {# transfer #} + {% elseif transaction.transaction_type_type == 'Transfer' %} + + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places, false) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places, false) }}) + {% endif %} + + {# opening balance #} + {% elseif transaction.transaction_type_type == 'Opening balance' %} + {% if transaction.source_account_type == 'Initial balance account' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + {# reconciliation #} + {% elseif transaction.transaction_type_type == 'Reconciliation' %} + {% if transaction.source_account_type == 'Reconciliation account' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + {# liability credit #} + {% elseif transaction.transaction_type_type == 'Liability credit' %} + {% if transaction.source_account_type == 'Liability credit' %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + + + {# THE REST #} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + + {% if 'Cash account' == transaction.source_account_type %} + ({{ 'cash'|_ }}) + {% else %} + {{ transaction.source_account_name }} + {% endif %} + + {% if 'Cash account' == transaction.destination_account_type %} + ({{ 'cash'|_ }}) + {% else %} + {{ transaction.destination_account_name }} + {% endif %} +
+ +
{{ groups.links('pagination.bootstrap-4')|raw }}{{ groups.links('pagination.bootstrap-4')|raw }}
+ diff --git a/resources/views/list/journals-array-tiny.twig b/resources/views/list/journals-array-tiny.twig new file mode 100644 index 0000000000..bdf225d4db --- /dev/null +++ b/resources/views/list/journals-array-tiny.twig @@ -0,0 +1,12 @@ +
+ {% for group in groups %} + {% for transaction in group.transactions %} + + {{ transaction.description }} + + X + + + {% endfor %} + {% endfor %} +
diff --git a/resources/views/list/periods.twig b/resources/views/list/periods.twig new file mode 100644 index 0000000000..2fde0b1c41 --- /dev/null +++ b/resources/views/list/periods.twig @@ -0,0 +1,84 @@ +{% for period in periods %} +
+ +
+ + {% if period.total_transactions > 0 %} + + + + + {% endif %} + + {% for entry in period.spent %} + {% if entry.amount != 0 %} + + + + + {% endif %} + {% endfor %} + + {% for entry in period.earned %} + {% if entry.amount != 0 %} + + + + + {% endif %} + {% endfor %} + + {% for entry in period.transferred %} + {% if entry.amount != 0 %} + + + + + {% endif %} + {% endfor %} + + {% for entry in period.transferred_away %} + {% if entry.amount != 0 %} + + + + + {% endif %} + {% endfor %} + + {% for entry in period.transferred_in %} + {% if entry.amount != 0 %} + + + + + {% endif %} + {% endfor %} +
{{ 'transactions'|_ }}{{ period.total_transactions }}
{{ 'spent'|_ }} + + {{ formatAmountBySymbol(entry.amount, entry.currency_symbol, entry.currency_decimal_places) }} + +
{{ 'earned'|_ }} + + {{ formatAmountBySymbol(entry.amount*-1, entry.currency_symbol, entry.currency_decimal_places) }} + +
{{ 'transferred'|_ }} + + {{ formatAmountBySymbol(entry.amount*-1, entry.currency_symbol, entry.currency_decimal_places) }} + +
{{ 'transferred_away'|_ }} + + {{ formatAmountBySymbol(entry.amount*-1, entry.currency_symbol, entry.currency_decimal_places) }} + +
{{ 'transferred_in'|_ }} + + {{ formatAmountBySymbol(entry.amount*-1, entry.currency_symbol, entry.currency_decimal_places) }} + +
+
+
+ +{% endfor %} diff --git a/resources/views/list/piggy-bank-events.twig b/resources/views/list/piggy-bank-events.twig new file mode 100644 index 0000000000..26765de16d --- /dev/null +++ b/resources/views/list/piggy-bank-events.twig @@ -0,0 +1,35 @@ + + + {% if showPiggyBank %} + + {% endif %} + + + + {% for event in events %} + + {% if showPiggyBank %} + + {% endif %} + + + + + {% endfor %} +
{{ trans('list.piggy_bank') }}{{ trans('list.date') }}{{ trans('list.amount') }}
+ {{ event.piggyBank.name }} + + {% if event.transaction_journal_id %} + {{ event.date.formatLocalized(monthAndDayFormat) }} + {% else %} + {{ event.date.formatLocalized(monthAndDayFormat) }} + {% endif %} + + + {% if event.amount < 0 %} + {{ trans('firefly.removed_amount', {amount: formatAmountByAccount(event.piggyBank.account, event.amount, false)})|raw }} + {% else %} + {{ trans('firefly.added_amount', {amount: formatAmountByAccount(event.piggyBank.account, event.amount, false)})|raw }} + {% endif %} +
diff --git a/resources/views/list/piggy-banks.twig b/resources/views/list/piggy-banks.twig new file mode 100644 index 0000000000..c530ff3cb4 --- /dev/null +++ b/resources/views/list/piggy-banks.twig @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + {% for objectGroupOrder, objectGroup in piggyBanks %} + {% if objectGroup.piggy_banks|length > 0 %} + + + + + + {% for piggy in objectGroup.piggy_banks %} + + + + + + + + + + + + + + + + + + {% endfor %} + + + + {# handle #} + {# buttons #} + + + {# remove money #} + {# progress#} + {# add money #} + + + + + + {% endif %} + {% endfor %} +
 {{ 'piggy_bank'|_ }}{{ 'saved_so_far'|_ }}
 {{ objectGroup.object_group_title }}
+ {{ piggy.name }} + {% if piggy.attachments.count() > 0 %} + + {% endif %} + + {{ formatAmountBySymbol(piggy.current_amount,piggy.currency_symbol,piggy.currency_decimal_places) }} +
  + {% for sum in objectGroup.sums %} + {{ formatAmountBySymbol(sum.saved, sum.currency_symbol, sum.currency_decimal_places) }}
+ {% endfor %} +
diff --git a/resources/views/new-user/index.twig b/resources/views/new-user/index.twig new file mode 100644 index 0000000000..80f0eb1125 --- /dev/null +++ b/resources/views/new-user/index.twig @@ -0,0 +1,71 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+ + +
+
+ +
+
+

{{ 'getting_started'|_ }}

+
+
+

+ {{ 'welcome'|_ }} +

+

+ {{ 'to_get_started'|_ }} +

+ {{ ExpandedForm.text('bank_name') }} + {{ CurrencyForm.balanceAll('bank_balance') }} + +

+ {{ 'currency_not_present'|_ }} +

+ +

+ {{ 'savings_balance_text'|_ }} +

+ + {{ ExpandedForm.number('savings_balance',0) }} + +

+ {{ 'set_preferred_language'|_ }} +

+
+ +
+ +
+
+ + +

+ {{ 'finish_up_new_user'|_ }} +

+ +
+ +
+
+
+
+ + +{% endblock %} diff --git a/resources/views/object-groups/delete.twig b/resources/views/object-groups/delete.twig new file mode 100644 index 0000000000..2358f07b7c --- /dev/null +++ b/resources/views/object-groups/delete.twig @@ -0,0 +1,42 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, objectGroup) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_object_group', {'title': objectGroup.title}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.object_group_areYouSure', {'title': objectGroup.title}) }} +

+ + {% if piggyBanks > 0 %} +

+ {{ Lang.choice('form.not_delete_piggy_banks', piggyBanks, {count: piggyBanks}) }} +

+ {% endif %} + +
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/object-groups/edit.twig b/resources/views/object-groups/edit.twig new file mode 100644 index 0000000000..910ec0fee3 --- /dev/null +++ b/resources/views/object-groups/edit.twig @@ -0,0 +1,58 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, objectGroup) }} +{% endblock %} + +{% block content %} + {{ Form.model(objectGroup, {'class' : 'form-horizontal','enctype': 'multipart/form-data','id' : 'update','url' : route('object-groups.update',objectGroup.id)}) }} + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('title') }} +
+
+ +
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','object group') }} +
+ +
+ +
+
+ +{% endblock %} +{% block scripts %} + + + + {# auto complete for object groups #} + + +{% endblock %} + +{% block styles %} + + +{% endblock %} diff --git a/resources/views/object-groups/index.twig b/resources/views/object-groups/index.twig new file mode 100644 index 0000000000..b0085a58f2 --- /dev/null +++ b/resources/views/object-groups/index.twig @@ -0,0 +1,77 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render }} +{% endblock %} +{% block content %} +
+
+
+
+

{{ 'object_groups'|_ }}

+
+ {% if objectGroups|length == 0 %} +
+
+
+

+ {{ 'object_groups_empty_explain'|_ }} +

+
+
+
+ {% endif %} + {% if objectGroups|length > 0 %} +
+ + + + + + + + + + {% for objectGroup in objectGroups %} + + + + + + {% endfor %} + +
  + {{ 'object_group_title'|_ }} + +   +
+ {{ objectGroup.title }}
+ + {% for piggyBank in objectGroup.piggyBanks %} + - {{ 'piggy_bank'|_ }}: {{ piggyBank.name }}
+ {% endfor %} + {% for bill in objectGroup.bills %} + - {{ 'bill'|_ }}: {{ bill.name }}
+ {% endfor %} +
+ +
+
+ {% endif %} +
+
+
+{% endblock %} +{% block scripts %} + + +{% endblock %} +{% block styles %} +{% endblock %} diff --git a/resources/views/pagination/bootstrap-4.blade.php b/resources/views/pagination/bootstrap-4.blade.php new file mode 100644 index 0000000000..63c6f56b59 --- /dev/null +++ b/resources/views/pagination/bootstrap-4.blade.php @@ -0,0 +1,46 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/pagination/default.blade.php b/resources/views/pagination/default.blade.php new file mode 100644 index 0000000000..0db70b5627 --- /dev/null +++ b/resources/views/pagination/default.blade.php @@ -0,0 +1,46 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/pagination/semantic-ui.blade.php b/resources/views/pagination/semantic-ui.blade.php new file mode 100644 index 0000000000..8d7f8249d6 --- /dev/null +++ b/resources/views/pagination/semantic-ui.blade.php @@ -0,0 +1,36 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/pagination/simple-bootstrap-4.blade.php b/resources/views/pagination/simple-bootstrap-4.blade.php new file mode 100644 index 0000000000..4bb491742a --- /dev/null +++ b/resources/views/pagination/simple-bootstrap-4.blade.php @@ -0,0 +1,27 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/pagination/simple-default.blade.php b/resources/views/pagination/simple-default.blade.php new file mode 100644 index 0000000000..36bdbc18c6 --- /dev/null +++ b/resources/views/pagination/simple-default.blade.php @@ -0,0 +1,19 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/pagination/simple-tailwind.blade.php b/resources/views/pagination/simple-tailwind.blade.php new file mode 100644 index 0000000000..6872cca360 --- /dev/null +++ b/resources/views/pagination/simple-tailwind.blade.php @@ -0,0 +1,25 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/pagination/tailwind.blade.php b/resources/views/pagination/tailwind.blade.php new file mode 100644 index 0000000000..2dd4d0ef33 --- /dev/null +++ b/resources/views/pagination/tailwind.blade.php @@ -0,0 +1,102 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/partials/boxes.twig b/resources/views/partials/boxes.twig new file mode 100644 index 0000000000..a7c15d9814 --- /dev/null +++ b/resources/views/partials/boxes.twig @@ -0,0 +1,78 @@ + diff --git a/resources/views/partials/control-bar.twig b/resources/views/partials/control-bar.twig new file mode 100644 index 0000000000..0ca560f745 --- /dev/null +++ b/resources/views/partials/control-bar.twig @@ -0,0 +1,132 @@ + +
diff --git a/resources/views/partials/empty.twig b/resources/views/partials/empty.twig new file mode 100644 index 0000000000..b18079818b --- /dev/null +++ b/resources/views/partials/empty.twig @@ -0,0 +1,26 @@ +
+
+
+
+

{{ ('no_'~type~'_title_'~objectType)|_ }}

+
+ +
+

+ {{ ('no_'~type~'_intro_'~objectType)|_ }} +

+

+ {{ ('no_'~type~'_imperative_'~objectType)|_ }} + +

+

+ {{ ('no_'~type~'_create_'~objectType)|_ }} +

+
+ +
+
+
+ diff --git a/resources/views/partials/favicons.twig b/resources/views/partials/favicons.twig new file mode 100644 index 0000000000..3d7760d7e3 --- /dev/null +++ b/resources/views/partials/favicons.twig @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/resources/views/partials/flashes.twig b/resources/views/partials/flashes.twig new file mode 100644 index 0000000000..cd795a2a01 --- /dev/null +++ b/resources/views/partials/flashes.twig @@ -0,0 +1,108 @@ +{# LOCALE ERROR MESSAGE #} +{% if invalidMonetaryLocale %} + +{% endif %} + +{# MANDATORY UPDATE MESSAGE #} +{% if upgrade_security_message and upgrade_security_level %} + +{% endif %} + +{# SUCCESS MESSAGE (ALWAYS SINGULAR) #} +{% if session_has('success') %} + +{% endif %} + +{# INFO MESSAGE (CAN BE MULTIPLE) #} +{% if session_has('info') %} + + +{% endif %} + +{# WARNING MESSAGE (ALWAYS SINGULAR) #} +{% if session_has('warning') %} + +{% endif %} + +{# ERROR MESSAGE (CAN BE MULTIPLE) #} +{% if session_has('error') %} + +{% endif %} + diff --git a/resources/views/partials/journal-row.twig b/resources/views/partials/journal-row.twig new file mode 100644 index 0000000000..9bd55d9c60 --- /dev/null +++ b/resources/views/partials/journal-row.twig @@ -0,0 +1 @@ +

REPLACE ME

diff --git a/resources/views/partials/layout/breadcrumbs.twig b/resources/views/partials/layout/breadcrumbs.twig new file mode 100644 index 0000000000..67679dde97 --- /dev/null +++ b/resources/views/partials/layout/breadcrumbs.twig @@ -0,0 +1,13 @@ + +{% if breadcrumbs|length > 0 %} + + +{% endif %} diff --git a/resources/views/partials/menu-sidebar.twig b/resources/views/partials/menu-sidebar.twig new file mode 100644 index 0000000000..07a57665c5 --- /dev/null +++ b/resources/views/partials/menu-sidebar.twig @@ -0,0 +1,234 @@ + diff --git a/resources/views/partials/page-header.twig b/resources/views/partials/page-header.twig new file mode 100644 index 0000000000..ec7215d523 --- /dev/null +++ b/resources/views/partials/page-header.twig @@ -0,0 +1,14 @@ +

+ {% if mainTitleIcon %} + + {% endif %} + {{ title }} + {% if subTitle %} + + {% if subTitleIcon %} + + {% endif %} + {{ subTitle }} + + {% endif %} +

diff --git a/resources/views/partials/password-modal.twig b/resources/views/partials/password-modal.twig new file mode 100644 index 0000000000..cdb8c48654 --- /dev/null +++ b/resources/views/partials/password-modal.twig @@ -0,0 +1,35 @@ + diff --git a/resources/views/partials/transaction-row.twig b/resources/views/partials/transaction-row.twig new file mode 100644 index 0000000000..9bd55d9c60 --- /dev/null +++ b/resources/views/partials/transaction-row.twig @@ -0,0 +1 @@ +

REPLACE ME

diff --git a/resources/views/piggy-banks/add-mobile.twig b/resources/views/piggy-banks/add-mobile.twig new file mode 100644 index 0000000000..cf1c811d1c --- /dev/null +++ b/resources/views/piggy-banks/add-mobile.twig @@ -0,0 +1,44 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, piggyBank) }} +{% endblock %} + +{% block content %} +
+ +
+
+
+
+

{{ trans('firefly.add_money_to_piggy', {name: piggyBank.name}) }}

+
+
+ {% if maxAmount > 0 %} +

+ {{ 'max_amount_add'|_ }}: {{ formatAmountByCurrency(currency,maxAmount) }}. +

+ +
+
{{ currency.symbol|raw }}
+ +
+

+   +

+ + {% else %} +

{{ 'no_money_for_piggy'|_ }}

+ {% endif %} + + +
+
+
+ +
+
+{% endblock %} diff --git a/resources/views/piggy-banks/add.twig b/resources/views/piggy-banks/add.twig new file mode 100644 index 0000000000..9c4da8d832 --- /dev/null +++ b/resources/views/piggy-banks/add.twig @@ -0,0 +1,37 @@ + + diff --git a/resources/views/piggy-banks/create.twig b/resources/views/piggy-banks/create.twig new file mode 100644 index 0000000000..bcb5c84ece --- /dev/null +++ b/resources/views/piggy-banks/create.twig @@ -0,0 +1,75 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+ + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ + {{ ExpandedForm.text('name') }} + {{ AccountForm.assetAccountList('account_id', null, {label: 'saveOnAccount'|_ }) }} + {{ ExpandedForm.amountNoCurrency('targetamount') }} + +
+
+
+
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.date('targetdate') }} + {{ ExpandedForm.textarea('notes', null, {helpText: trans('firefly.field_supports_markdown')} ) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} + {{ ExpandedForm.objectGroup() }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','piggy bank') }} +
+ +
+ +
+
+
+{% endblock %} +{% block scripts %} + + + + + {# auto complete for object groups #} + + +{% endblock %} + +{% block styles %} + + +{% endblock %} diff --git a/resources/views/piggy-banks/delete.twig b/resources/views/piggy-banks/delete.twig new file mode 100644 index 0000000000..2cb1982a74 --- /dev/null +++ b/resources/views/piggy-banks/delete.twig @@ -0,0 +1,35 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, piggyBank) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('firefly.delete_piggy_bank', {'name': piggyBank.name}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.piggyBank_areYouSure', {'name': piggyBank.name}) }} +

+
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/piggy-banks/edit.twig b/resources/views/piggy-banks/edit.twig new file mode 100644 index 0000000000..963ddfa1ba --- /dev/null +++ b/resources/views/piggy-banks/edit.twig @@ -0,0 +1,77 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, piggyBank) }} +{% endblock %} + +{% block content %} + {{ Form.model(piggyBank, {'class' : 'form-horizontal','enctype': 'multipart/form-data','id' : 'update','url' : route('piggy-banks.update',piggyBank.id)}) }} + + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ + {{ ExpandedForm.text('name') }} + {{ AccountForm.assetAccountList('account_id', null, {label: 'saveOnAccount'|_ }) }} + {{ ExpandedForm.amountNoCurrency('targetamount') }} + +
+
+ +
+
+
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.date('startdate') }} + {{ ExpandedForm.date('targetdate') }} + {{ ExpandedForm.textarea('notes', null, {helpText: trans('firefly.field_supports_markdown')}) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} + {{ ExpandedForm.objectGroup() }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','piggy bank') }} +
+ +
+ +
+
+ +{% endblock %} +{% block scripts %} + + + + {# auto complete for object groups #} + + +{% endblock %} + +{% block styles %} + + +{% endblock %} diff --git a/resources/views/piggy-banks/index.twig b/resources/views/piggy-banks/index.twig new file mode 100644 index 0000000000..6348dc3803 --- /dev/null +++ b/resources/views/piggy-banks/index.twig @@ -0,0 +1,80 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + {% if piggyBanks|length == 0 %} + {% include 'partials.empty' with {objectType: 'default', type: 'piggies',route: route('piggy-banks.create')} %} + {% else %} +
+
+
+
+

{{ 'piggyBanks'|_ }}

+
+
+ + {% include 'list/piggy-banks' %} +
+ +
+
+
+ +
+
+
+
+

{{ 'account_status'|_ }}

+
+
+ + + + + + + + + + + + + {% for id,info in accounts %} + + + + + + + + + {% endfor %} + +
{{ 'account'|_ }}{{ 'left_for_piggy_banks'|_ }}
{{ info.name }} + {{ formatAmountBySymbol(info.left,info.currency_symbol,info.currency_decimal_places) }} +
+
+
+
+
+{% endif %} +{% endblock %} +{% block scripts %} + + +{% endblock %} diff --git a/resources/views/piggy-banks/remove-mobile.twig b/resources/views/piggy-banks/remove-mobile.twig new file mode 100644 index 0000000000..71594408bb --- /dev/null +++ b/resources/views/piggy-banks/remove-mobile.twig @@ -0,0 +1,40 @@ +{% extends './v1/layout/default' %} +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, piggyBank) }} +{% endblock %} + +{% block content %} +
+ +
+
+
+
+

{{ trans('firefly.remove_money_from_piggy_title', {name: piggyBank.name}) }}

+
+
+ +

+ {{ 'max_amount_remove'|_ }}: {{ formatAmountByCurrency(currency, repetition.currentamount) }}. +

+ +
+
{{ currency.symbol|raw }}
+ +
+

+   +

+ + + +
+
+
+ +
+
+{% endblock %} diff --git a/resources/views/piggy-banks/remove.twig b/resources/views/piggy-banks/remove.twig new file mode 100644 index 0000000000..7527b7d798 --- /dev/null +++ b/resources/views/piggy-banks/remove.twig @@ -0,0 +1,30 @@ + diff --git a/resources/views/piggy-banks/show.twig b/resources/views/piggy-banks/show.twig new file mode 100644 index 0000000000..1d3b9c55b7 --- /dev/null +++ b/resources/views/piggy-banks/show.twig @@ -0,0 +1,146 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, piggyBank) }} +{% endblock %} + +{% block content %} +
+
+
+
+

{{ 'events'|_ }}

+
+
+ +
+
+
+
+
+
+

{{ 'details'|_ }}

+ +
+
+ + + + + + {% if piggy.object_group_title %} + + + + + {% endif %} + + + + + + + + + + + + + + + + + + + + + {% if piggyBank.targetdate %} + + + + + {% endif %} +
{{ 'account'|_ }}{{ piggyBank.account.name }}
{{ 'object_group'|_ }}{{ piggy.object_group_title }}
{{ 'target_amount'|_ }} + {{ formatAmountBySymbol(piggy.target_amount, piggy.currency_symbol, piggy.currency_decimal_places) }} +
{{ 'saved_so_far'|_ }} + {{ formatAmountBySymbol(piggy.current_amount, piggy.currency_symbol, piggy.currency_decimal_places) }} +
{{ 'left_to_save'|_ }} + {{ formatAmountBySymbol(piggy.left_to_save, piggy.currency_symbol, piggy.currency_decimal_places) }} +
{{ 'start_date'|_ }} + {% if piggyBank.startdate %} + {{ piggyBank.startdate.formatLocalized(monthAndDayFormat) }} + {% else %} + {{ 'no_start_date'|_ }} + {% endif %} +
{{ 'target_date'|_ }} + {% if piggyBank.targetdate %} + {{ piggyBank.targetdate.formatLocalized(monthAndDayFormat) }} + {% else %} + {{ 'no_target_date'|_ }} + {% endif %} +
{{ 'suggested_amount'|_ }} + {{ formatAmountBySymbol(piggy.save_per_month, piggy.currency_symbol, piggy.currency_decimal_places) }} + +
+
+
+
+
+

{{ 'transactions'|_ }}

+
+
+ {% include 'list/piggy-bank-events' %} +
+
+
+
+
+ + {% if piggy.notes %} +
+ +
+
+

{{ trans('form.notes') }}

+
+
{{ piggy.notes|default('')|markdown }} +
+
+ +
+ {% endif %} + {% if attachments.count() > 0 %} +
+
+
+

+ {{ 'attachments'|_ }} +

+
+
+ {% include 'list.attachments' %} +
+
+
+ {% endif %} +
+{% endblock %} + +{% block scripts %} + + + + + + +{% endblock %} diff --git a/resources/views/popup/list/journals.twig b/resources/views/popup/list/journals.twig new file mode 100644 index 0000000000..90ff182770 --- /dev/null +++ b/resources/views/popup/list/journals.twig @@ -0,0 +1,151 @@ + + + + + + + + {% if not hideSource %} + + {% endif %} + {% if not hideDestination %} + + {% endif %} + + {# Hide budgets? #} + {% if not hideBudget %} + + {% endif %} + + {# Hide categories? #} + {% if not hideCategory %} + + {% endif %} + + + + {# Make sum: #} + {% set sum = 0 %} + {% set symbol = '' %} + {% set decimal_places =2 %} + {% for transaction in journals %} + {# add to sum #} + {% set symbol = transaction.currency_symbol %} + {% set decimal_places = transaction.currency_decimal_places %} + + + + + + + + + + {% if not hideSource %} + + {% endif %} + + {% if not hideDestination %} + + {% endif %} + + + {% if not hideBudget %} + + {% endif %} + + + {% if not hideCategory %} + + {% endif %} + + {% endfor %} + + + + + + + +
 {{ trans('list.description') }}{{ trans('list.amount') }}
+ + {% if transaction.group_title|length > 0 %} + {{ transaction.group_title }} ({{ transaction.description }}) + {% else %} + {{ transaction.description }} + {% endif %} + + + {% if transaction.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% set sum = (sum + (transaction.amount*-1)) %} + {% elseif transaction.transaction_type_type == 'Transfer' %} + + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places, false) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places, false) }}) + {% endif %} + + {% set sum = (sum + transaction.amount*-1) %} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% set sum = (sum + transaction.amount) %} + {% endif %} + +
{{ 'sum'|_ }}: + {% if sum != 0 %} + {{ formatAmountBySymbol(sum, symbol, decimal_places) }} + {% endif %} +
diff --git a/resources/views/popup/report/balance-amount.twig b/resources/views/popup/report/balance-amount.twig new file mode 100644 index 0000000000..c0d779ae57 --- /dev/null +++ b/resources/views/popup/report/balance-amount.twig @@ -0,0 +1,18 @@ + diff --git a/resources/views/popup/report/budget-spent-amount.twig b/resources/views/popup/report/budget-spent-amount.twig new file mode 100644 index 0000000000..ca6fc60058 --- /dev/null +++ b/resources/views/popup/report/budget-spent-amount.twig @@ -0,0 +1,17 @@ + diff --git a/resources/views/popup/report/category-entry.twig b/resources/views/popup/report/category-entry.twig new file mode 100644 index 0000000000..ac2b1059a7 --- /dev/null +++ b/resources/views/popup/report/category-entry.twig @@ -0,0 +1,16 @@ + diff --git a/resources/views/popup/report/expense-entry.twig b/resources/views/popup/report/expense-entry.twig new file mode 100644 index 0000000000..e6d27a5a77 --- /dev/null +++ b/resources/views/popup/report/expense-entry.twig @@ -0,0 +1,16 @@ + diff --git a/resources/views/popup/report/income-entry.twig b/resources/views/popup/report/income-entry.twig new file mode 100644 index 0000000000..6f6d5c7d26 --- /dev/null +++ b/resources/views/popup/report/income-entry.twig @@ -0,0 +1,19 @@ + diff --git a/resources/views/preferences/index.twig b/resources/views/preferences/index.twig new file mode 100644 index 0000000000..7bc52c708a --- /dev/null +++ b/resources/views/preferences/index.twig @@ -0,0 +1,251 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ + +
+
+ {# start of preferences tabs #} + +
+
+
+
+
+
+ +
+
+
+
+
+{% endblock %} +{% block scripts %} + + + +{% endblock %} + +{% block styles %} + + +{% endblock %} diff --git a/resources/views/profile/change-email.twig b/resources/views/profile/change-email.twig new file mode 100644 index 0000000000..d0bd49ab5d --- /dev/null +++ b/resources/views/profile/change-email.twig @@ -0,0 +1,47 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ 'change_your_email'|_ }}

+
+
+ + {% if errors|length > 0 %} +
    + {% for error in errors.all %} +
  • {{ error }}
  • + {% endfor %} +
+ + {% endif %} + + +
+ +
+ +
+
+ {{ ExpandedForm.staticText('verification',trans('firefly.email_verification')) }} + +
+ +
+
+
+
+{% endblock %} diff --git a/resources/views/profile/change-password.twig b/resources/views/profile/change-password.twig new file mode 100644 index 0000000000..1ef8b2207f --- /dev/null +++ b/resources/views/profile/change-password.twig @@ -0,0 +1,69 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ 'change_your_password'|_ }}

+
+
+ + {% if errors|length > 0 %} +
    + {% for error in errors.all %} +
  • {{ error }}
  • + {% endfor %} +
+ + {% endif %} + + +
+ + +
+ +
+
+ +
+ + +
+ +
+
+ +
+ + +
+ +
+
+ + {{ ExpandedForm.checkbox('verify_password','1', true) }} +

+ {{ 'what_is_pw_security'|_ }} +

+ +
+ +
+
+
+
+ {% include 'partials.password-modal' %} +{% endblock %} diff --git a/resources/views/profile/code.twig b/resources/views/profile/code.twig new file mode 100644 index 0000000000..2e8edf81d0 --- /dev/null +++ b/resources/views/profile/code.twig @@ -0,0 +1,62 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ +
+
+
+
+

{{ 'pref_two_factor_auth_code'|_ }}

+
+
+

+ {{ 'pref_two_factor_auth_code_help'|_ }} +

+
+
+ + {{ image|raw }} +
+

+ {{ trans('firefly.2fa_use_secret_instead', {secret: secret|escape})|raw }} +

+

+ {{ '2fa_backup_codes'|_ }} +

+
{{ codes }}
+
+
+
+
+
+
+
+
+
+ {{ ExpandedForm.text('code', code) }} +
+ +
+
+
+
+{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/profile/delete-account.twig b/resources/views/profile/delete-account.twig new file mode 100644 index 0000000000..64bb5cf8e0 --- /dev/null +++ b/resources/views/profile/delete-account.twig @@ -0,0 +1,55 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ 'delete_your_account'|_ }}

+
+
+ +

+ {{ 'delete_your_account_help'|_ }} +

+ +

+ {{ 'delete_your_account_password'|_ }} + +

+ + {% if errors|length > 0 %} +
    + {% for error in errors.all %} +
  • {{ error }}
  • + {% endfor %} +
+ + {% endif %} + +
+ + +
+ +
+
+
+ +
+
+
+
+ +{% endblock %} diff --git a/resources/views/profile/index.twig b/resources/views/profile/index.twig new file mode 100644 index 0000000000..3c7e7db198 --- /dev/null +++ b/resources/views/profile/index.twig @@ -0,0 +1,294 @@ +{% set VUE_SCRIPT_NAME = 'profile' %} +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+
+ + + +
+ + +
+
+
+

+ {{ trans('firefly.user_id_is',{user: userId})|raw }} +

+
+
+ +
+
+
+
+
+ + +
+
+
+

+ {{ 'explain_command_line_token'|_ }} +

+

+ + +

+
+

+ + + +

+
+
+
+
+ + +
+
+
+ + {% if true == isInternalAuth and true == isInternalIdentity %} + +
+
+
+

{{ 'pref_two_factor_auth_help'|_ }}

+ {% if enabled2FA == true %} +

+ {{ trans_choice('firefly.pref_two_factor_backup_code_count', mfaBackupCount) }} +

+ + +
+ + +
+
+ + +
+ {% else %} +
+ + +
+ {% endif %} +
+
+
+ {% endif %} + + +
+
+
+
+

+ {{ 'permanent_delete_stuff'|_ }} +

+

{{ 'financial_control'|_ }}

+

+ + + + + +

+

{{ 'automation'|_ }}

+

+ + + +

+ +

{{ 'classification'|_ }}

+

+ + + + + +

+ +

{{ 'accounts'|_ }}

+

+ {{ 'also_delete_transactions'|_ }} +

+

+ + + + + +

+

+ + + +

+

{{ 'transactions'|_ }}

+

+ + + + + + + +

+

+ +

+
+
+
+
+ +
+ +
+
+{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/profile/logout-other-sessions.twig b/resources/views/profile/logout-other-sessions.twig new file mode 100644 index 0000000000..bc59bffa81 --- /dev/null +++ b/resources/views/profile/logout-other-sessions.twig @@ -0,0 +1,35 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ 'logout_other_sessions'|_ }}

+
+
+
+ + +
+ +
+
+
+ +
+
+
+
+ {% include 'partials.password-modal' %} +{% endblock %} diff --git a/resources/views/profile/new-backup-codes.twig b/resources/views/profile/new-backup-codes.twig new file mode 100644 index 0000000000..a8fffec93d --- /dev/null +++ b/resources/views/profile/new-backup-codes.twig @@ -0,0 +1,29 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+
+
+
+

{{ 'pref_two_factor_auth_code'|_ }}

+
+
+
+

+ {{ '2fa_backup_codes'|_ }} +

+
{{ codes }}
+
+
+ +
+
+
+ +{% endblock %} diff --git a/resources/views/recurring/create.twig b/resources/views/recurring/create.twig new file mode 100644 index 0000000000..f2203b34c8 --- /dev/null +++ b/resources/views/recurring/create.twig @@ -0,0 +1,223 @@ +{% extends './v1/layout/default' %} +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} +{% block content %} + +
+ + {# row with recurrence information #} +
+ +
+ {# mandatory recurrence stuff #} +
+
+

{{ 'mandatory_for_recurring'|_ }}

+
+
+ {{ ExpandedForm.text('title') }} + {{ preFilled.first_date.format('Y-m-d') }} + {{ ExpandedForm.date('first_date',null, {helpText: trans('firefly.help_first_date'), min: preFilled.first_date}) }} + {{ ExpandedForm.select('repetition_type', [], null, {helpText: trans('firefly.change_date_other_options')}) }} + {{ ExpandedForm.number('skip', 0) }} + {{ ExpandedForm.select('weekend', weekendResponses, null, {helpText: trans('firefly.help_weekend')}) }} + {{ ExpandedForm.select('repetition_end', repetitionEnds) }} + {{ ExpandedForm.date('repeat_until',null) }} + {{ ExpandedForm.number('repetitions',null) }} + + {# calendar in popup #} +
+ + + +
+
+
+
+ +
+ {# optional recurrence stuff #} +
+
+

{{ 'optional_for_recurring'|_ }}

+
+
+ {{ ExpandedForm.textarea('recurring_description') }} + + {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('active', 1) }} + {{ ExpandedForm.checkbox('apply_rules',1) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+ +
+
+ {# mandatory transaction information #} +
+
+

{{ 'mandatory_for_transaction'|_ }}

+
+
+

{{ 'mandatory_fields_for_tranaction'|_ }}

+ {# three buttons to distinguish type of transaction#} +
+ + + +
+ + {# end of three buttons#} + + {{ ExpandedForm.text('transaction_description') }} + {# transaction information (mandatory) #} + {{ CurrencyForm.currencyList('transaction_currency_id', defaultCurrency.id) }} + {{ ExpandedForm.amountNoCurrency('amount') }} + + {# source account if withdrawal, or if transfer: #} + {{ AccountForm.longAccountList('source_id', null, {label: trans('form.asset_source_account')}) }} + + {# for deposits, a drop down with revenue accounts, loan debt cash and mortgage #} + {{ AccountForm.activeDepositDestinations('deposit_source_id', null, {label: trans('form.deposit_source_id')}) }} + + {# destination if deposit or transfer: #} + {{ AccountForm.longAccountList('destination_id', null, {label: trans('form.asset_destination_account')} ) }} + + {# destination account name for withdrawals #} + {#{{ ExpandedForm.text('destination_name', null, {label: trans('form.expense_account')}) }} #} + + {# NEW for withdrawals, also a drop down with expense accounts, loans, debts, mortgages or (cash). #} + {{ AccountForm.activeWithdrawalDestinations('withdrawal_destination_id', null, {label: trans('form.withdrawal_destination_id')}) }} +
+
+
+ +
+ {# optional transaction information #} +
+
+

{{ 'optional_for_transaction'|_ }}

+
+
+ {# transaction information (optional) #} + {{ CurrencyForm.currencyListEmpty('foreign_currency_id') }} + {{ ExpandedForm.amountNoCurrency('foreign_amount') }} + + {# BUDGET ONLY WHEN CREATING A WITHDRAWAL #} + {% if budgets|length > 1 %} + {{ ExpandedForm.select('budget_id', budgets, null) }} + {% else %} + {{ ExpandedForm.select('budget_id', budgets, null, {helpText: trans('firefly.no_budget_pointer', {link: route('budgets.index')})}) }} + {% endif %} + + {# CATEGORY ALWAYS #} + {{ ExpandedForm.text('category') }} + + {# BILL / SUBSCRIPTION ONLY FOR WITHDRAWALS #} + {% if bills|length > 1 %} + {{ ExpandedForm.select('bill_id', bills, null) }} + {% else %} + {{ ExpandedForm.select('bill_id', bills, null, {helpText: trans('firefly.no_bill_pointer', {link: route('bills.index')})}) }} + {% endif %} + + {# TAGS #} + {{ ExpandedForm.text('tags') }} + + {# RELATE THIS TRANSFER TO A PIGGY BANK #} + {{ PiggyBankForm.piggyBankList('piggy_bank_id') }} +
+
+
+
+ + {# row with submit stuff. #} +
+
+
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','recurrence') }} +
+ +
+
+
+ {# +
+
+
+

{{ 'expected_repetitions'|_ }}

+
+
+ Here. +
+
+
+ + + #} +
+ + {# calendar modal #} + +{% endblock %} +{% block scripts %} + + + + + + + + +{% endblock %} + +{% block styles %} + + + + +{% endblock %} diff --git a/resources/views/recurring/delete.twig b/resources/views/recurring/delete.twig new file mode 100644 index 0000000000..bb0ba4005d --- /dev/null +++ b/resources/views/recurring/delete.twig @@ -0,0 +1,41 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, recurrence) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_recurring', {'title': recurrence.title}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.recurring_areYouSure', {'title': recurrence.title}) }} +

+ +

+ {% if journalsCreated > 0 %} + {{ Lang.choice('form.recurring_keep_transactions', journalsCreated, {count: journalsCreated }) }} + {% endif %} +

+
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/recurring/edit.twig b/resources/views/recurring/edit.twig new file mode 100644 index 0000000000..f76435b9fc --- /dev/null +++ b/resources/views/recurring/edit.twig @@ -0,0 +1,220 @@ +{% extends './v1/layout/default' %} +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, recurrence) }} +{% endblock %} +{% block content %} + + {{ Form.model(recurrence, {'class' : 'form-horizontal','enctype': 'multipart/form-data','id' : 'update','url' : route('recurring.update', recurrence.id)}) }} + + {# row with recurrence information #} +
+ +
+ {# mandatory recurrence stuff #} +
+
+

{{ 'mandatory_for_recurring'|_ }}

+
+
+ + {{ ExpandedForm.text('title') }} + {{ ExpandedForm.date('first_date',array.first_date, {helpText: trans('firefly.help_first_date_no_past')}) }} + {{ ExpandedForm.select('repetition_type', [], null, {helpText: trans('firefly.change_date_other_options')}) }} + {{ ExpandedForm.number('skip', array.repetitions[0].skip) }} + {{ ExpandedForm.select('weekend', weekendResponses, array.repetitions[0].weekend, {helpText: trans('firefly.help_weekend')}) }} + {{ ExpandedForm.select('repetition_end', repetitionEnds, repetitionEnd) }} + {{ ExpandedForm.date('repeat_until',array.repeat_until) }} + {{ ExpandedForm.number('repetitions', array.nr_of_repetitions) }} + + {# calendar in popup #} +
+ + + +
+
+
+
+ +
+ {# optional recurrence stuff #} +
+
+

{{ 'optional_for_recurring'|_ }}

+
+
+ {{ ExpandedForm.textarea('recurring_description',array.description) }} + + {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('active', 1, preFilled.active) }} + {{ ExpandedForm.checkbox('apply_rules', 1, preFilled.apply_rules) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+ +
+
+ {# mandatory transaction information #} +
+
+

{{ 'mandatory_for_transaction'|_ }}

+
+
+

{{ 'mandatory_fields_for_tranaction'|_ }}

+ {# three buttons to distinguish type of transaction#} +
+ + + +
+ + {# end of three buttons#} + {{ ExpandedForm.text('transaction_description', array.transactions[0].description) }} + {# transaction information (mandatory) #} + {{ CurrencyForm.currencyList('transaction_currency_id', array.transactions[0].currency_id) }} + {{ ExpandedForm.amountNoCurrency('amount', array.transactions[0].amount) }} + + {# source account if withdrawal, or if transfer: #} + {{ AccountForm.longAccountList('source_id', array.transactions[0].source_id, {label: trans('form.asset_source_account')}) }} + + {# NEW for deposits, a drop down with revenue accounts, loan debt cash and mortgage #} + {{ AccountForm.activeDepositDestinations('deposit_source_id', preFilled.deposit_source_id, {label: trans('form.deposit_source_id')}) }} + + {# destination if deposit or transfer: #} + {{ AccountForm.longAccountList('destination_id', array.transactions[0].destination_id, {label: trans('form.asset_destination_account')} ) }} + + {# NEW for withdrawals, also a drop down with expense accounts, loans, debts, mortgages or (cash). #} + {{ AccountForm.activeWithdrawalDestinations('withdrawal_destination_id', preFilled.withdrawal_destination_id, {label: trans('form.withdrawal_destination_id')}) }} +
+
+
+ +
+ {# optional transaction information #} +
+
+

{{ 'optional_for_transaction'|_ }}

+
+
+ {# transaction information (optional) #} + {{ CurrencyForm.currencyListEmpty('foreign_currency_id', array.transactions[0].foreign_currency_id) }} + {{ ExpandedForm.amountNoCurrency('foreign_amount', array.transactions[0].foreign_amount) }} + + {# BUDGET ONLY WHEN CREATING A WITHDRAWAL #} + {% if budgets|length > 1 %} + {{ ExpandedForm.select('budget_id', budgets, array.transactions[0].budget_id) }} + {% else %} + {{ ExpandedForm.select('budget_id', budgets, array.transactions[0].budget_id, {helpText: trans('firefly.no_budget_pointer', {link: route('budgets.index')})}) }} + {#budgets#} + {% endif %} + + {# CATEGORY ALWAYS #} + {{ ExpandedForm.text('category',array.transactions[0].category_name) }} + + {# BILL ONLY WHEN CREATING A WITHDRAWAL #} + {% if bills|length > 1 %} + {{ ExpandedForm.select('bill_id', bills, array.transactions[0].bill_id) }} + {% else %} + {{ ExpandedForm.select('bill_id', bills, array.transactions[0].bill_id, {helpText: trans('firefly.no_bill_pointer', {link: route('bills.index')})}) }} + {% endif %} + + {# TAGS #} + {{ ExpandedForm.text('tags', array.transactions[0].tags) }} + + {# RELATE THIS TRANSFER TO A PIGGY BANK #} + {{ PiggyBankForm.piggyBankList('piggy_bank_id',array.transactions[0].piggy_bank_id) }} +
+
+
+
+ + {# row with submit stuff. #} +
+
+
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','recurrence') }} +
+ +
+
+
+ {# +
+
+
+

{{ 'expected_repetitions'|_ }}

+
+
+ Here. +
+
+
+ + + #} + + + {# calendar modal #} + +{% endblock %} +{% block scripts %} + + + + + + + + +{% endblock %} + +{% block styles %} + + + + +{% endblock %} diff --git a/resources/views/recurring/index.twig b/resources/views/recurring/index.twig new file mode 100644 index 0000000000..b85d62a593 --- /dev/null +++ b/resources/views/recurring/index.twig @@ -0,0 +1,166 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + + {% if total > 0 %} +
+
+
+
+

+ {{ 'recurrences'|_ }} +

+ +
+ +
+ + + +
+ {{ paginator.links('pagination.bootstrap-4')|raw }} +
+ + + + + + + + + + + + {% for rt in paginator %} + + + + + + + + {% endfor %} + +
{{ trans('list.title') }}{{ trans('list.transaction_s') }}{{ trans('list.repetitions') }}{{ trans('list.next_due') }}
+ {% if rt.attachments > 0 %} + + {% endif %} + {% if rt.active == false %}{% endif %} + {{ rt.type|_ }}: + {{ rt.title }} + {% if rt.active == false %} ({{ 'inactive'|_|lower }}){% endif %} + {% if rt.description|length > 0 %} +
{{ rt.description }}
+ {% endif %} + + +
+
    + {% for rtt in rt.transactions %} +
  1. + {# normal amount + comma#} + {{ formatAmountBySymbol(rtt['amount'],rtt['currency_symbol'],rtt['currency_decimal_places']) }}{% if rtt['foreign_amount'] == null %},{% endif %} + + {# foreign amount + comma #} + {% if null != rtt['foreign_amount'] %} + ({{ formatAmountBySymbol(rtt['foreign_amount'],rtt['foreign_currency_symbol'],rtt['foreign_currency_decimal_places']) }}), + {% endif %} + {{ rtt['source_name'] }} + → + {{ rtt['destination_name'] }} +
  2. + {% endfor %} +
+
+ {% if null != rt.repeat_until and today > rt.repeat_until %} + + {{ trans('firefly.repeat_until_in_past', {date: rt.repeat_until.formatLocalized(monthAndDayFormat) }) }} + + {% endif %} +
    + {% for rep in rt.repetitions %} +
  • {{ rep.description }} + {% if rep.repetition_skip == 1 %} + ({{ trans('firefly.recurring_skips_one')|lower }}). + {% endif %} + {% if rep.repetition_skip > 1 %} + ({{ trans('firefly.recurring_skips_more', {count: rep.repetition_skip})|lower }}). + {% endif %} + {% if rep.weekend == 3 %} +
    {{ 'will_jump_friday'|_ }} + {% endif %} + {% if rep.weekend == 4 %} +
    {{ 'will_jump_monday'|_ }} + {% endif %} + {% if rep.weekend == 2 %} +
    {{ 'except_weekends'|_ }} + {% endif %} +
  • + {% endfor %} +
+

+ {% if null == rt.repeat_until and rt.repetitions == 0 %} + {{ 'recurring_repeats_forever'|_ }}. + {% endif %} + {% if null != rt.repeat_until and rt.repetitions == 0 %} + {{ trans('firefly.recurring_repeats_until', {date: rt.repeat_until.formatLocalized(monthAndDayFormat)}) }}. + {% endif %} + {% if null == rt.repeat_until and rt.nr_of_repetitions != 0 %} + {{ trans_choice('firefly.recurring_repeats_x_times', rt.nr_of_repetitions) }}. + {% endif %} +

+
+
    + {% for rep in rt.repetitions %} + {% for occ in rep.occurrences %} + {% if loop.index0 < 2 %} +
  • {{ occ.formatLocalized(monthAndDayFormat) }}
  • + {% endif %} + {% endfor %} + {% endfor %} +
+
+
+ {{ paginator.links('pagination.bootstrap-4')|raw }} +
+
+ +
+
+
+ {% endif %} + {% if total == 0 and page == 1 %} + {% include 'partials.empty' with {objectType: 'default', type: 'recurring',route: route('recurring.create')} %} + {% endif %} +{% endblock %} + +{% block styles %} + +{% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/resources/views/recurring/show.twig b/resources/views/recurring/show.twig new file mode 100644 index 0000000000..fa073bff55 --- /dev/null +++ b/resources/views/recurring/show.twig @@ -0,0 +1,185 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, recurrence) }} +{% endblock %} + +{% block content %} +
+ +
+
+
+

+ {{ array.title }} + + ({{ array.type }}) + + {% if array.active == false %} + ({{ 'inactive'|_|lower }}) + {% endif %} +

+
+
+

{{ array.description }}

+ + {% if array.active == false %} +

+ {{ 'recurrence_is_inactive'|_ }} +

+ {% endif %} + +
    + {% for rep in array.repetitions %} +
  • {{ rep.description }}
  • + {% endfor %} +
+
+ +
+
+ +
+
+
+

+ {{ ('expected_'~array.type~'s')|_ }} +

+
+
+ {% if null != array.repeat_until and today > array.repeat_until %} + + {{ trans('firefly.repeat_until_in_past', {date: array.repeat_until.formatLocalized(monthAndDayFormat) }) }} + + {% endif %} +
    + {% for rep in array.repetitions %} +
  • + {{ rep.description }} + {% if rep.repetition_skip == 1 %} + ({{ trans('firefly.recurring_skips_one')|lower }}) + {% endif %} + {% if rep.repetition_skip > 1 %} + ({{ trans('firefly.recurring_skips_more', {count: rep.repetition_skip})|lower }}) + {% endif %} +
      + {% for occ in rep.occurrences %} +
    • {{ occ.formatLocalized(trans('config.month_and_date_day')) }}
    • + {% endfor %} +
    +
  • + {% endfor %} +
+
+ +
+
+
+
+ +
+
+
+

+ {{ 'transaction_data'|_ }} +

+
+
+ + + + + + + + + + + + + + {% for transaction in array.transactions %} + + + + + + + + + + {% endfor %} + +
{{ trans('list.description') }}{{ trans('list.source') }}{{ trans('list.destination') }}{{ trans('list.amount') }}{{ trans('list.category') }}{{ trans('list.budget') }}{{ trans('list.other_meta_data') }}
+ {{ transaction.description }} + + {{ transaction.source_name }} + + {{ transaction.destination_name }} + + {{ formatAmountBySymbol(transaction.amount,transaction.currency_symbol,transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount,transaction.foreign_currency_symbol,transaction.foreign_currency_decimal_places) }}) + {% endif %} + + {% if '' != transaction.category_name %} + + {{ transaction.category_name }} + + {% endif %} + + {% if '' != transaction.budget_name %} + + {{ transaction.budget_name }} + + {% endif %} + + {% if transaction.tags|length > 0 %} +

+ {% for tag in transaction.tags %} + {{ tag }} + {% endfor %} +

+ {% endif %} + {% if 0 != transaction.piggy_bank_id and array.type == 'Transfer' %} + {{ transaction.piggy_bank_name }} + {% endif %} +
+
+
+
+
+ +
+
+
+

+ {{ ('created_'~array.type~'s')|_ }} +

+
+
+ {% include 'list.groups' %} +
+
+
+
+ {% endblock %} + + {% block styles %} + + {% endblock %} + + {% block scripts %} + + {# required for groups.twig #} + + {% endblock %} diff --git a/resources/views/reports/audit/report.twig b/resources/views/reports/audit/report.twig new file mode 100644 index 0000000000..08328174a7 --- /dev/null +++ b/resources/views/reports/audit/report.twig @@ -0,0 +1,92 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, start, end) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ 'options'|_ }}

+
+
+
    + {% for hide in hideable %} +
  • + {% endfor %} + +
+
+
+
+
+ + +{% for account in accounts %} +
+
+
+
+

{{ account.name }}

+
+ {% set url = route('accounts.show',account.id) %} + {% if not auditData[account.id].exists %} +
+ + + {{ trans('firefly.no_audit_activity', + { + account_name: account.name|escape, + url: url, + start: start.formatLocalized(monthAndDayFormat), + end: end.formatLocalized(monthAndDayFormat), + })|raw }} + + +
+ {% else %} +
+

+ {{ trans('firefly.audit_end_balance', + { + account_name: account.name|escape, + url: url, + end: auditData[account.id].dayBefore, + balance: formatAmountByAccount(account, auditData[account.id].dayBeforeBalance) + })|raw }} +

+ {% include 'v1.reports.partials.journals-audit' with {'journals': auditData[account.id].journals,'account':account} %} + +

+ + {{ trans('firefly.audit_end_balance', + { + account_name: account.name|escape, + url: url, + end: auditData[account.id].end, + balance: formatAmountByAccount(account,auditData[account.id].endBalance) + })|raw }} +

+
+ {% endif %} +
+
+
+{% endfor %} + +{% endblock %} +{% block styles %} +{% endblock %} +{% block scripts %} + + + +{% endblock %} diff --git a/resources/views/reports/budget/month.twig b/resources/views/reports/budget/month.twig new file mode 100644 index 0000000000..7aed5e046e --- /dev/null +++ b/resources/views/reports/budget/month.twig @@ -0,0 +1,186 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, budgetIds, start, end) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ 'accounts'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'budgets'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'account_per_budget'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'expense_per_budget'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'expense_per_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+
+
+

{{ 'expense_per_source_account'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'expense_per_destination_account'|_ }}

+
+
+
+ +
+
+
+
+
+ + {% for budget in budgets %} +
+
+
+
+

{{ 'expenses'|_ }} ({{ budget.name }})

+
+
+ +
+
+
+
+ {% endfor %} +
+
+
+
+

{{ 'average_spending_per_destination'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +
+
+

{{ 'expenses'|_ }} ({{ trans('firefly.topX', {number: listLength}) }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +{% endblock %} + +{% block scripts %} + + + + + + + + + + + +{% endblock %} + +{% block styles %} + +{% endblock %} diff --git a/resources/views/reports/budget/partials/account-per-budget.twig b/resources/views/reports/budget/partials/account-per-budget.twig new file mode 100644 index 0000000000..0266078590 --- /dev/null +++ b/resources/views/reports/budget/partials/account-per-budget.twig @@ -0,0 +1,30 @@ + + + + + {% for budget in budgets %} + + {% endfor %} + + + + {% for account in report %} + {% for currency in account.currencies %} + + + {% for budget in budgets %} + + {% endfor %} + + {% endfor %} + {% endfor %} + +
{{ 'name'|_ }}{{ budget.name }}
+ {{ account.name }} ({{ currency.currency_name }}) + + {% if currency.budgets[budget.id] %} + {{ formatAmountBySymbol(currency.budgets[budget.id], currency.currency_symbol, currency.currency_decimal_places) }} + {% else %} + — + {% endif %} +
diff --git a/resources/views/reports/budget/partials/accounts.twig b/resources/views/reports/budget/partials/accounts.twig new file mode 100644 index 0000000000..cb21e4f5f5 --- /dev/null +++ b/resources/views/reports/budget/partials/accounts.twig @@ -0,0 +1,32 @@ + + + + + + + + + {% for account in report %} + {% for currency in account.currencies %} + + + + + {% endfor %} + {% endfor %} + + + {% for sum in sums %} + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'spent'|_ }}
+ {{ account.name }} ({{ currency.currency_name }}) + + {{ formatAmountBySymbol(currency.sum, currency.currency_symbol, currency.currency_decimal_places) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/budget/partials/avg-expenses.twig b/resources/views/reports/budget/partials/avg-expenses.twig new file mode 100644 index 0000000000..b34a2ecc63 --- /dev/null +++ b/resources/views/reports/budget/partials/avg-expenses.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'account'|_ }}{{ 'spent_average'|_ }}{{ 'total'|_ }}{{ 'transaction_count'|_ }}
+ + {{ row.destination_account_name }} + + + {{ formatAmountBySymbol(row.avg, row.currency_symbol, row.currency_decimal_places) }} + + {{ formatAmountBySymbol(row.sum, row.currency_symbol, row.currency_decimal_places) }} + + {{ row.transactions }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/budget/partials/budgets.twig b/resources/views/reports/budget/partials/budgets.twig new file mode 100644 index 0000000000..66dab99ab5 --- /dev/null +++ b/resources/views/reports/budget/partials/budgets.twig @@ -0,0 +1,44 @@ + + + + + + + + + + {% for budget in report %} + {% if budget.currencies|length == 0 %} + + + + + + {% endif %} + {% for currency in budget.currencies %} + + + + + + {% endfor %} + {% endfor %} + + + {% for sum in sums %} + + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'spent'|_ }}{{ trans('list.percentage') }}
+ {{ budget.name }} +  
+ {{ budget.name }} ({{ currency.currency_name }}) + + {{ formatAmountBySymbol(currency.sum, currency.currency_symbol, currency.currency_decimal_places) }} + {{ currency.sum_pct }}%
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +  
diff --git a/resources/views/reports/budget/partials/top-expenses.twig b/resources/views/reports/budget/partials/top-expenses.twig new file mode 100644 index 0000000000..8b5d71bd6b --- /dev/null +++ b/resources/views/reports/budget/partials/top-expenses.twig @@ -0,0 +1,54 @@ + + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'description'|_ }}{{ 'date'|_ }}{{ 'account'|_ }}{{ 'budget'|_ }}{{ 'amount'|_ }}
+ + {{ row.description }} + + + {{ row.date }} + + + {{ row.destination_account_name }} + + + + {{ row.budget_name }} + + + {{ formatAmountBySymbol(row.amount, row.currency_symbol, row.currency_decimal_places) }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/category/month.twig b/resources/views/reports/category/month.twig new file mode 100644 index 0000000000..963d855eb5 --- /dev/null +++ b/resources/views/reports/category/month.twig @@ -0,0 +1,257 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, categoryIds, start, end) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ 'accounts'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'categories'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'account_per_category'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'expense_per_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'expense_per_budget'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+
+
+

{{ 'expense_per_source_account'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_source_account'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+
+
+

{{ 'expense_per_destination_account'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_destination_account'|_ }}

+
+
+
+ +
+
+
+
+
+ + {% for category in categories %} +
+
+
+
+

{{ 'income_and_expenses'|_ }} ({{ category.name }})

+
+
+ +
+
+
+
+ {% endfor %} +
+
+
+
+

{{ 'average_spending_per_destination'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'average_earning_per_source'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'expenses'|_ }} ({{ trans('firefly.topX', {number: listLength}) }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'income'|_ }} ({{ trans('firefly.topX', {number: listLength}) }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +{% endblock %} + +{% block scripts %} + + + + + + + + + +{% endblock %} + +{% block styles %} + +{% endblock %} diff --git a/resources/views/reports/category/partials/account-per-category.twig b/resources/views/reports/category/partials/account-per-category.twig new file mode 100644 index 0000000000..cb960c33bb --- /dev/null +++ b/resources/views/reports/category/partials/account-per-category.twig @@ -0,0 +1,31 @@ + + + + + {% for category in categories %} + + {% endfor %} + + + + {% for account in report %} + {% for currency in account.currencies %} + + + {% for category in categories %} + + {% endfor %} + {% endfor %} + +
{{ 'name'|_ }}{{ category.name }}
+ {{ account.name }} ({{ currency.currency_name }}) + + {% if currency.categories[category.id] %} + + {% endfor %} +
diff --git a/resources/views/reports/category/partials/accounts.twig b/resources/views/reports/category/partials/accounts.twig new file mode 100644 index 0000000000..4e9ce9e9a2 --- /dev/null +++ b/resources/views/reports/category/partials/accounts.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for account in report %} + {% for currency in account.currencies %} + + + + + + + {% endfor %} + {% endfor %} + + + {% for sum in sums %} + + + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}{{ 'sum'|_ }}
+ {{ account.name }} ({{ currency.currency_name }}) + + {{ formatAmountBySymbol(currency.spent, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.earned, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.sum, currency.currency_symbol, currency.currency_decimal_places) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.spent_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.earned_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.total_sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/category/partials/avg-expenses.twig b/resources/views/reports/category/partials/avg-expenses.twig new file mode 100644 index 0000000000..b34a2ecc63 --- /dev/null +++ b/resources/views/reports/category/partials/avg-expenses.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'account'|_ }}{{ 'spent_average'|_ }}{{ 'total'|_ }}{{ 'transaction_count'|_ }}
+ + {{ row.destination_account_name }} + + + {{ formatAmountBySymbol(row.avg, row.currency_symbol, row.currency_decimal_places) }} + + {{ formatAmountBySymbol(row.sum, row.currency_symbol, row.currency_decimal_places) }} + + {{ row.transactions }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/category/partials/avg-income.twig b/resources/views/reports/category/partials/avg-income.twig new file mode 100644 index 0000000000..b859f13a09 --- /dev/null +++ b/resources/views/reports/category/partials/avg-income.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'account'|_ }}{{ 'spent_average'|_ }}{{ 'total'|_ }}{{ 'transaction_count'|_ }}
+ + {{ row.source_account_name }} + + + {{ formatAmountBySymbol(row.avg, row.currency_symbol, row.currency_decimal_places) }} + + {{ formatAmountBySymbol(row.sum, row.currency_symbol, row.currency_decimal_places) }} + + {{ row.transactions }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/category/partials/categories.twig b/resources/views/reports/category/partials/categories.twig new file mode 100644 index 0000000000..0846294049 --- /dev/null +++ b/resources/views/reports/category/partials/categories.twig @@ -0,0 +1,56 @@ + + + + + + + + + + + {% for category in report %} + {% if category.currencies|length == 0 %} + + + + + + + {% endif %} + {% for currency in category.currencies %} + + + + + + + {% endfor %} + {% endfor %} + + + {% for sum in sums %} + + + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}{{ 'sum'|_ }}
+ {{ category.name }} +
+ {{ category.name }} ({{ currency.currency_name }}) + + {{ formatAmountBySymbol(currency.spent, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.earned, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.sum, currency.currency_symbol, currency.currency_decimal_places) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.spent_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.earned_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.total_sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/category/partials/top-expenses.twig b/resources/views/reports/category/partials/top-expenses.twig new file mode 100644 index 0000000000..f435d41189 --- /dev/null +++ b/resources/views/reports/category/partials/top-expenses.twig @@ -0,0 +1,54 @@ + + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'description'|_ }}{{ 'date'|_ }}{{ 'account'|_ }}{{ 'category'|_ }}{{ 'amount'|_ }}
+ + {{ row.description }} + + + {{ row.date }} + + + {{ row.destination_account_name }} + + + + {{ row.category_name }} + + + {{ formatAmountBySymbol(row.amount, row.currency_symbol, row.currency_decimal_places) }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/category/partials/top-income.twig b/resources/views/reports/category/partials/top-income.twig new file mode 100644 index 0000000000..e5d566d468 --- /dev/null +++ b/resources/views/reports/category/partials/top-income.twig @@ -0,0 +1,54 @@ + + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'description'|_ }}{{ 'date'|_ }}{{ 'account'|_ }}{{ 'category'|_ }}{{ 'amount'|_ }}
+ + {{ row.description }} + + + {{ row.date }} + + + {{ row.source_account_name }} + + + + {{ row.category_name }} + + + {{ formatAmountBySymbol(row.amount, row.currency_symbol, row.currency_decimal_places) }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/default/month.twig b/resources/views/reports/default/month.twig new file mode 100644 index 0000000000..7b5768db60 --- /dev/null +++ b/resources/views/reports/default/month.twig @@ -0,0 +1,180 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, start, end) }} +{% endblock %} + +{% block content %} + + {# chart #} +
+
+
+
+

{{ 'accountBalances'|_ }}

+
+
+ +
+
+
+
+ + {# account balances and income vs. expense #} +
+
+
+
+

{{ 'accountBalances'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'incomeVsExpenses'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# in and out #} +
+
+
+
+

{{ 'income'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'expenses'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +
+
+
+ +
+

{{ 'budgets'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+ + +
+
+
+
+

{{ 'categories'|_ }}

+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'budgets'|_ }} ({{ 'splitByAccount'|_|lower }})

+
+
+
+ {# loading indicator #} +
+ +
+
+ +
+
+
+
+
+
+

{{ 'bills'|_ }}

+
+
+ {# loading indicator #} +
+ +
+
+
+
+{% endblock %} +{% block styles %} + +{% endblock %} +{% block scripts %} + + + + + + + + + +{% endblock %} diff --git a/resources/views/reports/default/multi-year.twig b/resources/views/reports/default/multi-year.twig new file mode 100644 index 0000000000..9400bb6c5c --- /dev/null +++ b/resources/views/reports/default/multi-year.twig @@ -0,0 +1,224 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, start, end) }} +{% endblock %} + +{% block content %} + + {# charts #} +
+
+
+
+

{{ 'incomeVsExpenses'|_ }}

+
+
+ +
+
+
+
+ + {# balances and income vs. expense. #} +
+
+
+
+

{{ 'accountBalances'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'incomeVsExpenses'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# block with income #} +
+
+
+
+

{{ 'income'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+ {# block with expenses #} +
+
+
+

{{ 'expenses'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# net worth #} +
+
+
+
+

{{ 'net_worth'|_ }}

+
+
+ +
+ +
+
+
+ + + {# This is the budget overview generated by budget period report #} +
+
+
+
+

{{ 'budgets'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + + {# This is the chart that belongs to the above overview. #} +
+
+
+
+

{{ 'chart'|_ }}

+
+
+

{{ 'budget_chart_click'|_ }}

+ +
+
+
+
+ + {# same thing but for categories (expenses) #} +
+
+
+
+

{{ 'categories'|_ }} ({{ 'expenses'|_ }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# same thing but for categories (income) #} +
+
+
+
+

{{ 'categories'|_ }} ({{ 'income'|_ }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# and the same chart too! #} +
+
+
+
+

{{ 'chart'|_ }}

+
+
+

{{ 'category_chart_click'|_ }}

+ +
+
+
+
+ +{% endblock %} +{% block styles %} + +{% endblock %} +{% block scripts %} + + + + + + + + + +{% endblock %} diff --git a/resources/views/reports/default/year.twig b/resources/views/reports/default/year.twig new file mode 100644 index 0000000000..3f852c57c4 --- /dev/null +++ b/resources/views/reports/default/year.twig @@ -0,0 +1,222 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, start, end) }} +{% endblock %} + +{% block content %} + + {# charts #} +
+
+
+
+

{{ 'incomeVsExpenses'|_ }}

+
+
+ +
+
+
+
+ + {# balances and inc vs exp #} +
+
+
+
+

{{ 'accountBalances'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'incomeVsExpenses'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# income and expenses. #} +
+
+
+
+

{{ 'income'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'expenses'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# net worth #} +
+
+
+
+

{{ 'net_worth'|_ }}

+
+
+ +
+ +
+
+
+ + {# This is the budget overview generated by budget period report #} +
+
+
+
+

{{ 'budgets'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + + {# This is the chart that belongs to the above overview. #} +
+
+
+
+

{{ 'chart'|_ }}

+
+
+

{{ 'budget_chart_click'|_ }}

+ +
+
+
+
+ + {# same thing but for categories (expenses) #} +
+
+
+
+

{{ 'categories'|_ }} ({{ 'expenses'|_ }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# same thing but for categories (income) #} +
+
+
+
+

{{ 'categories'|_ }} ({{ 'income'|_ }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ + {# and the same chart too! #} +
+
+
+
+

{{ 'chart'|_ }}

+
+
+

{{ 'category_chart_click'|_ }}

+ +
+
+
+
+ + +{% endblock %} +{% block scripts %} + + + + + + + + + +{% endblock %} +{% block styles %} + +{% endblock %} diff --git a/resources/views/reports/double/partials/accounts-per-asset.twig b/resources/views/reports/double/partials/accounts-per-asset.twig new file mode 100644 index 0000000000..6a19774fbf --- /dev/null +++ b/resources/views/reports/double/partials/accounts-per-asset.twig @@ -0,0 +1,44 @@ + + + + + + + + + + + {% for account in report %} + + + + + + + {% endfor %} + + + {% for sum in sums %} + + + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}{{ 'sum'|_ }}
+ {{ account.account_name }} + + {{ formatAmountBySymbol(account.spent, account.currency_symbol, account.currency_decimal_places) }} + + {{ formatAmountBySymbol(account.earned, account.currency_symbol, account.currency_decimal_places) }} + + {{ formatAmountBySymbol(account.sum, account.currency_symbol, account.currency_decimal_places) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.spent, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.earned, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/double/partials/accounts.twig b/resources/views/reports/double/partials/accounts.twig new file mode 100644 index 0000000000..7149f2f45e --- /dev/null +++ b/resources/views/reports/double/partials/accounts.twig @@ -0,0 +1,55 @@ + + + + + + + + + + + {% for account in report %} + + + + + + + {% endfor %} + + + {% for sum in sums %} + + + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}{{ 'sum'|_ }}
+ {% if account.source_name == account.dest_name %} + {{ account.source_name }} + {% else %} + {{ account.source_name }} / {{ account.dest_name }} + {% endif %} + {% if account.source_iban != '' and account.dest_iban != '' %} + {% if account.source_iban == account.dest_iban %} + ({{ account.source_iban }}) + {% else %} + ({{ account.source_iban }} / ({{ account.dest_iban }})) + {% endif %} + {% endif %} + + {{ formatAmountBySymbol(account.spent, account.currency_symbol, account.currency_decimal_places) }} + + {{ formatAmountBySymbol(account.earned, account.currency_symbol, account.currency_decimal_places) }} + + {{ formatAmountBySymbol(account.sum, account.currency_symbol, account.currency_decimal_places) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.spent, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.earned, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/double/partials/avg-expenses.twig b/resources/views/reports/double/partials/avg-expenses.twig new file mode 100644 index 0000000000..b859f13a09 --- /dev/null +++ b/resources/views/reports/double/partials/avg-expenses.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'account'|_ }}{{ 'spent_average'|_ }}{{ 'total'|_ }}{{ 'transaction_count'|_ }}
+ + {{ row.source_account_name }} + + + {{ formatAmountBySymbol(row.avg, row.currency_symbol, row.currency_decimal_places) }} + + {{ formatAmountBySymbol(row.sum, row.currency_symbol, row.currency_decimal_places) }} + + {{ row.transactions }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/double/partials/avg-income.twig b/resources/views/reports/double/partials/avg-income.twig new file mode 100644 index 0000000000..b34a2ecc63 --- /dev/null +++ b/resources/views/reports/double/partials/avg-income.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'account'|_ }}{{ 'spent_average'|_ }}{{ 'total'|_ }}{{ 'transaction_count'|_ }}
+ + {{ row.destination_account_name }} + + + {{ formatAmountBySymbol(row.avg, row.currency_symbol, row.currency_decimal_places) }} + + {{ formatAmountBySymbol(row.sum, row.currency_symbol, row.currency_decimal_places) }} + + {{ row.transactions }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/double/partials/top-expenses.twig b/resources/views/reports/double/partials/top-expenses.twig new file mode 100644 index 0000000000..8c957eb6e3 --- /dev/null +++ b/resources/views/reports/double/partials/top-expenses.twig @@ -0,0 +1,55 @@ + + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'description'|_ }}{{ 'date'|_ }}{{ 'source_account'|_ }}{{ 'destination_account'|_ }}{{ 'amount'|_ }}
+ + {{ row.description }} + + + {{ row.date }} + + + {{ row.source_account_name }} + + + + {{ row.destination_account_name }} + + + {{ formatAmountBySymbol(row.amount, row.currency_symbol, row.currency_decimal_places) }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/double/partials/top-income.twig b/resources/views/reports/double/partials/top-income.twig new file mode 100644 index 0000000000..8c957eb6e3 --- /dev/null +++ b/resources/views/reports/double/partials/top-income.twig @@ -0,0 +1,55 @@ + + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'description'|_ }}{{ 'date'|_ }}{{ 'source_account'|_ }}{{ 'destination_account'|_ }}{{ 'amount'|_ }}
+ + {{ row.description }} + + + {{ row.date }} + + + {{ row.source_account_name }} + + + + {{ row.destination_account_name }} + + + {{ formatAmountBySymbol(row.amount, row.currency_symbol, row.currency_decimal_places) }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/double/report.twig b/resources/views/reports/double/report.twig new file mode 100644 index 0000000000..95a395ce49 --- /dev/null +++ b/resources/views/reports/double/report.twig @@ -0,0 +1,234 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, doubleIds, start, end) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ 'in_out_accounts'|_ }}

+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +
+
+
+

{{ 'in_out_accounts_per_asset'|_ }}

+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+ +
+
+
+
+

{{ 'expense_per_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'expense_per_budget'|_ }}

+
+
+
+ +
+
+
+
+
+ +
+
+
+
+

{{ 'expense_per_tag'|_ }}

+
+
+
+ +
+
+ +
+
+
+
+
+

{{ 'income_per_tag'|_ }}

+
+
+
+ +
+
+ +
+
+
+ + + {% for account in doubles %} +
+
+
+
+

{{ 'income_and_expenses'|_ }} ({{ account.name }}) {% if account.iban %}({{ account.iban }}){% endif %}

+
+
+ +
+
+
+
+ {% endfor %} + +
+
+
+
+

{{ 'expenses'|_ }} ({{ trans('firefly.topX', {number: listLength}) }})

+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +
+
+
+

{{ 'income'|_ }} ({{ trans('firefly.topX', {number: listLength}) }})

+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+ +
+
+
+
+

{{ 'average_spending_per_source'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'average_earning_per_destination'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +{% endblock %} + +{% block scripts %} + + + + + + + + + +{% endblock %} + +{% block styles %} + +{% endblock %} diff --git a/resources/views/reports/index.twig b/resources/views/reports/index.twig new file mode 100644 index 0000000000..8d764665ad --- /dev/null +++ b/resources/views/reports/index.twig @@ -0,0 +1,195 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + +
+
+
+
+
+

{{ 'reports'|_ }}

+
+
+

+ {{ 'more_info_help'|_ }} +

+ + +
+ + +
+ +
+
+
+ + +
+ + +
+
+ + +
+ + +
+ +
+
+
+ + +
+ {% for year, data in months %} + {{ year }} + {% if customFiscalYear == 1 %} +
+ {{ year }} + ({{ 'fiscal_year'|_|lower }}) + {% endif %} + + {% endfor %} +
+
+ +
+
+
+
+

{{ 'reports_extra_options'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+ +
+
+

{{ 'reports_submit'|_ }}

+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+

{{ 'quick_link_reports'|_ }}

+
+
+

+ {{ 'quick_link_examples'|_ }} +

+

{{ ('quick_link_default_report')|_ }}

+ + +

{{ ('quick_link_audit_report')|_ }}

+ +

+ {{ 'reports_can_bookmark'|_ }} +

+
+
+ +
+
+
 
+ +{% endblock %} + +{% block styles %} + +{% endblock %} + +{% block scripts %} + + + + +{% endblock %} diff --git a/resources/views/reports/options/budget.twig b/resources/views/reports/options/budget.twig new file mode 100644 index 0000000000..103363f156 --- /dev/null +++ b/resources/views/reports/options/budget.twig @@ -0,0 +1,10 @@ +
+ +
+ +
+
diff --git a/resources/views/reports/options/category.twig b/resources/views/reports/options/category.twig new file mode 100644 index 0000000000..2ff52d301a --- /dev/null +++ b/resources/views/reports/options/category.twig @@ -0,0 +1,11 @@ +
+ +
+ + +
+
diff --git a/resources/views/reports/options/double.twig b/resources/views/reports/options/double.twig new file mode 100644 index 0000000000..4babc4e177 --- /dev/null +++ b/resources/views/reports/options/double.twig @@ -0,0 +1,10 @@ +
+ +
+ +
+
diff --git a/resources/views/reports/options/no-options.twig b/resources/views/reports/options/no-options.twig new file mode 100644 index 0000000000..0563b9dca3 --- /dev/null +++ b/resources/views/reports/options/no-options.twig @@ -0,0 +1,3 @@ +

+ {{ 'report_has_no_extra_options'|_ }} +

diff --git a/resources/views/reports/options/tag.twig b/resources/views/reports/options/tag.twig new file mode 100644 index 0000000000..bcaec1bf17 --- /dev/null +++ b/resources/views/reports/options/tag.twig @@ -0,0 +1,10 @@ +
+ +
+ +
+
diff --git a/resources/views/reports/partials/accounts.twig b/resources/views/reports/partials/accounts.twig new file mode 100644 index 0000000000..53a9e5e0c5 --- /dev/null +++ b/resources/views/reports/partials/accounts.twig @@ -0,0 +1,48 @@ + + + + + + + + + + + {% for account in accountReport.accounts %} + + + + + + + {% endfor %} + + + + {% for sum in accountReport.sums %} + + + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'difference'|_ }}
+ {{ account.name }} + + {{ formatAmountBySymbol(account.end_balance - account.start_balance, account.currency_symbol, account.currency_decimal_places) }} +
{{ 'sumOfSums'|_ }}
+   + + {{ formatAmountBySymbol(sum.start, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.end, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.difference, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/partials/balance.twig b/resources/views/reports/partials/balance.twig new file mode 100644 index 0000000000..5c44dac93b --- /dev/null +++ b/resources/views/reports/partials/balance.twig @@ -0,0 +1,61 @@ + + + + + {% for account in report.accounts %} + {% if account.sum != 0 %} + + {% endif %} + {% endfor %} + + + + + + {% for budget in report.budgets %} + {% if budget.spent|length > 0 %} + + + {% for account in report.accounts %} + {% if budget.spent[account.id] %} + + {% else %} + {% if report.accounts[account.id].sum != 0 %} + + {% endif %} + {% endif %} + + {% endfor %} + + + {% endif %} + {% endfor %} + + + + + {% for account in report.accounts %} + {% if account.sum != 0 %} + + {% endif %} + {% endfor %} + + +
{{ 'budgets'|_ }}{{ 'sum'|_ }}
+ {{ budget.budget_name }} + + {{ formatAmountBySymbol(budget.spent[account.id].spent, budget.spent[account.id].currency_symbol, budget.spent[account.id].currency_decimal_places) }} + +   + {% for sum in report.sums[budget.budget_id] %} + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +
+ {% endfor %} +
{{ 'sum'|_ }} + {{ formatAmountBySymbol(account.sum, account.currency_symbol, account.currency_decimal_places) }} +
diff --git a/resources/views/reports/partials/bills.twig b/resources/views/reports/partials/bills.twig new file mode 100644 index 0000000000..19722deb21 --- /dev/null +++ b/resources/views/reports/partials/bills.twig @@ -0,0 +1,84 @@ + + + + + + + + + + + + {% for bill in report.bills %} + {% if (bill.expected_dates|length > 0 or bill.paid_moments|length > 0) and bill.active %} + + + + + + + + {% endif %} + {% endfor %} + + + {% for line in bills.getBills %} + + + + + + {# if bill is hit, show hit amount #} + {% if line.isHit %} + + {% endif %} + {# if not but is active, show "not yet charged #} + {% if not line.isHit and line.isActive %} + + {% endif %} + {% if not line.isActive and not line.isHit %} + + {% endif %} + + + + {% endfor %} + +
{{ trans('form.name') }}{{ trans('form.expected_on') }}{{ trans('form.paid') }}
+ {{ bill.name }} + + {% for date in bill.expected_dates %} + {{ date.formatLocalized(monthAndDayFormat) }}
+ {% endfor %} +
+ {% set hitCount = 0 %} + {% for journals in bill.paid_moments %} + {% for journal in journals %} + {% set hitCount = hitCount+1 %} + {{ journal.description }}, + {{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }} +
+ {% endfor %} + {% endfor %} + {% if hitCount == 0 %} + {{ 'notCharged'|_ }} + {% endif %} +
+ {{ line.getBill.name }} +
+ {{ trans('firefly.bill_expected_between', {start: line.getPayDate.formatLocalized(monthAndDayFormat), end: line.getEndOfPayDate.formatLocalized(monthAndDayFormat) }) }} +
+
+ + {{ formatAmountByCurrency(line.getCurrency, line.getAmount) }} + + {{ 'notCharged'|_ }} 
diff --git a/resources/views/reports/partials/budget-period.twig b/resources/views/reports/partials/budget-period.twig new file mode 100644 index 0000000000..bf672d0ab7 --- /dev/null +++ b/resources/views/reports/partials/budget-period.twig @@ -0,0 +1,46 @@ + + + + + {% for period in periods %} + + {% endfor %} + + + + + + {% for key, info in report %} + + + + {% for key, period in periods %} + {% if(info.entries[key]) %} + + {% else %} + + {% endif %} + + {% endfor %} + + + + {% endfor %} + +
{{ 'budget'|_ }}{{ period }}{{ 'average'|_ }}{{ 'sum'|_ }}
+ {% if info.id != 0 %} + + {% else %} + + {% endif %} + + {{ info.name }} + + {{ formatAmountBySymbol(info.entries[key], info.currency_symbol, info.currency_decimal_places) }} + + {{ formatAmountBySymbol(0, info.currency_symbol, info.currency_decimal_places) }} + + {{ formatAmountBySymbol(info.avg, info.currency_symbol, info.currency_decimal_places) }} + + {{ formatAmountBySymbol(info.sum, info.currency_symbol, info.currency_decimal_places) }} +
diff --git a/resources/views/reports/partials/budgets.twig b/resources/views/reports/partials/budgets.twig new file mode 100644 index 0000000000..56b80cc5b5 --- /dev/null +++ b/resources/views/reports/partials/budgets.twig @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + {% for budget in report.budgets %} + {% for budget_limit in budget.budget_limits %} + + {% if budget.no_budget %} + + {% else %} + + {% endif %} + + + + + + + + + + + + + + + + + + + + + + + + {% endfor %} + {% endfor %} + + + {% for sum in report.sums %} + + + + + + + + + + + + {% endfor %} + +
{{ 'budget'|_ }}{{ 'spent'|_ }}{{ 'overspent'|_ }}
+ {{ 'no_budget'|_ }} ({{ budget_limit.currency_name }}) + + {{ budget.budget_name }} + + {{ formatAmountBySymbol(budget_limit.spent, budget_limit.currency_symbol, budget_limit.currency_decimal_places) }} + + {% if null != budget_limit.overspent %} + {{ formatAmountBySymbol(budget_limit.overspent, budget_limit.currency_symbol, budget_limit.currency_decimal_places) }} + {% endif %} +
{{ 'sum'|_ }} ({{ sum.currency_name }}){{ formatAmountBySymbol(sum.budgeted, sum.currency_symbol, sum.currency_decimal_places) }} {{ formatAmountBySymbol(sum.spent, sum.currency_symbol, sum.currency_decimal_places) }}  {{ formatAmountBySymbol(sum.left, sum.currency_symbol, sum.currency_decimal_places) }}{{ formatAmountBySymbol(sum.overspent, sum.currency_symbol, sum.currency_decimal_places) }}
diff --git a/resources/views/reports/partials/categories.twig b/resources/views/reports/partials/categories.twig new file mode 100644 index 0000000000..f45abde45d --- /dev/null +++ b/resources/views/reports/partials/categories.twig @@ -0,0 +1,54 @@ + + + + + + + + + + + + {% for category in report.categories %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + {% endfor %} + + + {% if report.categories|length > listLength %} + + + + {% endif %} + {% for sum in report.sums %} + + + + + + + {% endfor %} + +
{{ 'category'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}{{ 'sum'|_ }} 
+ {{ category.title }} + {{ formatAmountBySymbol(category.spent, category.currency_symbol, category.currency_decimal_places, true) }}{{ formatAmountBySymbol(category.earned, category.currency_symbol, category.currency_decimal_places, true) }}{{ formatAmountBySymbol(category.sum, category.currency_symbol, category.currency_decimal_places, true) }} + +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.spent, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.earned, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/partials/category-period.twig b/resources/views/reports/partials/category-period.twig new file mode 100644 index 0000000000..2660eed70b --- /dev/null +++ b/resources/views/reports/partials/category-period.twig @@ -0,0 +1,50 @@ + + + + + {% for period in periods %} + + {% endfor %} + + + + + {% for info in report %} + + + + {% for key, period in periods %} + {# income first #} + {% if(info.entries[key]) %} + + {% else %} + + {% endif %} + {% endfor %} + + {# if sum of income, display: #} + {% if info.sum %} + + {% else %} + + {% endif %} + + {% endfor %} + +
{{ 'category'|_ }}{{ period }}{{ 'sum'|_ }}
+ {% if info.id != 0 %} + + {% else %} + + {% endif %} + + {{ info.title }} + + {{ formatAmountBySymbol(info.entries[key], info.currency_symbol, info.currency_decimal_places) }} + + {{ formatAmountBySymbol(0, info.currency_symbol, info.currency_decimal_places) }} + + {{ formatAmountBySymbol(info.sum, info.currency_symbol, info.currency_decimal_places) }} + + {{ formatAmountBySymbol(0, info.currency_symbol, info.currency_decimal_places) }} +
diff --git a/resources/views/reports/partials/exp-budgets.twig b/resources/views/reports/partials/exp-budgets.twig new file mode 100644 index 0000000000..d1cc577e1d --- /dev/null +++ b/resources/views/reports/partials/exp-budgets.twig @@ -0,0 +1,30 @@ + + + + + + + + + {% for budgetId, entry in together %} + + + + + {% endfor %} + +
{{ 'category'|_ }}{{ 'spent'|_ }}
+ {% if entry.budget == null %} + {{ 'no_budget_squared'|_ }} + {% else %} + {{ entry.budget }} + {% endif %} + + {% if entry.spent.per_currency|length ==0 %} + {{ '0'|formatAmount }} + {% else %} + {% for expense in entry.spent.per_currency %} + {{ formatAmountBySymbol(expense.sum, expense.currency.symbol, expense.currency.dp) }}
+ {% endfor %} + {% endif %} +
diff --git a/resources/views/reports/partials/exp-categories.twig b/resources/views/reports/partials/exp-categories.twig new file mode 100644 index 0000000000..bfa38f242b --- /dev/null +++ b/resources/views/reports/partials/exp-categories.twig @@ -0,0 +1,41 @@ + + + + + + + + + + {% for categoryId, entry in together %} + + + + + + {% endfor %} + +
{{ 'category'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}
+ {% if entry.category == null %} + {{ 'noCategory'|_ }} + {% else %} + {{ entry.category }} + + {% endif %} + + {% if entry.spent.per_currency|length ==0 %} + {{ '0'|formatAmount }} + {% else %} + {% for expense in entry.spent.per_currency %} + {{ formatAmountBySymbol(expense.sum, expense.currency.symbol, expense.currency.dp) }}
+ {% endfor %} + {% endif %} +
+ {% if entry.earned.per_currency|length ==0 %} + {{ '0'|formatAmount }} + {% else %} + {% for income in entry.earned.per_currency %} + {{ formatAmountBySymbol(income.sum * -1, income.currency.symbol, income.currency.dp) }}
+ {% endfor %} + {% endif %} +
diff --git a/resources/views/reports/partials/exp-not-grouped.twig b/resources/views/reports/partials/exp-not-grouped.twig new file mode 100644 index 0000000000..ec26868ce6 --- /dev/null +++ b/resources/views/reports/partials/exp-not-grouped.twig @@ -0,0 +1,32 @@ + + + + + + + + + + {% for name, amounts in result %} + + + + + + {% endfor %} + +
{{ 'name'|_ }}
{{ name }} + {% if amounts.spent.per_currency|length == 0 %} + {{ '0'|formatAmount }} + {% endif %} + {% for expense in amounts.spent.per_currency %} + {{ formatAmountBySymbol(expense.sum, expense.currency.symbol, expense.currency.dp) }}
+ {% endfor %} +
+ {% if amounts.earned.per_currency|length == 0 %} + {{ '0'|formatAmount }} + {% endif %} + {% for income in amounts.earned.per_currency %} + {{ formatAmountBySymbol(income.sum * -1, income.currency.symbol, income.currency.dp) }}
+ {% endfor %} +
diff --git a/resources/views/reports/partials/income-expenses.twig b/resources/views/reports/partials/income-expenses.twig new file mode 100644 index 0000000000..ad3767f87d --- /dev/null +++ b/resources/views/reports/partials/income-expenses.twig @@ -0,0 +1,61 @@ + + + + + + + + + + + {% for account in report.accounts %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + {% endfor %} + + + + {% if report.accounts|length > listLength %} + + + + {% endif %} + {% for sum in report.sums %} + + + + + + {% endfor %} +
{{ 'name'|_ }}{{ 'total'|_ }}
+ {{ account.name }} + {% if account.count > 1 %} +
+ + {{ account.count }} {{ 'transactions'|_|lower }} + + {% endif %} +
+ {{ formatAmountBySymbol(account.sum, account.currency_symbol, account.currency_decimal_places) }} + + +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +  
diff --git a/resources/views/reports/partials/journals-audit.twig b/resources/views/reports/partials/journals-audit.twig new file mode 100644 index 0000000000..d88485ebb5 --- /dev/null +++ b/resources/views/reports/partials/journals-audit.twig @@ -0,0 +1,184 @@ + + + + + + + + + + + + + {# new optional fields (3x) #} + + + + + + + + {# more optional fields (2x) #} + + + + {# even more optional fields #} + + + + + + + + + + + {% for journal in journals %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% endfor %} + + +
  {{ trans('list.description') }}{{ trans('list.balance_before') }}{{ trans('list.amount') }}{{ trans('list.balance_after') }}{{ trans('list.date') }}{{ trans('list.from') }}{{ trans('list.to') }}{{ trans('list.bill') }}{{ trans('list.create_date') }}{{ trans('list.update_date') }}{{ trans('list.interest_date') }}{{ trans('list.book_date') }}{{ trans('list.process_date') }}{{ trans('list.due_date') }}{{ trans('list.payment_date') }}{{ trans('list.invoice_date') }}
+
+ + +
+
+ {% if journal.transaction_type_type == 'Withdrawal' %} + + {% endif %} + + {% if journal.transaction_type_type == 'Deposit' %} + + {% endif %} + + {% if journal.transaction_type_type == 'Transfer' %} + + {% endif %} + + {% if journal.transaction_type_type == 'Reconciliation' %} + + {% endif %} + + {% if journal.transaction_type_type == 'Opening balance' %} + + {% endif %} + + + + {% if journal.group_title|length > 0 %} + {{ journal.group_title }} ({{ journal.description }}) + {% else %} + {{ journal.description }} + {% endif %} + + + {{ formatAmountBySymbol(journal.balance_before, auditData[account.id].currency.symbol, auditData[account.id].currency.decimal_places) }} + + + {% if auditData[account.id].currency.id == journal.currency_id %} + {% if account.id == journal.destination_account_id and journal.transaction_type_type == 'Opening balance' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }} + {% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }} + {% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Transfer' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }} + {% else %} + {{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }} + {% endif %} + {% endif %} + + {% if auditData[account.id].currency.id == journal.foreign_currency_id %} + {% if account.id == journal.destination_account_id and journal.transaction_type_type == 'Opening balance' %} + {{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }} + {% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }} + {% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Transfer' %} + {{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }} + {% else %} + {{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }} + {% endif %} + {% endif %} + + + {{ formatAmountBySymbol(journal.balance_after, auditData[account.id].currency.symbol, auditData[account.id].currency.decimal_places) }} + {{ journal.date.formatLocalized(monthAndDayFormat) }} + {{ journal.source_account_name }} + + {{ journal.destination_account_name }} + + {% if journal.budget_id %} + {{ journal.budget_name }} + {% endif %} + + {% if journal.category_id %} + {{ journal.category_name }} + {% endif %} + + {% if journal.bill_id %} + {{ journal.bill_name }} + {% endif %} + + {{ journal.created_at.formatLocalized(dateTimeFormat) }} + + {{ journal.updated_at.formatLocalized(dateTimeFormat) }} + + {% if null != journal.interest_date %} + {{ journal.interest_date.formatLocalized(monthAndDayFormat) }} + {% endif %} + + {% if null != journal.book_date %} + {{ journal.book_date.formatLocalized(monthAndDayFormat) }} + {% endif %} + + {% if null != journal.process_date %} + {{ journal.process_date.formatLocalized(monthAndDayFormat) }} + {% endif %} + + {% if null != journal.due_date %} + {{ journal.due_date.formatLocalized(monthAndDayFormat) }} + {% endif %} + + {% if null != journal.payment_date %} + {{ journal.payment_date.formatLocalized(monthAndDayFormat) }} + {% endif %} + + {% if null != journal.invoice_date %} + {{ journal.invoice_date.formatLocalized(monthAndDayFormat) }} + {% endif %} +
diff --git a/resources/views/reports/partials/operations.twig b/resources/views/reports/partials/operations.twig new file mode 100644 index 0000000000..70dc36bb87 --- /dev/null +++ b/resources/views/reports/partials/operations.twig @@ -0,0 +1,26 @@ + + + + + + + + + + + {% for sum in sums %} + + + + + + + {% endfor %} + +
{{'currency'|_}}{{ 'money_flowing_in'|_ }}{{ 'money_flowing_out'|_ }}{{ 'difference'|_ }}
{{ sum.currency_name }} ({{ sum.currency_symbol }}) + {{ formatAmountBySymbol(sum.in, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.out, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/partials/tags.twig b/resources/views/reports/partials/tags.twig new file mode 100644 index 0000000000..7a4bc259c2 --- /dev/null +++ b/resources/views/reports/partials/tags.twig @@ -0,0 +1,23 @@ +{% if tags|length > 0 %} +
+
+

{{ 'tags'|_ }}

+
+
+ + {% if tags|length == 1 %} + {% set multiplier = 12 %} + {% else %} + {% set multiplier = 30 %} + {% endif %} + + {% for tag in tags %} +  {{ tag.tag }}  + {% endfor %} +
+
+ +{% endif %} diff --git a/resources/views/reports/partials/top-transactions.twig b/resources/views/reports/partials/top-transactions.twig new file mode 100644 index 0000000000..9fcd16a9cd --- /dev/null +++ b/resources/views/reports/partials/top-transactions.twig @@ -0,0 +1,31 @@ + + + + + + + + + + + {% for transaction in sorted %} + + + + + + + {% endfor %} + +
{{ 'account'|_ }}{{ 'description'|_ }}{{ 'date'|_ }}
+ {{ transaction.destination_account_name }} + {{ transaction.description }} + {{ transaction.date.formatLocalized(monthAndDayFormat) }} + + + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} +
diff --git a/resources/views/reports/tag/month.twig b/resources/views/reports/tag/month.twig new file mode 100644 index 0000000000..2294bc2e91 --- /dev/null +++ b/resources/views/reports/tag/month.twig @@ -0,0 +1,290 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, accountIds, tagIds, start, end) }} +{% endblock %} + +{% block content %} + +
+
+
+
+

{{ 'accounts'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'tags'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'account_per_tag'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'expense_per_tag'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_tag'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+
+
+

{{ 'expense_per_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_category'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'expense_per_budget'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+
+
+

{{ 'expense_per_source_account'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_source_account'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+
+
+

{{ 'expense_per_destination_account'|_ }}

+
+
+
+ +
+
+
+
+
+
+
+

{{ 'income_per_destination_account'|_ }}

+
+
+
+ +
+
+
+
+
+ + {% for tag in tags %} +
+
+
+
+

{{ 'income_and_expenses'|_ }} ({{ tag.tag }})

+
+
+ +
+ +
+
+
+ {% endfor %} +
+
+
+
+

{{ 'average_spending_per_destination'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'average_earning_per_source'|_ }}

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+
+
+

{{ 'expenses'|_ }} ({{ trans('firefly.topX', {number: listLength}) }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+
+
+

{{ 'income'|_ }} ({{ trans('firefly.topX', {number: listLength}) }})

+
+
+
+ {# loading indicator #} +
+ +
+
+
+
+ +{% endblock %} + +{% block scripts %} + + + + + + + + + +{% endblock %} + +{% block styles %} + +{% endblock %} diff --git a/resources/views/reports/tag/partials/account-per-tag.twig b/resources/views/reports/tag/partials/account-per-tag.twig new file mode 100644 index 0000000000..871cf05d71 --- /dev/null +++ b/resources/views/reports/tag/partials/account-per-tag.twig @@ -0,0 +1,40 @@ + + + + + {% for tag in tags %} + + {% endfor %} + + + + {% for account in report %} + {% for currency in account.currencies %} + + + {% for tag in tags %} + + {% endfor %} + {% endfor %} + + + + + + +
{{ 'name'|_ }}{{ tag.tag }}
+ {{ account.name }} ({{ currency.currency_name }}) + + {% if currency.tags[tag.id] %} + + {% endfor %} +
+

+ {{ 'tag_report_expenses_listed_once'|_ }} +

+
diff --git a/resources/views/reports/tag/partials/accounts.twig b/resources/views/reports/tag/partials/accounts.twig new file mode 100644 index 0000000000..4e9ce9e9a2 --- /dev/null +++ b/resources/views/reports/tag/partials/accounts.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for account in report %} + {% for currency in account.currencies %} + + + + + + + {% endfor %} + {% endfor %} + + + {% for sum in sums %} + + + + + + + {% endfor %} + +
{{ 'name'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}{{ 'sum'|_ }}
+ {{ account.name }} ({{ currency.currency_name }}) + + {{ formatAmountBySymbol(currency.spent, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.earned, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.sum, currency.currency_symbol, currency.currency_decimal_places) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.spent_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.earned_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.total_sum, sum.currency_symbol, sum.currency_decimal_places) }} +
diff --git a/resources/views/reports/tag/partials/avg-expenses.twig b/resources/views/reports/tag/partials/avg-expenses.twig new file mode 100644 index 0000000000..b34a2ecc63 --- /dev/null +++ b/resources/views/reports/tag/partials/avg-expenses.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'account'|_ }}{{ 'spent_average'|_ }}{{ 'total'|_ }}{{ 'transaction_count'|_ }}
+ + {{ row.destination_account_name }} + + + {{ formatAmountBySymbol(row.avg, row.currency_symbol, row.currency_decimal_places) }} + + {{ formatAmountBySymbol(row.sum, row.currency_symbol, row.currency_decimal_places) }} + + {{ row.transactions }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/tag/partials/avg-income.twig b/resources/views/reports/tag/partials/avg-income.twig new file mode 100644 index 0000000000..b859f13a09 --- /dev/null +++ b/resources/views/reports/tag/partials/avg-income.twig @@ -0,0 +1,46 @@ + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'account'|_ }}{{ 'spent_average'|_ }}{{ 'total'|_ }}{{ 'transaction_count'|_ }}
+ + {{ row.source_account_name }} + + + {{ formatAmountBySymbol(row.avg, row.currency_symbol, row.currency_decimal_places) }} + + {{ formatAmountBySymbol(row.sum, row.currency_symbol, row.currency_decimal_places) }} + + {{ row.transactions }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/tag/partials/tags.twig b/resources/views/reports/tag/partials/tags.twig new file mode 100644 index 0000000000..fb12820f3d --- /dev/null +++ b/resources/views/reports/tag/partials/tags.twig @@ -0,0 +1,64 @@ + + + + + + + + + + + {% for tag in report %} + {% if tag.currencies|length == 0 %} + + + + + + + {% endif %} + {% for currency in tag.currencies %} + + + + + + + {% endfor %} + {% endfor %} + + + {% for sum in sums %} + + + + + + + {% endfor %} + + + + +
{{ 'name'|_ }}{{ 'spent'|_ }}{{ 'earned'|_ }}{{ 'sum'|_ }}
+ {{ tag.name }} +
+ {{ tag.name }} ({{ currency.currency_name }}) + + {{ formatAmountBySymbol(currency.spent, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.earned, currency.currency_symbol, currency.currency_decimal_places) }} + + {{ formatAmountBySymbol(currency.sum, currency.currency_symbol, currency.currency_decimal_places) }} +
{{ 'sum'|_ }} ({{ sum.currency_name }}) + {{ formatAmountBySymbol(sum.spent_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.earned_sum, sum.currency_symbol, sum.currency_decimal_places) }} + + {{ formatAmountBySymbol(sum.total_sum, sum.currency_symbol, sum.currency_decimal_places) }} +
+

+ {{ 'tag_report_expenses_listed_once'|_ }} +

+
+ diff --git a/resources/views/reports/tag/partials/top-expenses.twig b/resources/views/reports/tag/partials/top-expenses.twig new file mode 100644 index 0000000000..1e88ec350b --- /dev/null +++ b/resources/views/reports/tag/partials/top-expenses.twig @@ -0,0 +1,54 @@ + + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'description'|_ }}{{ 'date'|_ }}{{ 'account'|_ }}{{ 'tag'|_ }}{{ 'amount'|_ }}
+ + {{ row.description }} + + + {{ row.date }} + + + {{ row.destination_account_name }} + + + + {{ row.tag_name }} + + + {{ formatAmountBySymbol(row.amount, row.currency_symbol, row.currency_decimal_places) }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/reports/tag/partials/top-income.twig b/resources/views/reports/tag/partials/top-income.twig new file mode 100644 index 0000000000..12dc972911 --- /dev/null +++ b/resources/views/reports/tag/partials/top-income.twig @@ -0,0 +1,54 @@ + + + + + + + + + + + + {% for row in result %} + {% if loop.index > listLength %} + + {% else %} + + {% endif %} + + + + + + + + + + {% endfor %} + + + {% if result|length > listLength %} + + + + {% endif %} + +
{{ 'description'|_ }}{{ 'date'|_ }}{{ 'account'|_ }}{{ 'tag'|_ }}{{ 'amount'|_ }}
+ + {{ row.description }} + + + {{ row.date }} + + + {{ row.source_account_name }} + + + + {{ row.tag_name }} + + + {{ formatAmountBySymbol(row.amount, row.currency_symbol, row.currency_decimal_places) }} +
+ {{ trans('firefly.show_full_list',{number:incomeTopLength}) }} +
diff --git a/resources/views/rules/index.twig b/resources/views/rules/index.twig new file mode 100644 index 0000000000..4e66394ae8 --- /dev/null +++ b/resources/views/rules/index.twig @@ -0,0 +1,204 @@ +{% extends './v1/layout/default' %} +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} +{% block content %} + + + + {% if ruleGroups|length == 1 and ruleGroups[0].rules.count() == 0 %} + {% include 'v1.partials.empty' with {objectType: 'default', type: 'rules',route: route('rules.create')} %} + {# make FF ignore demo for now. #} + {% set shownDemo = true %} + {% endif %} + + {% for ruleGroup in ruleGroups %} +
+
+
+
+

+ {% if ruleGroup.active %} + {{ ruleGroup.title }} + {% else %} + {{ ruleGroup.title }} ({{ 'inactive'|_|lower }}) + {% endif %} +

+ + +
+
+ + + +
+
+ +
+
+

+ {{ ruleGroup.description }} +

+ + {% if ruleGroup.rules.count() > 0 %} + + + + + + + + + + + + + {% for rule in ruleGroup.rules %} + + + + + + + + + {% endfor %} + +
   {{ 'rule_name'|_ }}
+
+ +
+
+
+ + +
+
+
+ {% if rule.active %} + {# show which transactions would match #} + + + {# actually execute rule #} + + {% endif %} + + {# duplicate rule #} + +
+
+ {% if rule.active %} + {{ rule.title }} + {% else %} + {{ rule.title }} ({{ 'inactive'|_|lower }}) + {% endif %} + {% if rule.stop_processing %} + + {% endif %} + + {% if rule.description != "" %} + + {% endif %} +
{% if rule.strict %}{{ 'rule_is_strict'|_ }}{% else %}{{ 'rule_is_not_strict'|_ }}{% endif %}
+
+ {% else %} +

+ {{ 'no_rules_in_group'|_ }} +

+ {% endif %} +

+
+ {{ 'new_rule'|_ }} +

+
+
+
+
+ {% endfor %} + + {% include 'v1.rules.partials.test-trigger-modal' %} + + + +{% endblock %} +{% block scripts %} + + + +{% endblock %} diff --git a/resources/views/rules/partials/action.twig b/resources/views/rules/partials/action.twig new file mode 100644 index 0000000000..981d2a2e61 --- /dev/null +++ b/resources/views/rules/partials/action.twig @@ -0,0 +1,32 @@ + + + + + +{# See reference nr. 2 #} + + + + + + {% if errors.has('actions.'~count~'.value') %} +

+ {{ errors.first('actions.'~count~'.value') }} +

+ {% endif %} + + +
+ +
+ + diff --git a/resources/views/rules/partials/test-trigger-modal.twig b/resources/views/rules/partials/test-trigger-modal.twig new file mode 100644 index 0000000000..11b03b288a --- /dev/null +++ b/resources/views/rules/partials/test-trigger-modal.twig @@ -0,0 +1,21 @@ + diff --git a/resources/views/rules/partials/trigger.twig b/resources/views/rules/partials/trigger.twig new file mode 100644 index 0000000000..88758b9e98 --- /dev/null +++ b/resources/views/rules/partials/trigger.twig @@ -0,0 +1,34 @@ + + + + + + + + + + {% if errors.has('triggers.'~count~'.value') %} +

+ {{ errors.first('triggers.'~count~'.value') }} +

+ {% endif %} + + +
+ +
+ + diff --git a/resources/views/rules/rule-group/create.twig b/resources/views/rules/rule-group/create.twig new file mode 100644 index 0000000000..019a7cb858 --- /dev/null +++ b/resources/views/rules/rule-group/create.twig @@ -0,0 +1,56 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} +
+ +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('title') }} +
+
+
+
+ + {# optional fields #} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('description') }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','rule-group') }} +
+ +
+ +
+ +
+
+{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/rules/rule-group/delete.twig b/resources/views/rules/rule-group/delete.twig new file mode 100644 index 0000000000..ae74987cdf --- /dev/null +++ b/resources/views/rules/rule-group/delete.twig @@ -0,0 +1,54 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, ruleGroup) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_rule_group', {'title': ruleGroup.title}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.ruleGroup_areYouSure', {'title': ruleGroup.title}) }} +

+ + + {% if ruleGroup.rules|length > 0 %} +

+ {{ trans_choice('form.also_delete_rules', ruleGroup.rules|length) }} +

+ +

+ {{ trans_choice('firefly.save_rules_by_moving', ruleGroup.rules|length) }} +

+ +

+ {{ RuleForm.ruleGroupListWithEmpty('move_rules_before_delete',null, {'hidden': ruleGroup.id}) }} +

+ {% else %} + + {% endif %} + +
+ + + +
+
+
+
+{% endblock %} diff --git a/resources/views/rules/rule-group/edit.twig b/resources/views/rules/rule-group/edit.twig new file mode 100644 index 0000000000..43a72103e5 --- /dev/null +++ b/resources/views/rules/rule-group/edit.twig @@ -0,0 +1,60 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, ruleGroup) }} +{% endblock %} + +{% block content %} + {{ Form.model(ruleGroup, {'class' : 'form-horizontal','id' : 'update','url' : route('rule-groups.update',ruleGroup.id) } ) }} + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('active', 1) }} + + {{ ExpandedForm.text('title') }} +
+
+ +
+
+ + {# optional fields #} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('description', ruleGroup.description) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','rule-group') }} +
+ +
+
+
+ + + +{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/rules/rule-group/select-transactions.twig b/resources/views/rules/rule-group/select-transactions.twig new file mode 100644 index 0000000000..cce4659467 --- /dev/null +++ b/resources/views/rules/rule-group/select-transactions.twig @@ -0,0 +1,56 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, ruleGroup) }} +{% endblock %} + +{% block content %} + +
+ + +
+
+ +
+
+

{{ subTitle }}

+
+
+
+

+ {{ trans('firefly.apply_rule_group_selection_intro', {title: ruleGroup.title}) }} +

+

+ {{ 'apply_rule_warning'|_ }} +

+
+
+ {{ ExpandedForm.date('start', first) }} + {{ ExpandedForm.date('end', today) }} + {{ AccountForm.assetAccountCheckList('accounts', {'select_all': true,'class': 'account-checkbox', 'label': trans('firefly.include_transactions_from_accounts') }) }} +
+
+
+
+ +
+
+
+
+{% endblock %} +{% block scripts %} + + + + +{% endblock %} + +{% block styles %} + + +{% endblock %} diff --git a/resources/views/rules/rule/create.twig b/resources/views/rules/rule/create.twig new file mode 100644 index 0000000000..ee4d6f9b5b --- /dev/null +++ b/resources/views/rules/rule/create.twig @@ -0,0 +1,158 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, ruleGroup) }} +{% endblock %} + +{% block content %} + +
+ + + + + + + {% if bill %} +
+
+
+
+

{{ trans('firefly.create_rule_for_bill', {name: bill.name}) }}

+
+
+

+ {{ trans('firefly.create_rule_for_bill_txt', {name: bill.name}) }} +

+
+
+
+
+ {% endif %} +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('title') }} + {{ ExpandedForm.select('trigger',allJournalTriggers()) }} + {{ RuleForm.ruleGroupList('rule_group_id', ruleGroup.id) }} + {{ ExpandedForm.checkbox('stop_processing',1,null, {helpText: trans('firefly.rule_help_stop_processing')}) }} + {{ ExpandedForm.checkbox('strict',1, null,{helpText: trans('firefly.rule_help_strict')}) }} +
+
+
+
+ + {# optional fields #} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('description', null, {helpText: trans('firefly.field_supports_markdown')}) }} +
+
+
+
+ +
+
+
+
+

{{ 'rule_triggers'|_ }}

+
+
+ + + + + + + + + + {% for trigger in oldTriggers %} + {{ trigger|raw }} + {% endfor %} + + +
{{ 'trigger'|_ }}{{ 'trigger_value'|_ }}{{ 'stop_processing_other_triggers'|_ }}
+

+
+ + {{ 'test_rule_triggers'|_ }} +

+
+
+
+
+ + {% include 'v1.rules.partials.test-trigger-modal' %} + +
+
+
+
+

{{ 'rule_actions'|_ }}

+
+
+ + + + + + + + + + {% for action in oldActions %} + {{ action|raw }} + {% endfor %} + + +
{{ 'action'|_ }}{{ 'action_value'|_ }}{{ 'stop_executing_other_actions'|_ }}
+

+
+ {{ 'add_rule_action'|_ }} +

+
+
+
+
+ +
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','rule') }} +
+ +
+ +
+ +
+
+ +{% endblock %} +{% block scripts %} + + + + +{% endblock %} +{% block styles %} +{% endblock %} diff --git a/resources/views/rules/rule/delete.twig b/resources/views/rules/rule/delete.twig new file mode 100644 index 0000000000..7013e30a94 --- /dev/null +++ b/resources/views/rules/rule/delete.twig @@ -0,0 +1,34 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, rule) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('form.delete_rule', {'title': rule.title}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.rule_areYouSure', {'title': rule.title}) }} +

+
+ +
+
+
+
+{% endblock %} diff --git a/resources/views/rules/rule/edit.twig b/resources/views/rules/rule/edit.twig new file mode 100644 index 0000000000..f533768793 --- /dev/null +++ b/resources/views/rules/rule/edit.twig @@ -0,0 +1,139 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, rule) }} +{% endblock %} + +{% block content %} + {{ Form.model(rule, {'class' : 'form-horizontal','id' : 'store','url' : route('rules.update', rule.id)}) }} + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('title') }} + {{ RuleForm.ruleGroupList('rule_group_id', ruleGroup.id) }} + {{ ExpandedForm.select('trigger',allJournalTriggers(), primaryTrigger) }} + + {# only correct way to do active checkbox #} + {{ ExpandedForm.checkbox('active', 1, null, {helpText: trans('firefly.rule_help_active')}) }} + + {{ ExpandedForm.checkbox('stop_processing',1,rule.stop_processing, {helpText: trans('firefly.rule_help_stop_processing')}) }} + {{ ExpandedForm.checkbox('strict',1,rule.strict, {helpText: trans('firefly.rule_help_strict')}) }} +
+
+
+
+ + {# optional fields #} +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.textarea('description', rule.description, {helpText: trans('firefly.field_supports_markdown')}) }} +
+
+
+
+ +
+
+
+
+

{{ 'rule_triggers'|_ }}

+
+
+ + + + + + + + + + {% for trigger in oldTriggers %} + {{ trigger|raw }} + {% endfor %} + + +
{{ 'trigger'|_ }}{{ 'trigger_value'|_ }}{{ 'stop_processing_other_triggers'|_ }}
+

+
+ {{ 'add_rule_trigger'|_ }} + {{ 'test_rule_triggers'|_ }} +

+
+
+
+
+ + {% include 'v1.rules.partials.test-trigger-modal' %} + +
+
+
+
+

{{ 'rule_actions'|_ }}

+
+
+ + + + + + + + + + {% for action in oldActions %} + {{ action|raw }} + {% endfor %} + + +
{{ 'action'|_ }}{{ 'action_value'|_ }}{{ 'stop_executing_other_actions'|_ }}
+

+
+ {{ 'add_rule_action'|_ }} +

+
+
+
+
+ +
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','rule') }} +
+ +
+ +
+ +
+ + + +{% endblock %} +{% block scripts %} + + + + +{% endblock %} diff --git a/resources/views/rules/rule/select-transactions.twig b/resources/views/rules/rule/select-transactions.twig new file mode 100644 index 0000000000..976b5e0afc --- /dev/null +++ b/resources/views/rules/rule/select-transactions.twig @@ -0,0 +1,56 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, rule) }} +{% endblock %} + +{% block content %} + +
+ + +
+
+ +
+
+

{{ subTitle }}

+
+
+
+

+ {{ trans('firefly.apply_rule_selection_intro', {title: rule.title}) }} +

+

+ {{ 'apply_rule_warning'|_ }} +

+
+
+ {{ ExpandedForm.date('start', first) }} + {{ ExpandedForm.date('end', today) }} + {{ AccountForm.assetAccountCheckList('accounts', {'select_all': true, 'class': 'account-checkbox', 'label': trans('firefly.include_transactions_from_accounts') }) }} +
+
+
+
+ +
+
+
+
+{% endblock %} +{% block scripts %} + + + + +{% endblock %} + +{% block styles %} + + +{% endblock %} diff --git a/resources/views/search/index.twig b/resources/views/search/index.twig new file mode 100644 index 0000000000..4871b3f85e --- /dev/null +++ b/resources/views/search/index.twig @@ -0,0 +1,154 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, fullQuery) }} +{% endblock %} + +{% block content %} +
+
+
+
+

{{ 'search_box'|_ }}

+
+
+

+ {{ 'search_box_intro'|_ }} +

+ {# search form #} +
+
+ +
+ +
+
+
+
+ + {% if ruleId > 0 and ruleChanged %} + {{ trans('firefly.update_rule_from_query', {rule: rule.title}) }} + {% endif %} + {{ 'create_rule_from_query'|_ }} +
+
+ {% if 0 != ruleId %} + + {% endif %} +
+ {% if '' != query %} +

+ {{ trans('firefly.search_for_query', {query: query|escape})|raw }} +

+ {% endif %} + + {% if invalidOperators|length > 0 %} +

{{ trans('firefly.invalid_operators_list') }}

+
    + {% for operator in invalidOperators %} +
  • {{ operator.type }}:{{ operator.value }}
  • + {% endfor %} +
+ {% endif %} + + {% if operators|length > 0 %} +

{{ trans('firefly.modifiers_applies_are') }}

+
    + {% for operator in operators %} +
  • {{ trans('firefly.search_modifier_'~operator.type, {value: operator.value}) }}
  • + {% endfor %} +
+ {% endif %} +
+
+
+
+ {% if query or operators|length > 0 %} +
+
+ +
+
+ + {% endif %} + {% if query == "" and operators|length == 0 %} +
+
+
+
+

{{ 'search_results'|_ }}

+
+
+

{{ 'no_results_for_empty_search'|_ }}

+
+
+
+ +
+ {% endif %} +{% endblock %} +{% block scripts %} + + {# required for groups.twig #} + + + +{% endblock %} diff --git a/resources/views/search/search.twig b/resources/views/search/search.twig new file mode 100644 index 0000000000..4a3e8ddb0f --- /dev/null +++ b/resources/views/search/search.twig @@ -0,0 +1,11 @@ +

+ {% if true == hasPages %} + {{ trans('firefly.search_found_more_transactions', {count: groups.count(), time: searchTime}) }} + {% elseif 0 == groups.count() %} + {{ trans_choice('firefly.search_found_transactions', 0, {time: searchTime}) }} + {% else %} + {{ trans_choice('firefly.search_found_transactions', groups.count(), {time: searchTime}) }} + {% endif %} +

+ +{% include 'list.groups' %} diff --git a/resources/views/tags/create.twig b/resources/views/tags/create.twig new file mode 100644 index 0000000000..06cca5314a --- /dev/null +++ b/resources/views/tags/create.twig @@ -0,0 +1,73 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + + +
+ +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('tag') }} +
+
+
+ +
+ +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.date('date') }} + {{ ExpandedForm.textarea('description') }} + {{ ExpandedForm.location('location', null, {locations: locations}) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('create','tag') }} +
+ +
+ +
+
+
+{% endblock %} +{% block scripts %} + + + + +{% endblock %} +{% block styles %} + + + +{% endblock %} diff --git a/resources/views/tags/delete.twig b/resources/views/tags/delete.twig new file mode 100644 index 0000000000..e9519698a1 --- /dev/null +++ b/resources/views/tags/delete.twig @@ -0,0 +1,40 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, tag) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('firefly.delete_tag',{tag: tag.tag}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.tag_areYouSure', {'tag': tag.tag}) }} +

+ +

+ {% if tag.transactionjournals.count() > 0 %} + {{ Lang.choice('form.tag_keep_transactions', tag.transactionjournals.count(), {count: tag.transactionjournals.count()}) }} + {% endif %} +

+
+ +
+
+
+
+{% endblock %} diff --git a/resources/views/tags/edit.twig b/resources/views/tags/edit.twig new file mode 100644 index 0000000000..1e0045422c --- /dev/null +++ b/resources/views/tags/edit.twig @@ -0,0 +1,78 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, tag) }} +{% endblock %} + +{% block content %} + + + + {{ Form.model(tag, {'class' : 'form-horizontal','enctype': 'multipart/form-data','id' : 'update','url' : route('tags.update',tag.id)}) }} + + + +
+
+
+
+

{{ 'mandatoryFields'|_ }}

+
+
+ {{ ExpandedForm.text('tag') }} +
+
+
+ +
+ +
+
+

{{ 'optionalFields'|_ }}

+
+
+ {{ ExpandedForm.date('date', tag.date.format('Y-m-d')) }} + {{ ExpandedForm.textarea('description', tag.description) }} + {{ ExpandedForm.location('location', null, {locations: locations}) }} + {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} +
+
+
+
+
+
+ {# panel for options #} +
+
+

{{ 'options'|_ }}

+
+
+ {{ ExpandedForm.optionsList('update','tag') }} +
+ +
+ +
+
+ + + +{% endblock %} +{% block scripts %} + + + + +{% endblock %} +{% block styles %} + + + +{% endblock %} diff --git a/resources/views/tags/index.twig b/resources/views/tags/index.twig new file mode 100644 index 0000000000..7ec762fbb1 --- /dev/null +++ b/resources/views/tags/index.twig @@ -0,0 +1,76 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName) }} +{% endblock %} + +{% block content %} + {% if count == 0 %} + {% include 'partials.empty' with {objectType: 'default', type: 'tags',route: route('tags.create')} %} + {% else %} + +
+ + {% for period, entries in tags %} + {% if entries|length > 0 %} +
+
+
+
+

+ {% if period == 'no-date' %}{{ 'without_date'|_ }}{% else %}{{ period }}{% endif %} +

+
+
+ + +
    + {% for tagInfo in entries %} +
  • + + +
  • + {% endfor %} +
+ +
+
+
+
+ {% endif %} + {% endfor %} +
+
+

+ {{ ('no_tags_create_default')|_ }} + +

+
+
+
+ {% endif %} + +{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/tags/show.twig b/resources/views/tags/show.twig new file mode 100644 index 0000000000..1488514e4f --- /dev/null +++ b/resources/views/tags/show.twig @@ -0,0 +1,308 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, tag, start, end) }} +{% endblock %} + +{% block content %} +
+
+
+ +
+ + {% if tag.description %} + + + + + {% endif %} + {% if tag.date %} + + + + + {% endif %} + + {# total amount #} + {% set currentSum = 0 %} + {% for set in sums %} + {% set currentSum = currentSum + set.Withdrawal + set.Transfer + set.Deposit %} + {% endfor %} + + {% if currentSum != 0 %} + + + + + {% endif %} + + {# total expense excl. transfer #} + {% set currentSum = 0 %} + {% for set in sums %} + {% set currentSum = currentSum + set.Withdrawal + set.Deposit %} + {% endfor %} + {% if currentSum != 0 %} + + + + + {% endif %} + + {# withdrawals #} + {% set currentSum = 0 %} + {% for set in sums %} + {% set currentSum = currentSum + set.Withdrawal %} + {% endfor %} + {% if currentSum != 0 %} + + + + + {% endif %} + + {# deposits #} + {% set currentSum = 0 %} + {% for set in sums %} + {% set currentSum = currentSum + set.Deposit %} + {% endfor %} + {% if currentSum != 0 %} + + + + + {% endif %} + + {# transfers #} + {% set currentSum = 0 %} + {% for set in sums %} + {% set currentSum = currentSum + set.Transfer %} + {% endfor %} + {% if currentSum != 0 %} + + + + + {% endif %} + + {# reconciliation #} + {% set currentSum = 0 %} + {% for set in sums %} + {% set currentSum = currentSum + set.Reconciliation %} + {% endfor %} + {% if currentSum != 0 %} + + + + + {% endif %} + + {# + {% if sums.Transfer != 0 %} + + + + + {% endif %} + {% if sums.Reconciliation != 0 %} + + + + + {% endif %} + #} +
+ {{ trans('list.description') }} + {{ tag.description }}
+ {{ trans('list.date') }} + + {{ tag.date.formatLocalized(monthAndDayFormat) }} +
{{ trans('list.sum') }} + {% for set in sums %} + {{ formatAmountBySymbol(set.Withdrawal + set.Transfer + set.Deposit, set.currency_symbol, set.currency_decimal_places, true) }}{% if loop.index != sums|length %},{% endif %} + {% endfor %} +
{{ trans('list.sum_excluding_transfers') }} + {% for set in sums %} + {{ formatAmountBySymbol(set.Withdrawal + set.Deposit, set.currency_symbol, set.currency_decimal_places, true) }}{% if loop.index != sums|length %},{% endif %} + {% endfor %} +
{{ trans('list.sum_withdrawals') }} + {% for set in sums %} + {{ formatAmountBySymbol(set.Withdrawal, set.currency_symbol, set.currency_decimal_places, true) }}{% if loop.index != sums|length %},{% endif %} + {% endfor %} +
{{ trans('list.sum_deposits') }} + {% for set in sums %} + {{ formatAmountBySymbol(set.Deposit, set.currency_symbol, set.currency_decimal_places, true) }}{% if loop.index != sums|length %},{% endif %} + {% endfor %} +
{{ trans('list.sum_transfers') }} + {% for set in sums %} + {{ formatAmountBySymbol(set.Transfer, set.currency_symbol, set.currency_decimal_places, true) }}{% if loop.index != sums|length %},{% endif %} + {% endfor %} +
{{ trans('list.sum_reconciliations') }} + {% for set in sums %} + {{ formatAmountBySymbol(set.Reconciliation, set.currency_symbol, set.currency_decimal_places, true) }}{% if loop.index != sums|length %},{% endif %} + {% endfor %} +
{{ trans('list.sum_transfers') }} {{ sums.Transfer|formatAmount }}
{{ trans('list.sum_reconciliations') }} {{ sums.Reconciliation|formatAmount }}
+
+ +
+
+
+
+ +
+ {% if(location) %} +
+ {% else %} +

{{ 'no_location_set'|_ }}

+ {% endif %} +
+
+
+
+ {% if attachments.count() > 0 %} +
+
+
+
+

+ {{ 'attachments'|_ }} +

+
+
+ {% include 'list.attachments' %} +
+
+
+
+ {% endif %} + + {% if periods|length > 0 %} + + {% endif %} +
+
+
+ +
+ {% include 'list.groups' with {showBudget:true, showCategory: true} %} + + {% if periods|length > 0 %} +

+ + + {{ 'show_all_no_filter'|_ }} + +

+ {% else %} +

+ + + {{ 'show_the_current_period_and_overview'|_ }} + +

+ {% endif %} +
+
+
+ {% if periods|length > 0 %} +
+ {% include 'list.periods' %} +
+ {% endif %} +
+ {% if periods|length > 0 %} + + {% endif %} + +{% endblock %} +{% block styles %} + +{% endblock %} +{% block scripts %} + + + + +{% endblock %} diff --git a/resources/views/test/test.twig b/resources/views/test/test.twig new file mode 100644 index 0000000000..6befc1f428 --- /dev/null +++ b/resources/views/test/test.twig @@ -0,0 +1,2 @@ +list-length: {{ listLength }} +user-email: {{ Auth.user.email }} diff --git a/resources/views/transactions/bulk/edit.twig b/resources/views/transactions/bulk/edit.twig new file mode 100644 index 0000000000..4786b49eb7 --- /dev/null +++ b/resources/views/transactions/bulk/edit.twig @@ -0,0 +1,199 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, journals) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ 'mass_bulk_journals'|_ }}

+
+ +
+

+ {{ 'mass_bulk_journals_explain'|_ }} +

+ +
+
+ + + + + + + + + + + + + + {% for journal in journals %} + + + + + + + + + + + {% endfor %} + +
{{ trans('list.description') }}{{ trans('list.amount') }}{{ trans('list.date') }}{{ trans('list.category') }}{{ trans('list.budget') }}{{ trans('list.tags') }} 
+ + {{ journal.description }} + {% if journal.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% endif %} + {% elseif journal.transaction_type_type == 'Transfer' %} + + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places, false) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places, false) }}) + {% endif %} + + {% else %} + {{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + + + {{ journal.date.formatLocalized(monthAndDayFormat) }} + {% if journal.category_id != null %} + {{ journal.category_name }} + {% endif %} + + {% if journal.budget_id != null %} + {{ journal.budget_name }} + {% endif %} + + {% for tag in journal.tags %} + {% if 0 != tag.id %} + + + {{ tag.name }} + + {% endif %} + {% endfor %} + + {% if journal.journals_in_group > 1 %} + + {% endif %} +
+
+
+

+ {{ 'bulk_set_new_values'|_ }} +

+
+
+ + + + + + + + + + + + + + + + +
{{ trans('list.category') }} + + +
+ +
+
{{ trans('list.budget') }} + + +
+ +
+
{{ trans('list.tags') }} + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + + +
+ +
+ +
+ +
+{% endblock %} +{% block scripts %} + + + + + +{% endblock %} +{% block styles %} + +{% endblock %} diff --git a/resources/views/transactions/convert.twig b/resources/views/transactions/convert.twig new file mode 100644 index 0000000000..dfb37d0618 --- /dev/null +++ b/resources/views/transactions/convert.twig @@ -0,0 +1,285 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, group, groupTitle) }} +{% endblock %} + +{% block content %} +
+ +
+
+
+
+

{{ ('convert_options_'~sourceType.type~destinationType.type)|_ }}

+
+
+

+ {# ONE: WITHDRAWAL TO DEPOSIT #} + {% if sourceType.type == 'Withdrawal' and destinationType.type == 'Deposit' %} + {{ trans_choice('firefly.convert_expl_w_d', groupArray.transactions|length) }} + {{ trans_choice('firefly.convert_select_sources', groupArray.transactions|length) }} + {% endif %} + + {# TWO: WITHDRAWAL TO TRANSFER #} + {% if sourceType.type == 'Withdrawal' and destinationType.type == 'Transfer' %} + {{ trans_choice('firefly.convert_expl_w_t', groupArray.transactions|length) }} + {{ trans_choice('firefly.convert_select_destinations', groupArray.transactions|length) }} + {% endif %} + + {# THREE: DEPOSIT TO WITHDRAWAL #} + {% if sourceType.type == 'Deposit' and destinationType.type == 'Withdrawal' %} + {{ trans_choice('firefly.convert_expl_d_w', groupArray.transactions|length) }} + {{ trans_choice('firefly.convert_select_destinations', groupArray.transactions|length) }} + {% endif %} + + {# FOUR: DEPOSIT TO TRANSFER#} + {% if sourceType.type == 'Deposit' and destinationType.type == 'Transfer' %} + {{ trans_choice('firefly.convert_expl_d_t', groupArray.transactions|length) }} + {{ trans_choice('firefly.convert_select_sources', groupArray.transactions|length) }} + {% endif %} + + {# FIVE: TRANSFER TO WITHDRAWAL #} + {% if sourceType.type == 'Transfer' and destinationType.type == 'Withdrawal' %} + {{ trans_choice('firefly.convert_expl_t_w', groupArray.transactions|length) }} + {{ trans_choice('firefly.convert_select_destinations', groupArray.transactions|length) }} + {% endif %} + + {# SIX: TRANSFER TO DEPOSIT #} + {% if sourceType.type == 'Transfer' and destinationType.type == 'Deposit' %} + {{ trans_choice('firefly.convert_expl_t_d', groupArray.transactions|length) }} + {{ trans_choice('firefly.convert_select_sources', groupArray.transactions|length) }} + {% endif %} +

+ + + + + + + + + + {% for transaction in groupArray.transactions %} + + + + + + + + {% endfor %} +
IDDescriptionSource accountDestination accountAmount
#{{ transaction.transaction_journal_id }}{{ transaction.description }} + {# ONE: WITHDRAWAL TO DEPOSIT #} + {% if sourceType.type == 'Withdrawal' and destinationType.type == 'Deposit' %} + {# NEW DESTINATION = Asset, SOURCE MUST BE [Revenue, Cash, Loan, Debt, Mortgage] #} + {% if transaction.source_type == 'Asset account' %} + {{ Form.select('source_id['~transaction.transaction_journal_id~']', validDepositSources, null, {class: 'form-control'}) }} + {% endif %} + + {# NEW DESTINATION = [Loan, Debt, Mortgage], SOURCE MUST BE [Revenue] #} + {% if + transaction.source_type == 'Loan' or + transaction.source_type == 'Debt' or + transaction.source_type == 'Mortgage' %} + + {% endif %} + {% endif %} + + {# TWO: WITHDRAWAL TO TRANSFER #} + {% if sourceType.type == 'Withdrawal' and destinationType.type == 'Transfer' %} + + {{ transaction.source_name }} + {# hide source in hidden input #} + + {% endif %} + + {# THREE: DEPOSIT TO WITHDRAWAL #} + {% if sourceType.type == 'Deposit' and destinationType.type == 'Withdrawal' %} + {{ transaction.destination_name }} + + {# hide new source in hidden input #} + + {% endif %} + + {# FOUR: DEPOSIT TO TRANSFER#} + {% if sourceType.type == 'Deposit' and destinationType.type == 'Transfer' %} + {# if new destination is asset, then asset#} + {% if transaction.destination_type == 'Asset account' %} + {{ Form.select('source_id['~transaction.transaction_journal_id~']', assets,null, {class: 'form-control'}) }} + {% endif %} + {% if transaction.destination_type == 'Loan' or + transaction.destination_type == 'Debt' or + transaction.destination_type == 'Mortgage' %} + {{ Form.select('source_id['~transaction.transaction_journal_id~']', liabilities,null, {class: 'form-control'}) }} + {% endif %} + + {# if new destination liability, then liability.#} + + {% endif %} + + {# FIVE: TRANSFER TO WITHDRAWAL #} + {% if sourceType.type == 'Transfer' and destinationType.type == 'Withdrawal' %} + {{ transaction.source_name }} + + {# hide source in hidden input #} + + {% endif %} + + {# SIX: TRANSFER TO DEPOSIT #} + {% if sourceType.type == 'Transfer' and destinationType.type == 'Deposit' %} + {# NEW DESTINATION = Asset, SOURCE MUST BE [Revenue, Cash, Loan, Debt, Mortgage] #} + {% if + transaction.source_type == 'Asset account' %} + {{ Form.select('source_id['~transaction.transaction_journal_id~']', validDepositSources, null, {class: 'form-control'}) }} + {% endif %} + {# NEW DESTINATION = [Debt, Mortgage, Load], SOURCE MUST BE [Revenue] #} + {% if + transaction.source_type == 'Loan' or + transaction.source_type == 'Debt' or + transaction.source_type == 'Mortgage' %} + + {% endif %} + + {% endif %} + + + {# ONE: WITHDRAWAL TO DEPOSIT #} + {% if sourceType.type == 'Withdrawal' and destinationType.type == 'Deposit' %} + {{ transaction.source_name }} + + {# hide destination in hidden input #} + + {% endif %} + + {# TWO: WITHDRAWAL TO TRANSFER #} + {% if sourceType.type == 'Withdrawal' and destinationType.type == 'Transfer' %} + {#if the source is a liability, destination must also be a liability.#} + {% if + transaction.source_type == 'Loan' or + transaction.source_type == 'Debt' or + transaction.source_type == 'Mortgage' %} + {{ Form.select('destination_id['~transaction.transaction_journal_id~']', liabilities, null, {class: 'form-control'}) }} + {% endif %} + + {# if the source is an asset, destination can only be an asset. #} + {% if transaction.source_type == 'Asset account' %} + {{ Form.select('destination_id['~transaction.transaction_journal_id~']', assets, null, {class: 'form-control'}) }} + {% endif %} + {% endif %} + + {# THREE: DEPOSIT TO WITHDRAWAL #} + {% if sourceType.type == 'Deposit' and destinationType.type == 'Withdrawal' %} + + {# if new source is Asset, destination must be [Expense, Loan, Debt or Mortgage] #} + {% if transaction.destination_type == 'Asset account' %} + {{ Form.select('destination_id['~transaction.transaction_journal_id~']', validWithdrawalDests, null, {class: 'form-control'}) }} + {% endif %} + {% if transaction.destination_type == 'Loan' or + transaction.destination_type == 'Debt' or + transaction.destination_type == 'Mortgage' %} + {# if new source is Liability, destination must be expense account. #} + + + {% endif %} + {% endif %} + + {# FOUR: DEPOSIT TO TRANSFER#} + {% if sourceType.type == 'Deposit' and destinationType.type == 'Transfer' %} + {{ transaction.destination_name }} + + {# hide destination in hidden input #} + + {% endif %} + + {# FIVE: TRANSFER TO WITHDRAWAL #} + {% if sourceType.type == 'Transfer' and destinationType.type == 'Withdrawal' %} + + {% if transaction.source_type == 'Asset account' %} + {{ Form.select('destination_id['~transaction.transaction_journal_id~']', validWithdrawalDests, null, {class: 'form-control'}) }} + {% endif %} + {% if transaction.source_type == 'Loan' or + transaction.source_type == 'Debt' or + transaction.source_type == 'Mortgage' %} + + {% endif %} + {% endif %} + + {# SIX: TRANSFER TO DEPOSIT #} + {% if sourceType.type == 'Transfer' and destinationType.type == 'Deposit' %} + {{ transaction.destination_name }} + + {# hide destination in hidden input #} + + {% endif %} + + {% if transaction.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% elseif transaction.transaction_type_type == 'Transfer' %} + {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places, false) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places, false) }}) + {% endif %} + {% else %} + {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} + {% if null != transaction.foreign_amount %} + ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} +
+
+ +
+
+
+
+ +{% endblock %} +{% block scripts %} + + +{% endblock %} diff --git a/resources/views/transactions/create.twig b/resources/views/transactions/create.twig new file mode 100644 index 0000000000..bbe1ce6073 --- /dev/null +++ b/resources/views/transactions/create.twig @@ -0,0 +1,20 @@ +{% set VUE_SCRIPT_NAME = 'create_transaction' %} +{% extends './v1/layout/default' %} +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, objectType) }} +{% endblock %} + +{% block content %} +
+{% endblock %} +{% block scripts %} + +{% endblock %} diff --git a/resources/views/transactions/delete.twig b/resources/views/transactions/delete.twig new file mode 100644 index 0000000000..3b636fe5ba --- /dev/null +++ b/resources/views/transactions/delete.twig @@ -0,0 +1,35 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, group) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ trans('form.delete_journal', {'description': group.title|default(journal.description)}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.journal_areYouSure', {'description': group.title|default(journal.description)}) }} +

+
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/transactions/edit.twig b/resources/views/transactions/edit.twig new file mode 100644 index 0000000000..560a2c96b0 --- /dev/null +++ b/resources/views/transactions/edit.twig @@ -0,0 +1,28 @@ +{% set VUE_SCRIPT_NAME = 'edit_transaction' %} +{% extends './v1/layout/default' %} +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, transactionGroup) }} +{% endblock %} + +{% block content %} +
+{% endblock %} + + +{% block definitions %} + +{% endblock %} + +{% block scripts %} + +{% endblock %} +{% block styles %} +{% endblock %} diff --git a/resources/views/transactions/index.twig b/resources/views/transactions/index.twig new file mode 100644 index 0000000000..6540483763 --- /dev/null +++ b/resources/views/transactions/index.twig @@ -0,0 +1,140 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, objectType, start, end) }} +{% endblock %} + +{% block content %} + + {# upper show-all instruction #} + {% if periods|length > 0 %} + + {% endif %} + + {% if periods|length > 0 %} + + {% set boxSize = 'col-lg-4 col-md-6 col-sm-12 col-xs-12' %} +
+ {# for withdrawals, deposits and transfers #} +
+
+
+

{{ 'categories'|_ }}

+
+
+ +
+
+
+ {# only for withdrawals #} + {% if objectType == 'withdrawal' %} +
+
+
+

{{ 'budgets'|_ }}

+
+
+ +
+
+
+ {% endif %} + {% if objectType != 'withdrawal' %} +
+
+
+

{{ 'all_source_accounts'|_ }}

+
+
+ +
+
+
+ {% endif %} + {# for all #} +
+
+
+

{{ 'all_destination_accounts'|_ }}

+
+
+ +
+
+
+
+ {% endif %} + + {# list with journals #} +
+
+
+
+

{{ subTitle }}

+
+
+ + {# actual list #} + {% include 'v1.list.groups' %} +
+ +
+
+ + {# boxes with info #} + {% if periods|length > 0 %} +
+ {% include 'v1.list.periods' %} +
+ {% endif %} + +
+ + {# lower show-all instruction #} + {% if periods|length > 0 %} + + {% endif %} + +{% endblock %} +{% block scripts %} + {# required for groups.twig #} + + + + + + + + +{% endblock %} diff --git a/resources/views/transactions/links/delete.twig b/resources/views/transactions/links/delete.twig new file mode 100644 index 0000000000..fb18fb1c19 --- /dev/null +++ b/resources/views/transactions/links/delete.twig @@ -0,0 +1,33 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, link) }} +{% endblock %} + +{% block content %} + +
+ +
+
+
+
+

{{ trans('firefly.delete_journal_link', {source: link.source.description|escape, destination: link.destination.description|escape, source_link: route('transactions.show', [link.source_id]) , destination_link: route('transactions.show',link.destination_id)})|raw }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+

+ {{ trans('form.journal_link_areYouSure', {source: link.source.description|escape, destination: link.destination.description|escape, source_link: route('transactions.show', [link.source_id]) , destination_link: route('transactions.show',link.destination_id)})|raw }} +

+
+ +
+
+
+
+{% endblock %} diff --git a/resources/views/transactions/links/modal.twig b/resources/views/transactions/links/modal.twig new file mode 100644 index 0000000000..ecd38eaf0f --- /dev/null +++ b/resources/views/transactions/links/modal.twig @@ -0,0 +1,52 @@ +
+ + + +
diff --git a/resources/views/transactions/mass/delete.twig b/resources/views/transactions/mass/delete.twig new file mode 100644 index 0000000000..135ef46d10 --- /dev/null +++ b/resources/views/transactions/mass/delete.twig @@ -0,0 +1,109 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, journals) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ 'mass_delete_journals'|_ }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} + {{ 'perm-delete-many'|_ }} +

+

+ {{ trans('form.mass_journal_are_you_sure') }} + {{ trans('form.mass_make_selection') }} +

+ + + + + + + + + + + + {% for journal in journals %} + + + + + + + + + + {% endfor %} +
 {{ trans('list.transaction_type') }}{{ trans('list.description') }}{{ trans('list.amount') }}
+ + + {% if journal.transaction_type_type == 'Withdrawal' %} + + {% endif %} + + {% if journal.transaction_type_type == 'Deposit' %} + + {% endif %} + + {% if journal.transaction_type_type == 'Transfer' %} + + {% endif %} + + {% if journal.transaction_type_type == 'Reconciliation' %} + + {% endif %} + {% if journal.transaction_type_type == 'Opening balance' %} + + {% endif %} + + {{ journal.description }} + + {% if journal.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% endif %} + {% elseif journal.transaction_type_type == 'Transfer' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places, false) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places, false) }}) + {% endif %} + + {% else %} + {{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + + {{ journal.date.formatLocalized(monthAndDayFormat) }} + + {{ journal.source_account_name }} + + {{ journal.destination_account_name }} +
+ +
+ +
+
+
+
+{% endblock %} diff --git a/resources/views/transactions/mass/edit.twig b/resources/views/transactions/mass/edit.twig new file mode 100644 index 0000000000..8ab5e6926e --- /dev/null +++ b/resources/views/transactions/mass/edit.twig @@ -0,0 +1,182 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, journals) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ 'mass_edit_journals'|_ }}

+
+
+

+ {{ 'cannot_edit_other_fields'|_ }} + {{ 'cannot_change_amount_reconciled'|_ }} +

+ + + + + + + + + + + + + {% for journal in journals %} + + + + {# AMOUNT #} + + + + + + + + {# category #} + + {# budget #} + + + {% endfor %} +
 {{ trans('list.description') }}{{ trans('list.amount') }}{{ trans('list.date') }}{{ trans('list.from') }}{{ trans('list.to') }}{{ trans('list.category') }}{{ trans('list.budget') }}
+ {# LINK TO EDIT FORM #} + + + + {# DESCRIPTION #} + + + {% if journal.reconciled == false %} +
+ {{ journal.currency_symbol }} + + +
+ {% if journal.foreign_amount %} + {# insert foreign data #} +
+ {{ journal.foreign_currency_symbol }} + + +
+ {% endif %} + {% endif %} + + {% if journal.reconciled != false %} + {% if journal.transaction_type_type == 'Deposit' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% endif %} + {% elseif journal.transaction_type_type == 'Transfer' %} + + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places, false) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places, false) }}) + {% endif %} + + {% else %} + {{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }} + {% if null != journal.foreign_amount %} + ({{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% endif %} + {% endif %} + {% endif %} + +
+ {# DATE #} + + + + {# SOURCE ACCOUNT ID FOR TRANSFER OR WITHDRAWAL #} + {% if journal.transaction_type_type == 'Transfer' or journal.transaction_type_type == 'Withdrawal' %} + + {% endif %} + + {# SOURCE ACCOUNT NAME FOR DEPOSIT #} + {% if journal.transaction_type_type == 'Deposit' %} + + {% endif %} + + + {# DESTINATION ACCOUNT NAME FOR TRANSFER AND DEPOSIT #} + {% if journal.transaction_type_type == 'Transfer' or journal.transaction_type_type == 'Deposit' %} + + + {% endif %} + + {# DESTINATION ACCOUNT NAME FOR WITHDRAWAL #} + {% if journal.transaction_type_type == 'Withdrawal' %} + + {% endif %} + + + + {% if journal.transaction_type_type == 'Withdrawal' %} + + {% endif %} +
+
+ +
+
+
+
+{% endblock %} +{% block scripts %} + + + + +{% endblock %} diff --git a/resources/views/transactions/show.twig b/resources/views/transactions/show.twig new file mode 100644 index 0000000000..29542300b7 --- /dev/null +++ b/resources/views/transactions/show.twig @@ -0,0 +1,455 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, transactionGroup) }} +{% endblock %} + +{% block content %} +
+
+
+
+

{{ 'transaction_journal_information'|_ }}

+
+ + +
+
+
+ + + + + + + + + + + + + + + +
{{ trans('list.type') }}{{ first.transactiontype.type|_ }}
{{ trans('list.description') }} + {% if splits == 1 %} + {{ first.description }} + {% else %} + {{ transactionGroup.title }} + {% endif %} +
{{ trans('list.date') }} + {{ first.date.formatLocalized(dateTimeFormat) }} +
+
+
+
+
+
+
+

{{ 'transaction_journal_meta'|_ }}

+
+
+ + + {% if first.transactiontype.type != 'Withdrawal' or splits == 1 %} + + + + + {% endif %} + + {% if first.transactiontype.type != 'Deposit' or splits == 1 %} + + + + + {% endif %} + + + + + +
+ {{ trans_choice('firefly.source_accounts', accounts['source']|length ) }} + + {% for account in accounts['source'] %} + {% if 'Cash account' == account.type %} + ({{ 'cash'|_ }}) + {% else %} + + {{ account.name }} + + {% endif %} + {% if loop.index0 != accounts['source']|length -1 %}, {% endif %} + {% endfor %} +
+ {{ trans_choice('firefly.destination_accounts', accounts['destination']|length ) }} + + + {% for account in accounts['destination'] %} + {% if 'Cash account' == account.type %} + ({{ 'cash'|_ }}) + {% else %} + + {{ account.name }} + + {% endif %} + {% if loop.index0 != accounts['destination']|length -1 %}, {% endif %} + {% endfor %} +
{{ 'total_amount'|_ }} + {% for amount in amounts %} + {% if first.transactiontype.type == 'Withdrawal' or first.transactiontype.type == 'Deposit' %} + {{ formatAmountBySymbol(amount.amount*-1,amount.symbol, amount.decimal_places) }}{% if loop.index0 != amounts|length -1 %}, {% endif %} + {% elseif first.transactiontype.type == 'Transfer' %} + + {{ formatAmountBySymbol(amount.amount, amount.symbol, amount.decimal_places, false) }}{% if loop.index0 != amounts|length -1 %}, {% endif %} + + {% elseif first.transactiontype.type == 'Opening balance' %} + {# Opening balance stored amount is always negative: find out which way the money goes #} + {% if groupArray.transactions[0].source_type == 'Initial balance account' %} + {{ formatAmountBySymbol(amount.amount*-1,amount.symbol, amount.decimal_places) }} + {% else %} + {{ formatAmountBySymbol(amount.amount,amount.symbol, amount.decimal_places) }} + {% endif %} + {% endif %} + {% endfor %} +
+
+
+
+
+
+ +
+ {% if splits > 1 %} +
+
+

{{ 'splits'|_ }}

+
+
+ {% endif %} + {% set boxSize=6 %} + {% if(splits == 2) %} + {% set boxSize=6 %} + {% endif %} + {% if (splits > 2) %} + {% set boxSize = 4 %} + {% endif %} +
+ {% for index,journal in groupArray.transactions %} +
+
+
+

+ {{ journal.description }} + {% if journal.reconciled %} + + {% endif %} + {% if splits > 1 %} + + {{ index+1 }} / {{ splits }} + + {% endif %} +

+ + +
+ + +
+
+
+ + + + + {% if null != journal.category_id %} + + + + + {% endif %} + {% if null != journal.budget_id and first.transactiontype.type == 'Withdrawal' %} + + + + + {% endif %} + {% if null != journal.bill_id and first.transactiontype.type == 'Withdrawal' %} + + + + + {% endif %} + + {% for dateField in ['interest_date','book_date','process_date','due_date','payment_date','invoice_date'] %} + {% if journalHasMeta(journal.transaction_journal_id, dateField) %} + + + + + {% endif %} + {% endfor %} + {% for metaField in ['external_id','bunq_payment_id','internal_reference','sepa_batch_id','sepa_ct_id','sepa_ct_op','sepa_db','sepa_country','sepa_cc','sepa_ep','sepa_ci','external_url'] %} + {% if journalHasMeta(journal.transaction_journal_id, metaField) %} + + + + + {% endif %} + {% endfor %} + {% if null != journal.notes and '' != journal.notes %} + + + + + {% endif %} + {% if journalHasMeta(journal.transaction_journal_id, 'recurring_total') and journalHasMeta(journal.transaction_journal_id, 'recurring_count') %} + {% set recurringTotal = journalGetMetaField(journal.transaction_journal_id, 'recurring_total') %} + {% if 0 == recurringTotal %} + {% set recurringTotal = '∞' %} + {% endif %} + + + + + {% endif %} + {% if journal.tags|length > 0 %} + + + + + {% endif %} +
+ + {% if 'Cash account' == journal.source_type %} + ({{ 'cash'|_ }}) + {% else %} + {{ journal.source_name }} → + {% endif %} + + {% if first.transactiontype.type == 'Withdrawal' or first.transactiontype.type == 'Deposit' %} + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }} + {% elseif first.transactiontype.type == 'Transfer' or first.transactiontype.type == 'Opening balance' %} + + {{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places, false) }} + + {% elseif first.transactiontype.type == 'Liability credit' %} + + {{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places, false) }} + + {% endif %} + + + {% if null != journal.foreign_amount %} + {% if first.transactiontype.type == 'Withdrawal' or first.transactiontype.type == 'Deposit' %} + ({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}) + {% elseif first.transactiontype.type == 'Transfer' %} + + ({{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places, false) }}) + + {% endif %} + {% endif %} + + → + {% if 'Cash account' == journal.destination_type %} + ({{ 'cash'|_ }}) + {% else %} + {{ journal.destination_name }} + {% endif %} +
{{ 'category'|_ }}{{ journal.category_name }}
{{ 'budget'|_ }}{{ journal.budget_name }}
{{ 'bill'|_ }}{{ journal.bill_name }}
{{ trans('list.'~dateField) }}{{ journalGetMetaDate(journal.transaction_journal_id, dateField).formatLocalized(monthAndDayFormat) }}
{{ trans('list.'~metaField) }} + {% if 'external_url' == metaField %} + {% set uri = journalGetMetaField(journal.transaction_journal_id, metaField) %} + + {% if uri|length > 60 %} + {{ uri|slice(0, 60) ~ '...' }} + {% else %} + {{ uri }} + {% endif %} + + {% endif %} + {% if 'external_url' != metaField %} + {{ journalGetMetaField(journal.transaction_journal_id, metaField) }} + {% endif %} +
{{ trans('list.notes') }}{{ journal.notes|default('')|markdown }}
{{ trans('list.recurring_transaction') }}{{ trans('firefly.recurring_info', {total: recurringTotal, count: journalGetMetaField(journal.transaction_journal_id, 'recurring_count') }) }}
{{ 'tags'|_ }} + {% for tag in journal.tags %} +

+ {{ tag.tag }} +

+ {% endfor %} +
+
+
+ + + {% if links[journal.transaction_journal_id]|length > 0 %} +
+
+

+ {{ 'journal_links'|_ }} +

+
+
+ + {% for link in links[journal.transaction_journal_id] %} + + + + + {% endfor %} + +
+
+ + +
+
+ {% if link.editable %} + {{ link.link }} + {% else %} + {{ trans('firefly.'~link.link) }} + {% endif %} + "{{ link.description }}" + + ({{ link.amount|raw }}) + {% if '' != link.foreign_amount %} + ({{ link.foreign_amount|raw }}) + {% endif %} +
+
+
+ {% endif %} + + + {% if attachments[journal.transaction_journal_id]|length > 0 %} +
+
+

{{ 'attachments'|_ }}

+
+
+ {% include 'v1.list.attachments' with {attachments: attachments[journal.transaction_journal_id]} %} +
+
+ {% endif %} + + + {% if events[journal.transaction_journal_id]|length > 0 %} +
+
+

{{ 'piggy_events'|_ }}

+
+
+ + {% for event in events[journal.transaction_journal_id] %} + + + + + + {% endfor %} +
{{ event.amount|raw }} + {{ event.piggy }}
+
+
+ {% endif %} +
+ {% endfor %} +
+ {# modal for linking journals. Will be filled by AJAX #} + +{% endblock %} +{% block scripts %} + + + +{% endblock %} + diff --git a/resources/views/transactions/single/delete.twig b/resources/views/transactions/single/delete.twig new file mode 100644 index 0000000000..8bf7ffd3e2 --- /dev/null +++ b/resources/views/transactions/single/delete.twig @@ -0,0 +1,43 @@ +{% extends './v1/layout/default' %} + +{% block breadcrumbs %} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, journal) }} +{% endblock %} + +{% block content %} +
+ + +
+
+
+
+

{{ trans('form.delete_journal', {'description': journal.description}) }}

+
+
+

+ {{ trans('form.permDeleteWarning') }} +

+ +

+ {{ trans('form.journal_areYouSure', {'description': journal.description}) }} +

+
+ +
+
+
+ +
+{% endblock %} diff --git a/resources/views/transactions/single/edit.twig b/resources/views/transactions/single/edit.twig new file mode 100644 index 0000000000..8faafdbec8 --- /dev/null +++ b/resources/views/transactions/single/edit.twig @@ -0,0 +1 @@ +