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 da55d05..0000000 Binary files a/app/src/main/res/inventario_bienvenida/inventarioo.png and /dev/null differ