Transactions

This commit is contained in:
Hillel Coren 2022-09-23 08:34:08 +03:00
parent b167b99437
commit c4e69b3577
7 changed files with 116 additions and 42 deletions

View File

@ -60,6 +60,7 @@ class TransactionFields {
static const String expenseId = 'expense_id'; static const String expenseId = 'expense_id';
static const String expense = 'expense'; static const String expense = 'expense';
static const String status = 'status'; static const String status = 'status';
static const String accountType = 'account_type';
} }
abstract class TransactionEntity extends Object abstract class TransactionEntity extends Object
@ -86,6 +87,8 @@ abstract class TransactionEntity extends Object
statusId: '', statusId: '',
baseType: TYPE_DEPOSIT, baseType: TYPE_DEPOSIT,
transactionId: 0, transactionId: 0,
accountType: '',
categoryId: '',
); );
} }
@ -109,6 +112,9 @@ abstract class TransactionEntity extends Object
@BuiltValueField(wireName: 'base_type') @BuiltValueField(wireName: 'base_type')
String get baseType; String get baseType;
@BuiltValueField(wireName: 'account_type')
String get accountType;
String get date; String get date;
@BuiltValueField(wireName: 'bank_integration_id') @BuiltValueField(wireName: 'bank_integration_id')
@ -119,8 +125,8 @@ abstract class TransactionEntity extends Object
@BuiltValueField(wireName: 'status_id') @BuiltValueField(wireName: 'status_id')
String get statusId; String get statusId;
//@BuiltValueField(wireName: 'ninja_category_id') @BuiltValueField(wireName: 'ninja_category_id')
//String get categoryId; String get categoryId;
@BuiltValueField(wireName: 'invoice_ids') @BuiltValueField(wireName: 'invoice_ids')
String get invoiceIds; String get invoiceIds;
@ -131,9 +137,6 @@ abstract class TransactionEntity extends Object
@BuiltValueField(wireName: 'transaction_id') @BuiltValueField(wireName: 'transaction_id')
int get transactionId; int get transactionId;
//@BuiltValueField(wireName: 'is_matched')
//bool get isMached;
@override @override
EntityType get entityType => EntityType.transaction; EntityType get entityType => EntityType.transaction;
@ -173,6 +176,7 @@ abstract class TransactionEntity extends Object
bool sortAscending, bool sortAscending,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ExpenseEntity> expenseMap, BuiltMap<String, ExpenseEntity> expenseMap,
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap,
BuiltMap<String, BankAccountEntity> bankAccountMap, BuiltMap<String, BankAccountEntity> bankAccountMap,
) { ) {
int response = 0; int response = 0;
@ -193,14 +197,12 @@ abstract class TransactionEntity extends Object
case TransactionFields.status: case TransactionFields.status:
response = transactionA.statusId.compareTo(transactionB.statusId); response = transactionA.statusId.compareTo(transactionB.statusId);
break; break;
case TransactionFields.category:
response = transactionA.category
.toLowerCase()
.compareTo(transactionB.category.toLowerCase());
break;
case TransactionFields.date: case TransactionFields.date:
response = transactionA.date.compareTo(transactionB.date); response = transactionA.date.compareTo(transactionB.date);
break; break;
case TransactionFields.accountType:
response = transactionA.accountType.compareTo(transactionB.accountType);
break;
case TransactionFields.invoices: case TransactionFields.invoices:
final invoiceA = final invoiceA =
invoiceMap[transactionA.firstInvoiceId] ?? InvoiceEntity(); invoiceMap[transactionA.firstInvoiceId] ?? InvoiceEntity();
@ -217,6 +219,15 @@ abstract class TransactionEntity extends Object
.toLowerCase() .toLowerCase()
.compareTo(expenseB.listDisplayName.toLowerCase()); .compareTo(expenseB.listDisplayName.toLowerCase());
break; break;
case TransactionFields.category:
final categoryA = expenseCategoryMap[transactionA.categoryId] ??
ExpenseCategoryEntity();
final categoryB = expenseCategoryMap[transactionB.categoryId] ??
ExpenseCategoryEntity();
response = categoryA.listDisplayName
.toLowerCase()
.compareTo(categoryB.listDisplayName.toLowerCase());
break;
case TransactionFields.bankAccount: case TransactionFields.bankAccount:
final bankAccountA = final bankAccountA =
bankAccountMap[transactionA.bankAccountId] ?? BankAccountEntity(); bankAccountMap[transactionA.bankAccountId] ?? BankAccountEntity();

View File

@ -134,6 +134,9 @@ class _$TransactionEntitySerializer
'base_type', 'base_type',
serializers.serialize(object.baseType, serializers.serialize(object.baseType,
specifiedType: const FullType(String)), specifiedType: const FullType(String)),
'account_type',
serializers.serialize(object.accountType,
specifiedType: const FullType(String)),
'date', 'date',
serializers.serialize(object.date, specifiedType: const FullType(String)), serializers.serialize(object.date, specifiedType: const FullType(String)),
'bank_integration_id', 'bank_integration_id',
@ -145,6 +148,9 @@ class _$TransactionEntitySerializer
'status_id', 'status_id',
serializers.serialize(object.statusId, serializers.serialize(object.statusId,
specifiedType: const FullType(String)), specifiedType: const FullType(String)),
'ninja_category_id',
serializers.serialize(object.categoryId,
specifiedType: const FullType(String)),
'invoice_ids', 'invoice_ids',
serializers.serialize(object.invoiceIds, serializers.serialize(object.invoiceIds,
specifiedType: const FullType(String)), specifiedType: const FullType(String)),
@ -226,6 +232,10 @@ class _$TransactionEntitySerializer
result.baseType = serializers.deserialize(value, result.baseType = serializers.deserialize(value,
specifiedType: const FullType(String)) as String; specifiedType: const FullType(String)) as String;
break; break;
case 'account_type':
result.accountType = serializers.deserialize(value,
specifiedType: const FullType(String)) as String;
break;
case 'date': case 'date':
result.date = serializers.deserialize(value, result.date = serializers.deserialize(value,
specifiedType: const FullType(String)) as String; specifiedType: const FullType(String)) as String;
@ -242,6 +252,10 @@ class _$TransactionEntitySerializer
result.statusId = serializers.deserialize(value, result.statusId = serializers.deserialize(value,
specifiedType: const FullType(String)) as String; specifiedType: const FullType(String)) as String;
break; break;
case 'ninja_category_id':
result.categoryId = serializers.deserialize(value,
specifiedType: const FullType(String)) as String;
break;
case 'invoice_ids': case 'invoice_ids':
result.invoiceIds = serializers.deserialize(value, result.invoiceIds = serializers.deserialize(value,
specifiedType: const FullType(String)) as String; specifiedType: const FullType(String)) as String;
@ -544,6 +558,8 @@ class _$TransactionEntity extends TransactionEntity {
@override @override
final String baseType; final String baseType;
@override @override
final String accountType;
@override
final String date; final String date;
@override @override
final String bankAccountId; final String bankAccountId;
@ -552,6 +568,8 @@ class _$TransactionEntity extends TransactionEntity {
@override @override
final String statusId; final String statusId;
@override @override
final String categoryId;
@override
final String invoiceIds; final String invoiceIds;
@override @override
final String expenseId; final String expenseId;
@ -583,10 +601,12 @@ class _$TransactionEntity extends TransactionEntity {
this.currencyId, this.currencyId,
this.category, this.category,
this.baseType, this.baseType,
this.accountType,
this.date, this.date,
this.bankAccountId, this.bankAccountId,
this.description, this.description,
this.statusId, this.statusId,
this.categoryId,
this.invoiceIds, this.invoiceIds,
this.expenseId, this.expenseId,
this.transactionId, this.transactionId,
@ -607,6 +627,8 @@ class _$TransactionEntity extends TransactionEntity {
category, 'TransactionEntity', 'category'); category, 'TransactionEntity', 'category');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
baseType, 'TransactionEntity', 'baseType'); baseType, 'TransactionEntity', 'baseType');
BuiltValueNullFieldError.checkNotNull(
accountType, 'TransactionEntity', 'accountType');
BuiltValueNullFieldError.checkNotNull(date, 'TransactionEntity', 'date'); BuiltValueNullFieldError.checkNotNull(date, 'TransactionEntity', 'date');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
bankAccountId, 'TransactionEntity', 'bankAccountId'); bankAccountId, 'TransactionEntity', 'bankAccountId');
@ -614,6 +636,8 @@ class _$TransactionEntity extends TransactionEntity {
description, 'TransactionEntity', 'description'); description, 'TransactionEntity', 'description');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
statusId, 'TransactionEntity', 'statusId'); statusId, 'TransactionEntity', 'statusId');
BuiltValueNullFieldError.checkNotNull(
categoryId, 'TransactionEntity', 'categoryId');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
invoiceIds, 'TransactionEntity', 'invoiceIds'); invoiceIds, 'TransactionEntity', 'invoiceIds');
BuiltValueNullFieldError.checkNotNull( BuiltValueNullFieldError.checkNotNull(
@ -645,10 +669,12 @@ class _$TransactionEntity extends TransactionEntity {
currencyId == other.currencyId && currencyId == other.currencyId &&
category == other.category && category == other.category &&
baseType == other.baseType && baseType == other.baseType &&
accountType == other.accountType &&
date == other.date && date == other.date &&
bankAccountId == other.bankAccountId && bankAccountId == other.bankAccountId &&
description == other.description && description == other.description &&
statusId == other.statusId && statusId == other.statusId &&
categoryId == other.categoryId &&
invoiceIds == other.invoiceIds && invoiceIds == other.invoiceIds &&
expenseId == other.expenseId && expenseId == other.expenseId &&
transactionId == other.transactionId && transactionId == other.transactionId &&
@ -683,21 +709,15 @@ class _$TransactionEntity extends TransactionEntity {
$jc( $jc(
$jc( $jc(
$jc( $jc(
$jc( $jc($jc($jc(0, amount.hashCode), currencyId.hashCode),
0, category.hashCode),
amount baseType.hashCode),
.hashCode), accountType.hashCode),
currencyId date.hashCode),
.hashCode), bankAccountId.hashCode),
category description.hashCode),
.hashCode), statusId.hashCode),
baseType categoryId.hashCode),
.hashCode),
date.hashCode),
bankAccountId
.hashCode),
description.hashCode),
statusId.hashCode),
invoiceIds.hashCode), invoiceIds.hashCode),
expenseId.hashCode), expenseId.hashCode),
transactionId.hashCode), transactionId.hashCode),
@ -718,10 +738,12 @@ class _$TransactionEntity extends TransactionEntity {
..add('currencyId', currencyId) ..add('currencyId', currencyId)
..add('category', category) ..add('category', category)
..add('baseType', baseType) ..add('baseType', baseType)
..add('accountType', accountType)
..add('date', date) ..add('date', date)
..add('bankAccountId', bankAccountId) ..add('bankAccountId', bankAccountId)
..add('description', description) ..add('description', description)
..add('statusId', statusId) ..add('statusId', statusId)
..add('categoryId', categoryId)
..add('invoiceIds', invoiceIds) ..add('invoiceIds', invoiceIds)
..add('expenseId', expenseId) ..add('expenseId', expenseId)
..add('transactionId', transactionId) ..add('transactionId', transactionId)
@ -757,6 +779,10 @@ class TransactionEntityBuilder
String get baseType => _$this._baseType; String get baseType => _$this._baseType;
set baseType(String baseType) => _$this._baseType = baseType; set baseType(String baseType) => _$this._baseType = baseType;
String _accountType;
String get accountType => _$this._accountType;
set accountType(String accountType) => _$this._accountType = accountType;
String _date; String _date;
String get date => _$this._date; String get date => _$this._date;
set date(String date) => _$this._date = date; set date(String date) => _$this._date = date;
@ -774,6 +800,10 @@ class TransactionEntityBuilder
String get statusId => _$this._statusId; String get statusId => _$this._statusId;
set statusId(String statusId) => _$this._statusId = statusId; set statusId(String statusId) => _$this._statusId = statusId;
String _categoryId;
String get categoryId => _$this._categoryId;
set categoryId(String categoryId) => _$this._categoryId = categoryId;
String _invoiceIds; String _invoiceIds;
String get invoiceIds => _$this._invoiceIds; String get invoiceIds => _$this._invoiceIds;
set invoiceIds(String invoiceIds) => _$this._invoiceIds = invoiceIds; set invoiceIds(String invoiceIds) => _$this._invoiceIds = invoiceIds;
@ -831,10 +861,12 @@ class TransactionEntityBuilder
_currencyId = $v.currencyId; _currencyId = $v.currencyId;
_category = $v.category; _category = $v.category;
_baseType = $v.baseType; _baseType = $v.baseType;
_accountType = $v.accountType;
_date = $v.date; _date = $v.date;
_bankAccountId = $v.bankAccountId; _bankAccountId = $v.bankAccountId;
_description = $v.description; _description = $v.description;
_statusId = $v.statusId; _statusId = $v.statusId;
_categoryId = $v.categoryId;
_invoiceIds = $v.invoiceIds; _invoiceIds = $v.invoiceIds;
_expenseId = $v.expenseId; _expenseId = $v.expenseId;
_transactionId = $v.transactionId; _transactionId = $v.transactionId;
@ -874,16 +906,18 @@ class TransactionEntityBuilder
category, 'TransactionEntity', 'category'), category, 'TransactionEntity', 'category'),
baseType: BuiltValueNullFieldError.checkNotNull( baseType: BuiltValueNullFieldError.checkNotNull(
baseType, 'TransactionEntity', 'baseType'), baseType, 'TransactionEntity', 'baseType'),
accountType: BuiltValueNullFieldError.checkNotNull(
accountType, 'TransactionEntity', 'accountType'),
date: BuiltValueNullFieldError.checkNotNull( date: BuiltValueNullFieldError.checkNotNull(
date, 'TransactionEntity', 'date'), date, 'TransactionEntity', 'date'),
bankAccountId: BuiltValueNullFieldError.checkNotNull( bankAccountId: BuiltValueNullFieldError.checkNotNull(
bankAccountId, 'TransactionEntity', 'bankAccountId'), bankAccountId, 'TransactionEntity', 'bankAccountId'),
description: BuiltValueNullFieldError.checkNotNull( description: BuiltValueNullFieldError.checkNotNull(
description, 'TransactionEntity', 'description'), description, 'TransactionEntity', 'description'),
statusId: BuiltValueNullFieldError.checkNotNull( statusId:
statusId, 'TransactionEntity', 'statusId'), BuiltValueNullFieldError.checkNotNull(statusId, 'TransactionEntity', 'statusId'),
invoiceIds: BuiltValueNullFieldError.checkNotNull( categoryId: BuiltValueNullFieldError.checkNotNull(categoryId, 'TransactionEntity', 'categoryId'),
invoiceIds, 'TransactionEntity', 'invoiceIds'), invoiceIds: BuiltValueNullFieldError.checkNotNull(invoiceIds, 'TransactionEntity', 'invoiceIds'),
expenseId: BuiltValueNullFieldError.checkNotNull(expenseId, 'TransactionEntity', 'expenseId'), expenseId: BuiltValueNullFieldError.checkNotNull(expenseId, 'TransactionEntity', 'expenseId'),
transactionId: BuiltValueNullFieldError.checkNotNull(transactionId, 'TransactionEntity', 'transactionId'), transactionId: BuiltValueNullFieldError.checkNotNull(transactionId, 'TransactionEntity', 'transactionId'),
isChanged: isChanged, isChanged: isChanged,

