From f83b62d5e8e113a6425bd3ee41b10ad7d94a5369 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 7 Nov 2019 12:54:10 +0200 Subject: [PATCH] Settings --- lib/ui/app/invoice/tax_rate_dropdown.dart | 51 +++++++++---------- .../edit/company_gateway_edit.dart | 2 - .../expense/edit/expense_edit_settings.dart | 2 - lib/ui/invoice/edit/invoice_edit_details.dart | 2 - lib/ui/invoice/edit/invoice_edit_items.dart | 2 - lib/ui/product/edit/product_edit.dart | 2 - lib/ui/settings/tax_settings.dart | 7 +-- 7 files changed, 26 insertions(+), 42 deletions(-) diff --git a/lib/ui/app/invoice/tax_rate_dropdown.dart b/lib/ui/app/invoice/tax_rate_dropdown.dart index a13454814..b17e16bf0 100644 --- a/lib/ui/app/invoice/tax_rate_dropdown.dart +++ b/lib/ui/app/invoice/tax_rate_dropdown.dart @@ -1,19 +1,18 @@ -import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; +import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; class TaxRateDropdown extends StatefulWidget { const TaxRateDropdown({ - @required this.taxRates, @required this.labelText, @required this.onSelected, this.initialTaxName = '', this.initialTaxRate = 0.0, }); - final BuiltList taxRates; final String labelText; final Function(TaxRateEntity) onSelected; final String initialTaxName; @@ -29,18 +28,17 @@ class _TaxRateDropdownState extends State { @override void didChangeDependencies() { - final taxRates = widget.taxRates; + final taxState = StoreProvider.of(context).state.taxRateState; + final taxRates = taxState.list.map((id) => taxState.map[id]).toList(); _selectedTaxRate = taxRates.firstWhere( - (taxRate) => - taxRate.name == widget.initialTaxName && + (taxRate) => + taxRate.name == widget.initialTaxName && taxRate.rate == widget.initialTaxRate, - orElse: () => - TaxRateEntity( - name: widget.initialTaxName, rate: widget.initialTaxRate)); + orElse: () => TaxRateEntity( + name: widget.initialTaxName, rate: widget.initialTaxRate)); - if (_selectedTaxRate.rate != 0) - { + if (_selectedTaxRate.rate != 0) { _textController.text = _formatTaxRate(_selectedTaxRate); } @@ -54,13 +52,13 @@ class _TaxRateDropdownState extends State { } String _formatTaxRate(TaxRateEntity taxRate) { - return '${formatNumber(taxRate.rate, context, - formatNumberType: FormatNumberType.percent)} ${taxRate.name}'; + return '${formatNumber(taxRate.rate, context, formatNumberType: FormatNumberType.percent)} ${taxRate.name}'; } @override Widget build(BuildContext context) { - final taxRates = widget.taxRates; + final taxState = StoreProvider.of(context).state.taxRateState; + final taxRates = taxState.list.map((id) => taxState.map[id]).toList(); if (taxRates.isEmpty) { return Container(); @@ -68,20 +66,19 @@ class _TaxRateDropdownState extends State { final options = taxRates .where((taxRate) => taxRate.archivedAt == null) - .map((taxRate) => - PopupMenuItem( - value: taxRate, - child: Row( - children: [ - SizedBox( - width: 70.0, - child: Text(formatNumber(taxRate.rate, context, - formatNumberType: FormatNumberType.percent)), + .map((taxRate) => PopupMenuItem( + value: taxRate, + child: Row( + children: [ + SizedBox( + width: 70.0, + child: Text(formatNumber(taxRate.rate, context, + formatNumberType: FormatNumberType.percent)), + ), + Text(taxRate.name), + ], ), - Text(taxRate.name), - ], - ), - )) + )) .toList(); options.insert( diff --git a/lib/ui/company_gateway/edit/company_gateway_edit.dart b/lib/ui/company_gateway/edit/company_gateway_edit.dart index 0ac018df0..c4eaf4a57 100644 --- a/lib/ui/company_gateway/edit/company_gateway_edit.dart +++ b/lib/ui/company_gateway/edit/company_gateway_edit.dart @@ -644,7 +644,6 @@ class _FeesEditorState extends State { ), if (company.settings.enableFirstItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onChanged(companyGateway.rebuild((b) => b ..taxRate1 = taxRate.rate @@ -655,7 +654,6 @@ class _FeesEditorState extends State { ), if (company.settings.enableSecondItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onChanged(companyGateway.rebuild((b) => b ..taxRate2 = taxRate.rate diff --git a/lib/ui/expense/edit/expense_edit_settings.dart b/lib/ui/expense/edit/expense_edit_settings.dart index bbeeca5b9..51b73c0e8 100644 --- a/lib/ui/expense/edit/expense_edit_settings.dart +++ b/lib/ui/expense/edit/expense_edit_settings.dart @@ -114,7 +114,6 @@ class ExpenseEditSettingsState extends State { children: [ if (company.settings.enableFirstItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onChanged(expense.rebuild((b) => b ..taxRate1 = taxRate.rate @@ -125,7 +124,6 @@ class ExpenseEditSettingsState extends State { ), if (company.settings.enableSecondItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onChanged(expense.rebuild((b) => b ..taxRate2 = taxRate.rate diff --git a/lib/ui/invoice/edit/invoice_edit_details.dart b/lib/ui/invoice/edit/invoice_edit_details.dart index 57e7c80c0..155b2f480 100644 --- a/lib/ui/invoice/edit/invoice_edit_details.dart +++ b/lib/ui/invoice/edit/invoice_edit_details.dart @@ -278,7 +278,6 @@ class InvoiceEditDetailsState extends State { : Container(), if (company.settings.enableFirstInvoiceTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onChanged(invoice.applyTax(taxRate)), labelText: localization.tax, @@ -287,7 +286,6 @@ class InvoiceEditDetailsState extends State { ), if (company.settings.enableSecondInvoiceTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel .onChanged(invoice.applyTax(taxRate, isSecond: true)), labelText: localization.tax, diff --git a/lib/ui/invoice/edit/invoice_edit_items.dart b/lib/ui/invoice/edit/invoice_edit_items.dart index af403332a..077b76025 100644 --- a/lib/ui/invoice/edit/invoice_edit_items.dart +++ b/lib/ui/invoice/edit/invoice_edit_items.dart @@ -257,7 +257,6 @@ class ItemEditDetailsState extends State { : Container(), if (company.settings.enableFirstItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) { _taxRate1 = taxRate; _onChanged(); @@ -268,7 +267,6 @@ class ItemEditDetailsState extends State { ), if (company.settings.enableSecondItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) { _taxRate2 = taxRate; _onChanged(); diff --git a/lib/ui/product/edit/product_edit.dart b/lib/ui/product/edit/product_edit.dart index d61c5fa6e..282635479 100644 --- a/lib/ui/product/edit/product_edit.dart +++ b/lib/ui/product/edit/product_edit.dart @@ -210,7 +210,6 @@ class _ProductEditState extends State { ), if (company.settings.enableFirstItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onChanged(product.rebuild((b) => b ..taxRate1 = taxRate.rate @@ -221,7 +220,6 @@ class _ProductEditState extends State { ), if (company.settings.enableSecondItemTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onChanged(product.rebuild((b) => b ..taxRate2 = taxRate.rate diff --git a/lib/ui/settings/tax_settings.dart b/lib/ui/settings/tax_settings.dart index f5d68ce2b..b7c00127b 100644 --- a/lib/ui/settings/tax_settings.dart +++ b/lib/ui/settings/tax_settings.dart @@ -30,7 +30,6 @@ class _TaxSettingsState extends State { Widget build(BuildContext context) { final localization = AppLocalization.of(context); final viewModel = widget.viewModel; - final company = viewModel.company; final settings = viewModel.settings; final state = viewModel.state; @@ -54,6 +53,7 @@ class _TaxSettingsState extends State { onChanged: (value) => viewModel.onSettingsChanged( settings.rebuild((b) => b..numberOfItemTaxRates = value)), ), + SizedBox(height: 15), BoolDropdownButton( iconData: FontAwesomeIcons.percent, label: localization.inclusiveTaxes, @@ -64,11 +64,10 @@ class _TaxSettingsState extends State { ], ), if (settings.enableFirstInvoiceTaxRate && - state.taskState.list.isNotEmpty) + state.taxRateState.list.isNotEmpty) FormCard( children: [ TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onSettingsChanged(settings.rebuild((b) => b ..defaultTaxName1 = taxRate.name @@ -79,7 +78,6 @@ class _TaxSettingsState extends State { ), if (settings.enableSecondInvoiceTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onSettingsChanged(settings.rebuild((b) => b ..defaultTaxName2 = taxRate.name @@ -90,7 +88,6 @@ class _TaxSettingsState extends State { ), if (settings.enableThirdInvoiceTaxRate) TaxRateDropdown( - taxRates: company.taxRates, onSelected: (taxRate) => viewModel.onSettingsChanged(settings.rebuild((b) => b ..defaultTaxName3 = taxRate.name