diff --git a/lib/pages/transactions/create_transaction/create_transaction_page.dart b/lib/pages/transactions/create_transaction/create_transaction_page.dart index 2538fd30..c8553153 100644 --- a/lib/pages/transactions/create_transaction/create_transaction_page.dart +++ b/lib/pages/transactions/create_transaction/create_transaction_page.dart @@ -15,6 +15,7 @@ import '../../../ui/extensions.dart'; import "widgets/account_selector.dart"; import 'widgets/amount_section.dart'; import "widgets/category_selector.dart"; +import 'widgets/details_list_disabled_tile.dart'; import 'widgets/details_list_tile.dart'; import 'widgets/duplicate_transaction_dialog.dart'; import 'widgets/label_list_tile.dart'; @@ -36,6 +37,9 @@ class _CreateTransactionPage extends ConsumerState { bool recurrencyEditingPermitted = true; bool _isSaveEnabled = false; + bool get _isReconciliationTransaction => + widget.transaction?.note == 'Reconciliation'; + @override void initState() { if (widget.transaction != null) { @@ -216,19 +220,20 @@ class _CreateTransactionPage extends ConsumerState { ), actions: [ if (widget.transaction != null) ...[ - IconButton( - icon: Icon( - Icons.copy, - size: 20, - color: Theme.of(context).colorScheme.primary, - ), - onPressed: () => showDialog( - context: context, - builder: (_) => DuplicateTransactionDialog( - transaction: widget.transaction!, + if (!_isReconciliationTransaction) + IconButton( + icon: Icon( + Icons.copy, + size: 20, + color: Theme.of(context).colorScheme.primary, + ), + onPressed: () => showDialog( + context: context, + builder: (_) => DuplicateTransactionDialog( + transaction: widget.transaction!, + ), ), ), - ), IconButton( icon: Icon( Icons.delete_outline, @@ -299,10 +304,24 @@ class _CreateTransactionPage extends ConsumerState { color: Theme.of(context).colorScheme.surface, child: Column( children: [ - LabelListTile(noteController), + if (_isReconciliationTransaction) + NonEditableDetailsListTile( + title: 'Label', + icon: Icons.label_outline, + value: noteController.text, + ) + else + LabelListTile(noteController), const Divider(), if (selectedType != TransactionType.transfer) ...[ - DetailsListTile( + if (_isReconciliationTransaction) + NonEditableDetailsListTile( + title: "Account", + icon: Icons.account_balance_wallet, + value: ref.watch(selectedBankAccountProvider)?.name, + ) + else + DetailsListTile( title: "Account", icon: Icons.account_balance_wallet, value: ref.watch(selectedBankAccountProvider)?.name, @@ -329,9 +348,16 @@ class _CreateTransactionPage extends ConsumerState { ), ); }, - ), + ), const Divider(), - DetailsListTile( + if (_isReconciliationTransaction) + NonEditableDetailsListTile( + title: "Category", + icon: Icons.list_alt, + value: ref.watch(selectedCategoryProvider)?.name, + ) + else + DetailsListTile( title: "Category", icon: Icons.list_alt, value: ref.watch(selectedCategoryProvider)?.name, @@ -358,10 +384,17 @@ class _CreateTransactionPage extends ConsumerState { ), ); }, - ), + ), const Divider(), ], - DetailsListTile( + if (_isReconciliationTransaction) + NonEditableDetailsListTile( + title: "Date", + icon: Icons.calendar_month, + value: ref.watch(selectedDateProvider).formatEDMY(), + ) + else + DetailsListTile( title: "Date", icon: Icons.calendar_month, value: ref.watch(selectedDateProvider).formatEDMY(), @@ -401,11 +434,12 @@ class _CreateTransactionPage extends ConsumerState { } } }, - ), - RecurrenceListTile( - recurrencyEditingPermitted: recurrencyEditingPermitted, - selectedTransaction: widget.transaction, - ), + ), + if (!_isReconciliationTransaction) + RecurrenceListTile( + recurrencyEditingPermitted: recurrencyEditingPermitted, + selectedTransaction: widget.transaction, + ), ], ), ),