View File

@ -5,13 +5,14 @@ import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
var memoizedDropdownTransactionList = memo8( var memoizedDropdownTransactionList = memo9(
(BuiltMap<String, TransactionEntity> transactionMap, (BuiltMap<String, TransactionEntity> transactionMap,
BuiltList<String> transactionList, BuiltList<String> transactionList,
StaticState staticState, StaticState staticState,
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ExpenseEntity> expenseMap, BuiltMap<String, ExpenseEntity> expenseMap,
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap,
BuiltMap<String, BankAccountEntity> bankAccountMap, BuiltMap<String, BankAccountEntity> bankAccountMap,
String clientId) => String clientId) =>
dropdownTransactionsSelector( dropdownTransactionsSelector(
@ -21,6 +22,7 @@ var memoizedDropdownTransactionList = memo8(
userMap, userMap,
invoiceMap, invoiceMap,
expenseMap, expenseMap,
expenseCategoryMap,
bankAccountMap, bankAccountMap,
clientId)); clientId));
@ -31,6 +33,7 @@ List<String> dropdownTransactionsSelector(
BuiltMap<String, UserEntity> userMap, BuiltMap<String, UserEntity> userMap,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ExpenseEntity> expenseMap, BuiltMap<String, ExpenseEntity> expenseMap,
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap,
BuiltMap<String, BankAccountEntity> bankAccountMap, BuiltMap<String, BankAccountEntity> bankAccountMap,
String clientId) { String clientId) {
final list = transactionList.where((transactionId) { final list = transactionList.where((transactionId) {
@ -47,17 +50,18 @@ List<String> dropdownTransactionsSelector(
final transactionA = transactionMap[transactionAId]; final transactionA = transactionMap[transactionAId];
final transactionB = transactionMap[transactionBId]; final transactionB = transactionMap[transactionBId];
return transactionA.compareTo(transactionB, TransactionFields.date, true, return transactionA.compareTo(transactionB, TransactionFields.date, true,
invoiceMap, expenseMap, bankAccountMap); invoiceMap, expenseMap, expenseCategoryMap, bankAccountMap);
}); });
return list; return list;
} }
var memoizedFilteredTransactionList = memo7((SelectionState selectionState, var memoizedFilteredTransactionList = memo8((SelectionState selectionState,
BuiltMap<String, TransactionEntity> transactionMap, BuiltMap<String, TransactionEntity> transactionMap,
BuiltList<String> transactionList, BuiltList<String> transactionList,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ExpenseEntity> expenseMap, BuiltMap<String, ExpenseEntity> expenseMap,
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap,
BuiltMap<String, BankAccountEntity> bankAccountMap, BuiltMap<String, BankAccountEntity> bankAccountMap,
ListUIState transactionListState) => ListUIState transactionListState) =>
filteredTransactionsSelector( filteredTransactionsSelector(
@ -66,6 +70,7 @@ var memoizedFilteredTransactionList = memo7((SelectionState selectionState,
transactionList, transactionList,
invoiceMap, invoiceMap,
expenseMap, expenseMap,
expenseCategoryMap,
bankAccountMap, bankAccountMap,
transactionListState)); transactionListState));
@ -75,6 +80,7 @@ List<String> filteredTransactionsSelector(
BuiltList<String> transactionList, BuiltList<String> transactionList,
BuiltMap<String, InvoiceEntity> invoiceMap, BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ExpenseEntity> expenseMap, BuiltMap<String, ExpenseEntity> expenseMap,
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap,
BuiltMap<String, BankAccountEntity> bankAccountMap, BuiltMap<String, BankAccountEntity> bankAccountMap,
ListUIState transactionListState) { ListUIState transactionListState) {
final filterEntityId = selectionState.filterEntityId; final filterEntityId = selectionState.filterEntityId;
@ -108,6 +114,7 @@ List<String> filteredTransactionsSelector(
transactionListState.sortAscending, transactionListState.sortAscending,
invoiceMap, invoiceMap,
expenseMap, expenseMap,
expenseCategoryMap,
bankAccountMap); bankAccountMap);
}); });

