mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2024-11-22 17:06:39 -06:00
Make it easier to switch between v1/v2 layout.
This commit is contained in:
parent
be05513ecd
commit
f9220b8999
@ -243,11 +243,8 @@ class RecurrenceController extends Controller
|
||||
if (false === $result) {
|
||||
return response()->json([], 204);
|
||||
}
|
||||
if (true === $result) {
|
||||
return response()->json();
|
||||
}
|
||||
|
||||
return response()->json([], 418); // @codeCoverageIgnore
|
||||
return response()->json();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -69,7 +69,7 @@ class JavascriptController extends Controller
|
||||
}
|
||||
|
||||
return response()
|
||||
->view('javascript.accounts', $data)
|
||||
->view('v1.javascript.accounts', $data)
|
||||
->header('Content-Type', 'text/javascript');
|
||||
}
|
||||
|
||||
@ -92,7 +92,7 @@ class JavascriptController extends Controller
|
||||
}
|
||||
|
||||
return response()
|
||||
->view('javascript.currencies', $data)
|
||||
->view('v1.javascript.currencies', $data)
|
||||
->header('Content-Type', 'text/javascript');
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ class JavascriptController extends Controller
|
||||
];
|
||||
|
||||
return response()
|
||||
->view('javascript.variables', $data)
|
||||
->view('v2.javascript.variables', $data)
|
||||
->header('Content-Type', 'text/javascript');
|
||||
}
|
||||
|
||||
@ -158,7 +158,7 @@ class JavascriptController extends Controller
|
||||
$request->session()->keep(['two-factor-secret']);
|
||||
|
||||
return response()
|
||||
->view('javascript.variables', $data)
|
||||
->view('v1.javascript.variables', $data)
|
||||
->header('Content-Type', 'text/javascript');
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ class AccessTokenCreatedMail extends Mailable
|
||||
*/
|
||||
public function build(): self
|
||||
{
|
||||
return $this->view('emails.access-token-created-html')->text('emails.access-token-created-text')
|
||||
return $this->view('v1.emails.access-token-created-html')->text('v1.emails.access-token-created-text')
|
||||
->subject((string) trans('email.access_token_created_subject'));
|
||||
}
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ class AdminTestMail extends Mailable
|
||||
*/
|
||||
public function build(): self
|
||||
{
|
||||
return $this->view('emails.admin-test-html')->text('emails.admin-test-text')
|
||||
return $this->view('v1.emails.admin-test-html')->text('v1.emails.admin-test-text')
|
||||
->subject((string) trans('email.admin_test_subject'));
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ class ConfirmEmailChangeMail extends Mailable
|
||||
*/
|
||||
public function build(): self
|
||||
{
|
||||
return $this->view('emails.confirm-email-change-html')->text('emails.confirm-email-change-text')
|
||||
return $this->view('v1.emails.confirm-email-change-html')->text('v1.emails.confirm-email-change-text')
|
||||
->subject((string) trans('email.email_change_subject'));
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ class NewIPAddressWarningMail extends Mailable
|
||||
$this->host = $hostName;
|
||||
}
|
||||
|
||||
return $this->view('emails.new-ip-html')->text('emails.new-ip-text')
|
||||
return $this->view('v1.emails.new-ip-html')->text('v1.emails.new-ip-text')
|
||||
->subject((string) trans('email.login_from_new_ip'));
|
||||
}
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ class OAuthTokenCreatedMail extends Mailable
|
||||
*/
|
||||
public function build(): self
|
||||
{
|
||||
return $this->view('emails.oauth-client-created-html')->text('emails.oauth-client-created-text')
|
||||
return $this->view('v1.emails.oauth-client-created-html')->text('v1.emails.oauth-client-created-text')
|
||||
->subject((string) trans('email.oauth_created_subject'));
|
||||
}
|
||||
}
|
||||
|
@ -61,6 +61,6 @@ class RegisteredUser extends Mailable
|
||||
*/
|
||||
public function build(): self
|
||||
{
|
||||
return $this->view('emails.registered-html')->text('emails.registered-text')->subject((string) trans('email.registered_subject'));
|
||||
return $this->view('v1.emails.registered-html')->text('v1.emails.registered-text')->subject((string) trans('email.registered_subject'));
|
||||
}
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ class ReportNewJournalsMail extends Mailable
|
||||
{
|
||||
$this->transform();
|
||||
|
||||
return $this->view('emails.report-new-journals-html')->text('emails.report-new-journals-text')
|
||||
return $this->view('v1.emails.report-new-journals-html')->text('v1.emails.report-new-journals-text')
|
||||
->subject((string) trans_choice('email.new_journals_subject', $this->groups->count()));
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,6 @@ class RequestedNewPassword extends Mailable
|
||||
*/
|
||||
public function build(): self
|
||||
{
|
||||
return $this->view('emails.password-html')->text('emails.password-text')->subject((string) trans('email.reset_pw_subject'));
|
||||
return $this->view('v1.emails.password-html')->text('v1.emails.password-text')->subject((string) trans('email.reset_pw_subject'));
|
||||
}
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ class UndoEmailChangeMail extends Mailable
|
||||
*/
|
||||
public function build(): self
|
||||
{
|
||||
return $this->view('emails.undo-email-change-html')->text('emails.undo-email-change-text')
|
||||
return $this->view('v1.emails.undo-email-change-html')->text('v1.emails.undo-email-change-text')
|
||||
->subject((string) trans('email.email_change_subject'));
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ const lodashClonedeep = require('lodash.clonedeep');
|
||||
|
||||
// initial state
|
||||
const state = () => ({
|
||||
transactionType: '',
|
||||
transactionType: 'any',
|
||||
date: new Date,
|
||||
groupTitle: '',
|
||||
transactions: [],
|
||||
|
@ -1568,15 +1568,15 @@ browserify-zlib@^0.2.0:
|
||||
pako "~1.0.5"
|
||||
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1:
|
||||
version "4.16.1"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766"
|
||||
integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==
|
||||
version "4.16.3"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
|
||||
integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001173"
|
||||
caniuse-lite "^1.0.30001181"
|
||||
colorette "^1.2.1"
|
||||
electron-to-chromium "^1.3.634"
|
||||
electron-to-chromium "^1.3.649"
|
||||
escalade "^3.1.1"
|
||||
node-releases "^1.1.69"
|
||||
node-releases "^1.1.70"
|
||||
|
||||
buffer-from@^1.0.0:
|
||||
version "1.1.1"
|
||||
@ -1732,7 +1732,7 @@ caniuse-api@^3.0.0:
|
||||
lodash.memoize "^4.1.2"
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173:
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181:
|
||||
version "1.0.30001181"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001181.tgz#4f0e5184e1ea7c3bf2727e735cbe7ca9a451d673"
|
||||
integrity sha512-m5ul/ARCX50JB8BSNM+oiPmQrR5UmngaQ3QThTTp5HcIIQGP/nPBs82BYLE+tigzm3VW+F4BJIhUyaVtEweelQ==
|
||||
@ -2635,7 +2635,7 @@ ejs@^2.6.1:
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
|
||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||
|
||||
electron-to-chromium@^1.3.634:
|
||||
electron-to-chromium@^1.3.649:
|
||||
version "1.3.649"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.649.tgz#3aa8be052d4d268ede45d8e98d0cd60ffefad607"
|
||||
integrity sha512-ojGDupQ3UMkvPWcTICe4JYe17+o9OLiFMPoduoR72Zp2ILt1mRVeqnxBEd6s/ptekrnsFU+0A4lStfBe/wyG/A==
|
||||
@ -3845,9 +3845,9 @@ is-buffer@^1.1.5, is-buffer@~1.1.6:
|
||||
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
||||
|
||||
is-callable@^1.1.4, is-callable@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
|
||||
integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
|
||||
integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
|
||||
|
||||
is-color-stop@^1.0.0:
|
||||
version "1.1.0"
|
||||
@ -4136,9 +4136,9 @@ json5@^1.0.1:
|
||||
minimist "^1.2.0"
|
||||
|
||||
json5@^2.1.2:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
|
||||
integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
|
||||
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
|
||||
dependencies:
|
||||
minimist "^1.2.5"
|
||||
|
||||
@ -4738,7 +4738,7 @@ node-notifier@^8.0.0:
|
||||
uuid "^8.3.0"
|
||||
which "^2.0.2"
|
||||
|
||||
node-releases@^1.1.69:
|
||||
node-releases@^1.1.70:
|
||||
version "1.1.70"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08"
|
||||
integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==
|
||||
@ -6871,9 +6871,9 @@ uuid@^8.3.0:
|
||||
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||
|
||||
v-calendar@^2.2.1:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-2.2.2.tgz#9400f197cb44a8958df01ed52dacc474772d4de3"
|
||||
integrity sha512-CbXE80i9XkDXbH3tZjvJTsgs1XsvmE0gdnTtl+Kb7kJKD+ZBZMfylOOD20vC/ABQDfbccJE8ksCTQtkENu8H4A==
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-2.2.3.tgz#39a33cf772029f6c37e43b93427aea8b11a30355"
|
||||
integrity sha512-E4dByu3vDYtleIsZcciUJANpKn6zI0DCXzRsm6g3VsfV7Wpr49t+OQrrc6zVFtISardEUCabivzJOJ0NVdga/Q==
|
||||
dependencies:
|
||||
core-js "^3.6.5"
|
||||
date-fns "^2.8.1"
|
||||
|
2
public/v2/js/vendor.js
vendored
2
public/v2/js/vendor.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
resources/lang/.gitignore
vendored
1
resources/lang/.gitignore
vendored
@ -12,3 +12,4 @@ tlh_AA
|
||||
lt_LT
|
||||
fa_IR
|
||||
si_LK
|
||||
th_TH
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Автоматизация',
|
||||
'others' => 'Други',
|
||||
'classification' => 'Класификация',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Финансов отчет по подразбиране между :start и :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automation',
|
||||
'others' => 'Others',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Výchozí finanční výkaz v období :start a :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatisierungen',
|
||||
'others' => 'Weitere',
|
||||
'classification' => 'Klassifizierung',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Standardfinanzbericht zwischen :start und :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Αυτοματοποίηση',
|
||||
'others' => 'Λοιπά',
|
||||
'classification' => 'Ταξινόμηση',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Προεπιλεγμένη οικονομική αναφορά μεταξύ :start και :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automation',
|
||||
'others' => 'Others',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Default financial report between :start and :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatización',
|
||||
'others' => 'Otros',
|
||||
'classification' => 'Clasificación',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Reporte financiero por defecto entre :start y :end',
|
||||
@ -1479,7 +1480,7 @@ return [
|
||||
'stored_piggy_bank' => 'Crear hucha ":name"',
|
||||
'account_status' => 'Estado de cuenta',
|
||||
'left_for_piggy_banks' => 'Apartado para las huchas',
|
||||
'sum_of_piggy_banks' => 'Total de huchas',
|
||||
'sum_of_piggy_banks' => 'Total de las huchas',
|
||||
'saved_so_far' => 'Guardado hasta el momento',
|
||||
'left_to_save' => 'Disponible para ahorro',
|
||||
'suggested_amount' => 'Cantidad mensual sugerida para ahorrar',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automaatio',
|
||||
'others' => 'Muut',
|
||||
'classification' => 'Luokitus',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Talousraportti välillä :start ja :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatisation',
|
||||
'others' => 'Autres',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Rapport financier par défaut entre le :start et le :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatizálás',
|
||||
'others' => 'Egyebek',
|
||||
'classification' => 'Besorolás',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Alapértelmezett pénzügyi jelentés :start és :end között',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automation',
|
||||
'others' => 'Others',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Laporan keuangan standar antara :start dan :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automazione',
|
||||
'others' => 'Altro',
|
||||
'classification' => 'Classificazione',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Resoconto predefinito delle tue finanze tra :start e :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automation',
|
||||
'others' => 'Others',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Standard finansiell rapport mellom :start og :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatisering',
|
||||
'others' => 'Overige',
|
||||
'classification' => 'Indeling',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Standaard financieel rapport (:start tot :end)',
|
||||
|
@ -277,7 +277,7 @@ return [
|
||||
'search_found_more_transactions' => 'Firefly III znalazł więcej niż :count transakcji w :time sekund.',
|
||||
'search_for_query' => 'Firefly III szuka transakcji zawierających wszystkie słowa: <span class="text-info">:query</span>',
|
||||
'search_modifier_date_is' => 'Data transakcji to ":value"',
|
||||
'search_modifier_id' => 'Transaction ID is ":value"',
|
||||
'search_modifier_id' => 'ID transakcji to ":value"',
|
||||
'search_modifier_date_before' => 'Data transakcji jest przed lub w ":value"',
|
||||
'search_modifier_date_after' => 'Data transakcji jest po lub w ":value"',
|
||||
'search_modifier_created_on' => 'Transakcja stworzona ":value"',
|
||||
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatyzacja',
|
||||
'others' => 'Pozostałe',
|
||||
'classification' => 'Klasyfikacja',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Domyślny raport finansowy między :start i :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automação',
|
||||
'others' => 'Outros',
|
||||
'classification' => 'Classificação',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Relatório financeiro padrão entre :start e :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatizare',
|
||||
'others' => 'Altele',
|
||||
'classification' => 'Clasificare',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Raportul financiar prestabilit între :start și :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Автоматизация',
|
||||
'others' => 'Другие',
|
||||
'classification' => 'Классификация',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Стандартный финансовый отчёт за период с :start по :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatizácia',
|
||||
'others' => 'Iné',
|
||||
'classification' => 'Klasifikácia',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Predvolený finančný výkaz v období :start a :end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automatisering',
|
||||
'others' => 'Andra',
|
||||
'classification' => 'Klassificering',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Standard ekonomisk rapport mellan :start och :end',
|
||||
|
@ -1338,6 +1338,7 @@ return [
|
||||
'automation' => 'Automation',
|
||||
'others' => 'Others',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => ':start ve :end arasında varsayılan finans raporu',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Tự động',
|
||||
'others' => 'Khác',
|
||||
'classification' => 'Phân loại',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => 'Báo cáo tài chính mặc định giữa: start và: end',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automation',
|
||||
'others' => 'Others',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => '自 :start 至 :end 的预设财务报表',
|
||||
|
@ -1337,6 +1337,7 @@ return [
|
||||
'automation' => 'Automation',
|
||||
'others' => 'Others',
|
||||
'classification' => 'Classification',
|
||||
'store_transaction' => 'Store transaction',
|
||||
|
||||
// reports:
|
||||
'report_default' => '自 :start 至 :end 的預設財務報表',
|
||||
|
Loading…
Reference in New Issue
Block a user