Add optional setting to auto-fill a new invoice's item column

This commit is contained in:
Hillel Coren 2023-05-30 13:27:03 +03:00
parent c12359b5ff
commit 528b7862e3
3 changed files with 35 additions and 13 deletions

View File

@ -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;
}
}

View File

@ -178,14 +178,6 @@ class _TaskSettingsState extends State<TaskSettings> {
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<TaskSettings> {
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<bool>(
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,
),
]),
],
],
),

View File

@ -18,8 +18,10 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map<String, Map<String, String>> _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) {