diff --git a/lib/redux/settings/settings_actions.dart b/lib/redux/settings/settings_actions.dart index 362cd85d3..e4749abf7 100644 --- a/lib/redux/settings/settings_actions.dart +++ b/lib/redux/settings/settings_actions.dart @@ -57,6 +57,8 @@ class UpdateSettingsTab implements PersistUI { class UpdatedSetting implements PersistUI {} +class UpdatedSettingUI implements PersistUI {} + class UpdateSettingsTemplate implements PersistUI { UpdateSettingsTemplate({@required this.selectedTemplate}); diff --git a/lib/redux/settings/settings_reducer.dart b/lib/redux/settings/settings_reducer.dart index b55a26f43..f1cd51098 100644 --- a/lib/redux/settings/settings_reducer.dart +++ b/lib/redux/settings/settings_reducer.dart @@ -119,7 +119,7 @@ Reducer settingsUIReducer = combineReducers([ TypedReducer((state, action) { return state.rebuild((b) => b..selectedTemplate = action.selectedTemplate); }), - TypedReducer((state, action) { + TypedReducer((state, action) { return state .rebuild((b) => b..updatedAt = DateTime.now().millisecondsSinceEpoch); }), diff --git a/lib/ui/settings/invoice_design.dart b/lib/ui/settings/invoice_design.dart index d17f9733a..eb4259c36 100644 --- a/lib/ui/settings/invoice_design.dart +++ b/lib/ui/settings/invoice_design.dart @@ -1086,50 +1086,49 @@ class _InvoiceDesignState extends State ], ), if (settings.shareInvoiceQuoteColumns == false) - Expanded( - child: FormCard( - child: MultiSelectList( - options: [ - ProductItemFields.item, - ProductItemFields.description, - if (company.enableProductQuantity) - ProductItemFields.quantity, - ProductItemFields.unitCost, - if (company.hasItemTaxes) ...[ - ProductItemFields.tax, - ProductItemFields.taxAmount, - ], - if (company.enableProductDiscount) - ProductItemFields.discount, - ProductItemFields.lineTotal, - ProductItemFields.custom1, - ProductItemFields.custom2, - ProductItemFields.custom3, - ProductItemFields.custom4, - ProductItemFields.grossLineTotal, - ].map((field) => '\$product.$field').toList(), - defaultSelected: [ - ProductItemFields.item, - ProductItemFields.description, - ProductItemFields.unitCost, - if (company.enableProductQuantity) - ProductItemFields.quantity, - if (company.enableProductDiscount) - ProductItemFields.discount, - if (company.hasItemTaxes) ProductItemFields.tax, - ProductItemFields.lineTotal, - ].map((field) => '\$product.$field').toList(), - selected: settings - .getFieldsForSection(kPdfFieldsProductQuoteColumns), - onSelected: (values) { - viewModel.onSettingsChanged( - settings.setFieldsForSection( - kPdfFieldsProductQuoteColumns, values)); - }, - addTitle: localization.addField, - liveChanges: true, - prefix: 'product', - ), + FormCard( + isLast: true, + child: MultiSelectList( + options: [ + ProductItemFields.item, + ProductItemFields.description, + if (company.enableProductQuantity) + ProductItemFields.quantity, + ProductItemFields.unitCost, + if (company.hasItemTaxes) ...[ + ProductItemFields.tax, + ProductItemFields.taxAmount, + ], + if (company.enableProductDiscount) + ProductItemFields.discount, + ProductItemFields.lineTotal, + ProductItemFields.custom1, + ProductItemFields.custom2, + ProductItemFields.custom3, + ProductItemFields.custom4, + ProductItemFields.grossLineTotal, + ].map((field) => '\$product.$field').toList(), + defaultSelected: [ + ProductItemFields.item, + ProductItemFields.description, + ProductItemFields.unitCost, + if (company.enableProductQuantity) + ProductItemFields.quantity, + if (company.enableProductDiscount) + ProductItemFields.discount, + if (company.hasItemTaxes) ProductItemFields.tax, + ProductItemFields.lineTotal, + ].map((field) => '\$product.$field').toList(), + selected: settings + .getFieldsForSection(kPdfFieldsProductQuoteColumns), + onSelected: (values) { + viewModel.onSettingsChanged( + settings.setFieldsForSection( + kPdfFieldsProductQuoteColumns, values)); + }, + addTitle: localization.addField, + liveChanges: true, + prefix: 'product', ), ), if (company.isModuleEnabled(EntityType.task)) diff --git a/lib/ui/settings/invoice_design_vm.dart b/lib/ui/settings/invoice_design_vm.dart index ce8758022..d291cd77f 100644 --- a/lib/ui/settings/invoice_design_vm.dart +++ b/lib/ui/settings/invoice_design_vm.dart @@ -62,6 +62,14 @@ class InvoiceDesignVM { company: state.uiState.settingsUIState.company, onSettingsChanged: (settings) { store.dispatch(UpdateSettings(settings: settings)); + final newSetting = settings.shareInvoiceQuoteColumns ?? true; + final oldSetting = + state.uiState.settingsUIState.settings.shareInvoiceQuoteColumns ?? + true; + if (newSetting != oldSetting) { + // Need to force update the UI to show the new tabs + store.dispatch(UpdatedSettingUI()); + } }, onSavePressed: (context, entityTypes) { if (!state.isProPlan && !state.isTrial) {