From b68435f037fe2524f07ccac1d29bbe5f45a88e40 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 30 Dec 2020 20:25:20 +0200 Subject: [PATCH] Correct expense actions --- lib/redux/expense/expense_actions.dart | 37 +++++++++++++------------- lib/redux/task/task_actions.dart | 2 +- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/redux/expense/expense_actions.dart b/lib/redux/expense/expense_actions.dart index b6e8a80a4..497714f4b 100644 --- a/lib/redux/expense/expense_actions.dart +++ b/lib/redux/expense/expense_actions.dart @@ -252,16 +252,6 @@ class FilterExpensesByCustom4 implements PersistUI { void handleExpenseAction( BuildContext context, List expenses, EntityAction action) { - assert( - [ - EntityAction.restore, - EntityAction.archive, - EntityAction.delete, - EntityAction.toggleMultiselect - ].contains(action) || - expenses.length == 1, - 'Cannot perform this action on more than one expense'); - final store = StoreProvider.of(context); final state = store.state; final CompanyEntity company = state.company; @@ -278,15 +268,24 @@ void handleExpenseAction( createEntity(context: context, entity: expense.clone); break; case EntityAction.newInvoice: - final item = convertExpenseToInvoiceItem( - expense: expense, - categoryMap: state.expenseCategoryState.map, - company: company); - createEntity( - context: context, - entity: InvoiceEntity(state: state, client: client).rebuild((b) => b - ..hasExpenses = true - ..lineItems.add(item))); + final items = expenses + .where((entity) { + final expense = entity as ExpenseEntity; + return !expense.isDeleted && !expense.isInvoiced; + }) + .map((expense) => convertExpenseToInvoiceItem( + expense: expense, + categoryMap: state.expenseCategoryState.map, + company: company, + )) + .toList(); + if (items.isNotEmpty) { + createEntity( + context: context, + entity: InvoiceEntity(state: state, client: client).rebuild((b) => b + ..hasExpenses = true + ..lineItems.addAll(items))); + } break; case EntityAction.viewInvoice: viewEntityById( diff --git a/lib/redux/task/task_actions.dart b/lib/redux/task/task_actions.dart index b21014b7b..ca580e05f 100644 --- a/lib/redux/task/task_actions.dart +++ b/lib/redux/task/task_actions.dart @@ -325,7 +325,7 @@ void handleTaskAction( final items = tasks .where((entity) { final task = entity as TaskEntity; - return !task.isRunning && !task.isInvoiced; + return !task.isDeleted && !task.isRunning && !task.isInvoiced; }) .map((task) => convertTaskToInvoiceItem(task: task, context: context)) .toList();