Added exchange rate

This commit is contained in:
Hillel Coren 2020-08-24 12:48:51 +03:00
parent a10a2f90c4
commit c0e5836a8a
5 changed files with 25 additions and 17 deletions

View File

@ -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.dart';
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.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/ui/invoice/edit/invoice_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/money.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart'; import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
@ -53,7 +54,7 @@ class CreditEditDetailsVM extends EntityEditDetailsVM {
CompanyEntity company, CompanyEntity company,
InvoiceEntity invoice, InvoiceEntity invoice,
Function(InvoiceEntity) onChanged, Function(InvoiceEntity) onChanged,
Function(InvoiceEntity, ClientEntity) onClientChanged, Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltList<String> clientList, BuiltList<String> clientList,
Function(BuildContext context, Completer<SelectableEntity> completer) Function(BuildContext context, Completer<SelectableEntity> completer)
@ -81,11 +82,13 @@ class CreditEditDetailsVM extends EntityEditDetailsVM {
onChanged: (InvoiceEntity credit) => store.dispatch(UpdateCredit(credit)), onChanged: (InvoiceEntity credit) => store.dispatch(UpdateCredit(credit)),
clientMap: state.clientState.map, clientMap: state.clientState.map,
clientList: state.clientState.list, clientList: state.clientState.list,
onClientChanged: (invoice, client) { onClientChanged: (context, invoice, client) {
if (company.convertProductExchangeRate && client != null) { if (company.convertProductExchangeRate && client != null) {
store.dispatch(UpdateCredit(credit.rebuild((b) => b final exchangeRate = getExchangeRate(context,
..exchangeRate = state fromCurrencyId: company.currencyId,
.staticState.currencyMap[client.currencyId].exchangeRate))); toCurrencyId: client.currencyId);
store.dispatch(UpdateCredit(
credit.rebuild((b) => b..exchangeRate = exchangeRate)));
} }
store.dispatch(UpdateCreditClient(client: client)); store.dispatch(UpdateCreditClient(client: client));
}, },

View File

@ -198,7 +198,7 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
clientId: invoice.clientId, clientId: invoice.clientId,
clientState: viewModel.state.clientState, clientState: viewModel.state.clientState,
onSelected: (client) { onSelected: (client) {
viewModel.onClientChanged(invoice, client); viewModel.onClientChanged(context, invoice, client);
/* /*
final currencyId = (client as ClientEntity)?.currencyId; final currencyId = (client as ClientEntity)?.currencyId;
if (company.convertProductExchangeRate && if (company.convertProductExchangeRate &&

View File

@ -129,7 +129,7 @@ class InvoiceEditDetailsState extends State<InvoiceEditDetails> {
clientId: invoice.clientId, clientId: invoice.clientId,
clientState: viewModel.state.clientState, clientState: viewModel.state.clientState,
onSelected: (client) => onSelected: (client) =>
viewModel.onClientChanged(invoice, client), viewModel.onClientChanged(context,invoice, client),
onAddPressed: (completer) => onAddPressed: (completer) =>
viewModel.onAddClientPressed(context, completer), viewModel.onAddClientPressed(context, completer),
) )

View File

@ -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/app/screen_imports.dart';
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_desktop.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.dart';
import 'package:invoiceninja_flutter/utils/money.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart'; import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
@ -59,7 +60,7 @@ class EntityEditDetailsVM {
final CompanyEntity company; final CompanyEntity company;
final InvoiceEntity invoice; final InvoiceEntity invoice;
final Function(InvoiceEntity) onChanged; final Function(InvoiceEntity) onChanged;
final Function(InvoiceEntity, ClientEntity) onClientChanged; final Function(BuildContext context, InvoiceEntity, ClientEntity) onClientChanged;
final BuiltMap<String, ClientEntity> clientMap; final BuiltMap<String, ClientEntity> clientMap;
final BuiltList<String> clientList; final BuiltList<String> clientList;
final Function(BuildContext context, Completer<SelectableEntity> completer) final Function(BuildContext context, Completer<SelectableEntity> completer)
@ -72,7 +73,7 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM {
CompanyEntity company, CompanyEntity company,
InvoiceEntity invoice, InvoiceEntity invoice,
Function(InvoiceEntity) onChanged, Function(InvoiceEntity) onChanged,
Function(InvoiceEntity, ClientEntity) onClientChanged, Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltList<String> clientList, BuiltList<String> clientList,
Function(BuildContext context, Completer<SelectableEntity> completer) Function(BuildContext context, Completer<SelectableEntity> completer)
@ -101,12 +102,13 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM {
store.dispatch(UpdateInvoice(invoice)), store.dispatch(UpdateInvoice(invoice)),
clientMap: state.clientState.map, clientMap: state.clientState.map,
clientList: state.clientState.list, clientList: state.clientState.list,
onClientChanged: (invoice, client) { onClientChanged: (context, invoice, client) {
print('## onClientChanged: ${client?.id}');
if (company.convertProductExchangeRate && client != null) { if (company.convertProductExchangeRate && client != null) {
final exchangeRate = getExchangeRate(context,
fromCurrencyId: company.currencyId,
toCurrencyId: client.currencyId);
store.dispatch(UpdateInvoice(invoice.rebuild((b) => b store.dispatch(UpdateInvoice(invoice.rebuild((b) => b
..exchangeRate = state ..exchangeRate = exchangeRate)));
.staticState.currencyMap[client.currencyId].exchangeRate)));
} }
store.dispatch(UpdateInvoiceClient(client: client)); store.dispatch(UpdateInvoiceClient(client: client));
}, },

View File

@ -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_desktop.dart';
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.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_details_vm.dart';
import 'package:invoiceninja_flutter/utils/money.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart'; import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
@ -52,7 +53,7 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM {
CompanyEntity company, CompanyEntity company,
InvoiceEntity invoice, InvoiceEntity invoice,
Function(InvoiceEntity) onChanged, Function(InvoiceEntity) onChanged,
Function(InvoiceEntity, ClientEntity) onClientChanged, Function(BuildContext, InvoiceEntity, ClientEntity) onClientChanged,
BuiltMap<String, ClientEntity> clientMap, BuiltMap<String, ClientEntity> clientMap,
BuiltList<String> clientList, BuiltList<String> clientList,
Function(BuildContext context, Completer<SelectableEntity> completer) Function(BuildContext context, Completer<SelectableEntity> completer)
@ -80,11 +81,13 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM {
onChanged: (InvoiceEntity quote) => store.dispatch(UpdateQuote(quote)), onChanged: (InvoiceEntity quote) => store.dispatch(UpdateQuote(quote)),
clientMap: state.clientState.map, clientMap: state.clientState.map,
clientList: state.clientState.list, clientList: state.clientState.list,
onClientChanged: (quote, client) { onClientChanged: (context, quote, client) {
if (company.convertProductExchangeRate && client != null) { if (company.convertProductExchangeRate && client != null) {
final exchangeRate = getExchangeRate(context,
fromCurrencyId: company.currencyId,
toCurrencyId: client.currencyId);
store.dispatch(UpdateQuote(quote.rebuild((b) => b store.dispatch(UpdateQuote(quote.rebuild((b) => b
..exchangeRate = state ..exchangeRate = exchangeRate)));
.staticState.currencyMap[client.currencyId].exchangeRate)));
} }
store.dispatch(UpdateQuoteClient(client: client)); store.dispatch(UpdateQuoteClient(client: client));
}, },