diff --git a/lib/ui/settings/import_export.dart b/lib/ui/settings/import_export.dart index c7fc781d0..6f8fb044a 100644 --- a/lib/ui/settings/import_export.dart +++ b/lib/ui/settings/import_export.dart @@ -60,16 +60,28 @@ class _ImportExportState extends State { var _exportFormat = ImportType.csv; var _exportType = ExportType.clients; var _exportDate = ''; + var _exportDateRange = ''; bool _isExporting = false; + static const DATE_RANGES = [ + 'all', + 'last7', + 'last30', + 'this_month', + 'last_month', + 'this_quarter', + 'last_quarter', + 'this_year', + ]; + static const DATE_FIELD_DATE = 'date'; static const DATE_FIELD_DUE_DATE = 'due_date'; static const DATE_FIELD_PARTIAL_DUE_DATE = 'partial_due_date'; static const DATE_FIELD_CREATED_AT = 'created_at'; static const DATE_FIELD_PAYMENT_DATE = 'payment_date'; - final _dateFields = >{ + static const DATE_FIELDS = >{ ExportType.invoices: [ DATE_FIELD_DATE, DATE_FIELD_DUE_DATE, @@ -222,7 +234,7 @@ class _ImportExportState extends State { child: Text(localization.lookup('$importType')))) .toList(), ), - if (_dateFields.containsKey(_exportType)) + if (DATE_FIELDS.containsKey(_exportType)) ...[ AppDropdownButton( value: _exportDate, labelText: localization.date, @@ -232,12 +244,30 @@ class _ImportExportState extends State { _exportDate = value; }); }, - items: _dateFields[_exportType] + items: DATE_FIELDS[_exportType] .map((dateField) => DropdownMenuItem( value: dateField, child: Text(localization.lookup('$dateField')))) .toList(), ), + AppDropdownButton( + labelText: localization.dateRange, + value: _exportDateRange, + onChanged: (dynamic value) { + setState(() { + _exportDateRange = value; + }); + }, + items: DATE_RANGES.map( + (dateRange) => DropdownMenuItem( + value: dateRange, + child: Text( + localization.lookup('$dateRange'), + ), + ), + ), + ), + ], ], AppButton( iconData: MdiIcons.export,