integration of quotes into the project section #598
This commit is contained in:
parent
a1900ea267
commit
1a96288ebd
|
|
@ -343,6 +343,29 @@ EntityStats invoiceStatsForProject(
|
||||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var memoizedQuoteStatsForProject = memo2((
|
||||||
|
String projectId,
|
||||||
|
BuiltMap<String, InvoiceEntity> quoteMap,
|
||||||
|
) =>
|
||||||
|
quoteStatsForProject(projectId, quoteMap));
|
||||||
|
|
||||||
|
EntityStats quoteStatsForProject(
|
||||||
|
String projectId, BuiltMap<String, InvoiceEntity> quoteMap) {
|
||||||
|
int countActive = 0;
|
||||||
|
int countArchived = 0;
|
||||||
|
quoteMap.forEach((quoteId, quote) {
|
||||||
|
if (quote.projectId == projectId) {
|
||||||
|
if (quote.isActive) {
|
||||||
|
countActive++;
|
||||||
|
} else if (quote.isArchived) {
|
||||||
|
countArchived++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||||
|
}
|
||||||
|
|
||||||
var memoizedInvoiceStatsForUser = memo2(
|
var memoizedInvoiceStatsForUser = memo2(
|
||||||
(String userId, BuiltMap<String, InvoiceEntity> invoiceMap) =>
|
(String userId, BuiltMap<String, InvoiceEntity> invoiceMap) =>
|
||||||
invoiceStatsForUser(userId, invoiceMap));
|
invoiceStatsForUser(userId, invoiceMap));
|
||||||
|
|
|
||||||
|
|
@ -280,6 +280,12 @@ void handleProjectAction(
|
||||||
entity: InvoiceEntity(state: state, client: client)
|
entity: InvoiceEntity(state: state, client: client)
|
||||||
.rebuild((b) => b..projectId = project.id));
|
.rebuild((b) => b..projectId = project.id));
|
||||||
break;
|
break;
|
||||||
|
case EntityAction.newQuote:
|
||||||
|
createEntity(
|
||||||
|
entity: InvoiceEntity(
|
||||||
|
state: state, client: client, entityType: EntityType.quote)
|
||||||
|
.rebuild((b) => b..projectId = project.id));
|
||||||
|
break;
|
||||||
case EntityAction.invoiceProject:
|
case EntityAction.invoiceProject:
|
||||||
String lastClientId = '';
|
String lastClientId = '';
|
||||||
bool hasMultipleClients = false;
|
bool hasMultipleClients = false;
|
||||||
|
|
|
||||||
|
|
@ -154,6 +154,16 @@ class _ProjectOverviewState extends State<ProjectOverview> {
|
||||||
project.id, state.invoiceState.map)
|
project.id, state.invoiceState.map)
|
||||||
.present(localization.active, localization.archived),
|
.present(localization.active, localization.archived),
|
||||||
),
|
),
|
||||||
|
if (company.isModuleEnabled(EntityType.quote))
|
||||||
|
EntitiesListTile(
|
||||||
|
entity: project,
|
||||||
|
isFilter: widget.isFilter,
|
||||||
|
entityType: EntityType.quote,
|
||||||
|
title: localization.quotes,
|
||||||
|
subtitle:
|
||||||
|
memoizedQuoteStatsForProject(project.id, state.quoteState.map)
|
||||||
|
.present(localization.active, localization.archived),
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
widgets.addAll([
|
widgets.addAll([
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue