diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8303cbd --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..3b31283 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9a45b67..3ef0d6c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,8 +43,8 @@ android:label="@string/title_activity_recepciones" > + android:name=".MovArticuloSerie" + android:label="@string/title_activity_mov_articulo_serie" > diff --git a/app/src/main/java/es/incaser/apps/stockcontrol/BarcodeReader.java b/app/src/main/java/es/incaser/apps/stockcontrol/BarcodeReader.java index 166cfdc..f5a8a3b 100644 --- a/app/src/main/java/es/incaser/apps/stockcontrol/BarcodeReader.java +++ b/app/src/main/java/es/incaser/apps/stockcontrol/BarcodeReader.java @@ -6,12 +6,17 @@ import android.database.Cursor; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; import android.text.util.Linkify; +import android.util.Log; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ImageButton; @@ -22,7 +27,7 @@ import java.util.UUID; -public class BarcodeReader extends ActionBarActivity { +public class BarcodeReader extends ActionBarActivity{ String tipoMov; String serieMov; String documentoMov; @@ -74,15 +79,38 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } + public void addListenerOnButtonRead() { btnReader = (ImageButton) findViewById(R.id.btn_read); txtBarcode = (EditText) findViewById(R.id.txt_barcodeReader); + txtBarcode.setOnKeyListener(new View.OnKeyListener() { + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + if (event.getAction() == KeyEvent.ACTION_UP){ + switch (keyCode) { + case KeyEvent.KEYCODE_ENTER: +// if (txtBarcode.getText().toString().length() < 13) { +// txtBarcode.setText(String.format("%013d", Long.parseLong(txtBarcode.getText().toString()))); +// } + leerCodigo(txtBarcode.getText().toString()); + txtBarcode.setText(""); + return true; + default: + break; + } + } + return false; + } + }); + + btnReader.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (txtBarcode.getText().toString().length() > 10){ leerCodigo(txtBarcode.getText().toString()); + txtBarcode.setText(""); }else { Toast.makeText(v.getContext(), "Código demasiado corto", Toast.LENGTH_SHORT).show(); } @@ -94,6 +122,17 @@ public void linkListViewMovimientoStock(){ lvMovimientoStock = (ListView) findViewById(R.id.lv_movimientoStock); movStockAdapter = new MovStockAdapter(this); lvMovimientoStock.setAdapter(movStockAdapter); + lvMovimientoStock.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + Intent intent = new Intent(view.getContext(), MovArticuloSerie.class); + intent.putExtra("tipoMov", tipoMov); + intent.putExtra("serieMov", serieMov); + intent.putExtra("documentoMov", documentoMov); + intent.putExtra("codArticulo", movStockAdapter.getMovimiento("CodigoArticulo")); + startActivity(intent); + } + }); } public void linkButtonCamera() { @@ -132,7 +171,7 @@ private void updateUITextViews(String scan_result, String scan_result_format) { public class MovStockAdapter extends BaseAdapter{ Context context; Cursor cursor; - + public MovStockAdapter(Context ctx){ context = ctx; dbAdapter = new DbAdapter(context); @@ -202,7 +241,8 @@ public View getView(int position, View convertView, ViewGroup parent) { private String getMovimiento(String column) { return cursor.getString(cursor.getColumnIndex(column)); - } + } + } private void leerCodigo(String barCode){ diff --git a/app/src/main/java/es/incaser/apps/stockcontrol/DbAdapter.java b/app/src/main/java/es/incaser/apps/stockcontrol/DbAdapter.java index 132f116..680e278 100644 --- a/app/src/main/java/es/incaser/apps/stockcontrol/DbAdapter.java +++ b/app/src/main/java/es/incaser/apps/stockcontrol/DbAdapter.java @@ -349,6 +349,13 @@ public Cursor getMovArticuloSerieByDoc(String codigoEmpresa, String tipoMovimien return cur; } + public Cursor getMovArticuloSerieByDoc(String codigoEmpresa, String tipoMovimiento, String serie, String documento, String articulo) { + String where ="CodigoEmpresa=? AND OrigenDocumento=? AND SerieDocumento=? AND Documento=? AND CodigoArticulo=?"; + Cursor cur = db.query("MovimientoArticuloSerie", new String[]{"*"}, where, + new String[]{codigoEmpresa, TipoMovimiento.origenMov(tipoMovimiento), serie, documento, articulo}, "", "", ""); + return cur; + } + public void updateUnidadesMovStock(String codigoEmpresa, String tipoMovimiento, String serie, String documento) { String sql = "UPDATE MovimientoStock SET Unidades = (SELECT COUNT(id) " + "FROM MovimientoArticuloSerie " + @@ -512,22 +519,6 @@ SQLiteDatabase getDb() { return db; } - public Cursor getUltimoArqueo(String empresa, String establecimiento, String maquina) { - String[] cols = new String[]{"INC_FechaRecaudacion", "INC_ValorArqueoTeorico"}; - String where = "INC_ArqueoRealizado<>0 AND CodigoEmpresa=? AND INC_CodigoEstablecimiento=? AND INC_CodigoMaquina=?"; - String[] whereArgs = new String[]{empresa, establecimiento, maquina}; - - return db.query("RecaudacionesAnteriores", cols, where, whereArgs, "", "", "INC_FechaRecaudacion DESC, INC_HoraRecaudacion DESC", "1"); - } - - public Cursor getUltimaRecaudacion(String empresa, String establecimiento, String maquina) { - String[] cols = new String[]{"*"}; - String where = "CodigoEmpresa=? AND INC_CodigoEstablecimiento=? AND INC_CodigoMaquina=?"; - String[] whereArgs = new String[]{empresa, establecimiento, maquina}; - - return db.query("RecaudacionesAnteriores", cols, where, whereArgs, "", "", "INC_FechaRecaudacion DESC, INC_HoraRecaudacion DESC", "1"); - } - public Cursor getIncidencias(String empresa, String establecimiento, String maquina) { return getIncidencias(empresa, establecimiento, maquina, false); } @@ -550,73 +541,4 @@ public Cursor getIncidencia(long idIncidencia) { return db.query("INC_Incidencias", cols, where, whereArgs, "", "", ""); } - - - public Cursor getRecuperacionesPrestamo(String empresa, String codigoPrestamo) { - String[] cols = new String[]{"*"}; - String where = "CodigoEmpresa=? AND INC_CodigoPrestamo=?"; - String[] whereArgs = new String[]{empresa, codigoPrestamo}; - - return db.query("INC_RecuperacionesPrestamo", cols, where, whereArgs, - "", "", "INC_FechaRecuperacion DESC"); - } - - public Cursor getSumasDesde(String empresa, String establecimiento, String maquina, String fechaDesde) { - String[] cols = new String[]{"SUM(INC_Bruto) AS SumaBruto", - "SUM(INC_JugadoTeorico) AS SumaJugadoTeorico", - "SUM(INC_PremioTeorico) AS SumaPremioTeorico", - "SUM(INC_ImporteRetencion) AS SumaImporteRetencion", - "SUM(INC_RecuperaCargaEmpresa) AS SumaRecuperaCargaEmpresa", - "SUM(INC_RecuperaCargaEstablecimiento) AS SumaRecuperaCargaEstablecimiento", - "SUM(INC_CargaHopperEmpresa) AS SumaCargaHopperEmpresa", - "SUM(INC_CargaHopperEstablecimiento) AS SumaCargaHopperEstablecimiento"}; - String where = "CodigoEmpresa=? AND INC_CodigoEstablecimiento=? AND INC_CodigoMaquina=? AND INC_FechaRecaudacion > ?"; - String[] whereArgs = new String[]{empresa, establecimiento, maquina, fechaDesde}; - - return db.query("RecaudacionesAnteriores", cols, where, whereArgs, "", "", "INC_FechaRecaudacion DESC, INC_HoraRecaudacion DESC", "1"); - } - - public void deleteRecaudacion(String idRecaudacion) { - db.delete("INC_LineasRecaudacion", "id=?", new String[]{idRecaudacion}); - } - - public void deleteCabRecaudacion(String idCabRecaudacion) { - db.delete("INC_CabeceraRecaudacion", "id=?", new String[]{idCabRecaudacion}); - } - - public void deleteRecuperacion(String idRecuperacion) { - db.delete("INC_RecuperacionesPrestamo", "id=?", new String[]{idRecuperacion}); - } - - public float getTotalRecuperaPrestamo(String codigoRecaudacion) { - String[] cols = new String[]{"SUM(ImporteLiquido) AS SumaImporteLiquido"}; - String where = "INC_CodigoRecaudacion=?"; - String[] whereArgs = new String[]{codigoRecaudacion}; - - Cursor cur = db.query( "INC_RecuperacionesPrestamo", cols, where, whereArgs, "", "", ""); - if (cur.moveToFirst()){ - return cur.getFloat(0); - }else { - return 0; - } - } - - public Cursor getTotalRecaudadoAll() { - String[] campos = new String[]{ - "SUM(INC_TotalRecaudacion) AS INC_TotalRecaudacion", - "SUM(INC_TotalRetencion) AS INC_TotalRetencion", - "SUM(INC_TotalNeto) AS INC_TotalNeto", - "SUM(INC_TotalEstablecimiento) AS INC_TotalEstablecimiento", - "SUM(INC_TotalNetoMasRetencion) AS INC_TotalNetoMasRetencion", - "SUM(INC_TotalRecuperaCarga) AS INC_TotalRecuperaCarga", - "SUM(INC_TotalRecuperaPrestamo) AS INC_TotalRecuperaPrestamo", - "SUM(INC_TotalSaldo) AS INC_TotalSaldo", - "SUM(INC_MaquinasRecaudadas) AS INC_MaquinasRecaudadas" - }; - String where = ""; - String[] whereArgs = new String[]{}; - - return db.query( "INC_CabeceraRecaudacion", campos, where, whereArgs, "", "", ""); - } - } diff --git a/app/src/main/java/es/incaser/apps/stockcontrol/MovArticuloSerie.java b/app/src/main/java/es/incaser/apps/stockcontrol/MovArticuloSerie.java new file mode 100644 index 0000000..bcdcad4 --- /dev/null +++ b/app/src/main/java/es/incaser/apps/stockcontrol/MovArticuloSerie.java @@ -0,0 +1,153 @@ +package es.incaser.apps.stockcontrol; + +import android.content.Context; +import android.database.Cursor; +import android.support.v7.app.ActionBarActivity; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ListView; +import android.widget.TextView; + + +public class MovArticuloSerie extends ActionBarActivity { + ListView lvMovArticuloSerie; + MovArticuloSerieAdapter movArticuloSerieAdapter; + DbAdapter dbAdapter; + String tipoMov; + String serieMov; + String documentoMov; + String codArticulo; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_mov_articulo_serie); + + getInitParams(); + } + + void getInitParams(){ + Bundle bundle = getIntent().getExtras(); + tipoMov = bundle.getString("tipoMov"); + serieMov = bundle.getString("serieMov",""); + documentoMov = bundle.getString("documentoMov",""); + codArticulo = bundle.getString("codArticulo",""); + + lvMovArticuloSerie = (ListView) findViewById(R.id.lv_mov_articulo_serie); + movArticuloSerieAdapter = new MovArticuloSerieAdapter(this); + lvMovArticuloSerie.setAdapter(movArticuloSerieAdapter); + } + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_mov_articulo_serie, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + public class MovArticuloSerieAdapter extends BaseAdapter { + Context context; + Cursor cursor; + + public MovArticuloSerieAdapter(Context ctx) { + context = ctx; + dbAdapter = new DbAdapter(context); + cursor = dbAdapter.getMovArticuloSerieByDoc(MainActivity.codigoEmpresa, tipoMov, + serieMov, documentoMov, codArticulo); + cursor.moveToFirst(); + } + + @Override + public int getCount() { + return cursor.getCount(); + } + + @Override + public Object getItem(int position) { + cursor.moveToPosition(position); + return cursor; + } + + @Override + public long getItemId(int position) { + cursor.moveToPosition(position); + return cursor.getLong(cursor.getColumnIndex("id")); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View myView = null; + + if (convertView == null) { + LayoutInflater myInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + myView = myInflater.inflate(R.layout.item_mov_art_serie, null); + } else { + myView = convertView; + } + cursor.moveToPosition(position); + + TextView txtSubFamilia = (TextView) myView.findViewById(R.id.tv_mov_art_serie_articulo); + TextView txtGramaje = (TextView) myView.findViewById(R.id.tv_mov_art_serie_gramaje); + TextView txtAncho = (TextView) myView.findViewById(R.id.tv_mov_art_serie_ancho); + TextView txtDiametro = (TextView) myView.findViewById(R.id.tv_mov_art_serie_diametro); + TextView txtPeso = (TextView) myView.findViewById(R.id.tv_mov_art_serie_peso); + TextView txtLongitud = (TextView) myView.findViewById(R.id.tv_mov_art_serie_longitud); + TextView txtAnoBobina = (TextView) myView.findViewById(R.id.tv_mov_art_serie_ano); + TextView txtStatusSync = (TextView) myView.findViewById(R.id.tv_mov_art_serie_status_sync); + TextView txtNumSerie = (TextView) myView.findViewById(R.id.tv_mov_art_serie_num_serie); + + txtSubFamilia.setText(getRecord("CodigoSubfamilia")); + txtGramaje.setText(getRecord("PesoNetoUnitario_")); + txtAncho.setText(getRecord("VolumenUnitario_")); + txtDiametro.setText(getRecord("CodigoTalla01_")); + txtPeso.setText(getRecord("TBL_Peso")); + txtLongitud.setText(getRecord("TBL_Longitud")); + txtAnoBobina.setText(getRecord("TBL_AnoBobina")); + txtNumSerie.setText(getRecord("NumeroSerieLc")); + + String statusSync =getRecord("StatusAndroidSync"); + txtStatusSync.setText(StatusSync.getSyncDescription(statusSync, myView.getContext())); + + switch (statusSync){ + case StatusSync.PREVISTO: + txtStatusSync.setBackgroundColor(getResources().getColor(R.color.status_previsto)); + break; + case StatusSync.ESCANEADO: + txtStatusSync.setBackgroundColor(getResources().getColor(R.color.status_escaneado)); + break; + case StatusSync.PARA_CREAR: + txtStatusSync.setBackgroundColor(getResources().getColor(R.color.status_para_crear)); + break; + default: + txtStatusSync.setBackgroundColor(getResources().getColor(R.color.white)); + } + return myView; + } + + public String getRecord(String column) { + return cursor.getString(cursor.getColumnIndex(column)); + } + } +} diff --git a/app/src/main/java/es/incaser/apps/stockcontrol/MovArticuloSerieDetail.java b/app/src/main/java/es/incaser/apps/stockcontrol/MovArticuloSerieDetail.java deleted file mode 100644 index c82c89e..0000000 --- a/app/src/main/java/es/incaser/apps/stockcontrol/MovArticuloSerieDetail.java +++ /dev/null @@ -1,39 +0,0 @@ -package es.incaser.apps.stockcontrol; - -import android.support.v7.app.ActionBarActivity; -import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; - - -public class MovArticuloSerieDetail extends ActionBarActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_mov_articulo_serie_detail); - } - - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.menu_mov_articulo_serie_detail, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - return true; - } - - return super.onOptionsItemSelected(item); - } -} diff --git a/app/src/main/java/es/incaser/apps/stockcontrol/StatusSync.java b/app/src/main/java/es/incaser/apps/stockcontrol/StatusSync.java index 8807f20..c5c1296 100644 --- a/app/src/main/java/es/incaser/apps/stockcontrol/StatusSync.java +++ b/app/src/main/java/es/incaser/apps/stockcontrol/StatusSync.java @@ -1,16 +1,52 @@ package es.incaser.apps.stockcontrol; +import android.content.Context; + /** * Created by sergio on 9/01/15. */ public class StatusSync { - public static String PEND_IMPORTAR = "-2"; - public static String IMPORTANDO = "-1"; - public static String PREVISTO = "0"; - public static String ESCANEADO = "1"; - public static String EXPORTANDO = "2"; - public static String EXPORTADO = "3"; - public static String SYNC_SAICA = "4"; - public static String PARA_CREAR = "98"; - public static String NOT_INSQL = "99"; + public static final String PEND_IMPORTAR = "-2"; + public static final String IMPORTANDO = "-1"; + public static final String PREVISTO = "0"; + public static final String ESCANEADO = "1"; + public static final String EXPORTANDO = "2"; + public static final String EXPORTADO = "3"; + public static final String SYNC_SAICA = "4"; + public static final String PARA_CREAR = "98"; + public static final String NOT_INSQL = "99"; + + public static String getSyncDescription(String statusSync, Context ctx){ + String res = ""; + switch (statusSync){ + case PEND_IMPORTAR: + res = ctx.getResources().getString(R.string.status_sync_pend_importar); + break; + case IMPORTANDO: + res = ctx.getResources().getString(R.string.status_sync_importando); + break; + case PREVISTO: + res = ctx.getResources().getString(R.string.status_sync_previsto); + break; + case ESCANEADO: + res = ctx.getResources().getString(R.string.status_sync_escaneado); + break; + case EXPORTANDO: + res = ctx.getResources().getString(R.string.status_sync_exportando); + break; + case EXPORTADO: + res = ctx.getResources().getString(R.string.status_sync_exportado); + break; + case SYNC_SAICA: + res = ctx.getResources().getString(R.string.status_sync_sync_saica); + break; + case PARA_CREAR: + res = ctx.getResources().getString(R.string.status_sync_para_crear); + break; + case NOT_INSQL: + res = ctx.getResources().getString(R.string.status_sync_not_insql); + break; + } + return res; + } } diff --git a/app/src/main/res/layout/activity_barcode_reader.xml b/app/src/main/res/layout/activity_barcode_reader.xml index 69c7a30..7313a5c 100644 --- a/app/src/main/res/layout/activity_barcode_reader.xml +++ b/app/src/main/res/layout/activity_barcode_reader.xml @@ -23,8 +23,8 @@ android:layout_width="match_parent" android:layout_height="fill_parent" android:padding="15dp" - android:text="44671420222703" - android:inputType="number" /> + android:inputType="number" + android:hint="Codigo Barras" /> - - + tools:context="es.incaser.apps.stockcontrol.MovArticuloSerie"> + + diff --git a/app/src/main/res/layout/item_mov_art_serie.xml b/app/src/main/res/layout/item_mov_art_serie.xml new file mode 100644 index 0000000..e64e82a --- /dev/null +++ b/app/src/main/res/layout/item_mov_art_serie.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_mov_articulo_serie.xml b/app/src/main/res/menu/menu_mov_articulo_serie.xml new file mode 100644 index 0000000..eb37b35 --- /dev/null +++ b/app/src/main/res/menu/menu_mov_articulo_serie.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index be124f8..a698abc 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,4 +5,7 @@ #fff #ffd9d8d7 #ffff8843 + #ffd9fff7 + #ffb0ff68 + #ff5338ff \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 505eee8..1d396b3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -34,5 +34,15 @@ Soft sync Recepciones Detalle movimiento + Mov. Series + PREVISTO + PENDIENTE IMPORTAR + IMPORTANDO + ESCANEADO + EXPORTANDO + EXPORTADO + SINCRONIZADO CON SAICA + PARA CREAR + NO EN SQL