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

View File

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

View File

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