Set project when invoicing expense

This commit is contained in:
Hillel Coren 2022-02-01 13:27:35 +02:00
parent 961cb7fda9
commit 893889b52e
1 changed files with 24 additions and 8 deletions

View File

@ -275,11 +275,23 @@ void handleExpenseAction(
);
break;
case EntityAction.invoiceExpense:
final items = expenses
.where((entity) {
final expense = entity as ExpenseEntity;
return !expense.isDeleted && !expense.isInvoiced;
})
final availableExpenses = expenses.where((entity) {
final expense = entity as ExpenseEntity;
return !expense.isDeleted && !expense.isInvoiced;
});
String projectId = '';
for (var each in availableExpenses) {
final expense = each as ExpenseEntity;
if (expense.projectId.isNotEmpty) {
if (projectId.isEmpty &&
state.projectState.get(expense.projectId).clientId == client.id) {
projectId = expense.projectId;
}
}
}
final items = availableExpenses
.map((expense) => convertExpenseToInvoiceItem(
expense: expense,
context: context,
@ -287,9 +299,13 @@ void handleExpenseAction(
.toList();
if (items.isNotEmpty) {
createEntity(
context: context,
entity: InvoiceEntity(state: state, client: client)
.rebuild((b) => b..lineItems.addAll(items)));
context: context,
entity: InvoiceEntity(state: state, client: client).rebuild(
(b) => b
..lineItems.addAll(items)
..projectId = projectId,
),
);
}
break;
case EntityAction.restore: