🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónNúmeros negativos, redondeos y monedas
5 tareas · 40 min · Principiante
Un número puede ser válido para el lenguaje de programación y absurdo para el negocio: una cantidad negativa, un redondeo hacia el lado equivocado, un monto sin moneda. Despensa Mecato opera en Colombia en pesos y en Ecuador en dólares. Te entregan el carrito, el cálculo de cashback, las transferencias entre billeteras y sus registros de noviembre.
Objetivo de la sala
Un número puede ser válido para el lenguaje de programación y absurdo para el negocio: una cantidad negativa, un redondeo hacia el lado equivocado, un monto sin moneda. Despensa Mecato opera en Colombia en pesos y en Ecuador en dólares. Te entregan el carrito, el cálculo de cashback, las transferencias entre billeteras y sus registros de noviembre.Validar que un campo sea un número entero es validación sintáctica: comprueba la forma. La validación semántica comprueba que el valor tenga sentido para el negocio: una cantidad va de 1 a un tope razonable, un descuento de 0 al subtotal, un monto lleva su moneda. MITRE describe el caso de las cantidades como CWE-1284, validación incorrecta de una cantidad indicada en la entrada, y la guía de pruebas web de OWASP abre su capítulo de lógica de negocio con la validación de los datos según las reglas del negocio y no solo según su tipo.
Los números negativos son el ejemplo clásico: una línea con cantidad -4 resta del total en vez de sumar, y nada en el código lo impide si solo se pidió un entero.
Responde para continuar
¿Qué regla de validación corresponde al campo cantidad de una línea del carrito?
Ver pista de ayuda
La forma del dato es necesaria, pero no basta.
Abre el laboratorio y lee CarritoController.php en la carpeta mecato-numeros. El precio sale del catálogo, que es correcto, pero la cantidad solo se valida como entero. Luego revisa pedidos-lineas.txt.
Responde para continuar
¿Qué pedido tiene una línea que le resta dinero al total? Escribe su código.
Ver pista de ayuda
Busca una cantidad con signo menos.
Redondear una vez cuesta poco. Redondear en cada línea, siempre hacia el mismo lado, convierte una fracción de peso en una ganancia que crece con el número de líneas. Compara regla-cashback.txt con CashbackService.php: la regla calcula sobre el total y redondea hacia abajo; el código calcula por línea y redondea hacia arriba. Calcula lo que debió acreditarse en cada pedido de cashback-noviembre.txt según la regla y compáralo con lo acreditado.
Responde para continuar
¿Cuántos pesos de cashback se acreditaron de más en el extracto frente a lo que dice la regla?
Ver pista de ayuda
Hay un pedido con diferencia pequeña y otro con cuarenta líneas.
Un monto sin su moneda y su unidad es un número suelto. Lee billeteras.txt: en Colombia el saldo se guarda en pesos y en Ecuador en centavos de dólar. Después lee TransferenciaService.php, que resta y suma el mismo número, y transferencias.txt. Con la tasa interna del día, mira qué transferencia hizo aparecer en el destino mucho más valor del que salió del origen.
Responde para continuar
¿Qué transferencia convirtió pesos en dólares que valían muchas veces más? Escribe su identificador.
Ver pista de ayuda
Busca una transferencia de una billetera en pesos a una en dólares.
Los tres hallazgos tienen arreglo puntual (un mínimo en la cantidad, redondear una vez según la regla, convertir en la transferencia), pero comparten una causa de diseño: el dinero se maneja como un número suelto.
Responde para continuar
¿Qué práctica de diseño evita esta familia de errores con dinero?
Ver pista de ayuda
El error común fue separar el número de su moneda y de su unidad.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.