Transactions
This commit is contained in:
parent
fbac475eba
commit
b68e8dd7fe
|
|
@ -118,6 +118,7 @@ class EntityAction extends EnumClass {
|
||||||
static const EntityAction save = _$save;
|
static const EntityAction save = _$save;
|
||||||
static const EntityAction accept = _$accept;
|
static const EntityAction accept = _$accept;
|
||||||
static const EntityAction addToInventory = _$addToInventory;
|
static const EntityAction addToInventory = _$addToInventory;
|
||||||
|
static const EntityAction convert = _$convert;
|
||||||
static const EntityAction convertToExpense = _$convertToExpense;
|
static const EntityAction convertToExpense = _$convertToExpense;
|
||||||
static const EntityAction convertToPayment = _$convertToPayment;
|
static const EntityAction convertToPayment = _$convertToPayment;
|
||||||
static const EntityAction merge = _$merge;
|
static const EntityAction merge = _$merge;
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,7 @@ const EntityAction _$cancel = const EntityAction._('cancel');
|
||||||
const EntityAction _$save = const EntityAction._('save');
|
const EntityAction _$save = const EntityAction._('save');
|
||||||
const EntityAction _$accept = const EntityAction._('accept');
|
const EntityAction _$accept = const EntityAction._('accept');
|
||||||
const EntityAction _$addToInventory = const EntityAction._('addToInventory');
|
const EntityAction _$addToInventory = const EntityAction._('addToInventory');
|
||||||
|
const EntityAction _$convert = const EntityAction._('convert');
|
||||||
const EntityAction _$convertToExpense =
|
const EntityAction _$convertToExpense =
|
||||||
const EntityAction._('convertToExpense');
|
const EntityAction._('convertToExpense');
|
||||||
const EntityAction _$convertToPayment =
|
const EntityAction _$convertToPayment =
|
||||||
|
|
@ -227,6 +228,8 @@ EntityAction _$valueOf(String name) {
|
||||||
return _$accept;
|
return _$accept;
|
||||||
case 'addToInventory':
|
case 'addToInventory':
|
||||||
return _$addToInventory;
|
return _$addToInventory;
|
||||||
|
case 'convert':
|
||||||
|
return _$convert;
|
||||||
case 'convertToExpense':
|
case 'convertToExpense':
|
||||||
return _$convertToExpense;
|
return _$convertToExpense;
|
||||||
case 'convertToPayment':
|
case 'convertToPayment':
|
||||||
|
|
@ -308,6 +311,7 @@ final BuiltSet<EntityAction> _$values =
|
||||||
_$save,
|
_$save,
|
||||||
_$accept,
|
_$accept,
|
||||||
_$addToInventory,
|
_$addToInventory,
|
||||||
|
_$convert,
|
||||||
_$convertToExpense,
|
_$convertToExpense,
|
||||||
_$convertToPayment,
|
_$convertToPayment,
|
||||||
_$merge,
|
_$merge,
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,46 @@ class TransactionRepository {
|
||||||
return transactionResponse.data.toList();
|
return transactionResponse.data.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<TransactionEntity> convertToPayment(Credentials credentials,
|
||||||
|
String transactionId, List<String> invoiceIds) async {
|
||||||
|
final url = credentials.url + '/bank_transactions/match';
|
||||||
|
final dynamic response = await webClient.post(
|
||||||
|
url,
|
||||||
|
credentials.token,
|
||||||
|
data: json.encode(
|
||||||
|
{
|
||||||
|
'id': transactionId,
|
||||||
|
'invoice_ids': invoiceIds.join(','),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
final TransactionItemResponse transactionResponse = serializers
|
||||||
|
.deserializeWith(TransactionItemResponse.serializer, response);
|
||||||
|
|
||||||
|
return transactionResponse.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<TransactionEntity> convertToExpense(
|
||||||
|
Credentials credentials, String transactionId, String vendorId) async {
|
||||||
|
final url = credentials.url + '/bank_transactions/match';
|
||||||
|
final dynamic response = await webClient.post(
|
||||||
|
url,
|
||||||
|
credentials.token,
|
||||||
|
data: json.encode(
|
||||||
|
{
|
||||||
|
'id': transactionId,
|
||||||
|
'vendor_id': vendorId,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
final TransactionItemResponse transactionResponse = serializers
|
||||||
|
.deserializeWith(TransactionItemResponse.serializer, response);
|
||||||
|
|
||||||
|
return transactionResponse.data;
|
||||||
|
}
|
||||||
|
|
||||||
Future<TransactionEntity> saveData(
|
Future<TransactionEntity> saveData(
|
||||||
Credentials credentials, TransactionEntity transaction) async {
|
Credentials credentials, TransactionEntity transaction) async {
|
||||||
final data =
|
final data =
|
||||||
|
|
|
||||||
|
|
@ -213,9 +213,9 @@ class ConvertTransactionToPaymentSuccess implements StopSaving, PersistData {
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConvertTransactionToPaymentFailure implements StopSaving {
|
class ConvertTransactionToPaymentFailure implements StopSaving {
|
||||||
ConvertTransactionToPaymentFailure(this.transaction);
|
ConvertTransactionToPaymentFailure(this.error);
|
||||||
|
|
||||||
final TransactionEntity transaction;
|
final dynamic error;
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConvertTransactionToExpenseRequest implements StartSaving {
|
class ConvertTransactionToExpenseRequest implements StartSaving {
|
||||||
|
|
@ -237,9 +237,9 @@ class ConvertTransactionToExpenseSuccess implements StopSaving, PersistData {
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConvertTransactionToExpenseFailure implements StopSaving {
|
class ConvertTransactionToExpenseFailure implements StopSaving {
|
||||||
ConvertTransactionToExpenseFailure(this.transaction);
|
ConvertTransactionToExpenseFailure(this.error);
|
||||||
|
|
||||||
final TransactionEntity transaction;
|
final dynamic error;
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConvertTransactionsRequest implements StartSaving {
|
class ConvertTransactionsRequest implements StartSaving {
|
||||||
|
|
@ -256,9 +256,9 @@ class ConvertTransactionsSuccess implements StopSaving, PersistData {
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConvertTransactionsFailure implements StopSaving {
|
class ConvertTransactionsFailure implements StopSaving {
|
||||||
ConvertTransactionsFailure(this.transactions);
|
ConvertTransactionsFailure(this.error);
|
||||||
|
|
||||||
final List<TransactionEntity> transactions;
|
final dynamic error;
|
||||||
}
|
}
|
||||||
|
|
||||||
class FilterTransactions implements PersistUI {
|
class FilterTransactions implements PersistUI {
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,9 @@ List<Middleware<AppState>> createStoreTransactionsMiddleware([
|
||||||
final archiveTransaction = _archiveTransaction(repository);
|
final archiveTransaction = _archiveTransaction(repository);
|
||||||
final deleteTransaction = _deleteTransaction(repository);
|
final deleteTransaction = _deleteTransaction(repository);
|
||||||
final restoreTransaction = _restoreTransaction(repository);
|
final restoreTransaction = _restoreTransaction(repository);
|
||||||
|
final convertTransactions = _convertTransactions(repository);
|
||||||
|
final convertToPayment = _convertToPayment(repository);
|
||||||
|
final convertToExpense = _convertToExpense(repository);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
TypedMiddleware<AppState, ViewTransactionList>(viewTransactionList),
|
TypedMiddleware<AppState, ViewTransactionList>(viewTransactionList),
|
||||||
|
|
@ -35,6 +38,11 @@ List<Middleware<AppState>> createStoreTransactionsMiddleware([
|
||||||
TypedMiddleware<AppState, ArchiveTransactionsRequest>(archiveTransaction),
|
TypedMiddleware<AppState, ArchiveTransactionsRequest>(archiveTransaction),
|
||||||
TypedMiddleware<AppState, DeleteTransactionsRequest>(deleteTransaction),
|
TypedMiddleware<AppState, DeleteTransactionsRequest>(deleteTransaction),
|
||||||
TypedMiddleware<AppState, RestoreTransactionsRequest>(restoreTransaction),
|
TypedMiddleware<AppState, RestoreTransactionsRequest>(restoreTransaction),
|
||||||
|
TypedMiddleware<AppState, ConvertTransactionsRequest>(convertTransactions),
|
||||||
|
TypedMiddleware<AppState, ConvertTransactionToPaymentRequest>(
|
||||||
|
convertToPayment),
|
||||||
|
TypedMiddleware<AppState, ConvertTransactionToExpenseRequest>(
|
||||||
|
convertToExpense),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -164,6 +172,81 @@ Middleware<AppState> _restoreTransaction(TransactionRepository repository) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Middleware<AppState> _convertTransactions(TransactionRepository repository) {
|
||||||
|
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||||
|
final action = dynamicAction as ConvertTransactionsRequest;
|
||||||
|
repository
|
||||||
|
.bulkAction(store.state.credentials, action.transactionIds,
|
||||||
|
EntityAction.convert)
|
||||||
|
.then((List<TransactionEntity> transactions) {
|
||||||
|
store.dispatch(ConvertTransactionsSuccess(transactions));
|
||||||
|
if (action.completer != null) {
|
||||||
|
action.completer.complete(null);
|
||||||
|
}
|
||||||
|
}).catchError((Object error) {
|
||||||
|
print(error);
|
||||||
|
store.dispatch(ConvertTransactionsFailure(error));
|
||||||
|
if (action.completer != null) {
|
||||||
|
action.completer.completeError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
next(action);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
Middleware<AppState> _convertToPayment(TransactionRepository repository) {
|
||||||
|
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||||
|
final action = dynamicAction as ConvertTransactionToPaymentRequest;
|
||||||
|
repository
|
||||||
|
.convertToPayment(
|
||||||
|
store.state.credentials,
|
||||||
|
action.transactionId,
|
||||||
|
action.invoiceIds,
|
||||||
|
)
|
||||||
|
.then((TransactionEntity transactions) {
|
||||||
|
store.dispatch(ConvertTransactionToPaymentSuccess(transactions));
|
||||||
|
if (action.completer != null) {
|
||||||
|
action.completer.complete(null);
|
||||||
|
}
|
||||||
|
}).catchError((Object error) {
|
||||||
|
print(error);
|
||||||
|
store.dispatch(ConvertTransactionToPaymentFailure(error));
|
||||||
|
if (action.completer != null) {
|
||||||
|
action.completer.completeError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
next(action);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
Middleware<AppState> _convertToExpense(TransactionRepository repository) {
|
||||||
|
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||||
|
final action = dynamicAction as ConvertTransactionToExpenseRequest;
|
||||||
|
repository
|
||||||
|
.convertToExpense(
|
||||||
|
store.state.credentials,
|
||||||
|
action.transactionId,
|
||||||
|
action.vendorId,
|
||||||
|
)
|
||||||
|
.then((TransactionEntity transactions) {
|
||||||
|
store.dispatch(ConvertTransactionToExpenseSuccess(transactions));
|
||||||
|
if (action.completer != null) {
|
||||||
|
action.completer.complete(null);
|
||||||
|
}
|
||||||
|
}).catchError((Object error) {
|
||||||
|
print(error);
|
||||||
|
store.dispatch(ConvertTransactionToExpenseFailure(error));
|
||||||
|
if (action.completer != null) {
|
||||||
|
action.completer.completeError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
next(action);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
Middleware<AppState> _saveTransaction(TransactionRepository repository) {
|
Middleware<AppState> _saveTransaction(TransactionRepository repository) {
|
||||||
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||||
final action = dynamicAction as SaveTransactionRequest;
|
final action = dynamicAction as SaveTransactionRequest;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue