From 528b7862e3342e66bc384d259c30a9d3c843b0de Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 30 May 2023 13:27:03 +0300 Subject: [PATCH] Add optional setting to auto-fill a new invoice's item column --- lib/redux/task/task_selectors.dart | 6 ++---- lib/ui/settings/task_settings.dart | 34 +++++++++++++++++++++++------- lib/utils/i18n.dart | 8 ++++++- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/lib/redux/task/task_selectors.dart b/lib/redux/task/task_selectors.dart index cb7c55d96..7727ae8c4 100644 --- a/lib/redux/task/task_selectors.dart +++ b/lib/redux/task/task_selectors.dart @@ -73,8 +73,7 @@ InvoiceItemEntity convertTaskToInvoiceItem({ notes += hoursStr; } notes += lineBreak; - if (time.description.isNotEmpty && - (true || company.invoiceTaskItemDescription)) { + if (time.description.isNotEmpty && company.invoiceTaskItemDescription) { notes += time.description + lineBreak; } } else if (company.invoiceTaskDatelog) { @@ -95,8 +94,7 @@ InvoiceItemEntity convertTaskToInvoiceItem({ notes += hoursStr; } notes += lineBreak; - if (time.description.isNotEmpty && - (true || company.invoiceTaskItemDescription)) { + if (time.description.isNotEmpty && company.invoiceTaskItemDescription) { notes += time.description + lineBreak; } } diff --git a/lib/ui/settings/task_settings.dart b/lib/ui/settings/task_settings.dart index 39cd495ce..0fcbc7fa1 100644 --- a/lib/ui/settings/task_settings.dart +++ b/lib/ui/settings/task_settings.dart @@ -178,14 +178,6 @@ class _TaskSettingsState extends State { onChanged: (value) => viewModel.onCompanyChanged( company.rebuild((b) => b..invoiceTaskHours = value)), ), - SwitchListTile( - activeColor: Theme.of(context).colorScheme.secondary, - title: Text(localization.invoiceTaskProject), - value: company.invoiceTaskProject, - subtitle: Text(localization.invoiceTaskProjectHelp), - onChanged: (value) => viewModel.onCompanyChanged( - company.rebuild((b) => b..invoiceTaskProject = value)), - ), if (false && settings.showTaskItemDescription == true) SwitchListTile( activeColor: Theme.of(context).colorScheme.secondary, @@ -195,6 +187,32 @@ class _TaskSettingsState extends State { onChanged: (value) => viewModel.onCompanyChanged(company .rebuild((b) => b..invoiceTaskItemDescription = value)), ), + SwitchListTile( + activeColor: Theme.of(context).colorScheme.secondary, + title: Text(localization.invoiceTaskProject), + value: company.invoiceTaskProject, + subtitle: Text(localization.invoiceTaskProjectHelp), + onChanged: (value) => viewModel.onCompanyChanged( + company.rebuild((b) => b..invoiceTaskProject = value)), + ), + if (company.invoiceTaskProject) + AppDropdownButton( + labelText: localization.location, + value: company.invoiceTaskProjectHeader, + onChanged: (dynamic value) { + viewModel.onCompanyChanged(company.rebuild( + (b) => b..invoiceTaskProjectHeader = value)); + }, + items: [ + DropdownMenuItem( + child: Text(localization.service), + value: true, + ), + DropdownMenuItem( + child: Text(localization.description), + value: false, + ), + ]), ], ], ), diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index c1d7d8ccc..f9a022c2d 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -18,8 +18,10 @@ mixin LocalizationsProvider on LocaleCodeAware { static final Map> _localizedValues = { 'en': { // STARTER: lang key - do not remove comment + 'location': 'Location', 'invoice_task_item_description': 'Invoice Task Item Description', - 'invoice_task_item_description_help': 'Add the item description to the invoice line items', + 'invoice_task_item_description_help': + 'Add the item description to the invoice line items', 'next_send_time': 'Next Send Time', 'uploaded_certificate': 'Successfully uploaded certificate', 'certificate_set': 'Certificate set', @@ -102515,6 +102517,10 @@ mixin LocalizationsProvider on LocaleCodeAware { _localizedValues[localeCode]['invoice_task_item_description_help'] ?? _localizedValues['en']['invoice_task_item_description_help']; + String get location => + _localizedValues[localeCode]['location'] ?? + _localizedValues['en']['location']; + // STARTER: lang field - do not remove comment String lookup(String key) {