From b94b79c1455746736903358dbaf5bdb86b96fe7f Mon Sep 17 00:00:00 2001 From: Luis Barreto Date: Wed, 16 Dec 2020 20:50:50 -0400 Subject: [PATCH] =?UTF-8?q?Librer=C3=ADa=20Glide=20para=20im=C3=A1genes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ya las fotos no se voltean :D --- app/build.gradle | 2 + .../inventas/adapters/FacturaRVAdapter.java | 9 +- .../listaproductos/CarritoRVAdapter.java | 12 +- .../ListaProductosRVAdapter.java | 7 +- .../inventas/backend/Estadisticas.java | 216 ++++++++---------- .../inventas/backend/Herramientas.java | 143 +++++++----- .../fragments/EstadisticasFragment.java | 12 +- .../fragments/InventarioFragment.java | 2 +- .../ListaProductosVentaFragment.java | 17 +- .../inventas/fragments/VentasFragment.java | 10 +- .../res/inventario_bienvenida/inventarioo.png | Bin 68421 -> 0 bytes 11 files changed, 230 insertions(+), 200 deletions(-) delete mode 100644 app/src/main/res/inventario_bienvenida/inventarioo.png diff --git a/app/build.gradle b/app/build.gradle index e5ef9dc..ee7def8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,4 +50,6 @@ dependencies { //Nuestras dependencias implementation 'org.sqldroid:sqldroid:1.0.3' + implementation 'com.github.bumptech.glide:glide:4.11.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' } \ No newline at end of file diff --git a/app/src/main/java/com/teamihc/inventas/adapters/FacturaRVAdapter.java b/app/src/main/java/com/teamihc/inventas/adapters/FacturaRVAdapter.java index b1339c6..1a6aa41 100644 --- a/app/src/main/java/com/teamihc/inventas/adapters/FacturaRVAdapter.java +++ b/app/src/main/java/com/teamihc/inventas/adapters/FacturaRVAdapter.java @@ -10,6 +10,7 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.teamihc.inventas.R; import com.teamihc.inventas.backend.entidades.ArticuloPxQ; @@ -19,7 +20,6 @@ import static com.teamihc.inventas.backend.Herramientas.formatearMonedaDolar; import static com.teamihc.inventas.backend.Herramientas.getCompressedBitmapImage; -import static com.teamihc.inventas.backend.Herramientas.getImageUriFromPath; public class FacturaRVAdapter extends RecyclerView.Adapter { @@ -54,11 +54,13 @@ public int getItemCount() public class FacturaAdapter extends RecyclerView.ViewHolder { + private View view; CardView cardView; public FacturaAdapter(@NonNull View itemView) { super(itemView); + view = itemView; cardView = (CardView) itemView.findViewById(R.id.info_producto); } @@ -69,8 +71,9 @@ public void asignarDatos(@NotNull ArticuloPxQ articulo) TextView cantidadStock = (TextView) cardView.findViewById(R.id.cantidadStock); TextView subtotal = (TextView) cardView.findViewById(R.id.subtotal); - if (!articulo.getArticulo().getImagen_path().equals("")){ - imagenProd.setImageURI(getImageUriFromPath(articulo.getArticulo().getImagen_path())); + if (!articulo.getArticulo().getImagen_path().equals("")) + { + Glide.with(view).load(articulo.getArticulo().getImagen_path()).into(imagenProd); } descripcion.setText(articulo.getArticulo().getDescripcion()); cantidadStock.setText("" + articulo.getCantidad()); diff --git a/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/CarritoRVAdapter.java b/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/CarritoRVAdapter.java index 1374084..bfd4ab0 100644 --- a/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/CarritoRVAdapter.java +++ b/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/CarritoRVAdapter.java @@ -11,6 +11,7 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.teamihc.inventas.R; import com.teamihc.inventas.activities.CarritoActivity; import com.teamihc.inventas.backend.entidades.Articulo; @@ -104,9 +105,13 @@ public void onClick(View v) public class ListaProductosAdapter extends RecyclerView.ViewHolder { + private View view; + public ListaProductosAdapter(@NonNull View itemView) { super(itemView); + + view = itemView; cardView = (CardView) itemView.findViewById(R.id.info_producto); } @@ -116,9 +121,10 @@ public void asignarDatos(ArticuloPxQ articulo) TextView descripcion = (TextView) cardView.findViewById(R.id.descripcion); TextView cantidadStock = (TextView) cardView.findViewById(R.id.cantidadStock); TextView subtotal = (TextView) cardView.findViewById(R.id.subtotal); - - if (!articulo.getArticulo().getImagen_path().equals("")){ - imagenProd.setImageURI(getImageUriFromPath(articulo.getArticulo().getImagen_path())); + + if (!articulo.getArticulo().getImagen_path().equals("")) + { + Glide.with(view).load(articulo.getArticulo().getImagen_path()).into(imagenProd); } descripcion.setText(articulo.getArticulo().getDescripcion()); cantidadStock.setText("" + articulo.getCantidad()); diff --git a/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/ListaProductosRVAdapter.java b/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/ListaProductosRVAdapter.java index 9f57c8d..7c8a823 100644 --- a/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/ListaProductosRVAdapter.java +++ b/app/src/main/java/com/teamihc/inventas/adapters/listaproductos/ListaProductosRVAdapter.java @@ -11,6 +11,7 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.teamihc.inventas.R; import com.teamihc.inventas.backend.entidades.Articulo; @@ -19,7 +20,6 @@ import static com.teamihc.inventas.backend.Herramientas.formatearMonedaDolar; import static com.teamihc.inventas.backend.Herramientas.formatearMonedaBs; import static com.teamihc.inventas.backend.Herramientas.getCompressedBitmapImage; -import static com.teamihc.inventas.backend.Herramientas.getImageUriFromPath; public abstract class ListaProductosRVAdapter extends RecyclerView.Adapter @@ -61,9 +61,12 @@ public int getItemCount() public class ListaProductosAdapter extends RecyclerView.ViewHolder { + private View view; + public ListaProductosAdapter(@NonNull View itemView) { super(itemView); + view = itemView; cardView = (CardView) itemView.findViewById(R.id.info_producto); } @@ -79,7 +82,7 @@ public void asignarDatos(Articulo articulo) if (imagenProd != null) { if (!articulo.getImagen_path().equals("")){ - imagenProd.setImageURI(getImageUriFromPath(articulo.getImagen_path())); + Glide.with(view).load(articulo.getImagen_path()).into(imagenProd); } } if (descripcion != null) diff --git a/app/src/main/java/com/teamihc/inventas/backend/Estadisticas.java b/app/src/main/java/com/teamihc/inventas/backend/Estadisticas.java index de7c528..a9fe7ea 100644 --- a/app/src/main/java/com/teamihc/inventas/backend/Estadisticas.java +++ b/app/src/main/java/com/teamihc/inventas/backend/Estadisticas.java @@ -18,58 +18,56 @@ public class Estadisticas { /** * @return retorna arreglo de Dates con la fecha del primer y último día de la semana en curso. - * Desde [0] DOMINGO (primer día de la semana). - * Hasta [2] SÁBADO (último día de la semana). + * Desde [0] DOMINGO (primer día de la semana). Hasta [2] SÁBADO (último día de la semana). */ public static Date[] limiteSemana() { Date dias[] = new Date[2]; Calendar c = Calendar.getInstance(); - + c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); dias[0] = c.getTime(); - + c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); c.add(Calendar.DATE, 1); dias[1] = c.getTime(); - + return dias; } - + /** - * * @return retorna arreglo de strings con fecha de cada dia de la semana en curso. */ public static String[] diasSemana() { String dias[] = new String[7]; Calendar c = Calendar.getInstance(); - - + + c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); dias[0] = Herramientas.FORMATO_FECHA.format(c.getTime()); - + c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); dias[1] = Herramientas.FORMATO_FECHA.format(c.getTime()); - + c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); dias[2] = Herramientas.FORMATO_FECHA.format(c.getTime()); - + c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); dias[3] = Herramientas.FORMATO_FECHA.format(c.getTime()); - + c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); dias[4] = Herramientas.FORMATO_FECHA.format(c.getTime()); - + c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); dias[5] = Herramientas.FORMATO_FECHA.format(c.getTime()); - + c.add(Calendar.DATE, 1); dias[6] = Herramientas.FORMATO_FECHA.format(c.getTime()); - + return dias; } - + public static String intToDay(int index) { switch (index) @@ -91,99 +89,88 @@ public static String intToDay(int index) } return null; } - + /** * Calcula la ganancia total en la semana en curso. + * * @return monto de la ganancia obtenida en la semana. */ public static float gananciaTotalSemanal() { float ganancia = 0; String dia[] = diasSemana(); - + for (int i = 0; i < 7; i++) { ganancia += Venta.obtenerGananciaDia(dia[i]); } - + return ganancia; } - + /** - * Guarda en un arreglo la ganancia obtenida cada día. - * [0] Domingo. - * [1] Lunes. - * [2] Martes. - * [3] Miercoles. - * [4] Jueves. - * [5] Viernes. - * [6] Sábado. - * @param gananciaDiaria es el arreglo donde se gruardarán los datos. NOTA: el tamaño del arreglo debe ser siete (7). + * Guarda en un arreglo la ganancia obtenida cada día. [0] Domingo. [1] Lunes. [2] Martes. [3] + * Miercoles. [4] Jueves. [5] Viernes. [6] Sábado. + * + * @param gananciaDiaria es el arreglo donde se gruardarán los datos. NOTA: el tamaño del + * arreglo debe ser siete (7). */ public static void calcularGananciaDiaria(float[] gananciaDiaria) { String dia[] = diasSemana(); - + for (int i = 0; i < 7; i++) gananciaDiaria[i] = Venta.obtenerGananciaDia(dia[i]); } - + /** - * Guarda en un arreglo la ganancia obtenida cada día. - * Posiciones:[0] Domingo. - * [1] Lunes. - * [2] Martes. - * [3] Miercoles. - * [4] Jueves. - * [5] Viernes. - * [6] Sábado. - * @param ingresoDiario es el arreglo donde se gruardarán los datos. NOTA: el tamaño del arreglo debe ser siete (7). + * Guarda en un arreglo la ganancia obtenida cada día. Posiciones:[0] Domingo. [1] Lunes. [2] + * Martes. [3] Miercoles. [4] Jueves. [5] Viernes. [6] Sábado. + * + * @param ingresoDiario es el arreglo donde se gruardarán los datos. NOTA: el tamaño del arreglo + * debe ser siete (7). */ public static void calcularIngresoDiario(float[] ingresoDiario) { String dia[] = diasSemana(); - + for (int i = 0; i < 7; i++) ingresoDiario[i] = Venta.obtenerIngresoDia(dia[i]); } - + /** - * Guarda en un arreglo la cantidad de ventas obtenida cada día. - * Posiciones: - * [0] Domingo. - * [1] Lunes. - * [2] Martes. - * [3] Miércoles. - * [4] Jueves. - * [5] Viernes. - * [6] Sábado. - * @param ventasDiaria es el arreglo donde se gruardarán los datos. NOTA: el tamaño del arreglo debe ser siete (7). + * Guarda en un arreglo la cantidad de ventas obtenida cada día. Posiciones: [0] Domingo. [1] + * Lunes. [2] Martes. [3] Miércoles. [4] Jueves. [5] Viernes. [6] Sábado. + * + * @param ventasDiaria es el arreglo donde se gruardarán los datos. NOTA: el tamaño del arreglo + * debe ser siete (7). */ public static void calcularVentasDiaria(int[] ventasDiaria) { String dia[] = diasSemana(); - + for (int i = 0; i < 7; i++) ventasDiaria[i] = Venta.obtenerVentasDia(dia[i]); } - + /** * Calcula el ingreso total en la semana en curso. + * * @return monto del ingreso obtenid en la semana. */ public static float ingresoTotalSemanal() { float ingreso = 0; String dia[] = diasSemana(); - + for (int i = 0; i < 7; i++) { ingreso += Venta.obtenerIngresoDia(dia[i]); } - + return ingreso; } - + /** * @return string con el nombre del día con mayor ganancia. */ @@ -194,16 +181,16 @@ public static String diaMayorGanancia() calcularGananciaDiaria(gananciasDiarias); float gananciaMayor = gananciasDiarias[0]; int indexDia = 0; - + for (int i = 0; i < 7; i++) if (gananciasDiarias[i] > gananciaMayor) { indexDia = i; } - + return intToDay(indexDia); } - + /** * @return string con el nombre del día con mayor ingreso. */ @@ -214,16 +201,16 @@ public static String diaMayorIngreso() calcularIngresoDiario(ingresosDiarios); float ingresoMayor = ingresosDiarios[0]; int indexDia = 0; - + for (int i = 0; i < 7; i++) if (ingresosDiarios[i] > ingresoMayor) { indexDia = i; } - + return intToDay(indexDia); } - + public static String diaMenorIngreso() { String diaSemana[] = diasSemana(); @@ -231,16 +218,16 @@ public static String diaMenorIngreso() calcularIngresoDiario(ingresosDiarios); float ingresoMenor = ingresosDiarios[0]; int indexDia = 0; - + for (int i = 0; i < 7; i++) if (ingresosDiarios[i] < ingresoMenor) { indexDia = i; } - + return intToDay(indexDia); } - + /** * @return string con el nombre del día con mayor cantidad de ventas. */ @@ -251,17 +238,17 @@ public static String diaMayorCantVentas() calcularVentasDiaria(ventasDiarias); int diaMayor = ventasDiarias[0]; int indexDia = 0; - + for (int i = 0; i < 7; i++) if (ventasDiarias[i] > diaMayor) { indexDia = i; } - + return intToDay(indexDia); } - - + + public static String diaMenorCantVentas() { String diaSemana[] = diasSemana(); @@ -269,16 +256,16 @@ public static String diaMenorCantVentas() calcularVentasDiaria(ventasDiarias); int diaMenor = ventasDiarias[0]; int indexDia = 0; - + for (int i = 0; i < 7; i++) if (ventasDiarias[i] < diaMenor) { indexDia = i; } - + return intToDay(indexDia); } - + /** * @return mayor cantidad de ventas. */ @@ -288,34 +275,33 @@ public static int mayorCantVentas() int ventasDiarias[] = new int[7]; calcularVentasDiaria(ventasDiarias); int diaMayor = ventasDiarias[0]; - + for (int i = 0; i < 7; i++) if (ventasDiarias[i] > diaMayor) { diaMayor = ventasDiarias[i]; } - + return diaMayor; } - + public static int menorCantVentas() { String diaSemana[] = diasSemana(); int ventasDiarias[] = new int[7]; calcularVentasDiaria(ventasDiarias); int diaMenor = ventasDiarias[0]; - + for (int i = 0; i < 7; i++) if (ventasDiarias[i] < diaMenor) { diaMenor = ventasDiarias[i]; } - + return diaMenor; } - + /** - * * @return el mayor ingreso de la semana */ public static float mayorIngreso() @@ -324,18 +310,17 @@ public static float mayorIngreso() float ingresosDiarios[] = new float[7]; calcularIngresoDiario(ingresosDiarios); float diaMayor = ingresosDiarios[0]; - + for (int i = 0; i < 7; i++) if (ingresosDiarios[i] > diaMayor) { diaMayor = ingresosDiarios[i]; } - + return diaMayor; } - + /** - * * @return el menor ingreso de la semana */ public static float menorIngreso() @@ -344,63 +329,59 @@ public static float menorIngreso() float ingresosDiarios[] = new float[7]; calcularIngresoDiario(ingresosDiarios); float diaMenor = ingresosDiarios[0]; - + for (int i = 0; i < 7; i++) if (ingresosDiarios[i] < diaMenor) { diaMenor = ingresosDiarios[i]; } - + return diaMenor; } - - - - + + /** * Calcula el artículo más vendido en un rango de tiempo. + * * @param desde la fecha de inicio del rango (inclusivo). * @param hasta la fecha de fin del rango (inclusivo) - * @return Arreglo de objetos en este orden: - * [0] Instancia del artículo más vendido, - * [1] Integer - unidades vendidas, - * [2] Float - total ganancia producida por sus ventas. + * @return Arreglo de objetos en este orden: [0] Instancia del artículo más vendido, [1] Integer + * - unidades vendidas, [2] Float - total ganancia producida por sus ventas. */ public static Object[] articuloMasVendido(Date desde, Date hasta) { String query = "SELECT d.id_articulo, SUM( d.cantidad ) AS unidades_vendidas, SUM( v.ganancia ) AS total_ganancia " + - "FROM v_detalles_ventas d " + - "INNER JOIN v_ventas v ON (v.id_venta = d.id_venta) " + - "WHERE fecha >= ? AND fecha <= ? " + - "GROUP BY d.id_articulo " + - "ORDER BY unidades_vendidas DESC " + - "LIMIT 1"; + "FROM v_detalles_ventas d " + + "INNER JOIN v_ventas v ON (v.id_venta = d.id_venta) " + + "WHERE fecha >= ? AND fecha <= ? " + + "GROUP BY d.id_articulo " + + "ORDER BY unidades_vendidas DESC " + + "LIMIT 1"; DBOperacion op = new DBOperacion(query); op.pasarParametro(Herramientas.FORMATO_FECHA.format(desde)); op.pasarParametro(Herramientas.FORMATO_FECHA.format(hasta)); DBMatriz resultado = op.consultar(); - - if(resultado.leer()) + + if (resultado.leer()) { ArrayList resultadoQuery = new ArrayList<>(); - resultadoQuery.add(Articulo.obtenerInstancia((int)resultado.getValor("id_articulo"))); - resultadoQuery.add(new Integer((int)resultado.getValor("unidades_vendidas"))); - resultadoQuery.add(new Float((float)resultado.getValor("total_ganancia"))); + resultadoQuery.add(Articulo.obtenerInstancia((int) resultado.getValor("id_articulo"))); + resultadoQuery.add(new Integer((int) resultado.getValor("unidades_vendidas"))); + resultadoQuery.add(new Float((float) resultado.getValor("total_ganancia"))); return resultadoQuery.toArray(); } - + return null; } /** * Calcula el artículo menos vendido en un rango de tiempo. + * * @param desde la fecha de inicio del rango (inclusivo). * @param hasta la fecha de fin del rango (inclusivo) - * @return Arreglo de objetos en este orden: - * [0] Instancia del artículo más vendido, - * [1] Integer - unidades vendidas, - * [2] Float - total ganancia producida por sus ventas. + * @return Arreglo de objetos en este orden: [0] Instancia del artículo más vendido, [1] Integer + * - unidades vendidas, [2] Float - total ganancia producida por sus ventas. */ public static Object[] articuloMenosVendido(Date desde, Date hasta) { @@ -417,12 +398,12 @@ public static Object[] articuloMenosVendido(Date desde, Date hasta) op.pasarParametro(Herramientas.FORMATO_FECHA.format(hasta)); DBMatriz resultado = op.consultar(); - if(resultado.leer()) + if (resultado.leer()) { ArrayList resultadoQuery = new ArrayList<>(); - resultadoQuery.add(Articulo.obtenerInstancia((int)resultado.getValor("id_articulo"))); - resultadoQuery.add(new Integer((int)resultado.getValor("unidades_vendidas"))); - resultadoQuery.add(new Float((float)resultado.getValor("total_ganancia"))); + resultadoQuery.add(Articulo.obtenerInstancia((int) resultado.getValor("id_articulo"))); + resultadoQuery.add(new Integer((int) resultado.getValor("unidades_vendidas"))); + resultadoQuery.add(new Float((float) resultado.getValor("total_ganancia"))); return resultadoQuery.toArray(); } @@ -431,6 +412,7 @@ public static Object[] articuloMenosVendido(Date desde, Date hasta) /** * Calcula las ganancias obtenidas en un día. + * * @param dia que se quiere consultar. * @return ganancias de ese día. */ @@ -439,9 +421,9 @@ public static float gananciasPorDia(Date dia) String query = "SELECT SUM(ganancia) AS ganancia FROM v_ventas WHERE fecha = ?"; DBOperacion op = new DBOperacion(query); op.pasarParametro(Herramientas.FORMATO_FECHA.format(dia)); - + DBMatriz resultados = op.consultar(); - if(resultados.leer()) + if (resultados.leer()) { try { diff --git a/app/src/main/java/com/teamihc/inventas/backend/Herramientas.java b/app/src/main/java/com/teamihc/inventas/backend/Herramientas.java index 7e1eb0b..436168c 100644 --- a/app/src/main/java/com/teamihc/inventas/backend/Herramientas.java +++ b/app/src/main/java/com/teamihc/inventas/backend/Herramientas.java @@ -58,7 +58,7 @@ public class Herramientas public static final String FOMATO_MONEDA_STRING = "###,###,###,##0.00"; public static final String FOMATO_PORCENTAJE_STRING = "#0.00%"; public static final String SIMBOLO_BS = "Bs.S"; - public static final String SIMBOLO_D = "$"; + public static final String SIMBOLO_D = "$"; public static SimpleDateFormat FORMATO_FECHA; public static SimpleDateFormat FORMATO_FECHA_FRONT; @@ -76,7 +76,7 @@ public static void inicializarFormatos() FORMATO_FECHA_FRONT = new SimpleDateFormat(Herramientas.FORMATO_FECHA_FRONT_STRING); FORMATO_TIEMPO = new SimpleDateFormat(Herramientas.FORMATO_TIEMPO_STRING); FORMATO_TIEMPO_FRONT = new SimpleDateFormat(Herramientas.FORMATO_TIEMPO_FRONT_STRING); - FORMATO_FECHATIEMPO = new SimpleDateFormat(Herramientas.FORMATO_FECHA_STRING + " " +Herramientas.FORMATO_TIEMPO_STRING); + FORMATO_FECHATIEMPO = new SimpleDateFormat(Herramientas.FORMATO_FECHA_STRING + " " + Herramientas.FORMATO_TIEMPO_STRING); simbolos = new DecimalFormatSymbols(); simbolos.setDecimalSeparator(','); @@ -85,50 +85,51 @@ public static void inicializarFormatos() FOMATO_MONEDA = new DecimalFormat(FOMATO_MONEDA_STRING, simbolos); FOMATO_PORCENTAJE = new DecimalFormat(FOMATO_PORCENTAJE_STRING, simbolos); } - + public static String formatearDiaFecha(Date fecha) { Calendar calendar = new GregorianCalendar(); calendar.setTime(fecha); int index = calendar.get(Calendar.DAY_OF_WEEK); - - String dia = Estadisticas.intToDay(index -1); - + + String dia = Estadisticas.intToDay(index - 1); + return dia + ", " + Herramientas.FORMATO_FECHA_FRONT.format(fecha); } public static String formatearMoneda(float monto) { - if(monto == 0) + if (monto == 0) return "0"; return FOMATO_MONEDA.format(monto); } public static String formatearMonedaBs(float monto) { - if(monto == 0) + if (monto == 0) return SIMBOLO_BS + " 0"; return SIMBOLO_BS + " " + FOMATO_MONEDA.format(monto); } public static String formatearMonedaDolar(float monto) { - if(monto == 0) + if (monto == 0) return SIMBOLO_D + " 0"; return SIMBOLO_D + " " + FOMATO_MONEDA.format(monto); } public static String formatearPorcentaje(float porcentaje) { - if(porcentaje == 0) + if (porcentaje == 0) return "0%"; - return Herramientas.FOMATO_PORCENTAJE.format(porcentaje/100); + return Herramientas.FOMATO_PORCENTAJE.format(porcentaje / 100); } - /** + /** * Copia un archivo de la carpeta assets del apk a la carpeta /data/data del teléfono. - * @param path ruta del archivo en assets. + * + * @param path ruta del archivo en assets. * @param assetManager asset manager del activity. */ public static void copyFileOrDir(String path, AssetManager assetManager) @@ -140,7 +141,8 @@ public static void copyFileOrDir(String path, AssetManager assetManager) if (assets.length == 0) { copyFile(path, assetManager); - } else + } + else { String fullPath = "/data/data/" + BuildConfig.APPLICATION_ID + "/" + path; File dir = new File(fullPath); @@ -157,6 +159,7 @@ public static void copyFileOrDir(String path, AssetManager assetManager) Log.e("tag", "I/O Exception", ex); } } + private static void copyFile(String filename, AssetManager assetManager) { InputStream in = null; @@ -186,11 +189,12 @@ private static void copyFile(String filename, AssetManager assetManager) } } - + //================================CAPTURAR FOTOS============================================ - - - public static File createImageFile(Activity activity) throws IOException { + + + public static File createImageFile(Activity activity) throws IOException + { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; @@ -200,29 +204,35 @@ public static File createImageFile(Activity activity) throws IOException { ".jpg", /* suffix */ storageDir /* directory */ ); - + // Save a file: path for use with ACTION_VIEW intents return image; } - + public static final int PICTURE_FROM_CAMERA = 0; public static final int PICTURE_FROM_GALLERY = 1; private static String imagen_path = ""; - - public static void imagenDesdeCamara(Activity activity) { + + public static void imagenDesdeCamara(Activity activity) + { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Ensure that there's a camera activity to handle the intent - if (takePictureIntent.resolveActivity(activity.getPackageManager()) != null) { + if (takePictureIntent.resolveActivity(activity.getPackageManager()) != null) + { // Create the File where the photo should go File photoFile = null; - try { + try + { photoFile = createImageFile(activity); - } catch (IOException ex) { + } + catch (IOException ex) + { // Error occurred while creating the File //... } // Continue only if the File was successfully created - if (photoFile != null) { + if (photoFile != null) + { Uri photoURI = FileProvider.getUriForFile(activity, "com.teamihc.inventas.android.fileprovider", photoFile); @@ -232,78 +242,101 @@ public static void imagenDesdeCamara(Activity activity) { } } } - - public static String obtenerPathDeCamara(){ + + public static String obtenerPathDeCamara() + { return imagen_path; } - - public static void imagenDesdeGaleria(Activity activity){ + + public static void imagenDesdeGaleria(Activity activity) + { Intent selectPictureIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); activity.startActivityForResult(Intent.createChooser(selectPictureIntent, "Elija una opcion"), PICTURE_FROM_GALLERY); } @RequiresApi(api = Build.VERSION_CODES.Q) - public static String guardarImgenDeGaleria(Activity activity, Uri uri){ + public static String guardarImgenDeGaleria(Activity activity, Uri uri) + { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File filepath = new File(activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "temp"); File new_file = new File(filepath, "JPEG_" + timeStamp + "_" + System.currentTimeMillis() + ".jpg"); - + InputStream is = null; OutputStream os = null; - try{ + try + { is = activity.getContentResolver().openInputStream(uri); os = new FileOutputStream(new_file); FileUtils.copy(is, os); - } catch (FileNotFoundException e) { + } + catch (FileNotFoundException e) + { e.printStackTrace(); - } catch (IOException e) { + } + catch (IOException e) + { e.printStackTrace(); - }finally { - try { + } + finally + { + try + { is.close(); os.close(); - } catch (IOException e) { + } + catch (IOException e) + { e.printStackTrace(); } } return new_file.getAbsolutePath(); } - + //================================CONSULTAR FOTOS============================================ - - public static Uri getImageUriFromPath(String photoPath) { - if (photoPath.equals("")){return null;} + + public static Uri getImageUriFromPath(String photoPath) + { + if (photoPath.equals("")) + { + return null; + } File f = new File(photoPath); return Uri.fromFile(f); } - - public static int calculateInSampleSize(int width, int heigth) { + + public static int calculateInSampleSize(int width, int heigth) + { final int reqWidth = 300; - final int reqHeight = 300; - + final int reqHeight = 300; + // Raw height and width of image int inSampleSize = 1; - + // Calculate the largest inSampleSize value that is a power of 2 and keeps both // height and width larger than the requested height and width. - while ((heigth / inSampleSize) > reqHeight || (width / inSampleSize) > reqWidth) { + while ((heigth / inSampleSize) > reqHeight || (width / inSampleSize) > reqWidth) + { inSampleSize *= 2; } - + return inSampleSize; } - - public static Bitmap getCompressedBitmapImage(String photoPath){ - - if (photoPath.equals("")){return null;} - + + public static Bitmap getCompressedBitmapImage(String photoPath) + { + + if (photoPath.equals("")) + { + return null; + } + // First decode with inJustDecodeBounds=true to check dimensions BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(photoPath, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options.outWidth, options.outHeight); - + // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options); diff --git a/app/src/main/java/com/teamihc/inventas/fragments/EstadisticasFragment.java b/app/src/main/java/com/teamihc/inventas/fragments/EstadisticasFragment.java index d140b3a..f6a3f49 100644 --- a/app/src/main/java/com/teamihc/inventas/fragments/EstadisticasFragment.java +++ b/app/src/main/java/com/teamihc/inventas/fragments/EstadisticasFragment.java @@ -15,6 +15,7 @@ import androidx.annotation.Nullable; +import com.bumptech.glide.Glide; import com.github.mikephil.charting.charts.BarChart; import com.github.mikephil.charting.components.AxisBase; import com.github.mikephil.charting.components.XAxis; @@ -36,7 +37,6 @@ import java.util.Date; import static com.teamihc.inventas.backend.Herramientas.getCompressedBitmapImage; -import static com.teamihc.inventas.backend.Herramientas.getImageUriFromPath; public class EstadisticasFragment extends Fragment { @@ -51,7 +51,7 @@ public class EstadisticasFragment extends Fragment int[] listaVenta = new int[7]; float[] listaIngresos = new float[7]; String[] opciones = {"Número de ventas", "Ingreso en dólares", "Ganancia en dólares"}; - String[] diasSemana = {"L", "M", "X", "J", "V", "S","D"}; + String[] diasSemana = {"L", "M", "X", "J", "V", "S", "D"}; BarChart barChart; BarDataSet barDataSet; String diaMasV; @@ -104,8 +104,8 @@ public String getFormattedValue(float value) }); cambioVenta.add(b); } - - + + barDataSet = new BarDataSet(cambioVenta, "Cantidad de ventas"); barDataSet.setColor(getResources().getColor(R.color.bars)); YAxis rightYAxis = barChart.getAxisRight(); @@ -325,7 +325,7 @@ private void refrescarEstadisticas() cantidadMasVendido.setText(((int) objMas[1]) + " unidades."); if (!masV.getImagen_path().equals("")) { - imagenMasVendido.setImageURI(getImageUriFromPath(masV.getImagen_path())); + Glide.with(view).load(masV.getImagen_path()).into(imagenMasVendido); } } //verifico que el mas vendido no sea igual al menos vendido @@ -335,7 +335,7 @@ private void refrescarEstadisticas() cantidadMenosVendido.setText(((int) objMenos[1]) + " unidades."); if (!menosV.getImagen_path().equals("")) { - imagenMenosVendido.setImageURI(getImageUriFromPath(menosV.getImagen_path())); + Glide.with(view).load(menosV.getImagen_path()).into(imagenMenosVendido); } } else diff --git a/app/src/main/java/com/teamihc/inventas/fragments/InventarioFragment.java b/app/src/main/java/com/teamihc/inventas/fragments/InventarioFragment.java index 26973bb..f337acd 100644 --- a/app/src/main/java/com/teamihc/inventas/fragments/InventarioFragment.java +++ b/app/src/main/java/com/teamihc/inventas/fragments/InventarioFragment.java @@ -65,7 +65,7 @@ public void onResume() private void ColocarBienvenida() { - if(listaArticulos.isEmpty()) + if (listaArticulos.isEmpty()) { bienvenida.setVisibility(View.VISIBLE); recyclerView.setVisibility(View.GONE); diff --git a/app/src/main/java/com/teamihc/inventas/fragments/ListaProductosVentaFragment.java b/app/src/main/java/com/teamihc/inventas/fragments/ListaProductosVentaFragment.java index 58874c6..32ae821 100644 --- a/app/src/main/java/com/teamihc/inventas/fragments/ListaProductosVentaFragment.java +++ b/app/src/main/java/com/teamihc/inventas/fragments/ListaProductosVentaFragment.java @@ -17,30 +17,31 @@ import java.util.ArrayList; -public class ListaProductosVentaFragment extends Fragment { - +public class ListaProductosVentaFragment extends Fragment +{ + private Toolbar toolbar; private RecyclerView recyclerView; private ArrayList listaArticulos; private CarritoElegirRVAdapter adapter; - + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_lista_productos_venta, container, false); toolbar = (Toolbar) view.findViewById(R.id.toolbar_carrito); //setSupportActionBar(toolbar); - + recyclerView = (RecyclerView) view.findViewById(R.id.listaProductos_recyclerView); - recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),RecyclerView.VERTICAL,false)); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), RecyclerView.VERTICAL, false)); recyclerView.getLayoutManager().setMeasurementCacheEnabled(false); - + listaArticulos = new ArrayList(); Articulo.cargarInventarioEnLista(listaArticulos); - + adapter = new CarritoElegirRVAdapter(listaArticulos, R.layout.view_info_producto); recyclerView.setAdapter(adapter); - + return view; } } diff --git a/app/src/main/java/com/teamihc/inventas/fragments/VentasFragment.java b/app/src/main/java/com/teamihc/inventas/fragments/VentasFragment.java index e8d0aaa..4b04af3 100644 --- a/app/src/main/java/com/teamihc/inventas/fragments/VentasFragment.java +++ b/app/src/main/java/com/teamihc/inventas/fragments/VentasFragment.java @@ -54,7 +54,7 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Venta.cargarVentasDiaEnLista(listaVentas, fechaConsultada); adapter = new ResumenVentaRVAdapter(listaVentas); recyclerView.setAdapter(adapter); - + refrescarGananciasDelDia(); return view; @@ -67,21 +67,21 @@ public void onResume() listaVentas.clear(); Venta.cargarVentasDiaEnLista(listaVentas, fechaConsultada); adapter.notifyDataSetChanged(); - + refrescarGananciasDelDia(); } private void refrescarGananciasDelDia() { ((TextView) view.findViewById(R.id.fechaActual)).setText(Herramientas.formatearDiaFecha(fechaConsultada)); - ((TextView)view.findViewById(R.id.gananciasDelDia)).setText(Herramientas.formatearMonedaDolar(Estadisticas.gananciasPorDia(fechaConsultada))); - + ((TextView) view.findViewById(R.id.gananciasDelDia)).setText(Herramientas.formatearMonedaDolar(Estadisticas.gananciasPorDia(fechaConsultada))); + colocarBienvenida(); } private void colocarBienvenida() { - if(listaVentas.isEmpty()) + if (listaVentas.isEmpty()) { bienvenida.setVisibility(View.VISIBLE); contenido.setVisibility(View.GONE); diff --git a/app/src/main/res/inventario_bienvenida/inventarioo.png b/app/src/main/res/inventario_bienvenida/inventarioo.png deleted file mode 100644 index da55d05375dd55ca599e3f81730403950dbdd726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68421 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
u_gnY8qOnWzw!H_8^}f)6srugVHgUP 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%0DIJ>Sb~ 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