invoice/lib/ui/reports/client_report.dart

68 lines
1.9 KiB
Dart

import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/client_model.dart';
import 'package:invoiceninja_flutter/data/models/company_model.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/redux/reports/reports_state.dart';
import 'package:invoiceninja_flutter/ui/reports/reports_screen.dart';
ReportResult clientReport({
UserCompanyEntity userCompany,
ReportsUIState reportsUIState,
BuiltMap<String, ClientEntity> clientMap,
}) {
final List<List<ReportElement>> data = [];
BuiltList<String> columns;
final reportColumns = userCompany.settings.reportColumns;
if (reportColumns != null && reportColumns.containsKey(kReportClient)) {
columns = reportColumns[kReportClient];
} else {
columns = BuiltList(<String>[
ClientFields.name,
]);
}
for (var clientId in clientMap.keys) {
final client = clientMap[clientId];
if (client.isDeleted) {
continue;
}
final List<ReportElement> row = [];
data.add(row);
for (var column in columns) {
switch (column) {
case ClientFields.name:
row.add(ReportEntityValue(
entityType: EntityType.client,
entityId: client.id,
));
break;
case ClientFields.idNumber:
row.add(ReportValue(value: client.idNumber));
break;
case ClientFields.vatNumber:
row.add(ReportValue(value: client.vatNumber));
break;
case ClientFields.state:
row.add(ReportValue(value: client.state));
break;
}
}
}
return ReportResult(
allColumns: [
ClientFields.name,
ClientFields.idNumber,
ClientFields.vatNumber,
ClientFields.state,
],
columns: columns.toList(),
data: data,
);
}