diff options
Diffstat (limited to 'merchant-terminal/src/main/java/net/taler/merchantpos/order')
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt | 1 | ||||
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/order/LiveOrder.kt | 4 | ||||
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/order/Order.kt (renamed from merchant-terminal/src/main/java/net/taler/merchantpos/order/Definitions.kt) | 101 | ||||
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt | 9 | ||||
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderManager.kt | 4 | ||||
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt | 5 | ||||
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt | 1 |
7 files changed, 17 insertions, 108 deletions
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt index 34b97c0..e935d4f 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt @@ -31,6 +31,7 @@ import androidx.recyclerview.widget.RecyclerView.Adapter import kotlinx.android.synthetic.main.fragment_categories.* import net.taler.merchantpos.MainViewModel import net.taler.merchantpos.R +import net.taler.merchantpos.config.Category import net.taler.merchantpos.order.CategoryAdapter.CategoryViewHolder interface CategorySelectionListener { diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/LiveOrder.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/LiveOrder.kt index ff6061a..847326b 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/LiveOrder.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/LiveOrder.kt @@ -20,7 +20,9 @@ import androidx.annotation.UiThread import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Transformations -import net.taler.merchantpos.CombinedLiveData +import net.taler.common.CombinedLiveData +import net.taler.merchantpos.config.Category +import net.taler.merchantpos.config.ConfigProduct import net.taler.merchantpos.order.RestartState.DISABLED import net.taler.merchantpos.order.RestartState.ENABLED import net.taler.merchantpos.order.RestartState.UNDO diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/Definitions.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/Order.kt index 63eda17..5954e63 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/Definitions.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/Order.kt @@ -16,105 +16,8 @@ package net.taler.merchantpos.order -import androidx.core.os.LocaleListCompat -import com.fasterxml.jackson.annotation.JsonIgnore -import com.fasterxml.jackson.annotation.JsonInclude -import com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL -import com.fasterxml.jackson.annotation.JsonProperty -import net.taler.merchantpos.Amount -import java.util.* -import java.util.Locale.LanguageRange -import kotlin.collections.ArrayList -import kotlin.collections.HashMap - -data class Category( - val id: Int, - val name: String, - @JsonProperty("name_i18n") - val nameI18n: Map<String, String>? -) { - var selected: Boolean = false - val localizedName: String get() = getLocalizedString(nameI18n, name) -} - -@JsonInclude(NON_NULL) -abstract class Product { - @get:JsonProperty("product_id") - abstract val productId: String? - abstract val description: String - @get:JsonProperty("description_i18n") - abstract val descriptionI18n: Map<String, String>? - abstract val price: String - @get:JsonProperty("delivery_location") - abstract val location: String? - abstract val image: String? - @get:JsonIgnore - val localizedDescription: String - get() = getLocalizedString(descriptionI18n, description) -} - -data class ConfigProduct( - @JsonIgnore - val id: String = UUID.randomUUID().toString(), - override val productId: String?, - override val description: String, - override val descriptionI18n: Map<String, String>?, - override val price: String, - override val location: String?, - override val image: String?, - val categories: List<Int>, - @JsonIgnore - val quantity: Int = 0 -) : Product() { - val priceAsDouble by lazy { Amount.fromString(price).amount.toDouble() } - - override fun equals(other: Any?) = other is ConfigProduct && id == other.id - override fun hashCode() = id.hashCode() -} - -data class ContractProduct( - override val productId: String?, - override val description: String, - override val descriptionI18n: Map<String, String>?, - override val price: String, - override val location: String?, - override val image: String?, - val quantity: Int -) : Product() { - constructor(product: ConfigProduct) : this( - product.productId, - product.description, - product.descriptionI18n, - product.price, - product.location, - product.image, - product.quantity - ) -} - -private fun getLocalizedString(map: Map<String, String>?, default: String): String { - // just return the default, if it is the only element - if (map == null) return default - // create a priority list of language ranges from system locales - val locales = LocaleListCompat.getDefault() - val priorityList = ArrayList<LanguageRange>(locales.size()) - for (i in 0 until locales.size()) { - priorityList.add(LanguageRange(locales[i].toLanguageTag())) - } - // create a list of locales available in the given map - val availableLocales = map.keys.mapNotNull { - if (it == "_") return@mapNotNull null - val list = it.split("_") - when (list.size) { - 1 -> Locale(list[0]) - 2 -> Locale(list[0], list[1]) - 3 -> Locale(list[0], list[1], list[2]) - else -> null - } - } - val match = Locale.lookup(priorityList, availableLocales) - return match?.toString()?.let { map[it] } ?: default -} +import net.taler.merchantpos.config.Category +import net.taler.merchantpos.config.ConfigProduct data class Order(val id: Int, val availableCategories: Map<Int, Category>) { val products = ArrayList<ConfigProduct>() diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt index 49f7cf2..ad6cd87 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt @@ -23,12 +23,11 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer -import androidx.navigation.fragment.findNavController import androidx.transition.TransitionManager.beginDelayedTransition import kotlinx.android.synthetic.main.fragment_order.* +import net.taler.common.navigate import net.taler.merchantpos.MainViewModel import net.taler.merchantpos.R -import net.taler.merchantpos.navigate import net.taler.merchantpos.order.OrderFragmentDirections.Companion.actionGlobalConfigFetcher import net.taler.merchantpos.order.OrderFragmentDirections.Companion.actionOrderToMerchantSettings import net.taler.merchantpos.order.OrderFragmentDirections.Companion.actionOrderToProcessPayment @@ -65,9 +64,9 @@ class OrderFragment : Fragment() { override fun onStart() { super.onStart() if (!viewModel.configManager.config.isValid()) { - actionOrderToMerchantSettings().navigate(findNavController()) + navigate(actionOrderToMerchantSettings()) } else if (viewModel.configManager.merchantConfig?.currency == null) { - actionGlobalConfigFetcher().navigate(findNavController()) + navigate(actionGlobalConfigFetcher()) } } @@ -108,7 +107,7 @@ class OrderFragment : Fragment() { completeButton.setOnClickListener { val order = liveOrder.order.value ?: return@setOnClickListener paymentManager.createPayment(order) - actionOrderToProcessPayment().navigate(findNavController()) + navigate(actionOrderToProcessPayment()) } } diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderManager.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderManager.kt index 48ddc57..a30c264 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderManager.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderManager.kt @@ -24,8 +24,10 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Transformations.map import com.fasterxml.jackson.core.type.TypeReference import com.fasterxml.jackson.databind.ObjectMapper -import net.taler.merchantpos.Amount.Companion.fromString +import net.taler.common.Amount.Companion.fromString import net.taler.merchantpos.R +import net.taler.merchantpos.config.Category +import net.taler.merchantpos.config.ConfigProduct import net.taler.merchantpos.config.ConfigurationReceiver import net.taler.merchantpos.order.RestartState.ENABLED import org.json.JSONObject diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt index 1b70016..a90334b 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt @@ -37,10 +37,11 @@ import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.Adapter import androidx.recyclerview.widget.RecyclerView.ViewHolder import kotlinx.android.synthetic.main.fragment_order_state.* +import net.taler.common.fadeIn +import net.taler.common.fadeOut import net.taler.merchantpos.MainViewModel import net.taler.merchantpos.R -import net.taler.merchantpos.fadeIn -import net.taler.merchantpos.fadeOut +import net.taler.merchantpos.config.ConfigProduct import net.taler.merchantpos.order.OrderAdapter.OrderLineLookup import net.taler.merchantpos.order.OrderAdapter.OrderViewHolder diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt index 4704ad0..d4da73f 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt @@ -31,6 +31,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder import kotlinx.android.synthetic.main.fragment_products.* import net.taler.merchantpos.MainViewModel import net.taler.merchantpos.R +import net.taler.merchantpos.config.ConfigProduct import net.taler.merchantpos.order.ProductAdapter.ProductViewHolder interface ProductSelectionListener { |