From b86f90b8698810a7e83e391d0030b82c99bb0a96 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 21 Mar 2023 11:47:36 +0200 Subject: [PATCH] Add invoice/quote product columns --- lib/ui/settings/invoice_design.dart | 60 ++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/lib/ui/settings/invoice_design.dart b/lib/ui/settings/invoice_design.dart index f1dc1da3d..b77d10811 100644 --- a/lib/ui/settings/invoice_design.dart +++ b/lib/ui/settings/invoice_design.dart @@ -78,7 +78,8 @@ class _InvoiceDesignState extends State @override void initState() { super.initState(); - final state = widget.viewModel.state; + final viewModel = widget.viewModel; + final state = viewModel.state; final settingsUIState = state.settingsUIState; _focusNode = FocusScopeNode(); @@ -88,6 +89,10 @@ class _InvoiceDesignState extends State tabs++; } + if (viewModel.settings.syncInvoiceQuoteColumns == false) { + tabs++; + } + [ EntityType.invoice, EntityType.quote, @@ -184,7 +189,11 @@ class _InvoiceDesignState extends State localization.vendorDetails, if (company.isModuleEnabled(EntityType.purchaseOrder)) localization.purchaseOrderDetails, - localization.productColumns, + if (settings.syncInvoiceQuoteColumns == false) ...[ + localization.invoiceProductColumns, + localization.quoteProductColumns, + ] else + localization.productColumns, if (company.isModuleEnabled(EntityType.task)) localization.taskColumns, localization.totalFields, ]; @@ -1076,6 +1085,53 @@ class _InvoiceDesignState extends State ) ], ), + if (settings.syncInvoiceQuoteColumns == 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(kPdfFieldsProductColumns), + onSelected: (values) { + viewModel.onSettingsChanged( + settings.setFieldsForSection( + kPdfFieldsProductColumns, values)); + }, + addTitle: localization.addField, + liveChanges: true, + prefix: 'product_quote', + ), + ), + ), if (company.isModuleEnabled(EntityType.task)) FormCard( isLast: true,