Tax model
This commit is contained in:
parent
a51787bf14
commit
f0b6174e91
|
|
@ -649,6 +649,10 @@ const String kDefaultLightSelectedColorMenu = '#f2faff';
|
|||
const String kDefaultLightSelectedColor = '#e5f5ff';
|
||||
const String kDefaultLightBorderColor = '#dfdfdf';
|
||||
|
||||
const String kTaxRegionUnitedStates = 'US';
|
||||
const String kTaxRegionEurope = 'EU';
|
||||
const String kTaxRegionAustralia = 'AU';
|
||||
|
||||
const String kReportGroupDay = 'day';
|
||||
const String kReportGroupWeek = 'week';
|
||||
const String kReportGroupMonth = 'month';
|
||||
|
|
|
|||
|
|
@ -20,6 +20,19 @@ List<String> countryList(BuiltMap<String, CountryEntity> countryMap) {
|
|||
return list;
|
||||
}
|
||||
|
||||
var memoizedCountryIso2Map = memo1(
|
||||
(BuiltMap<String, CountryEntity> countryMap) => countryIso2Map(countryMap));
|
||||
|
||||
Map<String, CountryEntity> countryIso2Map(
|
||||
BuiltMap<String, CountryEntity> countryMap) {
|
||||
final map = <String, CountryEntity>{};
|
||||
countryMap.keys.forEach((countryId) {
|
||||
final country = countryMap[countryId];
|
||||
map[country.iso2] = country;
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
var memoizedGroupList =
|
||||
memo1((BuiltMap<String, GroupEntity> groupMap) => groupList(groupMap));
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Flutter imports:
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
import 'package:invoiceninja_flutter/redux/static/static_selectors.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
|
|
@ -32,6 +33,11 @@ class _TaxSettingsState extends State<TaxSettings> {
|
|||
static final GlobalKey<FormState> _formKey =
|
||||
GlobalKey<FormState>(debugLabel: '_taxSettings');
|
||||
FocusScopeNode _focusNode;
|
||||
final Map<String, bool> _showDetails = {
|
||||
kTaxRegionUnitedStates: false,
|
||||
kTaxRegionEurope: false,
|
||||
kTaxRegionAustralia: false,
|
||||
};
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
|
@ -54,12 +60,13 @@ class _TaxSettingsState extends State<TaxSettings> {
|
|||
final state = viewModel.state;
|
||||
final taxData = company.taxData;
|
||||
|
||||
final countryMap = memoizedCountryIso2Map(state.staticState.countryMap);
|
||||
List<String> subregions = [];
|
||||
String region = 'EU';
|
||||
String region = kTaxRegionEurope;
|
||||
if (company.settings.countryId == kCountryUnitedStates) {
|
||||
region = 'US';
|
||||
region = kTaxRegionUnitedStates;
|
||||
} else if (company.settings.countryId == kCountryAustralia) {
|
||||
region = 'AU';
|
||||
region = kTaxRegionAustralia;
|
||||
}
|
||||
subregions = taxData.regions[region].subregions.keys.toList();
|
||||
|
||||
|
|
@ -179,18 +186,37 @@ class _TaxSettingsState extends State<TaxSettings> {
|
|||
.map((code) =>
|
||||
DropdownMenuItem(child: Text(code), value: code))
|
||||
.toList()),
|
||||
...taxData.regions.keys
|
||||
.map((region) => Column(
|
||||
SizedBox(height: 12),
|
||||
...taxData.regions.keys.map((region) {
|
||||
return Column(
|
||||
children: [
|
||||
Text(region),
|
||||
/*
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child:
|
||||
Text(countryMap[region]?.name ?? region)),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
_showDetails[region] =
|
||||
!_showDetails[region];
|
||||
});
|
||||
},
|
||||
child: Text(_showDetails[region]
|
||||
? localization.hideDetails
|
||||
: localization.showDetails))
|
||||
],
|
||||
),
|
||||
),
|
||||
if (_showDetails[region])
|
||||
...taxData.regions[region].subregions.keys
|
||||
.map((subregion) => Text(subregion))
|
||||
.toList(),
|
||||
*/
|
||||
],
|
||||
))
|
||||
.toList(),
|
||||
);
|
||||
}).toList(),
|
||||
]
|
||||
],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
|||
static final Map<String, Map<String, String>> _localizedValues = {
|
||||
'en': {
|
||||
// STARTER: lang key - do not remove comment
|
||||
'hide_details': 'Hide Details',
|
||||
'show_details': 'Show Details',
|
||||
'version': 'version',
|
||||
'seller_subregion': 'Seller Subregion',
|
||||
'calculate_taxes': 'Calculate Taxes',
|
||||
|
|
@ -98328,6 +98330,14 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
|||
_localizedValues[localeCode]['version'] ??
|
||||
_localizedValues['en']['version'];
|
||||
|
||||
String get hideDetails =>
|
||||
_localizedValues[localeCode]['hide_details'] ??
|
||||
_localizedValues['en']['hide_details'];
|
||||
|
||||
String get showDetails =>
|
||||
_localizedValues[localeCode]['show_details'] ??
|
||||
_localizedValues['en']['show_details'];
|
||||
|
||||
// STARTER: lang field - do not remove comment
|
||||
|
||||
String lookup(String key) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue