Total de venta con IVA - Ejercicio Android

Ejercicio con Android: total de venta con IVA

Este es el segundo ejercicio con Android. Vamos a hacer una app que pida:

  • Cantidad de productos
  • Precio de cada producto

Y calcule el valor sin IVA, el IVA y el valor con IVA. El IVA es un impuesto del 16 % que se aplica al menos en México, supongo que en otros lugares puede variar.

Total de venta con IVA - Ejercicio Android
Total de venta con IVA – Ejercicio Android

Por cierto, los resultados deben mostrarse en una segunda actividad.

Repositorio en GitHub

Puedes ver el código completo de la app en mi perfil.

Layout de actividad principal: pedir precio y cantidad

Para comenzar vamos a poner dos EditText de tipo numérico en donde se va a escribir la cantidad de productos y el precio por cada uno.

También vamos a poner un botón para que cuando se haga click se pase a otra actividad en donde se muestran los resultados.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Precio"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:inputType="numberSigned"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Cantidad"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:inputType="numberSigned"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:text="Ver total"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText2" />
</android.support.constraint.ConstraintLayout>

El primer EditText con id editText tendrá el precio, y el segundo con el id editText2 tendrá la cantidad de productos.

El único Button tiene el id button, este se encargará de pasar los datos a la otra actividad.

Código Java de la primera actividad

Para escuchar el click del botón, recuperar el precio y la cantidad de los productos vamos a programar un poco con Java.

Obtenemos referencias a los elementos de la vista y le ponemos un listener al botón; en el método onClick (sobrescrito) obtenemos el precio con la cantidad, calculamos el total bruto, iva y total neto.

Luego pasamos esos tres valores a la Actividad2 en donde simplemente los vamos a mostrar; para pasarlos usamos un Intent.

package me.parzibyte.ventaconiva;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Obtener referencia a los elementos
        final EditText editTextPrecio = findViewById(R.id.editText),
                editTextCantidad = findViewById(R.id.editText2);
        Button botonQueCalcula = findViewById(R.id.button);

        // Escuchar el click del botón
        botonQueCalcula.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Obtener ambos valores como cadena
                String precioString = editTextPrecio.getText().toString(),
                        cantidadString = editTextCantidad.getText().toString();
                // Si están vacíos no seguimos ejecutando más código
                if (precioString.isEmpty() || cantidadString.isEmpty()) return;

                // Si el código continúa hasta aquí significa que las cosas van bien
                // convertimos cadenas a double
                double precio = Double.parseDouble(precioString),
                        cantidad = Double.parseDouble(cantidadString);
                // Hora de hacer cálculos
                final double IVA = 0.16;
                double totalBruto = precio * cantidad;
                // Calcular por separado el IVA de ese total bruto
                double totalIva = totalBruto * IVA;
                // Finalmente el total neto es la suma de los anteriores
                double totalNeto = totalBruto + totalIva;
                // Ahora creamos un intent y ponemos los 3 datos
                Intent intent = new Intent(MainActivity.this, Actividad2.class);
                intent.putExtra("totalBruto", totalBruto);
                intent.putExtra("totalIva", totalIva);
                intent.putExtra("totalNeto", totalNeto);

                // Hacemos el cambio y nos vemos en Actividad2
                startActivity(intent);
            }
        });
    }
}

Todos los cálculos se hacen en esta actividad y los resultados se pasan a la siguiente.

El diseño de la segunda actividad

En la segunda actividad tenemos 3 TextView que van a mostrar los 3 valores. El layout XML queda así:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Actividad2">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:text="TextView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:text="TextView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:text="TextView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />
</android.support.constraint.ConstraintLayout>

Los 3 elementos están dentro de un ConstraintLayout. Tiene el id textView1, textView2 y textView3.

Código Java de la actividad de resultados

En el código Java simplemente obtenemos la referencia a los elementos y les ponemos los valores que nos enviaron por el Intent.

Queda así:

package me.parzibyte.ventaconiva;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class Actividad2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_actividad2);

        // Obtener referencia
        TextView textView1 = findViewById(R.id.textView),
                textView2 = findViewById(R.id.textView2),
                textView3 = findViewById(R.id.textView3);

        // Recuperar valores
        Intent intent = getIntent();
        // El defaultValue es lo que se regresa si no se encuentra valor con la clave especificada
        double totalBruto = intent.getDoubleExtra("totalBruto", 0);
        double totalIva = intent.getDoubleExtra("totalIva", 0);
        double totalNeto = intent.getDoubleExtra("totalNeto", 0);

        // Ahora preparamos unos mensajes para ponerlos en los TextView
        String mensajeTotalBruto = "Bruto: " + totalBruto;
        String mensajeTotalIva = "IVA: " + totalIva;
        String mensajeTotalNeto = "Neto: " + totalNeto;

        // Finalmente le ponemos ese mensaje a cada TextView
        textView1.setText(mensajeTotalBruto);
        textView2.setText(mensajeTotalIva);
        textView3.setText(mensajeTotalNeto);
    }
}

Con eso terminamos por hoy.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *