From c0e5836a8a8550f3336f31e4a1e90b0e452bb16a Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 24 Aug 2020 12:48:51 +0300 Subject: [PATCH] Added exchange rate --- lib/ui/credit/edit/credit_edit_details_vm.dart | 13 ++++++++----- lib/ui/invoice/edit/invoice_edit_desktop.dart | 2 +- lib/ui/invoice/edit/invoice_edit_details.dart | 2 +- lib/ui/invoice/edit/invoice_edit_details_vm.dart | 14 ++++++++------ lib/ui/quote/edit/quote_edit_details_vm.dart | 11 +++++++---- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/ui/credit/edit/credit_edit_details_vm.dart b/lib/ui/credit/edit/credit_edit_details_vm.dart index a6b9b5e72..58a3d90f1 100644 --- a/lib/ui/credit/edit/credit_edit_details_vm.dart +++ b/lib/ui/credit/edit/credit_edit_details_vm.dart @@ -11,6 +11,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_desktop.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; +import 'package:invoiceninja_flutter/utils/money.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; @@ -53,7 +54,7 @@ class CreditEditDetailsVM extends EntityEditDetailsVM { CompanyEntity company, InvoiceEntity invoice, Function(InvoiceEntity) onChanged, - Function(InvoiceEntity, ClientEntity) onClientChanged, + Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, BuiltMap clientMap, BuiltList clientList, Function(BuildContext context, Completer completer) @@ -81,11 +82,13 @@ class CreditEditDetailsVM extends EntityEditDetailsVM { onChanged: (InvoiceEntity credit) => store.dispatch(UpdateCredit(credit)), clientMap: state.clientState.map, clientList: state.clientState.list, - onClientChanged: (invoice, client) { + onClientChanged: (context, invoice, client) { if (company.convertProductExchangeRate && client != null) { - store.dispatch(UpdateCredit(credit.rebuild((b) => b - ..exchangeRate = state - .staticState.currencyMap[client.currencyId].exchangeRate))); + final exchangeRate = getExchangeRate(context, + fromCurrencyId: company.currencyId, + toCurrencyId: client.currencyId); + store.dispatch(UpdateCredit( + credit.rebuild((b) => b..exchangeRate = exchangeRate))); } store.dispatch(UpdateCreditClient(client: client)); }, diff --git a/lib/ui/invoice/edit/invoice_edit_desktop.dart b/lib/ui/invoice/edit/invoice_edit_desktop.dart index 077d5b7a4..8b396189d 100644 --- a/lib/ui/invoice/edit/invoice_edit_desktop.dart +++ b/lib/ui/invoice/edit/invoice_edit_desktop.dart @@ -198,7 +198,7 @@ class InvoiceEditDesktopState extends State clientId: invoice.clientId, clientState: viewModel.state.clientState, onSelected: (client) { - viewModel.onClientChanged(invoice, client); + viewModel.onClientChanged(context, invoice, client); /* final currencyId = (client as ClientEntity)?.currencyId; if (company.convertProductExchangeRate && diff --git a/lib/ui/invoice/edit/invoice_edit_details.dart b/lib/ui/invoice/edit/invoice_edit_details.dart index 85aa5bd4f..931ad6681 100644 --- a/lib/ui/invoice/edit/invoice_edit_details.dart +++ b/lib/ui/invoice/edit/invoice_edit_details.dart @@ -129,7 +129,7 @@ class InvoiceEditDetailsState extends State { clientId: invoice.clientId, clientState: viewModel.state.clientState, onSelected: (client) => - viewModel.onClientChanged(invoice, client), + viewModel.onClientChanged(context,invoice, client), onAddPressed: (completer) => viewModel.onAddClientPressed(context, completer), ) diff --git a/lib/ui/invoice/edit/invoice_edit_details_vm.dart b/lib/ui/invoice/edit/invoice_edit_details_vm.dart index 918780fb6..e58e36506 100644 --- a/lib/ui/invoice/edit/invoice_edit_details_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_details_vm.dart @@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart'; import 'package:invoiceninja_flutter/ui/app/screen_imports.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_desktop.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.dart'; +import 'package:invoiceninja_flutter/utils/money.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; @@ -59,7 +60,7 @@ class EntityEditDetailsVM { final CompanyEntity company; final InvoiceEntity invoice; final Function(InvoiceEntity) onChanged; - final Function(InvoiceEntity, ClientEntity) onClientChanged; + final Function(BuildContext context, InvoiceEntity, ClientEntity) onClientChanged; final BuiltMap clientMap; final BuiltList clientList; final Function(BuildContext context, Completer completer) @@ -72,7 +73,7 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM { CompanyEntity company, InvoiceEntity invoice, Function(InvoiceEntity) onChanged, - Function(InvoiceEntity, ClientEntity) onClientChanged, + Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, BuiltMap clientMap, BuiltList clientList, Function(BuildContext context, Completer completer) @@ -101,12 +102,13 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM { store.dispatch(UpdateInvoice(invoice)), clientMap: state.clientState.map, clientList: state.clientState.list, - onClientChanged: (invoice, client) { - print('## onClientChanged: ${client?.id}'); + onClientChanged: (context, invoice, client) { if (company.convertProductExchangeRate && client != null) { + final exchangeRate = getExchangeRate(context, + fromCurrencyId: company.currencyId, + toCurrencyId: client.currencyId); store.dispatch(UpdateInvoice(invoice.rebuild((b) => b - ..exchangeRate = state - .staticState.currencyMap[client.currencyId].exchangeRate))); + ..exchangeRate = exchangeRate))); } store.dispatch(UpdateInvoiceClient(client: client)); }, diff --git a/lib/ui/quote/edit/quote_edit_details_vm.dart b/lib/ui/quote/edit/quote_edit_details_vm.dart index 4b6879925..bbfafce74 100644 --- a/lib/ui/quote/edit/quote_edit_details_vm.dart +++ b/lib/ui/quote/edit/quote_edit_details_vm.dart @@ -10,6 +10,7 @@ import 'package:invoiceninja_flutter/ui/app/screen_imports.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_desktop.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dart'; +import 'package:invoiceninja_flutter/utils/money.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; @@ -52,7 +53,7 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM { CompanyEntity company, InvoiceEntity invoice, Function(InvoiceEntity) onChanged, - Function(InvoiceEntity, ClientEntity) onClientChanged, + Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged, BuiltMap clientMap, BuiltList clientList, Function(BuildContext context, Completer completer) @@ -80,11 +81,13 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM { onChanged: (InvoiceEntity quote) => store.dispatch(UpdateQuote(quote)), clientMap: state.clientState.map, clientList: state.clientState.list, - onClientChanged: (quote, client) { + onClientChanged: (context, quote, client) { if (company.convertProductExchangeRate && client != null) { + final exchangeRate = getExchangeRate(context, + fromCurrencyId: company.currencyId, + toCurrencyId: client.currencyId); store.dispatch(UpdateQuote(quote.rebuild((b) => b - ..exchangeRate = state - .staticState.currencyMap[client.currencyId].exchangeRate))); + ..exchangeRate = exchangeRate))); } store.dispatch(UpdateQuoteClient(client: client)); },