Sistema de cobro en Android Studio 3da parte

📱 Ejercicio.- Sistema de cobro en Android Studio 3da parte [18]

En este video vamos continuar con el sistema de cobro en Android Studio 3da parte anterior y vamos a hacer la el área de pago y redondeo de cambio.

  • Agregaremos un EditText para recibir el pago y un ViewText para mostrar el cambio a entregar.
  • Crearemos la función pagar que estará vinculada al botón pagar que ara lo siguiente:
    • Calcular el cambio y los centavos
    • Si hay centavos a devolver mostraremos un alertDialog que dirá:
    • Si desea redondear su cambio se restaran los centavos y se agradecerá por su donativo.
    • Si no desea redondear su cambio se entregará el cambio completo.

Sintaxis de AlertDialog
AlertDialog.Builder
AlertDialog.setTitle(“String”)
AlertDialog.setMessage(“String”)
AlertDialog.setPositiveButton(“Si”){
dialogInterface: DialogInterface, i: Int –
//Codigo
}
AlertDialog.setNegativeButton(“No”){
dialogInterface: DialogInterface, i: Int –
//Codigo
}
val alert: AlertDialog = dialogoAlerta.create()
alert.setCanceledOnTouchOutside(false)
alert.show()

Sistema de cobro en Android Studio 3da parte

Codigo: https://github.com/programadornovato/Mi-Primer-Proyecto-Android-Studio/commit/6438e1bfba4df4b08f26585259830136fabd6795

package com.programadornovato.miprimerproyecto

import android.content.DialogInterface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.*
import androidx.appcompat.app.AlertDialog
import java.math.BigDecimal
import kotlin.math.PI
import kotlin.math.round

class MainActivity : AppCompatActivity() {
    private var txtPrecio:EditText?=null
    private var tvLista:TextView?=null
    private var tvTotal:TextView?=null

    private var txtPago:EditText?=null
    private var tvCambio:TextView?=null

    private var contador=0
    private var listaProductos=ArrayList<Double>()
    private var total=0.0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        txtPrecio=findViewById(R.id.txtPrecio)
        tvLista=findViewById(R.id.tvLista)
        tvTotal=findViewById(R.id.tvTotal)
        txtPago=findViewById(R.id.txtPago)
        tvCambio=findViewById(R.id.tvCambio)
    }
    fun agregar(view: View){
        var precio=txtPrecio?.text.toString().toDouble()
        listaProductos.add(precio)
        tvLista?.text=tvLista?.text.toString()+"\n"+"Producto ${contador+1}=%.2f".format(precio)
        contador++
        txtPrecio?.setText("")
        total=0.0
        listaProductos.forEach{
            total=total+it
        }
        tvTotal?.text="Total=%.2f".format(total)
    }
    fun pagar(view: View){
        var pago=txtPago?.text.toString().toDouble()
        var cambio=pago-total
        var centavos=cambio-cambio.toInt()
        if(centavos>0.0){
            val dialogo:AlertDialog.Builder=AlertDialog.Builder(this)
            dialogo.setTitle("¿Deseas donar tus centavos?")
            dialogo.setMessage("Haz click para donar %.2f".format(centavos)+" centavos")
            dialogo.setPositiveButton("Si"){ dialogInterface: DialogInterface, i: Int ->
                Toast.makeText(this,"Gracias por donar %.2f".format(centavos)+" centavos",Toast.LENGTH_LONG).show()
                tvCambio?.text="Su cambio es de %.2f".format(cambio-centavos)
            }
            dialogo.setNegativeButton("No"){ dialogInterface: DialogInterface, i: Int ->
                Toast.makeText(this,"Gracias por nada por favor no regreses",Toast.LENGTH_LONG).show()
                tvCambio?.text="Su cambio es de %.2f".format(cambio)
            }
            val alerta:AlertDialog=dialogo.create()
            alerta.setCanceledOnTouchOutside(false)
            alerta.show()
        }else{
            tvCambio?.text="Su cambio es de %.2f".format(cambio)
        }
    }

}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">

    <TextView
        android:id="@+id/textView"
        android:layout_width="322dp"
        android:layout_height="30dp"
        android:layout_marginTop="16dp"
        android:text="Bienvenido humano a la tienda del PN"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.632"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/txtPrecio"
        android:layout_width="363dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="24dp"
        android:ems="10"
        android:hint="Humano coloca el precio"
        android:inputType="numberDecimal"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <Button
        android:id="@+id/btnAgregar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="24dp"
        android:layout_marginRight="24dp"
        android:onClick="agregar"
        android:text="Agregar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/txtPrecio" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="24dp"
        android:text="Lista de productos"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnAgregar" />

    <TextView
        android:id="@+id/tvLista"
        android:layout_width="336dp"
        android:layout_height="110dp"
        android:layout_marginStart="24dp"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="16dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <Button
        android:id="@+id/btnPagar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="24dp"
        android:layout_marginRight="24dp"
        android:onClick="pagar"
        android:text="Pagar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/txtPago" />

    <TextView
        android:id="@+id/tvTotal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="24dp"
        android:layout_marginRight="24dp"
        android:text="total"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvLista" />

    <EditText
        android:id="@+id/txtPago"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="24dp"
        android:layout_marginRight="24dp"
        android:ems="10"
        android:hint="Pago"
        android:inputType="numberDecimal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvTotal" />

    <TextView
        android:id="@+id/tvCambio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="24dp"
        android:layout_marginRight="24dp"
        android:text="cambio"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnPagar" />

</androidx.constraintlayout.widget.ConstraintLayout>

🎦 Lista de reproducción de este curso: https://www.youtube.com/watch?v=3ZUlE_tvfaM&list=PLCTD_CpMeEKRL2-HaZThebGcyyR3_RshO&ab_channel=programadornovato
🎦 Curso de Android Studio: https://www.youtube.com/watch?v=AHyTqIB_8Rs&list=PLCTD_CpMeEKTT9pb9J-89j1SPtqHzU7sF&ab_channel=programadornovato
🎦 [Curso] Java Netbeans Completo☕: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTT-qEHGqZH3fkBgXH4GOTF
🎦 [Curso] Kotlin de 0 a 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKSjzbsW_zmVNz23GyOVsdbS
🎦 [Curso] Java Netbeans Completo☕: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTT-qEHGqZH3fkBgXH4GOTF

🔗 Facebook: https://facebook.com/ProgramadorNovatoOficial
🔗 Twitter: https://twitter.com/programadornova
🔗 Linkedin: https://www.linkedin.com/in/programadornovato/
🔗 Instagram: https://www.instagram.com/programadornovato/
🔗 Pagina oficial: https://www.programadornovato.com
🔗 Gracias por apoyar este canal: https://www.patreon.com/programadornovato

Anterior tutorial Siguiente tutorial

Deja un comentario

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

Información básica sobre protección de datos Ver más

  • Responsable: Eugenio Chaparro.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a digitalocean.com que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad