Recurring invoices
This commit is contained in:
parent
6dade29bd7
commit
b7d835b51b
|
|
@ -141,6 +141,27 @@ EntityStats recurringInvoiceStatsForUser(
|
||||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var memoizedRecurringInvoiceStatsForInvoice = memo2(
|
||||||
|
(String invoiceId, BuiltMap<String, InvoiceEntity> invoiceMap) =>
|
||||||
|
recurringInvoiceStatsForInvoice(invoiceId, invoiceMap));
|
||||||
|
|
||||||
|
EntityStats recurringInvoiceStatsForInvoice(
|
||||||
|
String recurrinInvoiceId, BuiltMap<String, InvoiceEntity> invoiceMap) {
|
||||||
|
int countActive = 0;
|
||||||
|
int countArchived = 0;
|
||||||
|
invoiceMap.forEach((invoiceId, invoice) {
|
||||||
|
if (invoice.recurringId == recurrinInvoiceId) {
|
||||||
|
if (invoice.isActive) {
|
||||||
|
countActive++;
|
||||||
|
} else if (invoice.isDeleted) {
|
||||||
|
countArchived++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||||
|
}
|
||||||
|
|
||||||
bool hasRecurringInvoiceChanges(InvoiceEntity recurringInvoice,
|
bool hasRecurringInvoiceChanges(InvoiceEntity recurringInvoice,
|
||||||
BuiltMap<String, InvoiceEntity> recurringInvoiceMap) =>
|
BuiltMap<String, InvoiceEntity> recurringInvoiceMap) =>
|
||||||
recurringInvoice.isNew
|
recurringInvoice.isNew
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/data/models/recurring_invoice_model.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/payment/payment_selectors.dart';
|
import 'package:invoiceninja_flutter/redux/payment/payment_selectors.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_selectors.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
|
import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/invoice/invoice_item_view.dart';
|
import 'package:invoiceninja_flutter/ui/app/invoice/invoice_item_view.dart';
|
||||||
|
|
@ -193,6 +194,9 @@ class InvoiceOverview extends StatelessWidget {
|
||||||
context: context,
|
context: context,
|
||||||
entityType: EntityType.invoice,
|
entityType: EntityType.invoice,
|
||||||
filterEntity: invoice),
|
filterEntity: invoice),
|
||||||
|
subtitle: memoizedRecurringInvoiceStatsForInvoice(
|
||||||
|
invoice.id, state.invoiceState.map)
|
||||||
|
.present(localization.active, localization.archived),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue