diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosProductsTypesFilterConfig.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosProductsTypesFilterConfig.kt index a709112e3a7..52002c92d6c 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosProductsTypesFilterConfig.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosProductsTypesFilterConfig.kt @@ -6,6 +6,7 @@ import org.wordpress.android.fluxc.store.WCProductStore.DownloadableOptions import org.wordpress.android.fluxc.store.WCProductStore.ProductFilterOption import javax.inject.Inject +// Note: For the Local Catalog feature, the filtering is done locally in WooPosProductsDao. class WooPosProductsTypesFilterConfig @Inject constructor() { val filters: Map = mapOf( diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosVariationsTypesFilterConfig.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosVariationsTypesFilterConfig.kt index 093ae3c7e1e..58cae23e6e3 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosVariationsTypesFilterConfig.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/common/data/WooPosVariationsTypesFilterConfig.kt @@ -4,6 +4,7 @@ import org.wordpress.android.fluxc.store.WCProductStore.DownloadableOptions import org.wordpress.android.fluxc.store.WCProductStore.VariationFilterOption import javax.inject.Inject +// Note: For the Local Catalog feature, the filtering is done locally in WooPosVariationsDao. class WooPosVariationsTypesFilterConfig @Inject constructor() { val filters: Map = mapOf( diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/items/variations/WooPosVariationsInDbDataSource.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/items/variations/WooPosVariationsInDbDataSource.kt index 9d65efd960c..a73ee909f91 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/items/variations/WooPosVariationsInDbDataSource.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/items/variations/WooPosVariationsInDbDataSource.kt @@ -36,7 +36,7 @@ class WooPosVariationsInDbDataSource @Inject constructor( forceRefresh: Boolean ): Flow = getVariationsFromDatabaseFlow(productId) .map { variations -> - FetchResult.Remote(Result.success(variations.applyFilter())) + FetchResult.Remote(Result.success(variations)) } .flowOn(Dispatchers.IO) @@ -44,7 +44,3 @@ class WooPosVariationsInDbDataSource @Inject constructor( Result.success(emptyList()) } } - -private fun List.applyFilter(): List { - return filter { !it.isDownloadable } -} diff --git a/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosProductsDao.kt b/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosProductsDao.kt index 981f416ea64..89c610b99a8 100644 --- a/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosProductsDao.kt +++ b/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosProductsDao.kt @@ -10,7 +10,21 @@ import org.wordpress.android.fluxc.persistence.entity.pos.WooPosProductEntity @Dao abstract class WooPosProductsDao { - @Query("SELECT * FROM PosProductEntity WHERE localSiteId = :localSiteId ORDER BY LOWER(name)") + companion object { + private const val PRODUCT_STATUS_PUBLISH = "publish" + private const val PRODUCT_TYPE_SIMPLE = "simple" + private const val PRODUCT_TYPE_VARIABLE = "variable" + private const val DOWNLOADABLE_FALSE = 0 + } + + @Query( + "SELECT * FROM PosProductEntity " + + "WHERE localSiteId = :localSiteId " + + "AND status = '$PRODUCT_STATUS_PUBLISH' " + + "AND (type = '$PRODUCT_TYPE_SIMPLE' OR type = '$PRODUCT_TYPE_VARIABLE') " + + "AND downloadable = '$DOWNLOADABLE_FALSE' " + + "ORDER BY LOWER(name)" + ) abstract fun observeAllProducts(localSiteId: LocalId): Flow> @Query("SELECT * FROM PosProductEntity WHERE localSiteId = :localSiteId AND remoteId = :remoteId") diff --git a/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosVariationsDao.kt b/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosVariationsDao.kt index 9db789d8aec..b766c38d645 100644 --- a/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosVariationsDao.kt +++ b/libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/persistence/dao/pos/WooPosVariationsDao.kt @@ -10,8 +10,19 @@ import org.wordpress.android.fluxc.persistence.entity.pos.WooPosVariationEntity @Dao abstract class WooPosVariationsDao { - - @Query("SELECT * FROM PosVariationEntity WHERE localSiteId = :localSiteId AND remoteProductId = :productId ORDER BY variationName ASC") + companion object { + private const val VARIATION_STATUS_PUBLISH = "publish" + private const val DOWNLOADABLE_FALSE = 0 + } + + @Query( + "SELECT * FROM PosVariationEntity " + + "WHERE localSiteId = :localSiteId " + + "AND remoteProductId = :productId " + + "AND status = '$VARIATION_STATUS_PUBLISH' " + + "AND downloadable = '$DOWNLOADABLE_FALSE' " + + "ORDER BY variationName ASC" + ) abstract fun observeVariationsForProduct( localSiteId: Int, productId: Long