diff --git a/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/CartBottomSheet.kt b/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/CartBottomSheet.kt index 1aec7fa..24006c5 100644 --- a/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/CartBottomSheet.kt +++ b/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/CartBottomSheet.kt @@ -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) diff --git a/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt b/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt index 9aca6dd..10b3a60 100644 --- a/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt +++ b/dripzone-app/android/app/src/main/java/co/dripzone/app/ui/OrderVerificationBottomSheet.kt @@ -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() diff --git a/dripzone-app/src/app/checkout/page.tsx b/dripzone-app/src/app/checkout/page.tsx index 554b43a..ee0d985 100644 --- a/dripzone-app/src/app/checkout/page.tsx +++ b/dripzone-app/src/app/checkout/page.tsx @@ -564,7 +564,7 @@ export default function CheckoutPage() {
{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.'}
diff --git a/dripzone-app/src/components/store/CartDrawer.tsx b/dripzone-app/src/components/store/CartDrawer.tsx index 7982da0..e1f0b77 100644 --- a/dripzone-app/src/components/store/CartDrawer.tsx +++ b/dripzone-app/src/components/store/CartDrawer.tsx @@ -45,6 +45,7 @@ export const CartDrawer: React.FC
- Separas con $10.000 COP y cancelas el saldo restante ({formatCOP(Math.max(0, totalAmount - 10000))}) en efectivo o transferencia al recibir en tu puerta. + Separas tu pedido completo ({totalQuantity} {totalQuantity > 1 ? 'productos' : 'producto'}) con una tarifa única de $10.000 COP y cancelas el saldo restante ({formatCOP(Math.max(0, totalAmount - 10000))}) contraentrega al recibir en tu puerta.
🛡️ {selectedCity.firstExchangeFree