Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import java.math.BigDecimal
class OrderDetailRefundsAdapter(
private val isCashPayment: Boolean,
private val paymentMethodTitle: String,
private val orderDetailRefundsLineBuilder: OrderDetailRefundsLineBuilder,
private val formatCurrency: (BigDecimal) -> String
) : RecyclerView.Adapter<OrderDetailRefundsAdapter.ViewHolder>() {
var refundList: List<Refund> = ArrayList()
Expand All @@ -38,6 +39,7 @@ class OrderDetailRefundsAdapter(
),
isCashPayment,
paymentMethodTitle,
orderDetailRefundsLineBuilder,
formatCurrency
)
}
Expand All @@ -52,12 +54,19 @@ class OrderDetailRefundsAdapter(
private val viewBinding: OrderDetailRefundPaymentItemBinding,
private val isCashPayment: Boolean,
private val paymentMethodTitle: String,
private val orderDetailRefundsLineBuilder: OrderDetailRefundsLineBuilder,
private val formatCurrency: (BigDecimal) -> String
) : RecyclerView.ViewHolder(
viewBinding.root
) {
fun bind(refund: Refund) {
val context = viewBinding.root.context

val refundLine = orderDetailRefundsLineBuilder.buildRefundLine(refund)
viewBinding.refundsListLblRefund.text = context.getString(
R.string.orderdetail_refunded_line_with_info,
refundLine
)
viewBinding.refundsListRefundAmount.text = context.getString(
R.string.orderdetail_refund_amount,
formatCurrency(refund.amount)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.woocommerce.android.ui.orders.details.adapter

import com.woocommerce.android.R
import com.woocommerce.android.model.Refund
import com.woocommerce.android.viewmodel.ResourceProvider
import javax.inject.Inject

class OrderDetailRefundsLineBuilder @Inject constructor(
private val resourceProvider: ResourceProvider,
) {
fun buildRefundLine(refund: Refund): String {
val tokens = mutableListOf<String>()
if (refund.items.isNotEmpty()) {
val quantity = refund.items.sumOf { it.quantity }
val productString = resourceProvider.getQuantityString(
quantity = quantity,
default = R.string.orderdetail_product_multiple,
one = R.string.orderdetail_product
)
tokens.add("$quantity $productString")
}
if (refund.shippingLines.isNotEmpty()) {
tokens.add(resourceProvider.getString(R.string.product_shipping))
}
if (refund.feeLines.isNotEmpty()) {
tokens.add(resourceProvider.getString(R.string.orderdetail_payment_fees))
}
return tokens.joinToString(separator = ", ") { it.lowercase() }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,19 @@ import com.woocommerce.android.extensions.show
import com.woocommerce.android.model.Order
import com.woocommerce.android.model.Refund
import com.woocommerce.android.ui.orders.details.adapter.OrderDetailRefundsAdapter
import com.woocommerce.android.ui.orders.details.adapter.OrderDetailRefundsLineBuilder
import dagger.hilt.android.AndroidEntryPoint
import java.math.BigDecimal
import javax.inject.Inject

@AndroidEntryPoint
class OrderDetailPaymentInfoView @JvmOverloads constructor(
ctx: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : MaterialCardView(ctx, attrs, defStyleAttr) {
@Inject lateinit var orderDetailRefundsLineBuilder: OrderDetailRefundsLineBuilder

private val binding = OrderDetailPaymentInfoBinding.inflate(LayoutInflater.from(ctx), this)

@Suppress("LongParameterList")
Expand Down Expand Up @@ -174,7 +180,12 @@ class OrderDetailPaymentInfoView @JvmOverloads constructor(
formatCurrencyForDisplay: (BigDecimal) -> String
) {
val adapter = binding.paymentInfoRefunds.adapter as? OrderDetailRefundsAdapter
?: OrderDetailRefundsAdapter(order.isCashPayment, order.paymentMethodTitle, formatCurrencyForDisplay)
?: OrderDetailRefundsAdapter(
order.isCashPayment,
order.paymentMethodTitle,
orderDetailRefundsLineBuilder,
formatCurrencyForDisplay,
)
binding.paymentInfoRefunds.adapter = adapter
adapter.refundList = refunds

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package com.woocommerce.android.viewmodel

import android.content.Context
import androidx.annotation.*
import androidx.annotation.ArrayRes
import androidx.annotation.ColorRes
import androidx.annotation.DimenRes
import androidx.annotation.RawRes
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat
import com.woocommerce.android.util.StringUtils
import java.io.InputStream
import javax.inject.Inject

Expand Down Expand Up @@ -32,4 +37,17 @@ class ResourceProvider @Inject constructor(private val context: Context) {
val resources = context.resources
return resources.openRawResource(rawId)
}

fun getQuantityString(
quantity: Int,
@StringRes default: Int,
@StringRes zero: Int? = null,
@StringRes one: Int? = null
) = StringUtils.getQuantityString(
context,
quantity,
default,
zero,
one,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="@dimen/major_75"
android:text="@string/orderdetail_refunded"
android:text="@string/orderdetail_refunded_line_with_info"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/refundsList_refundDivider" />

Expand Down
1 change: 1 addition & 0 deletions WooCommerce/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,7 @@
<string name="orderdetail_payment_summary_onhold">Awaiting payment via %s</string>
<string name="orderdetail_payment_paid_by_customer">Paid</string>
<string name="orderdetail_refunded">Refunded</string>
<string name="orderdetail_refunded_line_with_info">Refunded: %1$s</string>
<string name="orderdetail_refunded_products">Refunded products</string>
<string name="orderdetail_refund_detail">%1$s via %2$s</string>
<string name="orderdetail_net">Net Payment</string>
Expand Down
Loading