summaryrefslogtreecommitdiff
path: root/merchant-terminal/src/main/java/net/taler/merchantpos/order
diff options
context:
space:
mode:
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.kt1
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/LiveOrder.kt4
-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.kt9
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderManager.kt4
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt5
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt1
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 {