Add task amount to task table and report

This commit is contained in:
Hillel Coren 2023-01-08 10:07:48 +02:00
parent 520522c419
commit 3105492c10
3 changed files with 30 additions and 2 deletions

View File

@ -81,6 +81,7 @@ class TaskFields {
static const String date = 'date';
static const String assignedTo = 'assigned_to';
static const String createdBy = 'created_by';
static const String amount = 'amount';
}
abstract class TaskTime implements Built<TaskTime, TaskTimeBuilder> {
@ -668,6 +669,7 @@ abstract class TaskEntity extends Object
switch (sortField) {
case TaskFields.duration:
case TaskFields.amount:
response =
taskA.calculateDuration().compareTo(taskB.calculateDuration());
break;

View File

@ -40,6 +40,7 @@ enum TaskReportFields {
status,
assigned_to,
created_by,
amount,
}
var memoizedTaskReport = memo10((
@ -231,6 +232,17 @@ ReportResult taskReport(
case TaskReportFields.created_by:
value = userMap[task.createdUserId]?.listDisplayName ?? '';
break;
case TaskReportFields.amount:
value = task.calculateAmount(
taskRateSelector(
company: userCompany.company,
project: project,
client: client,
task: task,
group: group,
),
);
break;
}
if (!ReportResult.matchField(

View File

@ -46,6 +46,7 @@ class TaskPresenter extends EntityPresenter {
TaskFields.customValue4,
TaskFields.documents,
TaskFields.date,
TaskFields.amount,
];
}
@ -55,17 +56,16 @@ class TaskPresenter extends EntityPresenter {
final task = entity as TaskEntity;
final store = StoreProvider.of<AppState>(context);
final state = store.state;
final client = state.clientState.get(task.clientId);
switch (field) {
case TaskFields.status:
return EntityStatusChip(entity: task, showState: true);
case TaskFields.client:
final client = state.clientState.get(task.clientId);
return LinkTextRelatedEntity(entity: client, relation: task);
case TaskFields.rate:
return Text(formatNumber(task.rate, context, clientId: task.clientId));
case TaskFields.calculatedRate:
final client = state.clientState.get(task.clientId);
final rate = taskRateSelector(
task: task,
client: client,
@ -119,6 +119,20 @@ class TaskPresenter extends EntityPresenter {
return Text(presentCustomField(context, task.customValue4));
case TaskFields.documents:
return Text('${task.documents.length}');
case TaskFields.amount:
return Text(formatNumber(
task.calculateAmount(
taskRateSelector(
company: state.company,
project: state.projectState.map[task.projectId],
client: state.clientState.map[task.clientId],
task: task,
group: state.groupState.map[client?.groupId],
),
),
context,
clientId: client?.id,
));
}
return super.getField(field: field, context: context);