View File

@ -92,6 +92,7 @@ class TransactionListVM {
state.transactionState.list, state.transactionState.list,
state.invoiceState.map, state.invoiceState.map,
state.expenseState.map, state.expenseState.map,
state.expenseCategoryState.map,
state.bankAccountState.map, state.bankAccountState.map,
state.transactionListState), state.transactionListState),
transactionMap: state.transactionState.map, transactionMap: state.transactionState.map,

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_status_chip.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_status_chip.dart';
@ -26,6 +27,7 @@ class TransactionPresenter extends EntityPresenter {
return [ return [
...getDefaultTableFields(userCompany), ...getDefaultTableFields(userCompany),
...EntityPresenter.getBaseFields(), ...EntityPresenter.getBaseFields(),
TransactionFields.accountType,
TransactionFields.bankAccount, TransactionFields.bankAccount,
TransactionFields.currency, TransactionFields.currency,
TransactionFields.amount, TransactionFields.amount,
@ -66,25 +68,38 @@ class TransactionPresenter extends EntityPresenter {
child: Text(formatNumber(transaction.amount, context, child: Text(formatNumber(transaction.amount, context,
currencyId: transaction.currencyId)), currencyId: transaction.currencyId)),
); );
case TransactionFields.category:
return Text(toTitleCase(transaction.category.toLowerCase()));
case TransactionFields.description: case TransactionFields.description:
return Text(transaction.description); return Text(transaction.description);
case TransactionFields.accountType:
return Text(toTitleCase(transaction.accountType));
case TransactionFields.bankAccount: case TransactionFields.bankAccount:
final bankAccount = final bankAccount =
state.bankAccountState.get(transaction.bankAccountId); state.bankAccountState.get(transaction.bankAccountId);
return LinkTextRelatedEntity( return LinkTextRelatedEntity(
entity: bankAccount, relation: transaction); entity: bankAccount, relation: transaction);
case TransactionFields.invoices: case TransactionFields.invoices:
return Text(transaction.invoiceIds); return ConstrainedBox(
//final invoice = state.invoiceState.get(transaction.invoiceIds); constraints: BoxConstraints(maxWidth: kTableColumnWidthMax),
//return LinkTextRelatedEntity(entity: invoice, relation: transaction); child: Wrap(
clipBehavior: Clip.antiAlias,
children: transaction.invoiceIds
.split(',')
.map((invoiceId) => state.invoiceState.map[invoiceId])
.where((invoice) => invoice != null)
.map((invoice) => Padding(
padding: const EdgeInsets.only(right: 8),
child: LinkTextRelatedEntity(
entity: invoice, relation: transaction),
))
.toList(),
),
);
case TransactionFields.expense: case TransactionFields.expense:
return Text(transaction.expenseId); final expense = state.expenseState.get(transaction.expenseId);
//final expense = state.expenseState.get(transaction.expenseId); return LinkTextRelatedEntity(entity: expense, relation: transaction);
//return LinkTextRelatedEntity(entity: expense, relation: transaction); case TransactionFields.category:
case TransactionFields.currency: final category = state.expenseCategoryState.get(transaction.categoryId);
return Text(state.bankAccountState.get(transaction.bankAccountId).name); return LinkTextRelatedEntity(entity: category, relation: transaction);
} }
return super.getField(field: field, context: context); return super.getField(field: field, context: context);

