Clarify single fixed separation fee of 10.000 COP for multi-item orders in app and web

This commit is contained in:
AI Bot 2026-09-05 12:59:49 -05:00
parent 3c5c67e4eb
commit 61803fe15a
4 changed files with 17 additions and 7 deletions

View File

@ -116,11 +116,13 @@ class CartBottomSheet : BottomSheetDialogFragment() {
binding.tvShippingTotal.text = selectedCity.formattedShipping()
binding.tvCartTotalAmount.text = format.format(total) + " COP"
val totalQty = items.sumOf { it.quantity }
if (requiresSeparation) {
binding.tvLabelSeparation.text = "⚡ Separación (1er Pedido):"
binding.tvSeparationAmount.text = "$ 10.000 COP"
binding.tvBalanceDueAmount.text = format.format(balanceDue) + " COP"
binding.tvSeparationBreakdown.text = "Separas tu pedido con $10.000 COP y cancelas el saldo restante (${format.format(balanceDue)} COP) en efectivo al recibir."
binding.tvSeparationBreakdown.text = "Separas tu pedido ($totalQty ${if (totalQty > 1) "productos" else "producto"}) con solo $10.000 COP de separación fija (tarifa única para toda la orden) y cancelas el saldo restante (${format.format(balanceDue)} COP) en efectivo al recibir."
binding.btnCartAction.text = "Pagar Separación ($10.000 COP)"
binding.btnCartAction.backgroundTintList = android.content.res.ColorStateList.valueOf(
androidx.core.content.ContextCompat.getColor(requireContext(), co.dripzone.app.R.color.drip_purple)
@ -130,7 +132,7 @@ class CartBottomSheet : BottomSheetDialogFragment() {
binding.tvLabelSeparation.text = "⭐ Separación (Cliente Frecuente):"
binding.tvSeparationAmount.text = "$ 0 COP (Exento)"
binding.tvBalanceDueAmount.text = format.format(total) + " COP"
binding.tvSeparationBreakdown.text = "¡Cliente Frecuente! Pagas el 100% del pedido (${format.format(total)} COP) contraentrega al recibir en tu puerta."
binding.tvSeparationBreakdown.text = "¡Cliente Frecuente! Pagas el 100% de tu pedido ($totalQty ${if (totalQty > 1) "productos" else "producto"} por ${format.format(total)} COP) contraentrega al recibir en tu puerta."
binding.btnCartAction.text = "Enviar Pedido (100% Contraentrega)"
binding.btnCartAction.backgroundTintList = android.content.res.ColorStateList.valueOf(
androidx.core.content.ContextCompat.getColor(requireContext(), co.dripzone.app.R.color.accent_emerald)

View File

@ -73,7 +73,10 @@ class OrderVerificationBottomSheet : BottomSheetDialogFragment() {
CartManager.getSubtotal()
}
val total = subtotal + selectedCity.shippingCost
val balanceDue = if (total > 10000.0) total - 10000.0 else 0.0
val totalQty = if (isDirectProductOrder && directItem != null) directItem!!.quantity else CartManager.getItems().sumOf { it.quantity }
val requiresDeposit = user.totalOrders == 0
val depositAmount = if (requiresDeposit) 10000.0 else 0.0
val balanceDue = if (total > depositAmount) total - depositAmount else 0.0
val format = NumberFormat.getCurrencyInstance(Locale("es", "CO")).apply {
maximumFractionDigits = 0
@ -81,7 +84,11 @@ class OrderVerificationBottomSheet : BottomSheetDialogFragment() {
binding.tvOrderSummaryCity.text = "Destino: ${selectedCity.name} (${selectedCity.formattedShipping()})"
binding.tvOrderSummaryTotal.text = "${format.format(total)} COP"
binding.tvOrderSummaryBreakdown.text = "Pago Contraentrega • Separas con $10.000 COP y cancelas ${format.format(balanceDue)} COP al recibir."
if (requiresDeposit) {
binding.tvOrderSummaryBreakdown.text = "Pago Contraentrega • Separas todo tu pedido ($totalQty ${if (totalQty > 1) "productos" else "producto"}) con $10.000 COP de separación fija y cancelas ${format.format(balanceDue)} COP al recibir."
} else {
binding.tvOrderSummaryBreakdown.text = "⭐ Cliente Frecuente: Pagas el 100% (${format.format(total)} COP) contraentrega al recibir tu paquete (Exento de separación)."
}
binding.btnContinueToOtp.setOnClickListener {
handleContinueToOtp()

View File

@ -564,7 +564,7 @@ export default function CheckoutPage() {
<p className="text-[10px] text-neutral-400 pt-1 leading-relaxed">
{isMandatoryDeposit
? 'Para tu primer pedido aseguras el despacho con solo $10.000 COP vía Bold/Nequi y cancelas el saldo restante en efectivo al recibir tu paquete.'
? `Para tu primer pedido aseguras el despacho de tu orden (${checkoutItems.reduce((acc, it) => acc + it.quantity, 0)} items) con una separación fija única de $10.000 COP vía Bold y cancelas el saldo restante en efectivo al recibir tu paquete.`
: '¡Gracias por tu confianza! Como cliente frecuente, cancelas el 100% del pedido contraentrega al recibir.'}
</p>
</div>

View File

@ -45,6 +45,7 @@ export const CartDrawer: React.FC<CartDrawerProps> = ({
if (!isOpen) return null;
const totalQuantity = cartItems.reduce((acc, item) => acc + item.quantity, 0);
const subtotal = cartItems.reduce((acc, item) => acc + item.product.retailPrice * item.quantity, 0);
const shippingCost = selectedCity.shippingCost;
const totalAmount = subtotal + shippingCost;
@ -232,10 +233,10 @@ export const CartDrawer: React.FC<CartDrawerProps> = ({
<div className="bg-white/5 border border-white/10 rounded-xl p-2.5 text-xs space-y-1">
<p className="font-bold text-white flex items-center gap-1">
<Zap className="w-3.5 h-3.5 fill-white" />
Separación con $10.000 COP (1er Pedido)
Separación fija de $10.000 COP (1er Pedido)
</p>
<p className="text-slate-300 text-[11px]">
Separas con <strong>$10.000 COP</strong> y cancelas el saldo restante (<strong>{formatCOP(Math.max(0, totalAmount - 10000))}</strong>) en efectivo o transferencia al recibir en tu puerta.
Separas tu pedido completo ({totalQuantity} {totalQuantity > 1 ? 'productos' : 'producto'}) con una tarifa única de <strong>$10.000 COP</strong> y cancelas el saldo restante (<strong>{formatCOP(Math.max(0, totalAmount - 10000))}</strong>) contraentrega al recibir en tu puerta.
</p>
<p className="text-[10px] text-emerald-400 font-semibold pt-0.5 border-t border-white/5">
🛡️ {selectedCity.firstExchangeFree