Академический Документы
Профессиональный Документы
Культура Документы
Ahora vamos a crear un nuevo proyecto en Android Studio con la siguiente ruta
File/New/New Project y despus de crearlo vamos a importar el driver JTDS que va a
hacer posible la conexin remota con la base de datos en SQL Server. La colocamos
en la siguiente ruta.
Project/app/libs
Ahora
vamos
a
ir
a
la
siguiente
ventana
ubicada
en
File/Project
Structure/Dependencies y vamos a agregar una nueva dependencia seleccionando
el driver JTDS que acabamos de importar.
this.total = total;
}}
Ahora vamos a crear la clase tabla.java la cual nos va a servir para pintar los
resultados de una consulta en un objecto tabla. Establecemos los mtodos
agregarFila, agregarCabecera y obtenerAnchoPixeles.
class Tabla {
private TableLayout tabla;
private ArrayList<TableRow> filas;
private Activity actividad;
private Resources rs;
private int FILAS,COLUMNAS;
public Tabla(Activity actividad, TableLayout tabla){
this.actividad = actividad;
this.tabla = tabla;
rs = this.actividad.getResources();
FILAS = COLUMNAS = 0;
filas = new ArrayList<TableRow>();
}
public void agregarCabecera(int recursocabecera){
TableRow.LayoutParams layoutCelda;
TableRow fila = new TableRow(actividad);
TableRow.LayoutParams layoutFila = new
TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CON
TENT);
fila.setLayoutParams(layoutFila);
String [] arrayCabecera = rs.getStringArray(recursocabecera);
COLUMNAS = arrayCabecera.length;
for (int i = 0; i <arrayCabecera.length ; i++) {
TextView texto = new TextView(actividad);
layoutCelda = new
TableRow.LayoutParams(obtenerAnchoPixelesTexto(arrayCabecera[i]),TableRow.LayoutParams.
WRAP_CONTENT);
texto.setText(arrayCabecera[i]);
texto.setGravity(Gravity.CENTER_HORIZONTAL);
texto.setLayoutParams(layoutCelda);
fila.addView(texto);
}
tabla.addView(fila);
filas.add(fila);
FILAS++;
}
public void agrgarFilaTabla(ArrayList<String> elementos){
TableRow.LayoutParams layoutCelda;
TableRow.LayoutParams layoutFila = new
TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CON
TENT);
TableRow fila = new TableRow(actividad);
fila.setLayoutParams(layoutFila);
for (int i = 0; i <elementos.size() ; i++) {
TextView texto = new TextView(actividad);
texto.setText(String.valueOf(elementos.get(i)));
texto.setGravity(Gravity.CENTER_HORIZONTAL);
layoutCelda = new
TableRow.LayoutParams(obtenerAnchoPixelesTexto(texto.getText().toString()),TableRow.Lay
outParams.WRAP_CONTENT);
texto.setLayoutParams(layoutCelda);
fila.addView(texto);
}
tabla.addView(fila);
filas.add(fila);
FILAS++;
}
private int obtenerAnchoPixelesTexto(String texto){
Paint p = new Paint();
Rect bounds = new Rect();
p.setTextSize(50);
p.getTextBounds(texto, 0, texto.length(), bounds);
return bounds.width();
}
Tambin vamos crear la clase Querys en la cual vamos a definir los querys que van a
mostrarse en las tablas de la aplicacin.
public class Querys {
public static void ejecutaQuery(String query) throws SQLException {
Connection conectar = ConexionSQLServer.conectar_a_BD_Pinturas();
Statement s = conectar.createStatement();
s.executeUpdate(query);
s.close();
conectar.close();
}
public static ArrayList selpintutas() throws SQLException {
ArrayList datos = new ArrayList();
Connection conectar = ConexionSQLServer.conectar_a_BD_Pinturas();
Statement s = conectar.createStatement();
ResultSet rs = s.executeQuery("select idVenta from venta order by idVenta");
int idVenta = 0;
while (rs.next()) {
idVenta = rs.getInt("idVenta");
}
ResultSet r = s.executeQuery("select color,tipo,litros,cantidad,precio,subtotal
\n" +
" from pintura p, venta v, venta_detalle vd\n" +
"where p.idPintura=vd.idPintura and v.idVenta=vd.idVenta and
v.idVenta="+idVenta);
while (r.next()){
datosPinturas dat = new datosPinturas();
//dat.setIdPedido(r.getInt("Venta"));
//dat.setIdPintura(r.getInt("idPintura"));
dat.setColor(r.getString("color"));
dat.setTipo(r.getString("tipo"));
dat.setLitros(r.getInt("litros"));
dat.setCantidad(r.getInt("cantidad"));
dat.setPrecio(r.getInt("precio"));
dat.setSubtotal(r.getInt("subtotal"));
datos.add(dat);
}
s.close();
conectar.close();
return datos;
datos.add(datG);
}
s.close();
conectar.close();
return datos;
Dentro del archivo activity_main ponemos el siguiente cdigo para crear los
elementos que van a estar presentes en la primera interfaz de nuestra aplicacin.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="proyecto.db.proyecto.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Iniciar Venta"
android:id="@+id/b_iniciar_venta"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="141dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Registros de Venta"
android:id="@+id/b_reporte"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Lo que nos va a generar la siguiente interfaz con nicamente dos botones. El boton
INICIAR VENTA va a inicar una venta. El botn REGISTROS DE VENTA nos va a
mandar a una interfaz donde en una tabla se van a mostrar las ventas realizadas.
});
}
}
botonReportes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), Reportes.class);
startActivity(i);
}
});
Ahora creamos una nueva actividad con nombre activity_venta con el siguiente
cdigo para generar los elementos que va a tener esta interfaz.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context="proyecto.db.proyectofinal.venta">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="IDPintura"
android:id="@+id/textId"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/listaPinturas"
android:layout_alignStart="@+id/listaPinturas" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Color"
android:id="@+id/listaPinturas"
android:layout_marginTop="61dp"
android:layout_below="@+id/textId"
android:layout_alignRight="@+id/textLitros"
android:layout_alignEnd="@+id/textLitros" />
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lista"
android:layout_alignTop="@+id/listaPinturas"
android:layout_toRightOf="@+id/textId"
android:layout_toEndOf="@+id/textId" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Precio"
android:id="@+id/textPrecio"
android:layout_alignTop="@+id/textLitros"
android:layout_alignLeft="@+id/b_finalizar"
android:layout_alignStart="@+id/b_finalizar" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Litros"
android:id="@+id/textLitros"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Cantidad"
android:id="@+id/textCantidad"
android:layout_marginTop="48dp"
android:layout_below="@+id/textLitros"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/c_cantidad"
android:layout_alignBottom="@+id/textCantidad"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:text="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Registrar"
android:id="@+id/b_registrar"
android:layout_marginBottom="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Finalizar Venta"
android:id="@+id/b_finalizar"
android:layout_alignTop="@+id/b_registrar"
android:layout_alignRight="@+id/c_cantidad"
android:layout_alignEnd="@+id/c_cantidad" />
</RelativeLayout>
Segn los elementos establecidos en este archivo nos genera la siguiente interfaz.
Donde tenemos una lista varios campos de texto y dos botones. La lista tendr los
diferentes colores que estn disponibles para nuestra aplicacin. En las etiquetas
de litros y precio se van a llenar automticamente segn se seleccione el color de la
lista. Y tenemos un campo de texto donde vamos a establecer la cantidad requerida
para esta venta.
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_venta);
idPintuta = (TextView) findViewById(R.id.textId);
precio = (TextView) findViewById(R.id.textPrecio);
cantidad = (EditText) findViewById(R.id.c_cantidad);
litros = (TextView) findViewById(R.id.textLitros);
botonRegistrar = (Button) findViewById(R.id.b_registrar);
botonFinalizar = (Button) findViewById(R.id.b_finalizar);
listaPinturas = (Spinner) findViewById(R.id.lista);
ArrayAdapter spinner_adapter = ArrayAdapter.createFromResource(this,
R.array.pinturas, android.R.layout.simple_spinner_item);
spinner_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
listaPinturas.setAdapter(spinner_adapter);
listaPinturas.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
int precio_int = 0;
int litros_int = 0;
int idPintura = 0;
String color = listaPinturas.getSelectedItem().toString();
try {
Connection c1 = ConexionSQLServer.conectar_a_BD_Pinturas();
Statement s1 = c1.createStatement();
ResultSet r1 = s1.executeQuery("select idPintura,precio,litros from
pintura where color='" + color + "'");
while (r1.next()) {
idPintura = r1.getInt("idPintura");
precio_int = r1.getInt("precio");
litros_int = r1.getInt("litros");
}
idPintuta.setText("IDPintura = " + idPintura);
precio.setText("Precio = " + precio_int + "");
litros.setText("Litros = " + litros_int + "");
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
});
botonFinalizar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
botonRegistrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//String p = precio.getText().toString();
int ca=0;
String c=null;
try {
c = cantidad.getText().toString();
ca = Integer.parseInt(c);
}
catch (NumberFormatException e){
}
int pr = 0;
int idVenta = 0;
int idPintura = 0;
int subtotal = 0;
int existencias = 0;
int NuevaExistencia = 0;
String color = listaPinturas.getSelectedItem().toString();
try {
Connection co = ConexionSQLServer.conectar_a_BD_Pinturas();
Statement s = co.createStatement();
ResultSet r = s.executeQuery("select idVenta from venta order by
idVenta");
while (r.next()) {
idVenta = r.getInt("idVenta");
}
ResultSet r2 = s.executeQuery("select idPintura,precio,existencias
from pintura where color='" + color +"'");
while(r2.next()){
pr = r2.getInt("precio");
idPintura = r2.getInt("idPintura");
existencias = r2.getInt("existencias");
}
if(ca <= existencias && existencias>0) {
NuevaExistencia = existencias - ca;
subtotal = pr * ca;
if (ca==0 ||c.matches("")) {
Toast.makeText(getApplicationContext(), "Agrega una
cantidad", Toast.LENGTH_LONG).show();
} else {
try {
Querys.ejecutaQuery("insert into venta_detalle values
(" + idVenta + "," + idPintura+ "," + cantidad.getText() +","+ subtotal + ")");
Toast.makeText(getApplicationContext(),
"Datos Guardados Correctamente",
Toast.LENGTH_LONG).show();
Connection conec =
ConexionSQLServer.conectar_a_BD_Pinturas();
Statement st = conec.createStatement();
ResultSet rs = st.executeQuery("select sum(subtotal) as
subtotal from venta_detalle where idVenta="+idVenta);
int total = 0;
while(rs.next()){
total = rs.getInt("subtotal");
}
where idVenta="+idVenta);
Toast.LENGTH_LONG).show();
}
} catch (SQLException e) {
Toast.makeText(getApplicationContext(),
"Ya tienes ese producto en tu compra",
}
}if(existencias==0){
Toast.makeText(getApplicationContext(), "Ya no hay ms pinturas
de este color", Toast.LENGTH_LONG).show();
}else if(ca>existencias){
Toast.makeText(getApplicationContext(),
"La cantidad debe ser menor a "+(existencias+1),
Toast.LENGTH_LONG).show();
}
} catch (SQLException e) {
e.printStackTrace();
}
});
botonFinalizar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), SegundaActivity.class);
startActivity(i);
}
});
}
}
Creamos una nueva actividad llamada activity_segunda la cual ser llamada justo
despus de presionar el botn de finalizar venta. Colocamos el siguiente cdigo.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context="proyecto.db.proyecto.SegundaActivity">
<ScrollView
android:id="@+id/scrollvertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:layout_weight="1"
android:layout_above="@+id/text_total"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="106dp">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollhorizontal"
android:scrollbars="horizontal"
android:layout_weight="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Ticket de venta"
android:id="@+id/textTicket"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/scrollvertical"
android:layout_toEndOf="@+id/scrollvertical" />
<TableLayout
android:id="@+id/tabla"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TableLayout>
</LinearLayout>
</HorizontalScrollView>
</ScrollView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Total venta "
android:id="@+id/text_total"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true" />
<Button
android:id="@+id/bot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Men Principal"
android:layout_marginTop="65dp"
android:layout_below="@+id/text_total"
android:layout_toRightOf="@+id/text_total" />
</RelativeLayout>
Con este cdigo generamos la siguiente interfaz con los siguientes elementos.
Donde se van a mostrar las ventas de las diferentes pinturas que han sido
agregadas a esta venta. Y tambin va a asignar en el campo de texto el total de la
venta actual.
Ahora vamos a vincular este archivo XML con un archivo java llamndolo
SegundaActivity.java en este archivo vamos a establecer la consulta que va a
mostrar como si fuera un ticket de venta. Llamando a la clase tabla para poder
pintar la consulta en una tabla. El botn men principal nos manda a la actividad
MainActivity.
public class SegundaActivity extends AppCompatActivity {
private Button boton;
private TextView texto_total;
private TextView Ticket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_segunda);
boton = (Button) findViewById(R.id.bot);
texto_total = (TextView) findViewById(R.id.text_total);
Tabla tabla = new Tabla(this, (TableLayout) findViewById(R.id.tabla));
tabla.agregarCabecera(R.array.cabecera_tabla);
ArrayList pinturas = new ArrayList();
try {
idVenta");
pinturas = Querys.selpintutas();
for (int i = 0; i < pinturas.size(); i++) {
datosPinturas dat = new datosPinturas();
dat = (datosPinturas) pinturas.get(i);
ArrayList<String> elementos = new ArrayList<String>();
//elementos.add(dat.getIdPedido() + "");
//elementos.add(dat.getIdPintura() + "");
elementos.add(dat.getColor());
elementos.add(dat.getTipo());
elementos.add(dat.getLitros() + "");
elementos.add(dat.getCantidad() + "");
elementos.add(dat.getPrecio() + "");
elementos.add(dat.getSubtotal() + "");
//elementos.add(dat.getFecha()+"");
//tabla.agregarFilaTabla(elementos);
tabla.agrgarFilaTabla(elementos);
}
Connection conectar = ConexionSQLServer.conectar_a_BD_Pinturas();
Statement s = conectar.createStatement();
ResultSet rs = s.executeQuery("select idVenta from venta order by
int idVenta = 0;
while (rs.next()) {
idVenta = rs.getInt("idVenta");
}
ResultSet rs2 = s.executeQuery("select total from venta where
idVenta="+idVenta);
int total = 0;
while(rs2.next()){
total = rs2.getInt("total");
}
texto_total.setText("Total Venta "+idVenta+ " = $"+total );
} catch (SQLException e) {
}
boton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
try {
int idVenta=0;
Connection conec = ConexionSQLServer.conectar_a_BD_Pinturas();
Statement st = conec.createStatement();
ResultSet rs = st.executeQuery("select idVenta from venta order by
idVenta");
while(rs.next()){
idVenta = rs.getInt("idVenta");
}
ResultSet rs1 = st.executeQuery("select total from venta where
idVenta="+idVenta);
idVenta="+idVenta);
int total=0;
while (rs1.next()){
total = rs1.getInt("total");
}
if(total==0){
Querys.ejecutaQuery("delete from venta where
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}); }}
Ahora vamos a crear una nueva actividad donde vamos a tener los reportes de
usuario. La actividad se llamar activity_reportes y tendr el siguiente cdigo.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context="proyecto.db.proyecto.Reportes"
android:weightSum="1">
<ScrollView
android:id="@+id/scrollvertical"
android:layout_width="match_parent"
android:layout_height="52dp"
android:scrollbars="vertical"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/bot"
android:layout_alignParentTop="true">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollhorizontal"
android:scrollbars="horizontal"
android:layout_weight="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Ventas Generales"
android:id="@+id/textVentas"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/scrollvertical"
android:layout_toEndOf="@+id/scrollvertical" />
<TableLayout
android:id="@+id/tabla"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TableLayout>
</LinearLayout>
</HorizontalScrollView>
</ScrollView>
<Button
android:id="@+id/bot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Men Principal"
android:layout_gravity="bottom"
android:layout_weight="6.16"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Segn el cdigo nos genera la siguiente interfaz donde tenemos el botn men
principal y una tabla donde se van a mostrar las ventas generales y sus respectivas
fechas y totales.
Antes de ejecutar nuestra aplicacin necesitamos las actividades dentro del archivo
AndroidManifest para que pueda reconocerlas como tal. Colocamos el siguiente
cdigo.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="proyecto.db.proyecto">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".venta"></activity>
<activity android:name=".SegundaActivity"></activity>
<activity android:name=".Reportes"></activity>
</application>
</manifest>
Para poder crear las cabeceras de las tablas que vamos a mostrar debemos crear
los siguientes String-Array dentro del archivo Strings.xml
Vamos a crear dos String Array con los siguientes elementos que van a ponerse
como nombres de columnas al momento de mandar la consulta a la tabla. Las tablas
que van a ocupar estas caberas son de las actividades activity_reportes y
activity_segunda.
<resources>
<string name="app_name">Proyecto</string>
<string-array name="cabecera_tabla">
<item> Color</item>
<item> Tipo</item>
<item> Lts</item>
<item> Cantidad</item>
<item> Precio</item>
<item> SubTotal</item>
</string-array>
<string-array name="cabecera_tabla_reportes">
<item> Venta</item>
<item> Fecha</item>
<item> Total</item>
</string-array>
</resources>
Vamos a seleccionar una pintura de la lista y los valores de los campos litros y
precio van a cambiar. Despus vamos a presionar el botn de Registrar y nos va a
mandar el siguiente mensaje. Vamos a seleccionar otro elemento diferente de la
lista y colocamos nuevamente una cantidad.
Vamos a agregar otra venta el sistema detecta que ahora est en curso la venta 2.
Y agregamos una pintura a esta venta. Pero ahora vamos a poner una cantidad de
11. En la base de datos todas las pinturas en su campo de existencias tienen por
default 10. Por lo que estara violando esta regla. Nos manda este mensaje.
En la base de datos haremos las siguientes consultas para verificar los resultados
de la aplicacin.
Ticket de Venta 1
Total de la venta 1
Ticket Venta 2
Total venta 2
Ahora hacemos un select * from pintura en la base de datos para ver las existencias
de los productos despus de haber hecho 2 ventas.
Conclusiones:
Esta aplicacin agrega ventas segn los productos seleccionados agregndolos a la
tabla de ventas detalle. Tambin controla posibles y comunes errores de usuario al
momento de ingresar un elemento a la venta como pueden ser: Dejar el campo
cantidad vaco o poner una cantidad de 0. Tambin tiene la funcionalidad de no
registrar ninguna venta que no tenga una pintura ingresado, esto lo hace con una
condicin que pregunta el total de esa venta y si la venta es igual a 0 (no tiene
pinturas agregadas) la va a eliminar. Cuando termina de agregar los productos a la
venta puede verificarlos en su ticket de venta. Esta aplicacin tambin cuenta con
una funcin de reportes de ventas generales que puede ser til para el usuario
donde se muestran las fechas y totales de cada venta realizada.