Commit 08caedf9d21ff53f58df650c93fc3613b06a2646

Authored by Mauricio Sanchez
1 parent 2734bbec87
Exists in master

25022020 2126

... ... @@ -67,7 +67,7 @@ dependencies {
67 67 annotationProcessor 'androidx.room:room-compiler:2.2.5'
68 68  
69 69  
70   -
  70 + implementation 'com.afollestad.material-dialogs:bottomsheets:3.2.1'
71 71 implementation 'com.afollestad.material-dialogs:core:3.3.0'
72 72 implementation 'com.afollestad.material-dialogs:input:3.3.0'
73 73 }
74 74 \ No newline at end of file
app/src/main/AndroidManifest.xml
... ... @@ -7,9 +7,9 @@
7 7  
8 8 <application
9 9 android:allowBackup="true"
10   - android:icon="@mipmap/ic_launcher"
  10 + android:icon="@drawable/icono_inventario_big"
11 11 android:label="@string/app_name"
12   - android:roundIcon="@mipmap/ic_launcher_round"
  12 + android:roundIcon="@drawable/icono_inventario_big"
13 13 android:supportsRtl="true"
14 14 android:theme="@style/AppTheme"
15 15 android:usesCleartextTraffic="true">
app/src/main/java/com/focasoftware/deboinventariov20/DB/DAO/ArticulosDAO.kt
... ... @@ -61,6 +61,9 @@ interface InvBodyDAO {
61 61  
62 62 @Query("SELECT * FROM $TABLA_INV_B WHERE INV_NUM =:inven ORDER BY INV_FEI DESC")
63 63 suspend fun fetchAllInvBody(inven:Int): List<InvBody>
  64 +
  65 + @Query("SELECT * FROM $TABLA_INV_B WHERE INV_NUM =:numInventario AND SEC=:sector AND COD=:codigo")
  66 + suspend fun fetchArtInInvBody(sector: String, codigo: String, numInventario: String): InvBody
64 67 }
65 68 @Dao
66 69 interface ServeInvDao {
app/src/main/java/com/focasoftware/deboinventariov20/ui/SplashActivity.kt
... ... @@ -15,7 +15,7 @@ class SplashActivity : Activity() {
15 15 val bac = object : Thread(){
16 16 override fun run(){
17 17 try {
18   - Thread.sleep(500)
  18 + Thread.sleep(5)
19 19 val intent = Intent(baseContext, MainActivity:: class.java)
20 20 startActivity(intent)
21 21 finish()
app/src/main/java/com/focasoftware/deboinventariov20/ui/descripcionFragment/DescripcionFragment.kt
1 1 package com.focasoftware.deboinventariov20.ui.descripcionFragment
2 2  
  3 +import android.app.AlertDialog
3 4 import android.content.Context
4 5 import android.content.SharedPreferences
5 6 import android.graphics.Canvas
... ... @@ -25,9 +26,8 @@ import com.focasoftware.deboinventariov20.Model.Articles
25 26 import com.focasoftware.deboinventariov20.Model.InvBody
26 27 import com.focasoftware.deboinventariov20.R
27 28 import com.focasoftware.deboinventariov20.ui.inventario.InventarioFragment
28   -import kotlinx.coroutines.Dispatchers
29   -import kotlinx.coroutines.launch
30   -import kotlinx.coroutines.withContext
  29 +import kotlinx.android.synthetic.main.login_dialog.view.*
  30 +import kotlinx.coroutines.*
31 31  
32 32 class DescripcionFragment : Fragment() {
33 33 private var artAcargar2: List<Articles>? = null
... ... @@ -40,8 +40,8 @@ class DescripcionFragment : Fragment() {
40 40 private var numeroInventario = 0
41 41 lateinit var navController: NavController
42 42 lateinit var sharedPreferences: SharedPreferences
43   - private var indice=0
44   -
  43 + private var indice = 0
  44 + private var artCargadoEnBD: InvBody? = null
45 45 override fun onCreate(savedInstanceState: Bundle?) {
46 46 super.onCreate(savedInstanceState)
47 47 sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)
... ... @@ -78,29 +78,37 @@ class DescripcionFragment : Fragment() {
78 78 adapter = viewAdapter2
79 79 layoutManager = viewManager2
80 80 }
81   - val itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
  81 + val itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
82 82 override fun onMove(p0: RecyclerView, p1: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
83 83 return false
84 84 }
85 85  
86 86 override fun onSwiped(viewHolder: RecyclerView.ViewHolder, position: Int) {
87   - val type = InputType.TYPE_CLASS_NUMBER
88   - MaterialDialog(requireContext()).show {
89   - title(text = "Producto: ${(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.descripcion}")
90   - message(R.string.sMensajeEncontrado)
91   - input (waitForPositiveButton = false ,hint = "99.99", inputType = type){ materialDialog, charSequence ->
92   - cantidad = 0F
93   - cantidad = charSequence.toString().toFloat()
94   - }
95   -// .input("Cantidad",1,,1,0,InputType.TYPE_CLASS_NUMBER,0,waitForPositiveButton = true,false,positiveButton ())
96   - positiveButton(R.string.btnOk) {
97   - dismiss()
98   - var indice = 0
99   - indice=viewHolder.layoutPosition
  87 +
  88 + var indice = 0
  89 + indice = viewHolder.layoutPosition
  90 + GlobalScope.launch(Dispatchers.Main) {
  91 + //TODO BUSCO EN BASE DE DATOS
  92 + artCargadoEnBD = buscarCodigoDeboEnBD((viewAdapter2 as DescripcionListAdapter).items2?.get(indice)?.sector.toString(),
  93 + (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)?.codigo.toString(),
  94 + numeroInventario.toString())
  95 + if (artCargadoEnBD == null) {
  96 + val type = InputType.TYPE_CLASS_NUMBER
  97 + MaterialDialog(requireContext()).show {
  98 + title(text = "Producto: ${(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.descripcion}")
  99 + message(R.string.sMensajeEncontrado)
  100 + input(waitForPositiveButton = false, hint = "99.99", inputType = type) { materialDialog, charSequence ->
  101 + cantidad = 0F
  102 + cantidad = charSequence.toString().toFloat()
  103 + }
  104 + positiveButton(R.string.btnOk) {
  105 + dismiss()
  106 + }
  107 + }.cancelOnTouchOutside(false).cornerRadius(10F)
100 108  
101 109 val body = InvBody(numeroInventario,
102 110 (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.sector,
103   - // TODO PREPARO PARA MANDAR A CARGAR EN LA BD
  111 + // TODO: PREPARO PARA MANDAR A CARGAR EN LA BD
104 112 (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codigo,
105 113 (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.descripcion,
106 114 cantidad.toString(),
... ... @@ -114,8 +122,39 @@ class DescripcionFragment : Fragment() {
114 122 InventarioFragment().ObtenerFechaActual())
115 123 InsertarArtEnDB(body)// TODO: MANDO A CARGAR A LA BASE DE DATOS
116 124 VolverAinventario()
  125 + } else if (artCargadoEnBD != null) {
  126 +
  127 + val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null)
  128 + val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("Producto '${artCargadoEnBD!!.descripcion}', se encuentra cargado.").setCancelable(false)
  129 + mDialogView.tvCantInicial.text = artCargadoEnBD!!.cantTomada
  130 +
  131 + val mAlertDialog = mBuilder.show()
  132 + mDialogView.rbSumar.setOnClickListener {
  133 + if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) mDialogView.tvNuevaCantidad.setText("0")
  134 + mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() + mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
  135 + }
  136 + mDialogView.rbRestar.setOnClickListener {
  137 + if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) mDialogView.tvNuevaCantidad.setText("0")
  138 + if (mDialogView.tvCantInicial.text.toString().toFloat() <= mDialogView.tvNuevaCantidad.text.toString().toFloat()) {
  139 + mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() - mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
  140 + }
  141 + }
  142 + mDialogView.rbMdodificar.setOnClickListener {
  143 + mDialogView.tvgenerico4.text = (mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
  144 + }
  145 + mDialogView.btnAceptar.setOnClickListener {
  146 + mAlertDialog.dismiss()
  147 + val name = mDialogView.tvgenerico4.text.toString().toFloat()
  148 + //updateCantidad(artCargadoEnBD.sector.toString(),artCargadoEnBD.codigo.toString(), name)
  149 + }
  150 + mDialogView.dialogCancelBtn.setOnClickListener {
  151 + mAlertDialog.dismiss()
  152 + }
  153 +
  154 + VolverAinventario()
117 155 }
118   - }.cancelOnTouchOutside(false).cornerRadius(10F)
  156 + }
  157 +
119 158 }
120 159  
121 160 override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {
... ... @@ -147,7 +186,8 @@ class DescripcionFragment : Fragment() {
147 186 }
148 187 }
149 188 }
150   - fun VolverAinventario(){
  189 +
  190 + fun VolverAinventario() {
151 191  
152 192 val editor = sharedPreferences.edit()
153 193 editor?.putString("Inventario", numeroInventario.toString())
... ... @@ -155,5 +195,22 @@ class DescripcionFragment : Fragment() {
155 195 editor.commit()
156 196 navController.navigate(R.id.action_descripcionFragment_to_inventarioFragment)
157 197 }
  198 +
  199 + suspend fun buscarCodigoDeboEnBD(sector: String, codigo: String, numInventario: String): InvBody? {
  200 + //TODO BUSQUEDA POR CODIGO DE BARRAS
  201 + var busqueda: InvBody? = null
  202 + return GlobalScope.async(Dispatchers.IO) {
  203 + busqueda = AppDb.getAppDb(requireContext())!!.InvBodyDAO()!!.fetchArtInInvBody(sector, codigo, numInventario)
  204 + return@async busqueda
  205 + }.await()
  206 + }
  207 +
  208 + fun updateCantidad(sector: String, codigo: String, cantidad: Float) {
  209 + lifecycleScope.launch {
  210 + withContext(Dispatchers.IO) {
  211 + AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.UpdateInvBody(cantidad, sector, codigo)
  212 + }
  213 + }
  214 + }
158 215 }
159 216  
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/DialogNoEncontrado.kt
... ... @@ -24,8 +24,7 @@ class DialogNoEncontrado : DialogFragment() {
24 24 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
25 25 return activity?.let {
26 26 val args = requireArguments()
27   - val title = args.getString("title")
28   - val s = args.getString("s")
  27 +
29 28  
30 29 val builder: AlertDialog.Builder = AlertDialog.Builder(requireActivity())
31 30 val inflater = requireActivity().layoutInflater;
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/InsertCant.kt
... ... @@ -0,0 +1,19 @@
  1 +package com.focasoftware.deboinventariov20.ui.dialogos
  2 +
  3 +import android.app.Dialog
  4 +import android.content.Context
  5 +import android.view.View
  6 +import android.widget.EditText
  7 +import com.focasoftware.deboinventariov20.R
  8 +
  9 +class InsertCant(ctxt: Context) : Dialog(ctxt) {
  10 +
  11 + private val editT: EditText
  12 + fun get_text(): String {
  13 + return editT.text.toString()
  14 + }
  15 + init {
  16 + super.setContentView(R.layout.ingresar_cantidad)
  17 + editT = super.findViewById<View>(R.id.etCantidad) as EditText
  18 + }
  19 +}
0 20 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/InsertCant.kt
... ... @@ -1,19 +0,0 @@
1   -package com.focasoftware.deboinventariov20.ui.inventario
2   -
3   -import android.app.Dialog
4   -import android.content.Context
5   -import android.view.View
6   -import android.widget.EditText
7   -import com.focasoftware.deboinventariov20.R
8   -
9   -class InsertCant(ctxt: Context) : Dialog(ctxt) {
10   -
11   - private val editT: EditText
12   - fun get_text(): String {
13   - return editT.text.toString()
14   - }
15   - init {
16   - super.setContentView(R.layout.ingresar_cantidad)
17   - editT = super.findViewById<View>(R.id.etCantidad) as EditText
18   - }
19   -}
20 0 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/InventarioFragment.kt
1 1 package com.focasoftware.deboinventariov20.ui.inventario
2 2  
  3 +import android.app.AlertDialog
3 4 import android.content.Context
4 5 import android.content.SharedPreferences
5 6 import android.graphics.Canvas
... ... @@ -31,6 +32,7 @@ import com.focasoftware.deboinventariov20.Model.InvBody
31 32 import com.focasoftware.deboinventariov20.Model.InvHead
32 33 import com.focasoftware.deboinventariov20.R
33 34 import kotlinx.android.synthetic.main.fragment_inventario.*
  35 +import kotlinx.android.synthetic.main.login_dialog.view.*
34 36 import kotlinx.coroutines.*
35 37 import java.time.LocalDateTime
36 38 import java.time.format.DateTimeFormatter
... ... @@ -50,7 +52,7 @@ class InventarioFragment : Fragment() {
50 52 private lateinit var navController: NavController
51 53 private var InventarioNuevo: Int = 0
52 54 private var iEstado = 0
53   - private var iBusquedaPor=0
  55 + private var iBusquedaPor = 0
54 56 private var fCant = 0F
55 57 private var bFirst = false
56 58 private lateinit var deleteIcon: Drawable
... ... @@ -77,7 +79,6 @@ class InventarioFragment : Fragment() {
77 79 rcInventarios = v.findViewById(R.id.rcInventarios)
78 80 val tvTitulo = v.findViewById<TextView>(R.id.tvTitulo)
79 81  
80   -
81 82 if (InventarioNuevo == 0) {// TODO: SI INVETNARIO NUEVO
82 83 GlobalScope.launch(Dispatchers.Main) {
83 84 //TODO: BUSCO EL ULTIMO INVENTARIO EN LA BD PARA PODER CREAR EL PROXIMO
... ... @@ -116,46 +117,36 @@ class InventarioFragment : Fragment() {
116 117 listArticulos[indiceDelArtEncontrado].cantTomada = fCant
117 118 viewAdapter.notifyDataSetChanged()
118 119 } else {
119   - // val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null)
120   - // val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("Login Form").setCancelable(false)
121   - // val mAlertDialog = mBuilder.show()
122   - // mDialogView.dialogLoginBtn.setOnClickListener {
123   - // mAlertDialog.dismiss()
124   - // //get text from EditTexts of custom layout
125   - // val name = mDialogView.dialogNameEt.text.toString()
126   - // val email = mDialogView.dialogEmailEt.text.toString()
127   - // val password = mDialogView.dialogPasswEt.text.toString()
128   - // fCant = 0F
129   - // fCant = name.toFloat()
130   - // }
131   - // mDialogView.dialogCancelBtn.setOnClickListener {
132   - // mAlertDialog.dismiss()
133   - // }
134   - fCant = listArticulos[indiceDelArtEncontrado].cantTomada
135   -
136   - val type = InputType.TYPE_CLASS_NUMBER
137   - MaterialDialog(requireContext()).show {
138   -
139   - title(text = "Producto '$sChangeUpper', se encuentra cargado.")
140   - message(R.string.sMensajeEncontrado)
141   - input(waitForPositiveButton = false, hint = "99.99", inputType = type) { materialDialog, charSequence ->
142   - // val inputField = materialDialog.getInputField()
143   - // val isValid = charSequence.isEmpty()
144   - //
145   - // inputField.error = if (isValid) null else "El campo no puede quedar vacio"
146   - // materialDialog.setActionButtonEnabled(WhichButton.POSITIVE, isValid)
147   - fCant = 0F
148   - fCant = charSequence.toString().toFloat()
  120 + val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null)
  121 + val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("Producto '${listArticulos[indiceDelArtEncontrado].descripcion}', se encuentra cargado.")
  122 + .setCancelable(false)
  123 + mDialogView.tvCantInicial.text = listArticulos[indiceDelArtEncontrado].cantTomada.toString()
  124 + val mAlertDialog = mBuilder.show()
  125 + mDialogView.rbSumar.setOnClickListener {
  126 + if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) mDialogView.tvNuevaCantidad.setText("0")
  127 + mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() + mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
  128 + }
  129 + mDialogView.rbRestar.setOnClickListener {
  130 + if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) mDialogView.tvNuevaCantidad.setText("0")
  131 + if (mDialogView.tvCantInicial.text.toString().toFloat() <= mDialogView.tvNuevaCantidad.text.toString().toFloat()) {
  132 + mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() - mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
149 133 }
150   - positiveButton(R.string.btnOk) {
151   - //TODO ACTUALIZO CANTIADAD EN BD
152   - updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), fCant)
153   - //TODO ACTUALIZO CANTIDAD EN RV
154   - listArticulos[indiceDelArtEncontrado].cantTomada = fCant
155   - viewAdapter.notifyDataSetChanged()
156   - dismiss()
157   - }
158   - }.cancelOnTouchOutside(false).cornerRadius(10F)
  134 + }
  135 + mDialogView.rbMdodificar.setOnClickListener {
  136 + mDialogView.tvgenerico4.text = (mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
  137 + }
  138 + mDialogView.btnAceptar.setOnClickListener {
  139 + mAlertDialog.dismiss()
  140 + val name = mDialogView.tvgenerico4.text.toString().toFloat()
  141 + fCant = 0F
  142 + fCant = name
  143 + listArticulos[indiceDelArtEncontrado].cantTomada = fCant
  144 + updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), fCant)
  145 + viewAdapter.notifyDataSetChanged()
  146 + }
  147 + mDialogView.dialogCancelBtn.setOnClickListener {
  148 + mAlertDialog.dismiss()
  149 + }
159 150 }
160 151  
161 152 } else if (indiceDelArtEncontrado == -1) {// no lo encontro en el RV, lo va a buscar en al BD
... ... @@ -163,7 +154,7 @@ class InventarioFragment : Fragment() {
163 154 GlobalScope.launch(Dispatchers.Main) {
164 155 //TODO BUSCO EN BASE DE DATOS
165 156 val artEncontrado = buscarCBEnBD(sChangeUpper.toUpperCase(Locale.ROOT))
166   - ContinuarCargaCB(artEncontrado)
  157 + ContinuarCargaCB(artEncontrado)//TODO SE MANDA CERO POR QUE ES UN ARTICULO ESCANEADO NUEVO PARA QUE SEA COMPATIBLE
167 158 }
168 159 }
169 160  
... ... @@ -228,31 +219,62 @@ class InventarioFragment : Fragment() {
228 219 listArticulos[indiceDelArtEncontrado].cantTomada = fCant
229 220 viewAdapter.notifyDataSetChanged()
230 221 } else {
231   - fCant = listArticulos[indiceDelArtEncontrado].cantTomada
232   - val type = InputType.TYPE_CLASS_NUMBER
233   - MaterialDialog(requireContext()).show {
234   -
235   - title(text = "Producto '$sChangeUpper', se encuentra cargado.")
236   - message(R.string.sCantidadNueva)
237   - input (waitForPositiveButton = false ,hint = "99.99", inputType = type){ materialDialog, charSequence ->
238   - fCant = 0F
239   - fCant = charSequence.toString().toFloat()
240   - }
241   - positiveButton(R.string.btnOk) {
242   - //TODO ACTUALIZO CANTIADAD EN BD
243   - updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), fCant)
244   - //TODO ACTUALIZO CANTIDAD EN RV
245   - listArticulos[indiceDelArtEncontrado].cantTomada = fCant
246   - viewAdapter.notifyDataSetChanged()
247   - dismiss()
  222 + val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null)
  223 + val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("Producto '${listArticulos[indiceDelArtEncontrado].descripcion}', se encuentra cargado.")
  224 + .setCancelable(false)
  225 + mDialogView.tvCantInicial.text = listArticulos[indiceDelArtEncontrado].cantTomada.toString()
  226 + val mAlertDialog = mBuilder.show()
  227 + mDialogView.rbSumar.setOnClickListener {
  228 + if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) mDialogView.tvNuevaCantidad.setText("0")
  229 + mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() + mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
  230 + }
  231 + mDialogView.rbRestar.setOnClickListener {
  232 + if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) mDialogView.tvNuevaCantidad.setText("0")
  233 + if (mDialogView.tvCantInicial.text.toString().toFloat() <= mDialogView.tvNuevaCantidad.text.toString().toFloat()) {
  234 + mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() - mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
248 235 }
249   - }.cancelOnTouchOutside(false).cornerRadius(10F)
  236 + }
  237 + mDialogView.rbMdodificar.setOnClickListener {
  238 + mDialogView.tvgenerico4.text = (mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString()
  239 + }
  240 + mDialogView.btnAceptar.setOnClickListener {
  241 + mAlertDialog.dismiss()
  242 + val name = mDialogView.tvgenerico4.text.toString().toFloat()
  243 + fCant = 0F
  244 + fCant = name
  245 + listArticulos[indiceDelArtEncontrado].cantTomada = fCant
  246 + updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), fCant)
  247 + viewAdapter.notifyDataSetChanged()
  248 + }
  249 + mDialogView.dialogCancelBtn.setOnClickListener {
  250 + mAlertDialog.dismiss()
  251 + }
  252 +// fCant = listArticulos[indiceDelArtEncontrado].cantTomada
  253 +// val type = InputType.TYPE_CLASS_NUMBER
  254 +// MaterialDialog(requireContext()).show {
  255 +//
  256 +// title(text = "Producto '$sChangeUpper', se encuentra cargado.")
  257 +// message(R.string.sCantidadNueva)
  258 +// input(waitForPositiveButton = false, hint = "99.99", inputType = type) { materialDialog, charSequence ->
  259 +// fCant = 0F
  260 +// fCant = charSequence.toString().toFloat()
  261 +// }
  262 +// positiveButton(R.string.btnOk) {
  263 +// //TODO ACTUALIZO CANTIADAD EN BD
  264 +// updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), fCant)
  265 +// //TODO ACTUALIZO CANTIDAD EN RV
  266 +// listArticulos[indiceDelArtEncontrado].cantTomada = fCant
  267 +// viewAdapter.notifyDataSetChanged()
  268 +// dismiss()
  269 +// }
  270 +// }.cancelOnTouchOutside(false).cornerRadius(10F)
250 271 }
251 272  
252 273 } else if (indiceDelArtEncontrado == -1) {// no lo encontro en el RV, lo va a buscar en al BD
253 274  
254 275 GlobalScope.launch(Dispatchers.Main) {
255 276 //TODO BUSCO EN BASE DE DATOS
  277 + listArticulos[indiceDelArtEncontrado].cantTomada
256 278 val artEncontrado = buscarCBEnBD(sChangeUpper.toUpperCase(Locale.ROOT))
257 279 ContinuarCargaCB(artEncontrado)
258 280 }
... ... @@ -321,21 +343,21 @@ class InventarioFragment : Fragment() {
321 343 ivCamara.setImageResource(R.drawable.codbar)
322 344 etCodigoBarras.hint = "Busqueda por C. Barras"
323 345 swSumaUno.visibility = View.VISIBLE
324   - iBusquedaPor=0
  346 + iBusquedaPor = 0
325 347 iEstado = 1
326 348 }
327 349 1 -> {
328 350 ivCamara.setImageResource(R.drawable.desc)
329 351 etCodigoBarras.hint = "Busqueda por Descripciรณn"
330 352 swSumaUno.visibility = View.GONE
331   - iBusquedaPor=1
  353 + iBusquedaPor = 1
332 354 iEstado = 2
333 355 }
334 356 2 -> {
335 357 ivCamara.setImageResource(R.drawable.cod_origen)
336 358 etCodigoBarras.hint = "Busqueda por C. Origen"
337 359 swSumaUno.visibility = View.GONE
338   - iBusquedaPor=2
  360 + iBusquedaPor = 2
339 361 iEstado = 0
340 362 }
341 363 }
... ... @@ -450,18 +472,19 @@ class InventarioFragment : Fragment() {
450 472  
451 473 private fun ContinuarCargaCB(artAcargar: Articles?) {
452 474  
453   - if (artAcargar != null) {//Si lo encuentra en la BD
454   - if (swSumaUno!!.isChecked) {// SI ESTA +1, PONE CANTIDAD 1
  475 + if (artAcargar != null) {// TODO: Si lo encuentra en la BD
  476 + if (swSumaUno!!.isChecked) {//TODO: SI ESTA +1, PONE CANTIDAD 1
455 477 fCant = 0F
456 478 fCant += 1F
457 479 cargarArtEnBd(artAcargar, fCant)
458 480 cargarRecicler(artAcargar, fCant)
459 481 } else {//SI NO ESTA +1 PREGUNTA CANTIDAD
  482 +
460 483 val type = InputType.TYPE_CLASS_PHONE
461 484 MaterialDialog(requireContext()).show {
462 485  
463 486 title(text = "Producto: $sChangeUpper")
464   - message(R.string.sMensajeEncontrado)
  487 + message(text = "Ingrese la cantidad")
465 488 input(waitForPositiveButton = false, hint = "99.99", inputType = type) { materialDialog, charSequence ->
466 489 // val inputField = materialDialog.getInputField()
467 490 // val isValid = charSequence.isEmpty()
app/src/main/res/drawable-v24/icono_inventario_big.png

13.3 KB

app/src/main/res/layout-land/fragment_configuracion.xml
... ... @@ -0,0 +1,371 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<ScrollView
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + tools:context=".ui.configuracion.ConfiguracionFragment"
  6 + xmlns:android="http://schemas.android.com/apk/res/android"
  7 + android:layout_width="match_parent"
  8 + android:layout_height="wrap_content">
  9 +
  10 +<androidx.constraintlayout.widget.ConstraintLayout
  11 + android:layout_width="match_parent"
  12 + android:layout_height="wrap_content">
  13 +
  14 + <androidx.appcompat.widget.AppCompatTextView
  15 + android:id="@+id/textView2"
  16 + android:layout_width="match_parent"
  17 + android:layout_height="wrap_content"
  18 + android:layout_marginTop="@dimen/MarginTopTitulos"
  19 + android:gravity="center"
  20 + android:lines="1"
  21 + android:text="@string/tvTituloConf"
  22 + android:textColor="@color/colorAccent"
  23 + android:textSize="@dimen/Titulos"
  24 + app:fontFamily="sans-serif-condensed"
  25 + app:layout_constraintBottom_toTopOf="@+id/tvSeleccioneServidor"
  26 + app:layout_constraintEnd_toEndOf="parent"
  27 + app:layout_constraintStart_toStartOf="parent"
  28 + app:layout_constraintTop_toTopOf="parent" />
  29 +
  30 + <TextView
  31 + android:id="@+id/tvSeleccioneServidor"
  32 + android:layout_width="0dp"
  33 + android:layout_height="wrap_content"
  34 +
  35 + android:layout_marginStart="@dimen/MarginBotAgreSer"
  36 + android:layout_marginTop="@dimen/MarginTopSubTitulos"
  37 + android:gravity="start"
  38 + android:lines="1"
  39 + android:text="@string/tvSeleccioneServidor"
  40 + android:textColor="@android:color/black"
  41 + android:textSize="@dimen/SubTitulos"
  42 + app:fontFamily="sans-serif-condensed"
  43 + app:layout_constraintBottom_toTopOf="@+id/spServidor"
  44 + app:layout_constraintEnd_toEndOf="parent"
  45 + app:layout_constraintStart_toStartOf="parent"
  46 + app:layout_constraintTop_toBottomOf="@+id/textView2" />
  47 +
  48 + <Spinner
  49 + android:id="@+id/spServidor"
  50 + android:layout_width="0dp"
  51 + android:layout_height="wrap_content"
  52 + android:backgroundTint="@color/LightGray"
  53 + android:elevation="5dp"
  54 + android:fadeScrollbars="true"
  55 + android:foregroundTint="@android:color/holo_orange_dark"
  56 + android:soundEffectsEnabled="true"
  57 + android:spinnerMode="dialog"
  58 + android:splitMotionEvents="false"
  59 + android:textAlignment="center"
  60 + android:textSize="@dimen/NormalText"
  61 + app:layout_constraintBottom_toTopOf="@+id/btnAgregarServidor"
  62 + app:layout_constraintEnd_toStartOf="@+id/btnValidarServidor"
  63 + app:layout_constraintHorizontal_chainStyle="packed"
  64 + app:layout_constraintStart_toStartOf="parent"
  65 + app:layout_constraintTop_toBottomOf="@+id/tvSeleccioneServidor"
  66 + android:entries="@array/spinnerServidor"
  67 + android:prompt="@string/leyendaSpinner"/>
  68 +
  69 + <Button
  70 + android:id="@+id/btnValidarServidor"
  71 + android:layout_width="wrap_content"
  72 + android:layout_height="wrap_content"
  73 + android:textColor="@android:color/white"
  74 + android:padding="10dp"
  75 + android:background="@drawable/boton_borde_redondeado"
  76 + android:text="@string/btnValidarServidor"
  77 + android:textSize="@dimen/NormalText"
  78 + app:layout_constraintBottom_toTopOf="@+id/btnAgregarServidor"
  79 + app:layout_constraintEnd_toEndOf="parent"
  80 + app:layout_constraintHorizontal_chainStyle="packed"
  81 + app:layout_constraintStart_toEndOf="@id/spServidor"
  82 + app:layout_constraintTop_toBottomOf="@+id/tvSeleccioneServidor" />
  83 +
  84 + <Button
  85 + android:id="@+id/btnAgregarServidor"
  86 + android:layout_width="0dp"
  87 + android:layout_height="wrap_content"
  88 + android:layout_marginStart="@dimen/MarginBotAgreSer"
  89 + android:layout_marginEnd="@dimen/MarginBotAgreSer"
  90 + android:text="@string/btnAgregarServidor"
  91 + android:textSize="@dimen/NormalText"
  92 + android:textColor="@android:color/white"
  93 + android:padding="10dp"
  94 + android:background="@drawable/boton_borde_redondeado"
  95 + app:layout_constraintBottom_toTopOf="@+id/tvUbicacionCarpetas"
  96 + app:layout_constraintEnd_toEndOf="parent"
  97 + app:layout_constraintStart_toStartOf="parent"
  98 + app:layout_constraintTop_toBottomOf="@+id/btnValidarServidor" />
  99 +
  100 +
  101 + <TextView
  102 + android:id="@+id/tvUbicacionCarpetas"
  103 + android:layout_width="0dp"
  104 + android:layout_height="wrap_content"
  105 +
  106 + android:layout_marginStart="@dimen/MarginBotAgreSer"
  107 + android:layout_marginTop="@dimen/MarginTopSubTitulos"
  108 + android:gravity="start"
  109 + android:lines="1"
  110 + android:text="@string/tvUbicacionCarpetas"
  111 + android:textColor="@android:color/black"
  112 + android:textSize="@dimen/SubTitulos"
  113 + app:fontFamily="sans-serif-condensed"
  114 + app:layout_constraintBottom_toTopOf="@+id/ibSearch"
  115 + app:layout_constraintEnd_toEndOf="parent"
  116 + app:layout_constraintStart_toStartOf="parent"
  117 + app:layout_constraintTop_toBottomOf="@+id/btnAgregarServidor" />
  118 +
  119 + <ImageButton
  120 + android:id="@+id/ibSearch"
  121 + android:layout_width="36dp"
  122 + android:layout_height="37dp"
  123 + android:layout_margin="10dp"
  124 + android:src="@drawable/search"
  125 + android:textColor="@android:color/white"
  126 + android:padding="10dp"
  127 + android:background="@drawable/boton_borde_redondeado"
  128 + app:layout_constraintEnd_toStartOf="@+id/etRuta"
  129 + app:layout_constraintStart_toStartOf="parent"
  130 + app:layout_constraintTop_toBottomOf="@+id/tvUbicacionCarpetas" />
  131 +
  132 + <EditText
  133 + android:id="@+id/etRuta"
  134 + android:layout_width="0dp"
  135 + android:layout_height="wrap_content"
  136 + android:layout_marginTop="10dp"
  137 + android:layout_marginEnd="10dp"
  138 + android:clickable="true"
  139 + android:ems="10"
  140 + android:focusable="true"
  141 + android:inputType="textPersonName"
  142 + android:lines="1"
  143 + android:text=""
  144 + android:textSize="@dimen/NormalText"
  145 + app:layout_constraintEnd_toEndOf="parent"
  146 + app:layout_constraintStart_toEndOf="@id/ibSearch"
  147 + app:layout_constraintTop_toBottomOf="@+id/tvUbicacionCarpetas" />
  148 +
  149 + <TextView
  150 + android:id="@+id/tvActuFecha"
  151 + android:layout_width="0dp"
  152 + android:layout_height="wrap_content"
  153 + android:layout_marginStart="@dimen/MarginBotAgreSer"
  154 + android:layout_marginTop="@dimen/MarginTopSubTitulos"
  155 + android:gravity="start"
  156 + android:lines="1"
  157 + android:text="@string/tvTituloArea"
  158 + android:textColor="@android:color/black"
  159 + android:textSize="@dimen/SubTitulos"
  160 + app:fontFamily="sans-serif-condensed"
  161 + app:layout_constraintEnd_toEndOf="parent"
  162 + app:layout_constraintStart_toStartOf="parent"
  163 + app:layout_constraintTop_toBottomOf="@+id/etRuta" />
  164 +
  165 + <RadioGroup
  166 + android:id="@+id/rgFechaHora"
  167 + android:layout_width="0dp"
  168 + android:layout_height="wrap_content"
  169 +
  170 + android:gravity="center"
  171 + android:orientation="horizontal"
  172 + app:layout_constraintEnd_toEndOf="parent"
  173 + app:layout_constraintStart_toStartOf="parent"
  174 + app:layout_constraintTop_toBottomOf="@+id/tvActuFecha">
  175 +
  176 + <RadioButton
  177 + android:id="@+id/rbVentas"
  178 + android:layout_width="wrap_content"
  179 + android:layout_height="wrap_content"
  180 + android:layout_margin="5dp"
  181 + android:checked="true"
  182 + android:padding="5dp"
  183 + android:text="@string/rbVentas"
  184 + android:textSize="@dimen/NormalText" />
  185 +
  186 + <RadioButton
  187 + android:id="@+id/rbDeposito"
  188 + android:layout_width="wrap_content"
  189 + android:layout_height="wrap_content"
  190 + android:layout_margin="5dp"
  191 + android:checked="false"
  192 + android:padding="5dp"
  193 + android:text="@string/rbDeposito"
  194 + android:textSize="@dimen/NormalText" />
  195 +
  196 + </RadioGroup>
  197 +
  198 + <TextView
  199 + android:id="@+id/tvLosProductos"
  200 + android:layout_width="0dp"
  201 + android:layout_height="wrap_content"
  202 +
  203 + android:layout_marginStart="@dimen/MarginBotAgreSer"
  204 + android:layout_marginEnd="@dimen/MarginTopSubTitulos"
  205 + android:gravity="start"
  206 + android:lines="1"
  207 + android:text="@string/tvLosProductos"
  208 + android:textColor="@android:color/black"
  209 + android:textSize="@dimen/SubTitulos"
  210 + app:fontFamily="sans-serif-condensed"
  211 + app:layout_constraintEnd_toEndOf="parent"
  212 + app:layout_constraintStart_toStartOf="parent"
  213 + app:layout_constraintTop_toBottomOf="@+id/rgFechaHora" />
  214 +
  215 + <RadioGroup
  216 + android:id="@+id/rgLosProductos"
  217 + android:layout_width="0dp"
  218 + android:layout_height="wrap_content"
  219 +
  220 + android:gravity="center"
  221 + android:orientation="vertical"
  222 + app:layout_constraintEnd_toEndOf="parent"
  223 + app:layout_constraintStart_toStartOf="parent"
  224 + app:layout_constraintTop_toBottomOf="@+id/tvLosProductos">
  225 +
  226 + <RadioButton
  227 + android:id="@+id/rbProInclu"
  228 + android:layout_width="match_parent"
  229 + android:layout_height="wrap_content"
  230 +
  231 + android:layout_margin="@dimen/PadingCbyRb"
  232 + android:checked="true"
  233 + android:padding="@dimen/PadingCbyRb"
  234 + android:text="@string/rbProInclu"
  235 + android:textSize="@dimen/NormalText" />
  236 +
  237 + <RadioButton
  238 + android:id="@+id/rbProNoInclu"
  239 + android:layout_width="match_parent"
  240 + android:layout_height="wrap_content"
  241 + android:layout_margin="@dimen/PadingCbyRb"
  242 + android:checked="false"
  243 + android:padding="@dimen/PadingCbyRb"
  244 + android:text="@string/rbProNoInclu"
  245 + android:textSize="@dimen/NormalText" />
  246 +
  247 + </RadioGroup>
  248 +
  249 + <CheckBox
  250 + android:id="@+id/cbHabiLectura"
  251 + android:layout_width="0dp"
  252 + android:layout_height="wrap_content"
  253 + android:layout_margin="@dimen/PadingCbyRb"
  254 + android:padding="@dimen/PadingCbyRb"
  255 + android:text="@string/cbHabiLectura"
  256 + android:textSize="@dimen/NormalText"
  257 + app:layout_constraintEnd_toEndOf="parent"
  258 + app:layout_constraintStart_toStartOf="parent"
  259 + app:layout_constraintTop_toBottomOf="@+id/rgLosProductos" />
  260 +
  261 + <CheckBox
  262 + android:id="@+id/cbMostrarStock"
  263 + android:layout_width="0dp"
  264 + android:layout_height="wrap_content"
  265 + android:layout_margin="@dimen/PadingCbyRb"
  266 + android:padding="@dimen/PadingCbyRb"
  267 + android:text="@string/cbMostrarStock"
  268 + android:textSize="@dimen/NormalText"
  269 + app:layout_constraintEnd_toEndOf="parent"
  270 + app:layout_constraintStart_toStartOf="parent"
  271 + app:layout_constraintTop_toBottomOf="@+id/cbHabiLectura" />
  272 +
  273 + <TextView
  274 + android:id="@+id/tvColumMostrar"
  275 + android:layout_width="0dp"
  276 + android:layout_height="wrap_content"
  277 +
  278 + android:layout_marginStart="@dimen/MarginBotAgreSer"
  279 + android:layout_marginEnd="@dimen/MarginTopSubTitulos"
  280 + android:gravity="start"
  281 + android:lines="1"
  282 + android:text="@string/tvColumMostrar"
  283 + android:textColor="@android:color/black"
  284 + android:textSize="@dimen/SubTitulos"
  285 + app:fontFamily="sans-serif-condensed"
  286 + app:layout_constraintEnd_toEndOf="parent"
  287 + app:layout_constraintStart_toStartOf="parent"
  288 + app:layout_constraintTop_toBottomOf="@+id/cbMostrarStock" />
  289 +
  290 + <RadioGroup
  291 + android:id="@+id/rgCodigosMostrar"
  292 + android:layout_width="0dp"
  293 + android:layout_height="wrap_content"
  294 +
  295 + android:gravity="center"
  296 + android:orientation="horizontal"
  297 + app:layout_constraintEnd_toEndOf="parent"
  298 + app:layout_constraintStart_toStartOf="parent"
  299 + app:layout_constraintTop_toBottomOf="@+id/tvColumMostrar">
  300 +
  301 + <RadioButton
  302 + android:id="@+id/rbCodigoDebo"
  303 + android:layout_width="wrap_content"
  304 + android:layout_height="wrap_content"
  305 + android:layout_margin="5dp"
  306 + android:checked="true"
  307 + android:padding="5dp"
  308 + android:text="@string/rbCodigoDebo"
  309 + android:textSize="@dimen/NormalText" />
  310 +
  311 + <RadioButton
  312 + android:id="@+id/rbCodigoOrigen"
  313 + android:layout_width="wrap_content"
  314 + android:layout_height="wrap_content"
  315 + android:layout_margin="5dp"
  316 + android:checked="false"
  317 + android:padding="5dp"
  318 + android:text="@string/rbCodigoOrigen"
  319 + android:textSize="@dimen/NormalText" />
  320 +
  321 + <RadioButton
  322 + android:id="@+id/rbCodigoBarras"
  323 + android:layout_width="wrap_content"
  324 + android:layout_height="wrap_content"
  325 + android:layout_margin="5dp"
  326 + android:padding="5dp"
  327 + android:text="@string/rbCodigoBarras"
  328 + android:textSize="@dimen/NormalText" />
  329 + </RadioGroup>
  330 +
  331 + <CheckBox
  332 + android:id="@+id/cbMostrarExistencia"
  333 + android:layout_width="wrap_content"
  334 + android:layout_height="wrap_content"
  335 + android:layout_margin="@dimen/PadingCbyRb"
  336 + android:padding="@dimen/PadingCbyRb"
  337 + android:text="@string/cbMostrarExistencia"
  338 + android:textSize="@dimen/NormalText"
  339 + android:checked="false"
  340 + app:layout_constraintEnd_toStartOf="@+id/cbMostrarPrecio"
  341 + app:layout_constraintStart_toStartOf="parent"
  342 + app:layout_constraintTop_toBottomOf="@+id/rgCodigosMostrar" />
  343 +
  344 + <CheckBox
  345 + android:id="@+id/cbMostrarPrecio"
  346 + android:layout_width="wrap_content"
  347 + android:layout_height="wrap_content"
  348 + android:layout_margin="@dimen/PadingCbyRb"
  349 + android:padding="@dimen/PadingCbyRb"
  350 + android:text="@string/cbMostrarPrecio"
  351 + android:textSize="@dimen/NormalText"
  352 + android:checked="false"
  353 + app:layout_constraintEnd_toEndOf="parent"
  354 + app:layout_constraintStart_toEndOf="@+id/cbMostrarExistencia"
  355 + app:layout_constraintTop_toBottomOf="@+id/rgCodigosMostrar" />
  356 +
  357 + <Button
  358 + android:id="@+id/btnGuardar"
  359 + android:layout_width="wrap_content"
  360 + android:layout_height="wrap_content"
  361 + android:text="@string/btnGuardar"
  362 + android:textSize="@dimen/NormalText"
  363 + app:layout_constraintEnd_toEndOf="parent"
  364 + android:textColor="@android:color/white"
  365 + android:padding="10dp"
  366 + android:background="@drawable/boton_borde_redondeado"
  367 + app:layout_constraintStart_toStartOf="parent"
  368 + app:layout_constraintTop_toBottomOf="@+id/cbMostrarPrecio" />
  369 +</androidx.constraintlayout.widget.ConstraintLayout>
  370 +
  371 +</ScrollView>
0 372 \ No newline at end of file
app/src/main/res/layout-land/fragment_descripcion.xml
... ... @@ -0,0 +1,59 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +
  3 +
  4 +<androidx.constraintlayout.widget.ConstraintLayout
  5 + xmlns:android="http://schemas.android.com/apk/res/android"
  6 + xmlns:app="http://schemas.android.com/apk/res-auto"
  7 + xmlns:tools="http://schemas.android.com/tools"
  8 + android:layout_width="match_parent"
  9 + android:layout_height="match_parent"
  10 + tools:context=".ui.descripcionFragment.DescripcionFragment">
  11 +
  12 +
  13 + <androidx.recyclerview.widget.RecyclerView
  14 + android:id="@+id/rcDescripcion"
  15 + android:layout_width="match_parent"
  16 + android:layout_height="0dp"
  17 + android:background="@android:color/darker_gray"
  18 + android:scrollbars="vertical"
  19 + app:layout_constraintTop_toBottomOf="@id/guideline4"
  20 + app:layout_constraintBottom_toTopOf="@+id/guideline5"
  21 + app:layout_constraintEnd_toEndOf="parent"
  22 + app:layout_constraintStart_toStartOf="parent"
  23 + tools:listitem="@layout/item" />
  24 +
  25 + <Button
  26 + android:id="@+id/btnSalir"
  27 + android:layout_width="0dp"
  28 + android:layout_height="wrap_content"
  29 + android:text="@string/btnCancelar"
  30 + android:textColor="@android:color/white"
  31 + android:padding="10dp"
  32 + android:background="@drawable/boton_borde_redondeado"
  33 + app:layout_constraintBottom_toBottomOf="@+id/guideline6"
  34 + app:layout_constraintEnd_toEndOf="parent"
  35 + app:layout_constraintHorizontal_chainStyle="spread"
  36 + app:layout_constraintStart_toStartOf="parent"
  37 + app:layout_constraintTop_toBottomOf="@+id/rcInventarios" />
  38 +
  39 + <androidx.constraintlayout.widget.Guideline
  40 + android:id="@+id/guideline4"
  41 + android:layout_width="wrap_content"
  42 + android:layout_height="wrap_content"
  43 + android:orientation="horizontal"
  44 + app:layout_constraintGuide_percent="0.04" />
  45 +
  46 + <androidx.constraintlayout.widget.Guideline
  47 + android:id="@+id/guideline5"
  48 + android:layout_width="wrap_content"
  49 + android:layout_height="wrap_content"
  50 + android:orientation="horizontal"
  51 + app:layout_constraintGuide_percent="0.82" />
  52 +
  53 + <androidx.constraintlayout.widget.Guideline
  54 + android:id="@+id/guideline6"
  55 + android:layout_width="wrap_content"
  56 + android:layout_height="wrap_content"
  57 + android:orientation="horizontal"
  58 + app:layout_constraintGuide_percent="0.97" />
  59 +</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout-land/fragment_inventario.xml
... ... @@ -0,0 +1,167 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + android:id="@+id/frameLayout"
  6 + android:layout_width="match_parent"
  7 + android:layout_height="match_parent"
  8 + tools:context=".ui.inventario.InventarioFragment">
  9 +
  10 +
  11 + <androidx.appcompat.widget.AppCompatTextView
  12 + android:id="@+id/tvTitulo"
  13 + android:layout_width="match_parent"
  14 + android:layout_height="60dp"
  15 + android:layout_marginStart="8dp"
  16 + android:layout_marginTop="15dp"
  17 + android:layout_marginEnd="8dp"
  18 + android:autoSizeMaxTextSize="100sp"
  19 + android:autoSizeMinTextSize="20sp"
  20 + android:autoSizeStepGranularity="5sp"
  21 + android:autoSizeTextType="uniform"
  22 + android:gravity="center"
  23 + android:lines="1"
  24 + android:text="@string/invTitulo"
  25 + android:textColor="@color/colorAccent"
  26 + app:fontFamily="sans-serif-condensed"
  27 + app:layout_constraintBottom_toTopOf="@id/guideline2"
  28 + app:layout_constraintEnd_toEndOf="parent"
  29 + app:layout_constraintStart_toStartOf="parent"
  30 + app:layout_constraintTop_toTopOf="@id/guideline" />
  31 +
  32 +
  33 + <ImageButton
  34 + android:id="@+id/ivCamara"
  35 + android:layout_width="60dp"
  36 + android:layout_height="60dp"
  37 + android:layout_marginTop="15dp"
  38 + android:clickable="true"
  39 + android:contentDescription="@string/ibBusCB"
  40 + android:elevation="5dp"
  41 + android:background="@drawable/boton_redondo"
  42 + android:layout_margin="10dp"
  43 + android:focusable="false"
  44 + android:scaleType="fitEnd"
  45 + app:layout_constraintCircleRadius="40dp"
  46 + android:src="@drawable/codbar"
  47 + app:layout_constraintBottom_toTopOf="@id/guideline3"
  48 + app:layout_constraintEnd_toStartOf="@+id/etCodigoBarras"
  49 + app:layout_constraintHorizontal_bias="0.0"
  50 + app:layout_constraintStart_toStartOf="parent"
  51 + app:layout_constraintTop_toBottomOf="@+id/guideline2" />
  52 +
  53 + <EditText
  54 + android:id="@+id/etCodigoBarras"
  55 + android:layout_width="0dp"
  56 + android:layout_height="wrap_content"
  57 + android:autofillHints=""
  58 + android:clickable="true"
  59 + android:ems="10"
  60 + android:focusable="true"
  61 + android:hint="@string/ibBusCB"
  62 + android:inputType="textPersonName"
  63 + android:lines="1"
  64 + android:textAllCaps="true"
  65 + android:textSize="20sp"
  66 + app:layout_constraintBottom_toTopOf="@+id/guideline3"
  67 + app:layout_constraintEnd_toStartOf="@+id/swSumaUno"
  68 + app:layout_constraintHorizontal_bias="0.49"
  69 + app:layout_constraintHorizontal_chainStyle="packed"
  70 + app:layout_constraintStart_toEndOf="@+id/ivCamara"
  71 + app:layout_constraintTop_toBottomOf="@+id/guideline2" />
  72 +
  73 +
  74 + <Switch
  75 + android:id="@+id/swSumaUno"
  76 + android:layout_width="wrap_content"
  77 + android:layout_height="wrap_content"
  78 + android:text="@string/switch_1"
  79 + app:layout_constraintBaseline_toBaselineOf="@+id/etCodigoBarras"
  80 + app:layout_constraintEnd_toEndOf="parent"
  81 + app:layout_constraintStart_toEndOf="@id/etCodigoBarras"
  82 + tools:ignore="UseSwitchCompatOrMaterialXml" />
  83 +
  84 + <androidx.recyclerview.widget.RecyclerView
  85 + android:id="@+id/rcInventarios"
  86 + android:layout_width="match_parent"
  87 + android:layout_height="0dp"
  88 + android:background="@android:color/darker_gray"
  89 + app:layout_constraintBottom_toBottomOf="@+id/guideline5"
  90 + app:layout_constraintEnd_toEndOf="parent"
  91 + app:layout_constraintStart_toStartOf="parent"
  92 + app:layout_constraintTop_toBottomOf="@+id/guideline4"
  93 + tools:listitem="@layout/item" />
  94 +
  95 +
  96 + <Button
  97 + android:id="@+id/btnExportarInv"
  98 + android:layout_width="wrap_content"
  99 + android:layout_height="wrap_content"
  100 + android:text="@string/btnExportarInv"
  101 + android:textColor="@android:color/white"
  102 + android:padding="10dp"
  103 + android:background="@drawable/boton_borde_redondeado"
  104 + app:layout_constraintBottom_toBottomOf="@+id/guideline6"
  105 + app:layout_constraintEnd_toEndOf="parent"
  106 + app:layout_constraintHorizontal_chainStyle="spread"
  107 + app:layout_constraintStart_toEndOf="@+id/btnBorrarInv"
  108 + app:layout_constraintTop_toBottomOf="@+id/guideline5" />
  109 +
  110 + <Button
  111 + android:id="@+id/btnBorrarInv"
  112 + android:layout_width="wrap_content"
  113 + android:layout_height="wrap_content"
  114 + android:text="@string/btnBorrarInv"
  115 + app:layout_constraintBottom_toBottomOf="@+id/guideline6"
  116 + app:layout_constraintEnd_toStartOf="@id/btnExportarInv"
  117 + app:layout_constraintHorizontal_chainStyle="spread"
  118 + app:layout_constraintStart_toStartOf="parent"
  119 + android:textColor="@android:color/white"
  120 + android:padding="10dp"
  121 + android:background="@drawable/boton_borde_redondeado"
  122 + app:layout_constraintTop_toBottomOf="@+id/guideline5" />
  123 +
  124 + <androidx.constraintlayout.widget.Guideline
  125 + android:id="@+id/guideline"
  126 + android:layout_width="wrap_content"
  127 + android:layout_height="wrap_content"
  128 + android:orientation="horizontal"
  129 + app:layout_constraintGuide_percent="0.02" />
  130 +
  131 + <androidx.constraintlayout.widget.Guideline
  132 + android:id="@+id/guideline2"
  133 + android:layout_width="wrap_content"
  134 + android:layout_height="wrap_content"
  135 + android:orientation="horizontal"
  136 + app:layout_constraintGuide_percent="0.2" />
  137 +
  138 + <androidx.constraintlayout.widget.Guideline
  139 + android:id="@+id/guideline3"
  140 + android:layout_width="wrap_content"
  141 + android:layout_height="wrap_content"
  142 + android:orientation="horizontal"
  143 + app:layout_constraintGuide_percent="0.29" />
  144 +
  145 + <androidx.constraintlayout.widget.Guideline
  146 + android:id="@+id/guideline4"
  147 + android:layout_width="wrap_content"
  148 + android:layout_height="wrap_content"
  149 + android:orientation="horizontal"
  150 + app:layout_constraintGuide_percent="0.35" />
  151 +
  152 + <androidx.constraintlayout.widget.Guideline
  153 + android:id="@+id/guideline5"
  154 + android:layout_width="wrap_content"
  155 + android:layout_height="wrap_content"
  156 + android:orientation="horizontal"
  157 + app:layout_constraintGuide_percent="0.83" />
  158 +
  159 + <androidx.constraintlayout.widget.Guideline
  160 + android:id="@+id/guideline6"
  161 + android:layout_width="wrap_content"
  162 + android:layout_height="wrap_content"
  163 + android:orientation="horizontal"
  164 + app:layout_constraintGuide_percent="0.97" />
  165 +
  166 +
  167 +</androidx.constraintlayout.widget.ConstraintLayout>
0 168 \ No newline at end of file
app/src/main/res/layout-land/fragment_servidores.xml
... ... @@ -0,0 +1,126 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<androidx.constraintlayout.widget.ConstraintLayout
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
  4 + xmlns:app="http://schemas.android.com/apk/res-auto"
  5 + xmlns:tools="http://schemas.android.com/tools"
  6 + android:layout_width="match_parent"
  7 + android:layout_height="match_parent"
  8 + tools:context=".ui.servidores.ServidoresFragment">
  9 +
  10 + <androidx.appcompat.widget.AppCompatTextView
  11 + android:id="@+id/tvTitutloServer"
  12 + android:layout_width="match_parent"
  13 + android:layout_height="60dp"
  14 + android:layout_marginStart="8dp"
  15 + android:layout_marginTop="15dp"
  16 + android:layout_marginEnd="8dp"
  17 + android:autoSizeMaxTextSize="100sp"
  18 + android:autoSizeMinTextSize="20sp"
  19 + android:autoSizeStepGranularity="5sp"
  20 + android:autoSizeTextType="uniform"
  21 + android:gravity="center"
  22 + android:lines="1"
  23 + android:text="@string/tvTitutloServer"
  24 + android:textColor="@color/colorAccent"
  25 + app:fontFamily="sans-serif-condensed"
  26 + app:layout_constraintEnd_toEndOf="parent"
  27 + app:layout_constraintStart_toStartOf="parent"
  28 + app:layout_constraintTop_toTopOf="parent" />
  29 +
  30 + <TextView
  31 + android:id="@+id/tvDirServer"
  32 + android:layout_width="match_parent"
  33 + android:layout_height="wrap_content"
  34 + android:layout_margin="10dp"
  35 + android:gravity="start"
  36 + android:lines="1"
  37 + android:text="@string/tvDirServer"
  38 + android:textColor="@android:color/black"
  39 + android:textSize="@dimen/SubTitulos"
  40 + android:textStyle="bold|italic"
  41 + app:fontFamily="sans-serif-condensed"
  42 + app:layout_constraintBottom_toTopOf="@+id/etDireccionServidor"
  43 + app:layout_constraintEnd_toEndOf="parent"
  44 + app:layout_constraintStart_toStartOf="parent"
  45 + app:layout_constraintTop_toBottomOf="@id/tvTitutloServer" />
  46 +
  47 + <EditText
  48 + android:id="@+id/etDireccionServidor"
  49 + android:layout_width="0dp"
  50 + android:layout_height="wrap_content"
  51 + android:layout_margin="10dp"
  52 + android:clickable="true"
  53 + android:ems="10"
  54 + android:focusable="true"
  55 + android:hint="192.168.10.1:9090"
  56 + android:inputType="text"
  57 + android:lines="1"
  58 + android:textSize="10sp"
  59 + app:layout_constraintEnd_toEndOf="parent"
  60 + app:layout_constraintStart_toStartOf="parent"
  61 + app:layout_constraintTop_toBottomOf="@id/tvDirServer" />
  62 +
  63 + <TextView
  64 + android:id="@+id/tvNomServer"
  65 + android:layout_width="match_parent"
  66 + android:layout_height="wrap_content"
  67 + android:layout_margin="10dp"
  68 + android:gravity="start"
  69 + android:lines="1"
  70 + android:text="@string/tvNomServer"
  71 + android:textColor="@android:color/black"
  72 + android:textSize="@dimen/SubTitulos"
  73 + android:textStyle="bold|italic"
  74 + app:fontFamily="sans-serif-condensed"
  75 + app:layout_constraintEnd_toEndOf="parent"
  76 + app:layout_constraintStart_toStartOf="parent"
  77 + app:layout_constraintTop_toBottomOf="@id/etDireccionServidor" />
  78 +
  79 + <EditText
  80 + android:id="@+id/etNombreServidor"
  81 + android:layout_width="match_parent"
  82 + android:layout_height="wrap_content"
  83 + android:layout_margin="10dp"
  84 + android:autofillHints=""
  85 + android:clickable="true"
  86 + android:ems="10"
  87 + android:focusable="true"
  88 + android:inputType="text"
  89 + android:lines="1"
  90 + android:hint="Servidor Local"
  91 + android:textSize="10sp"
  92 + app:layout_constraintEnd_toEndOf="parent"
  93 + app:layout_constraintStart_toStartOf="parent"
  94 + app:layout_constraintTop_toBottomOf="@+id/tvNomServer" />
  95 +
  96 +
  97 + <androidx.recyclerview.widget.RecyclerView
  98 + android:id="@+id/rvServidores"
  99 + android:layout_width="0dp"
  100 + android:layout_height="0dp"
  101 + android:layout_marginTop="10dp"
  102 + android:background="@android:color/darker_gray"
  103 + app:layout_constraintBottom_toTopOf="@+id/btnGuardarServidores"
  104 + app:layout_constraintEnd_toEndOf="parent"
  105 + app:layout_constraintHorizontal_bias="0.0"
  106 + app:layout_constraintStart_toStartOf="parent"
  107 + app:layout_constraintTop_toBottomOf="@+id/etNombreServidor"
  108 + app:layout_goneMarginEnd="10dp"
  109 + tools:listitem="@layout/item_servidores" />
  110 +
  111 + <Button
  112 + android:id="@+id/btnGuardarServidores"
  113 + android:layout_width="0dp"
  114 + android:layout_height="wrap_content"
  115 + android:layout_marginTop="10dp"
  116 + android:layout_marginEnd="10dp"
  117 + android:text="@string/btnGuardarServidores"
  118 + android:textColor="@android:color/white"
  119 + android:padding="5dp"
  120 + android:background="@drawable/boton_borde_redondeado"
  121 + app:layout_constraintTop_toBottomOf="@+id/rvServidores"
  122 + app:layout_constraintEnd_toEndOf="parent"
  123 + app:layout_constraintStart_toStartOf="parent"
  124 + app:layout_constraintBottom_toBottomOf="parent"/>
  125 +
  126 +</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/fragment_servidores.xml
... ... @@ -65,7 +65,7 @@
65 65 android:layout_width="match_parent"
66 66 android:layout_height="wrap_content"
67 67 android:layout_margin="10dp"
68   - android:gravity="center"
  68 + android:gravity="start"
69 69 android:lines="1"
70 70 android:text="@string/tvNomServer"
71 71 android:textColor="@android:color/black"
app/src/main/res/layout/login_dialog.xml
... ... @@ -11,7 +11,7 @@
11 11 android:layout_width="wrap_content"
12 12 android:layout_height="wrap_content"
13 13 android:layout_margin="5dp"
14   - android:text="La cantidad actual es:"
  14 + android:text="Cantidad actual:"
15 15 android:textSize="20sp"
16 16 app:layout_constraintEnd_toStartOf="@id/tvCantInicial"
17 17 app:layout_constraintHorizontal_bias="0.0"
... ... @@ -24,7 +24,7 @@
24 24 android:layout_width="wrap_content"
25 25 android:layout_height="wrap_content"
26 26 android:layout_margin="5dp"
27   - android:text="20"
  27 + android:text=""
28 28 android:textSize="20sp"
29 29 app:layout_constraintBaseline_toBaselineOf="@+id/dialogNameEt"
30 30 app:layout_constraintEnd_toEndOf="parent"
... ... @@ -36,7 +36,7 @@
36 36 android:layout_width="wrap_content"
37 37 android:layout_height="wrap_content"
38 38 android:layout_margin="5dp"
39   - android:text="Ingrese la nueva cantidad:"
  39 + android:text="Nueva cantidad:"
40 40 android:textSize="20sp"
41 41 app:layout_constraintStart_toStartOf="parent"
42 42 app:layout_constraintTop_toBottomOf="@+id/tvCantInicial" />
... ... @@ -45,11 +45,12 @@
45 45 android:id="@+id/tvNuevaCantidad"
46 46 android:layout_width="0dp"
47 47 android:layout_height="wrap_content"
48   - android:hint="Nueva Cacntidad"
  48 + android:hint=""
49 49 android:inputType="numberDecimal"
50 50 app:layout_constraintBaseline_toBaselineOf="@+id/tvgenerico"
51 51 app:layout_constraintEnd_toEndOf="parent"
52   - app:layout_constraintStart_toEndOf="@id/tvgenerico" />
  52 + app:layout_constraintStart_toEndOf="@id/tvgenerico"
  53 + android:autofillHints="" />
53 54  
54 55 <TextView
55 56 android:id="@+id/tvgenerico2"
... ... @@ -80,7 +81,7 @@
80 81 android:layout_width="wrap_content"
81 82 android:layout_height="wrap_content"
82 83 android:layout_margin="5dp"
83   - android:checked="true"
  84 + android:checked="false"
84 85 android:padding="5dp"
85 86 android:text="@string/rbSumar"
86 87 android:textSize="@dimen/text_size2" />
... ... @@ -125,7 +126,7 @@
125 126 android:layout_height="wrap_content"
126 127 android:layout_margin="5dp"
127 128 android:gravity="center"
128   - android:text="50"
  129 + android:text=""
129 130 android:textSize="20sp"
130 131 app:layout_constraintEnd_toEndOf="parent"
131 132 app:layout_constraintHorizontal_bias="0.0"
... ... @@ -142,7 +143,7 @@
142 143 app:layout_constraintTop_toBottomOf="@+id/tvgenerico4">
143 144  
144 145 <Button
145   - android:id="@+id/dialogLoginBtn"
  146 + android:id="@+id/btnAceptar"
146 147 style="@style/Base.Widget.AppCompat.Button.Colored"
147 148 android:layout_width="wrap_content"
148 149 android:textColor="@android:color/white"
app/src/main/res/values/strings.xml
1 1 <resources>
2 2  
3   - <string name="nav_header_title">Android Studio</string>
4   - <string name="nav_header_subtitle">android.studio@android.com</string>
5   - <string name="nav_header_desc">Navigation header</string>
6   - <string name="action_settings">Settings</string>
7   -
8   - <string name="menu_home">Home</string>
9   - <string name="menu_gallery">Gallery</string>
10   - <string name="menu_slideshow">Slideshow</string>
11   -
12   - <string name="app_name">Inventario Dinamicos</string>
  3 + <string name="action_settings">Ayuda</string>
  4 + <string name="app_name">DEBO Inventarios</string>
13 5  
14 6 <!-- menu-->
15 7 <string name="menuInicio">Inicio</string>
... ... @@ -131,7 +123,7 @@
131 123 <string name="rbRestar">Restar</string>
132 124 <string name="rbModificar">Reemplazar</string>
133 125 <string name="tvTotal">Cantidad Final</string>tvTotal
134   - <string name="tvResultado">La cantidad final es:</string>tvTotal
  126 + <string name="tvResultado">Cantidad final:</string>tvTotal
135 127  
136 128 <string name="large_text">
137 129 "Material is the metaphor.\n\n"