View File

@ -52,6 +52,7 @@ class TransactionScreenVM {
state.transactionState.list, state.transactionState.list,
state.invoiceState.map, state.invoiceState.map,
state.expenseState.map, state.expenseState.map,
state.expenseCategoryState.map,
state.bankAccountState.map, state.bankAccountState.map,
state.transactionListState, state.transactionListState,
), ),

View File

@ -16,6 +16,7 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map<String, Map<String, String>> _localizedValues = { static final Map<String, Map<String, String>> _localizedValues = {
'en': { 'en': {
// STARTER: lang key - do not remove comment // STARTER: lang key - do not remove comment
'account_type': 'Account Type',
'new_bank_account': 'New Bank Account', 'new_bank_account': 'New Bank Account',
'connect_accounts': 'Connect Accounts', 'connect_accounts': 'Connect Accounts',
'manage_rules': 'Manage Rules', 'manage_rules': 'Manage Rules',
@ -87382,6 +87383,10 @@ mixin LocalizationsProvider on LocaleCodeAware {
_localizedValues[localeCode]['new_bank_account'] ?? _localizedValues[localeCode]['new_bank_account'] ??
_localizedValues['en']['new_bank_account']; _localizedValues['en']['new_bank_account'];
String get accountType =>
_localizedValues[localeCode]['account_type'] ??
_localizedValues['en']['account_type'];
// STARTER: lang field - do not remove comment // STARTER: lang field - do not remove comment
String lookup(String key) { String lookup(String key) {