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; break;
case EntityAction.invoiceExpense: case EntityAction.invoiceExpense:
final items = expenses final availableExpenses = expenses.where((entity) {
.where((entity) { final expense = entity as ExpenseEntity;
final expense = entity as ExpenseEntity; return !expense.isDeleted && !expense.isInvoiced;
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( .map((expense) => convertExpenseToInvoiceItem(
expense: expense, expense: expense,
context: context, context: context,
@ -287,9 +299,13 @@ void handleExpenseAction(
.toList(); .toList();
if (items.isNotEmpty) { if (items.isNotEmpty) {
createEntity( createEntity(
context: context, context: context,
entity: InvoiceEntity(state: state, client: client) entity: InvoiceEntity(state: state, client: client).rebuild(
.rebuild((b) => b..lineItems.addAll(items))); (b) => b
..lineItems.addAll(items)
..projectId = projectId,
),
);
} }
break; break;
case EntityAction.restore: case EntityAction.restore: