@@ -13,6 +13,7 @@ final class FilterOrderListViewModel: FilterListViewModel {
1313 let dateRange : OrderDateRangeFilter ?
1414 let product : FilterOrdersByProduct ?
1515 let customer : CustomerFilter ?
16+ let salesChannel : SalesChannelFilter ?
1617
1718 let numberOfActiveFilters : Int
1819
@@ -21,18 +22,21 @@ final class FilterOrderListViewModel: FilterListViewModel {
2122 dateRange = nil
2223 product = nil
2324 customer = nil
25+ salesChannel = nil
2426 numberOfActiveFilters = 0
2527 }
2628
2729 init ( orderStatus: [ OrderStatusEnum ] ? ,
2830 dateRange: OrderDateRangeFilter ? ,
2931 product: FilterOrdersByProduct ? ,
3032 customer: CustomerFilter ? ,
33+ salesChannel: SalesChannelFilter ? ,
3134 numberOfActiveFilters: Int ) {
3235 self . orderStatus = orderStatus
3336 self . dateRange = dateRange
3437 self . product = product
3538 self . customer = customer
39+ self . salesChannel = salesChannel
3640 self . numberOfActiveFilters = numberOfActiveFilters
3741 }
3842
@@ -50,6 +54,11 @@ final class FilterOrderListViewModel: FilterListViewModel {
5054 if let customer = customer {
5155 readable. append ( customer. description)
5256 }
57+
58+ if let salesChannel = salesChannel {
59+ readable. append ( salesChannel. description)
60+ }
61+
5362 return readable. joined ( separator: " , " )
5463 }
5564 }
@@ -66,6 +75,7 @@ final class FilterOrderListViewModel: FilterListViewModel {
6675 private let dateRangeFilterViewModel : FilterTypeViewModel
6776 private let productFilterViewModel : FilterTypeViewModel
6877 private let customerFilterViewModel : FilterTypeViewModel
78+ private let salesChannelFilterViewModel : FilterTypeViewModel
6979
7080 private let siteID : Int64
7181 private let stores : StoresManager
@@ -87,25 +97,37 @@ final class FilterOrderListViewModel: FilterListViewModel {
8797 dateRangeFilterViewModel = OrderListFilter . dateRange. createViewModel ( filters: filters, allowedStatuses: allowedStatuses)
8898 productFilterViewModel = OrderListFilter . product ( siteID: siteID) . createViewModel ( filters: filters, allowedStatuses: allowedStatuses)
8999 customerFilterViewModel = OrderListFilter . customer ( siteID: siteID) . createViewModel ( filters: filters, allowedStatuses: allowedStatuses)
100+ salesChannelFilterViewModel = OrderListFilter . salesChannel. createViewModel ( filters: filters, allowedStatuses: allowedStatuses)
90101
91102 self . siteID = siteID
92103 self . stores = stores
93104 self . analytics = analytics
94105
95106 shouldShowHistory = featureFlagService. isFeatureFlagEnabled ( . filterHistoryOnOrderAndProductLists)
96- filterTypeViewModels = [ orderStatusFilterViewModel, dateRangeFilterViewModel, customerFilterViewModel, productFilterViewModel]
107+ var allFilterViewModels = [ orderStatusFilterViewModel,
108+ dateRangeFilterViewModel,
109+ customerFilterViewModel,
110+ productFilterViewModel]
111+
112+ if featureFlagService. isFeatureFlagEnabled ( . pointOfSaleOrdersi2) {
113+ allFilterViewModels. append ( salesChannelFilterViewModel)
114+ }
115+
116+ filterTypeViewModels = allFilterViewModels
97117 }
98118
99119 var criteria : Filters {
100120 let orderStatus = orderStatusFilterViewModel. selectedValue as? [ OrderStatusEnum ] ?? nil
101121 let dateRange = dateRangeFilterViewModel. selectedValue as? OrderDateRangeFilter ?? nil
102122 let product = productFilterViewModel. selectedValue as? FilterOrdersByProduct ?? nil
103123 let customer = customerFilterViewModel. selectedValue as? CustomerFilter ?? nil
124+ let salesChannel = salesChannelFilterViewModel. selectedValue as? SalesChannelFilter ?? nil
104125 let numberOfActiveFilters = filterTypeViewModels. numberOfActiveFilters
105126 return Filters ( orderStatus: orderStatus,
106127 dateRange: dateRange,
107128 product: product,
108129 customer: customer,
130+ salesChannel: salesChannel,
109131 numberOfActiveFilters: numberOfActiveFilters)
110132 }
111133
@@ -120,6 +142,7 @@ final class FilterOrderListViewModel: FilterListViewModel {
120142 dateRange: item. dateRangeFilter,
121143 product: item. productFilter,
122144 customer: item. customerFilter,
145+ salesChannel: nil , // TODO: Filter persistence WOOMOB-712
123146 numberOfActiveFilters: item. numberOfActiveFilters ( ) )
124147 }
125148 continuation. resume ( returning: filters)
@@ -198,6 +221,7 @@ extension FilterOrderListViewModel {
198221 case dateRange
199222 case product( siteID: Int64 )
200223 case customer( siteID: Int64 )
224+ case salesChannel
201225 }
202226}
203227
@@ -212,6 +236,8 @@ private extension FilterOrderListViewModel.OrderListFilter {
212236 return Localization . rowTitleProduct
213237 case . customer:
214238 return Localization . rowCustomer
239+ case . salesChannel:
240+ return Localization . rowSalesChannel
215241 }
216242 }
217243}
@@ -235,6 +261,10 @@ extension FilterOrderListViewModel.OrderListFilter {
235261 return FilterTypeViewModel ( title: title,
236262 listSelectorConfig: . customer( siteID: siteID) ,
237263 selectedValue: filters. customer)
264+ case . salesChannel:
265+ return FilterTypeViewModel ( title: title,
266+ listSelectorConfig: . salesChannel,
267+ selectedValue: filters. salesChannel)
238268 }
239269 }
240270}
@@ -281,20 +311,39 @@ extension FilterOrdersByProduct: FilterType {
281311// MARK: - Constants
282312private extension FilterOrderListViewModel {
283313 enum Localization {
284- static let filterActionTitle = NSLocalizedString ( " Show Orders " , comment: " Button title for applying filters to a list of orders. " )
314+ static let filterActionTitle = NSLocalizedString (
315+ " filterOrderListViewModel.OrderListFilter.filterActionTitle " ,
316+ value: " Show Orders " ,
317+ comment: " Button title for applying filters to a list of orders. " )
285318 }
286319}
287320
288321private extension FilterOrderListViewModel . OrderListFilter {
289322 enum Localization {
290- static let rowTitleOrderStatus = NSLocalizedString ( " Order Status " , comment: " Row title for filtering orders by order status. " )
291- static let rowTitleDateRange = NSLocalizedString ( " Date Range " , comment: " Row title for filtering orders by date range. " )
292- static let rowTitleProduct = NSLocalizedString ( " filterOrderListViewModel.OrderListFilter.rowTitleProduct " ,
293- value: " Product " ,
294- comment: " Row title for filtering orders by Product. " )
295- static let rowCustomer = NSLocalizedString ( " filterOrderListViewModel.OrderListFilter.rowCustomer " ,
296- value: " Customer " ,
297- comment: " Row title for filtering orders by customer. " )
323+ static let rowTitleOrderStatus = NSLocalizedString (
324+ " filterOrderListViewModel.OrderListFilter.rowTitleOrderStatus " ,
325+ value: " Order Status " ,
326+ comment: " Row title for filtering orders by order status. " )
327+
328+ static let rowTitleDateRange = NSLocalizedString (
329+ " filterOrderListViewModel.OrderListFilter.rowTitleDateRange " ,
330+ value: " Date Range " ,
331+ comment: " Row title for filtering orders by date range. " )
332+
333+ static let rowTitleProduct = NSLocalizedString (
334+ " filterOrderListViewModel.OrderListFilter.rowTitleProduct " ,
335+ value: " Product " ,
336+ comment: " Row title for filtering orders by Product. " )
337+
338+ static let rowCustomer = NSLocalizedString (
339+ " filterOrderListViewModel.OrderListFilter.rowCustomer " ,
340+ value: " Customer " ,
341+ comment: " Row title for filtering orders by customer. " )
342+
343+ static let rowSalesChannel = NSLocalizedString (
344+ " filterOrderListViewModel.OrderListFilter.rowSalesChannel " ,
345+ value: " Sales Channel " ,
346+ comment: " Row title for filtering orders by sales channel. " )
298347 }
299348}
300349
@@ -322,3 +371,20 @@ extension CustomerFilter: FilterType {
322371 /// Whether the filter is set to a non-empty value.
323372 var isActive : Bool { true }
324373}
374+
375+ extension FilterOrderListViewModel {
376+ enum SalesChannelFilter : FilterType {
377+ case pointOfSale
378+
379+ var description : String {
380+ switch self {
381+ case . pointOfSale:
382+ return " POS "
383+ }
384+ }
385+
386+ var isActive : Bool {
387+ return true
388+ }
389+ }
390+ }
0 commit comments