diff --git a/lib/ui/invoice/edit/invoice_item_selector.dart b/lib/ui/invoice/edit/invoice_item_selector.dart index c3841a690..b2c047f58 100644 --- a/lib/ui/invoice/edit/invoice_item_selector.dart +++ b/lib/ui/invoice/edit/invoice_item_selector.dart @@ -63,12 +63,20 @@ class _InvoiceItemSelectorState extends State } else { var item = (entity as ConvertToInvoiceItem).asInvoiceItem; if (entity.entityType == EntityType.task) { - final project = state.projectState.map[(entity as TaskEntity).projectId]; - var notes = item.notes; + final task = entity as TaskEntity; + final project = state.projectState.map[task.projectId]; + var notes = item.notes + '\n'; + task.taskTimes.forEach((time) { + final start = formatDate(time.startDate.toIso8601String(), context, + showTime: true); + final end = formatDate(time.endDate.toIso8601String(), context, + showTime: true, showDate: false, showSeconds: false); + notes += '\n### $start - $end'; + }); item = item.rebuild((b) => b - ..notes = notes - ..cost = taskRateSelector(company: state.selectedCompany, project: project) - ); + ..notes = notes + ..cost = taskRateSelector( + company: state.selectedCompany, project: project)); } items.add(item); } diff --git a/lib/utils/formatting.dart b/lib/utils/formatting.dart index f210884b1..af6b43eee 100644 --- a/lib/utils/formatting.dart +++ b/lib/utils/formatting.dart @@ -237,7 +237,7 @@ String formatDateRange(String startDate, String endDate, BuildContext context) { } String formatDate(String value, BuildContext context, - {bool showDate = true, bool showTime = false}) { + {bool showDate = true, bool showTime = false, bool showSeconds = true}) { if (value == null || value.isEmpty) { return ''; } @@ -248,7 +248,9 @@ String formatDate(String value, BuildContext context, if (showTime) { String format; if (!showDate) { - format = company.enableMilitaryTime ? 'H:mm:ss' : 'h:mm:ss a'; + format = showSeconds + ? company.enableMilitaryTime ? 'H:mm:ss' : 'h:mm:ss a' + : company.enableMilitaryTime ? 'H:mm' : 'h:mm a'; } else { final dateFormats = state.staticState.datetimeFormatMap; final dateFormatId = company.datetimeFormatId > 0 @@ -256,7 +258,9 @@ String formatDate(String value, BuildContext context, : kDefaultDateTimeFormat; format = dateFormats[dateFormatId].format; if (company.enableMilitaryTime) { - format = format.replaceFirst('h:mm:ss a', 'H:mm:ss'); + format = showSeconds + ? format.replaceFirst('h:mm:ss a', 'H:mm:ss') + : format.replaceFirst('h:mm a', 'H:mm'); } } final formatter = DateFormat(format, localeSelector(state));