This commit is contained in:
Hillel Coren 2020-10-25 11:55:20 +02:00
parent 17a901ec4a
commit 051fd0f34f
4 changed files with 21 additions and 57 deletions

View File

@ -334,6 +334,8 @@ abstract class VendorEntity extends Object
bool get hasCurrency => currencyId != null && currencyId.isNotEmpty;
bool get hasUser => assignedUserId != null && assignedUserId.isNotEmpty;
static Serializer<VendorEntity> get serializer => _$vendorEntitySerializer;
bool get hasNameSet {

View File

@ -67,7 +67,10 @@ class _ExpenseViewState extends State<ExpenseView>
children: <Widget>[
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ExpenseOverview(viewModel: viewModel),
child: ExpenseOverview(
viewModel: viewModel,
isFilter: widget.isFilter,
),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),

View File

@ -1,6 +1,7 @@
import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_state_title.dart';
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
@ -15,9 +16,11 @@ class ExpenseOverview extends StatelessWidget {
const ExpenseOverview({
Key key,
@required this.viewModel,
@required this.isFilter,
}) : super(key: key);
final ExpenseViewVM viewModel;
final bool isFilter;
@override
Widget build(BuildContext context) {
@ -29,6 +32,7 @@ class ExpenseOverview extends StatelessWidget {
final client = state.clientState.map[expense.clientId];
final invoice = state.invoiceState.map[expense.invoiceId];
final category = company.expenseCategoryMap[expense.categoryId];
final user = state.userState.get(expense.assignedUserId);
final fields = <String, String>{
localization.category: category?.name,
@ -119,62 +123,10 @@ class ExpenseOverview extends StatelessWidget {
],
FieldGrid(fields),
ListDivider(),
vendor == null
? SizedBox()
: Material(
color: Theme.of(context).canvasColor,
child: ListTile(
title: EntityStateTitle(entity: vendor),
leading: Icon(getEntityIcon(EntityType.vendor), size: 18),
trailing: Icon(Icons.navigate_next),
onTap: () =>
viewModel.onEntityPressed(context, EntityType.vendor),
onLongPress: () => viewModel.onEntityPressed(
context, EntityType.vendor, true),
),
),
vendor == null
? SizedBox()
: Container(
color: Theme.of(context).backgroundColor,
height: 12.0,
),
client == null
? SizedBox()
: Material(
color: Theme.of(context).canvasColor,
child: ListTile(
title: EntityStateTitle(entity: client),
leading: Icon(getEntityIcon(EntityType.client), size: 18),
trailing: Icon(Icons.navigate_next),
onTap: () =>
viewModel.onEntityPressed(context, EntityType.client),
onLongPress: () => viewModel.onEntityPressed(
context, EntityType.client, true),
),
),
client == null
? SizedBox()
: Container(
color: Theme.of(context).backgroundColor,
height: 12.0,
),
invoice == null
? SizedBox()
: Material(
color: Theme.of(context).canvasColor,
child: ListTile(
title: EntityStateTitle(
entity: invoice,
),
leading: Icon(getEntityIcon(EntityType.invoice), size: 18),
trailing: Icon(Icons.navigate_next),
onTap: () =>
viewModel.onEntityPressed(context, EntityType.invoice),
onLongPress: () => viewModel.onEntityPressed(
context, EntityType.invoice, true),
),
),
EntityListTile(entity: vendor, isFilter: isFilter),
EntityListTile(entity: client, isFilter: isFilter),
EntityListTile(entity: invoice, isFilter: isFilter),
EntityListTile(entity: user, isFilter: isFilter),
..._buildDetailsList(),
if ((expense.publicNotes ?? '').isNotEmpty) ...[
IconMessage(expense.publicNotes),

View File

@ -32,6 +32,8 @@ class VendorOverview extends StatelessWidget {
final state = StoreProvider.of<AppState>(context).state;
final statics = state.staticState;
final fields = <String, String>{};
final user =
vendor.hasUser ? state.userState.get(vendor.assignedUserId) : null;
if (vendor.hasCurrency && vendor.currencyId != company.currencyId) {
fields[VendorFields.currencyId] =
@ -70,6 +72,11 @@ class VendorOverview extends StatelessWidget {
IconMessage(vendor.privateNotes, iconData: Icons.lock),
ListDivider()
],
if (vendor.hasUser)
EntityListTile(
entity: user,
isFilter: isFilter,
),
FieldGrid(fields),
ListDivider(),
EntitiesListTile(