integration of quotes into the project section #598

This commit is contained in:
Hillel Coren 2023-10-24 11:22:44 +03:00
parent a1900ea267
commit 1a96288ebd
3 changed files with 39 additions and 0 deletions

View File

@ -343,6 +343,29 @@ EntityStats invoiceStatsForProject(
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(
(String userId, BuiltMap<String, InvoiceEntity> invoiceMap) =>
invoiceStatsForUser(userId, invoiceMap));

View File

@ -280,6 +280,12 @@ void handleProjectAction(
entity: InvoiceEntity(state: state, client: client)
.rebuild((b) => b..projectId = project.id));
break;
case EntityAction.newQuote:
createEntity(
entity: InvoiceEntity(
state: state, client: client, entityType: EntityType.quote)
.rebuild((b) => b..projectId = project.id));
break;
case EntityAction.invoiceProject:
String lastClientId = '';
bool hasMultipleClients = false;

View File

@ -154,6 +154,16 @@ class _ProjectOverviewState extends State<ProjectOverview> {
project.id, state.invoiceState.map)
.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([