Fix share product/quote columns option

This commit is contained in:
Hillel Coren 2023-03-23 09:09:49 +02:00
parent 15e9287c5f
commit b347791bbe
4 changed files with 54 additions and 45 deletions

View File

@ -57,6 +57,8 @@ class UpdateSettingsTab implements PersistUI {
class UpdatedSetting implements PersistUI {}
class UpdatedSettingUI implements PersistUI {}
class UpdateSettingsTemplate implements PersistUI {
UpdateSettingsTemplate({@required this.selectedTemplate});

View File

@ -119,7 +119,7 @@ Reducer<SettingsUIState> settingsUIReducer = combineReducers([
TypedReducer<SettingsUIState, UpdateSettingsTemplate>((state, action) {
return state.rebuild((b) => b..selectedTemplate = action.selectedTemplate);
}),
TypedReducer<SettingsUIState, UpdatedSetting>((state, action) {
TypedReducer<SettingsUIState, UpdatedSettingUI>((state, action) {
return state
.rebuild((b) => b..updatedAt = DateTime.now().millisecondsSinceEpoch);
}),

View File

@ -1086,50 +1086,49 @@ class _InvoiceDesignState extends State<InvoiceDesign>
],
),
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))

View File

@ -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) {