From 24105cc873d1350da2bc71b77affb7e72022fc90 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 21 Nov 2022 22:05:47 +0200 Subject: [PATCH] Transaction rules --- .../expense_category_selectors.dart | 4 +-- .../edit/transaction_rule_edit.dart | 29 +++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/lib/redux/expense_category/expense_category_selectors.dart b/lib/redux/expense_category/expense_category_selectors.dart index fe2a54649..b9697304f 100644 --- a/lib/redux/expense_category/expense_category_selectors.dart +++ b/lib/redux/expense_category/expense_category_selectors.dart @@ -13,9 +13,9 @@ var memoizedDropdownExpenseCategoryList = memo5( BuiltList expenseCategoryList, StaticState staticState, BuiltMap userMap, - String clientId) => + String categoryId) => dropdownExpenseCategoriesSelector(expenseCategoryMap, - expenseCategoryList, staticState, userMap, clientId)); + expenseCategoryList, staticState, userMap, categoryId)); List dropdownExpenseCategoriesSelector( BuiltMap expenseCategoryMap, diff --git a/lib/ui/transaction_rule/edit/transaction_rule_edit.dart b/lib/ui/transaction_rule/edit/transaction_rule_edit.dart index 49cb976c4..85c4cd6db 100644 --- a/lib/ui/transaction_rule/edit/transaction_rule_edit.dart +++ b/lib/ui/transaction_rule/edit/transaction_rule_edit.dart @@ -1,8 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart'; +import 'package:invoiceninja_flutter/data/models/expense_category_model.dart'; import 'package:invoiceninja_flutter/data/models/vendor_model.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; +import 'package:invoiceninja_flutter/redux/expense_category/expense_category_actions.dart'; +import 'package:invoiceninja_flutter/redux/expense_category/expense_category_selectors.dart'; import 'package:invoiceninja_flutter/redux/vendor/vendor_actions.dart'; import 'package:invoiceninja_flutter/redux/vendor/vendor_selectors.dart'; import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart'; @@ -119,7 +122,7 @@ class _TransactionRuleEditState extends State { labelText: localization.vendor, onSelected: (vendor) { viewModel.onChanged(transactionRule - .rebuild((b) => b..vendorId = vendor.id)); + .rebuild((b) => b..vendorId = vendor?.id ?? '')); }, onCreateNew: (completer, name) { store.dispatch(SaveVendorRequest( @@ -127,7 +130,29 @@ class _TransactionRuleEditState extends State { VendorEntity().rebuild((b) => b..name = name), completer: completer)); }, - ) + ), + EntityDropdown( + entityType: EntityType.expenseCategory, + entityId: transactionRule.categoryId, + entityList: memoizedDropdownExpenseCategoryList( + state.expenseCategoryState.map, + state.expenseCategoryState.list, + state.staticState, + state.userState.map, + transactionRule.categoryId, + ), + labelText: localization.category, + onSelected: (category) { + viewModel.onChanged(transactionRule.rebuild( + (b) => b..categoryId = category?.id ?? '')); + }, + onCreateNew: (completer, name) { + store.dispatch(SaveExpenseCategoryRequest( + expenseCategory: ExpenseCategoryEntity() + .rebuild((b) => b..name = name), + completer: completer)); + }, + ), ], ), ],