Commit c1c9b23894b1638b33e222f229a8e2d5f8366689
1 parent
ea6d4ed726
Exists in
master
06092020 2207
Showing
24 changed files
with
534 additions
and
457 deletions
Show diff stats
app/build.gradle
| 1 | 1 | apply plugin: 'com.android.application' |
| 2 | 2 | apply plugin: 'kotlin-android' |
| 3 | 3 | apply plugin: 'kotlin-android-extensions' |
| 4 | -apply plugin: 'kotlin-kapt' | |
| 4 | + | |
| 5 | 5 | |
| 6 | 6 | android { |
| 7 | 7 | compileSdkVersion 30 |
| ... | ... | @@ -44,7 +44,7 @@ dependencies { |
| 44 | 44 | implementation 'androidx.appcompat:appcompat:1.2.0' |
| 45 | 45 | implementation 'androidx.legacy:legacy-support-v4:1.0.0' |
| 46 | 46 | implementation 'com.google.android.material:material:1.2.0' |
| 47 | - implementation 'androidx.constraintlayout:constraintlayout:2.0.0' | |
| 47 | + implementation 'androidx.constraintlayout:constraintlayout:2.0.1' | |
| 48 | 48 | implementation 'androidx.navigation:navigation-fragment:2.3.0' |
| 49 | 49 | implementation 'androidx.navigation:navigation-ui:2.3.0' |
| 50 | 50 | implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' |
| ... | ... | @@ -52,14 +52,14 @@ dependencies { |
| 52 | 52 | implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' |
| 53 | 53 | implementation 'androidx.recyclerview:recyclerview:1.1.0' |
| 54 | 54 | testImplementation 'junit:junit:4.13' |
| 55 | - androidTestImplementation 'androidx.test.ext:junit:1.1.1' | |
| 56 | - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' | |
| 55 | + androidTestImplementation 'androidx.test.ext:junit:1.1.2' | |
| 56 | + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' | |
| 57 | 57 | |
| 58 | 58 | |
| 59 | 59 | //Room |
| 60 | 60 | implementation 'androidx.room:room-ktx:2.2.5' |
| 61 | 61 | implementation "androidx.room:room-runtime:2.2.5" |
| 62 | - kapt "androidx.room:room-compiler:2.2.5" | |
| 62 | + annotationProcessor 'androidx.room:room-compiler:2.2.5' | |
| 63 | 63 | |
| 64 | 64 | //Retrofit |
| 65 | 65 | implementation 'com.squareup.retrofit2:retrofit:2.9.0' |
| ... | ... | @@ -69,6 +69,8 @@ dependencies { |
| 69 | 69 | |
| 70 | 70 | //Gson library |
| 71 | 71 | implementation "com.google.code.gson:gson:2.8.6" |
| 72 | - annotationProcessor 'androidx.room:room-compiler:2.2.5' | |
| 73 | 72 | |
| 73 | + // ViewModel and LiveData | |
| 74 | + implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' | |
| 75 | + annotationProcessor 'androidx.lifecycle:lifecycle-common-java8:2.2.0' | |
| 74 | 76 | } |
| 75 | 77 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/DB/DAO/ArticulosDAO.kt
| ... | ... | @@ -47,6 +47,9 @@ interface InvHeadDAO { |
| 47 | 47 | |
| 48 | 48 | @Query("SELECT * FROM $TABLA_INV_H ORDER BY INV_FEI") |
| 49 | 49 | suspend fun fetchAllInvHead(): List<InvHead> |
| 50 | + | |
| 51 | + @Query("UPDATE $TABLA_INV_H SET INV_PRODCONT=:cant WHERE INV_NUM=:inven") | |
| 52 | + suspend fun UpdateInvBody(cant: Float, inven: Int) | |
| 50 | 53 | } |
| 51 | 54 | |
| 52 | 55 | @Dao |
| ... | ... | @@ -89,9 +92,9 @@ interface ServeInvDao { |
| 89 | 92 | @Query("UPDATE $TABLA_SERV_INV SET SER_PRE=0") |
| 90 | 93 | suspend fun UpdateServerPreInZero() |
| 91 | 94 | |
| 92 | - @Query("UPDATE $TABLA_SERV_INV SET SER_PRE=1 WHERE SER_DESC LIKE :description AND SER_DIR LIKE :dir") | |
| 93 | - suspend fun UpdateServerPre(description: String, dir: String) | |
| 95 | + @Query("UPDATE $TABLA_SERV_INV SET SER_PRE=1 WHERE SER_NUM = :numero") | |
| 96 | + suspend fun UpdateServerPre(numero: Int) | |
| 94 | 97 | |
| 95 | - @Query("SELECT * FROM $TABLA_SERV_INV WHERE SER_PRE =:sOne") | |
| 96 | - suspend fun fetchServerPreOne(sOne: String): ServeInv | |
| 98 | + @Query("SELECT * FROM $TABLA_SERV_INV WHERE SER_PRE= 1") | |
| 99 | + suspend fun fetchServerPreOne(): ServeInv | |
| 97 | 100 | } |
| 98 | 101 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/Model/Tablas.kt
| ... | ... | @@ -83,7 +83,7 @@ data class InvBody(@ColumnInfo(name = "INV_NUM") var invNum: Int, |
| 83 | 83 | data class ServeInv( |
| 84 | 84 | @ColumnInfo(name = "SER_DESC") var descripcion: String?, |
| 85 | 85 | @ColumnInfo(name = "SER_DIR") var direccion: String?, |
| 86 | - @ColumnInfo(name = "SER_PRE") var predeterminado: String?): | |
| 86 | + @ColumnInfo(name = "SER_PRE") var predeterminado: Int?): | |
| 87 | 87 | Serializable { @PrimaryKey(autoGenerate = true) |
| 88 | 88 | @ColumnInfo(name = "SER_NUM") |
| 89 | 89 | var servNum: Int=0 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/actualizacionMaestros/ActuaMaestrosFragment.kt
| ... | ... | @@ -6,17 +6,16 @@ import android.view.View |
| 6 | 6 | import android.view.ViewGroup |
| 7 | 7 | import android.widget.Button |
| 8 | 8 | import androidx.fragment.app.Fragment |
| 9 | +import androidx.fragment.app.FragmentActivity | |
| 10 | +import androidx.lifecycle.lifecycleScope | |
| 9 | 11 | import com.focasoftware.deboinventariov20.DB.DataBase.AppDb |
| 10 | -import com.focasoftware.deboinventariov20.Model.Articles | |
| 11 | -import com.focasoftware.deboinventariov20.Model.Productos | |
| 12 | -import com.focasoftware.deboinventariov20.Model.ProductosService | |
| 13 | -import com.focasoftware.deboinventariov20.Model.ServeInv | |
| 12 | +import com.focasoftware.deboinventariov20.Model.* | |
| 14 | 13 | import com.focasoftware.deboinventariov20.R |
| 15 | 14 | import com.google.android.material.bottomappbar.BottomAppBarTopEdgeTreatment |
| 16 | 15 | import kotlinx.android.synthetic.main.fragment_actua_maestros.* |
| 17 | 16 | import kotlinx.coroutines.* |
| 18 | 17 | |
| 19 | -var BASE_URL ="" | |
| 18 | +public var BASE_URL ="" | |
| 20 | 19 | class ActuaMaestrosFragment : Fragment() { |
| 21 | 20 | |
| 22 | 21 | var job: Job? = null |
| ... | ... | @@ -25,18 +24,16 @@ class ActuaMaestrosFragment : Fragment() { |
| 25 | 24 | override fun onCreate(savedInstanceState: Bundle?) { |
| 26 | 25 | super.onCreate(savedInstanceState) |
| 27 | 26 | // GlobalScope.launch(Dispatchers.Main) { |
| 28 | -// | |
| 29 | -// BASE_URL = fetchServerPre().direccion.toString() | |
| 30 | -// } | |
| 31 | - BASE_URL="http://10.0.2.2:3000/" | |
| 27 | +// val invbody = fetchServerPreOne() | |
| 28 | + //BASE_URL= invbody!!.direccion.toString() | |
| 29 | + BASE_URL="http://10.0.2.2:3000/" | |
| 30 | +// } | |
| 32 | 31 | // mostrarArticulos() |
| 33 | 32 | } |
| 34 | 33 | |
| 35 | - suspend fun fetchServerPre(): ServeInv { | |
| 36 | - var busqueda: ServeInv | |
| 34 | + private suspend fun fetchServerPreOne(): ServeInv? { | |
| 37 | 35 | return GlobalScope.async(Dispatchers.IO) { |
| 38 | - busqueda = AppDb.getAppDb(requireContext())!!.ServeInvDao()!!.fetchServerPreOne("1") | |
| 39 | - return@async busqueda | |
| 36 | + return@async AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.fetchServerPreOne() | |
| 40 | 37 | }.await() |
| 41 | 38 | } |
| 42 | 39 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/configuracion/ConfiguracionFragment.kt
| ... | ... | @@ -8,6 +8,8 @@ import android.view.View |
| 8 | 8 | import android.view.ViewGroup |
| 9 | 9 | import android.widget.* |
| 10 | 10 | import androidx.fragment.app.Fragment |
| 11 | +import androidx.fragment.app.FragmentActivity | |
| 12 | +import androidx.lifecycle.lifecycleScope | |
| 11 | 13 | import androidx.navigation.NavController |
| 12 | 14 | import androidx.navigation.Navigation |
| 13 | 15 | import androidx.navigation.fragment.findNavController |
| ... | ... | @@ -16,10 +18,7 @@ import com.focasoftware.deboinventariov20.Model.ServeInv |
| 16 | 18 | import com.focasoftware.deboinventariov20.R |
| 17 | 19 | import com.focasoftware.deboinventariov20.ui.servidores.SpinnerAdapterServidor |
| 18 | 20 | import kotlinx.android.synthetic.main.fragment_configuracion.* |
| 19 | -import kotlinx.coroutines.Dispatchers | |
| 20 | -import kotlinx.coroutines.GlobalScope | |
| 21 | -import kotlinx.coroutines.async | |
| 22 | -import kotlinx.coroutines.launch | |
| 21 | +import kotlinx.coroutines.* | |
| 23 | 22 | |
| 24 | 23 | class ConfiguracionFragment : Fragment() { |
| 25 | 24 | |
| ... | ... | @@ -166,19 +165,19 @@ class ConfiguracionFragment : Fragment() { |
| 166 | 165 | } |
| 167 | 166 | btnAgregarServidor.setOnClickListener { findNavController().navigate(R.id.servidoresFragment) } |
| 168 | 167 | btnValidarServidor.setOnClickListener { Toast.makeText(requireContext(), "Direcciรณn correcta", Toast.LENGTH_LONG).show() } |
| 169 | - spServidor?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { | |
| 170 | - override fun onNothingSelected(parent: AdapterView<*>?) {} | |
| 171 | - override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { itemSelect = position } | |
| 172 | - } | |
| 173 | 168 | GlobalScope.launch(Dispatchers.Main) { |
| 174 | 169 | adapterSpinnerServidor = SpinnerAdapterServidor(requireContext(), getDescServers()) |
| 175 | 170 | spServidor.adapter = adapterSpinnerServidor |
| 176 | - | |
| 177 | 171 | if (sharedPreferences.contains("ServerPredeterminado")) { |
| 178 | 172 | spServidor.setSelection(sharedPreferences.getString("ServerPredeterminado", "").toString().toInt()) |
| 179 | 173 | } else (spServidor.setSelection(0)) |
| 180 | 174 | } |
| 181 | - | |
| 175 | + spServidor?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { | |
| 176 | + override fun onNothingSelected(parent: AdapterView<*>?) {} | |
| 177 | + override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { | |
| 178 | + itemSelect = position | |
| 179 | + } | |
| 180 | + } | |
| 182 | 181 | return v |
| 183 | 182 | } |
| 184 | 183 | |
| ... | ... | @@ -189,31 +188,54 @@ class ConfiguracionFragment : Fragment() { |
| 189 | 188 | } |
| 190 | 189 | |
| 191 | 190 | fun guardarPreferencias() { |
| 192 | - try { | |
| 193 | - val editor = sharedPreferences.edit() | |
| 194 | - | |
| 195 | - if (etRuta.text.isNotEmpty()) editor?.putString("etRuta", etRuta.text.toString()) | |
| 196 | - | |
| 197 | - if (rbProInclu.isChecked) editor?.putString("rbProInclu", "1") else editor?.putString("rbProInclu", "0") | |
| 198 | - if (rbProNoInclu.isChecked) editor?.putString("rbProNoInclu", "1") else editor?.putString("rbProNoInclu", "0") | |
| 199 | - | |
| 200 | - if (cbHabiLectura.isChecked) editor?.putString("cbHabiLectura", "1") else editor?.putString("cbHabiLectura", "0") | |
| 201 | - if (cbMostrarStock.isChecked) editor?.putString("cbMostrarStock", "1") else editor?.putString("cbMostrarStock", "0") | |
| 202 | - if (rbVentas.isChecked) editor?.putString("rbVentas", "1") else editor?.putString("rbVentas", "0") | |
| 203 | - if (rbDeposito.isChecked) editor?.putString("rbDeposito", "1") else editor?.putString("rbDeposito", "0") | |
| 204 | - if (rbCodigoDebo.isChecked) editor?.putString("rbCodigoDebo", "1") else editor?.putString("rbCodigoDebo", "0") | |
| 205 | - if (rbCodigoOrigen.isChecked) editor?.putString("rbCodigoOrigen", "1") else editor?.putString("rbCodigoOrigen", "0") | |
| 206 | - if (rbCodigoBarras.isChecked) editor?.putString("rbCodigoBarras", "1") else editor?.putString("rbCodigoBarras", "0") | |
| 207 | - if (cbMostrarExistencia.isChecked) editor?.putString("cbMostrarExistencia", "1") else editor?.putString("cbMostrarExistencia", "0") | |
| 208 | - if (cbMostrarPrecio.isChecked) editor?.putString("cbMostrarPrecio", "1") else editor?.putString("cbMostrarPrecio", "0") | |
| 209 | - editor?.putString("ServerPredeterminado", itemSelect.toString()) | |
| 210 | - | |
| 211 | - editor?.apply() | |
| 212 | - editor.commit() | |
| 213 | - | |
| 214 | - } catch (e: Exception) { | |
| 215 | - e.printStackTrace() | |
| 216 | - } | |
| 191 | +// try { | |
| 192 | + val editor = sharedPreferences.edit() | |
| 193 | + | |
| 194 | + if (etRuta.text.isNotEmpty()) editor?.putString("etRuta", etRuta.text.toString()) | |
| 195 | + | |
| 196 | + if (rbProInclu.isChecked) editor?.putString("rbProInclu", "1") else editor?.putString("rbProInclu", "0") | |
| 197 | + if (rbProNoInclu.isChecked) editor?.putString("rbProNoInclu", "1") else editor?.putString("rbProNoInclu", "0") | |
| 198 | + | |
| 199 | + if (cbHabiLectura.isChecked) editor?.putString("cbHabiLectura", "1") else editor?.putString("cbHabiLectura", "0") | |
| 200 | + if (cbMostrarStock.isChecked) editor?.putString("cbMostrarStock", "1") else editor?.putString("cbMostrarStock", "0") | |
| 201 | + if (rbVentas.isChecked) editor?.putString("rbVentas", "1") else editor?.putString("rbVentas", "0") | |
| 202 | + if (rbDeposito.isChecked) editor?.putString("rbDeposito", "1") else editor?.putString("rbDeposito", "0") | |
| 203 | + if (rbCodigoDebo.isChecked) editor?.putString("rbCodigoDebo", "1") else editor?.putString("rbCodigoDebo", "0") | |
| 204 | + if (rbCodigoOrigen.isChecked) editor?.putString("rbCodigoOrigen", "1") else editor?.putString("rbCodigoOrigen", "0") | |
| 205 | + if (rbCodigoBarras.isChecked) editor?.putString("rbCodigoBarras", "1") else editor?.putString("rbCodigoBarras", "0") | |
| 206 | + if (cbMostrarExistencia.isChecked) editor?.putString("cbMostrarExistencia", "1") else editor?.putString("cbMostrarExistencia", "0") | |
| 207 | + if (cbMostrarPrecio.isChecked) editor?.putString("cbMostrarPrecio", "1") else editor?.putString("cbMostrarPrecio", "0") | |
| 208 | + editor?.putString("ServerPredeterminado", itemSelect.toString()) | |
| 209 | + updateServerPreInZero() | |
| 210 | + updateServerPre(itemSelect+1) | |
| 211 | + | |
| 212 | + editor?.apply() | |
| 213 | + editor.commit() | |
| 214 | + | |
| 215 | +// } catch (e: Exception) { | |
| 216 | +// Toast.makeText(requireContext(), "Error ", Toast.LENGTH_LONG).show() | |
| 217 | +// e.printStackTrace() | |
| 218 | +// } | |
| 217 | 219 | } |
| 218 | 220 | |
| 221 | + private fun updateServerPreInZero() { | |
| 222 | + lifecycleScope.launch { | |
| 223 | + withContext(Dispatchers.IO) { | |
| 224 | + val activity: FragmentActivity? = activity | |
| 225 | + if (activity != null && isAdded) { | |
| 226 | + AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.UpdateServerPreInZero() | |
| 227 | + } | |
| 228 | + } | |
| 229 | + } | |
| 230 | + } | |
| 231 | + private fun updateServerPre(server:Int) { | |
| 232 | + lifecycleScope.launch { | |
| 233 | + withContext(Dispatchers.IO) { | |
| 234 | + val activity: FragmentActivity? = activity | |
| 235 | + if (activity != null && isAdded) { | |
| 236 | + AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.UpdateServerPre(server) | |
| 237 | + } | |
| 238 | + } | |
| 239 | + } | |
| 240 | + } | |
| 219 | 241 | } |
| 220 | 242 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/ui/descripcionFragment/DescripcionFragment.kt
| ... | ... | @@ -61,13 +61,14 @@ class DescripcionFragment : Fragment() { |
| 61 | 61 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { |
| 62 | 62 | val v = inflater.inflate(R.layout.fragment_descripcion, container, false) |
| 63 | 63 | rcDescripcion = v.findViewById(R.id.rcDescripcion) |
| 64 | - val btnSalir = v.findViewById<Button>(R.id.btnSalir) | |
| 64 | +// val btnSalir = v.findViewById<Button>(R.id.btnSalir) | |
| 65 | 65 | |
| 66 | 66 | IngresarRecicler(artAcargar2) |
| 67 | 67 | |
| 68 | - btnSalir.setOnClickListener { | |
| 69 | - VolverAinventario() | |
| 70 | - } | |
| 68 | +// btnSalir.setOnClickListener { | |
| 69 | +// activity?.onBackPressed(); | |
| 70 | +//// VolverAinventario() | |
| 71 | +// } | |
| 71 | 72 | return v |
| 72 | 73 | } |
| 73 | 74 | |
| ... | ... | @@ -124,7 +125,8 @@ class DescripcionFragment : Fragment() { |
| 124 | 125 | InventarioFragment().ObtenerFechaActual(), |
| 125 | 126 | InventarioFragment().ObtenerFechaActual()) |
| 126 | 127 | InsertarArtEnDB(body)// TODO: MANDO A CARGAR A LA BASE DE DATOS |
| 127 | - VolverAinventario() | |
| 128 | +// VolverAinventario() | |
| 129 | + activity?.onBackPressed() | |
| 128 | 130 | mAlertDialog.dismiss() |
| 129 | 131 | } |
| 130 | 132 | } |
| ... | ... | @@ -133,44 +135,57 @@ class DescripcionFragment : Fragment() { |
| 133 | 135 | val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null) |
| 134 | 136 | val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("Producto '${artCargadoEnBD!!.descripcion}', se encuentra cargado.").setCancelable(false) |
| 135 | 137 | if (artCargadoEnBD!!.balanza.toString().contains("1" ) || artCargadoEnBD!!.balanza.toString().contains("3") || artCargadoEnBD!!.balanza.toString().contains("7")) mDialogView.tvNuevaCantidad.inputType= InputType.TYPE_CLASS_NUMBER |
| 136 | - mDialogView.tvCantInicial.text = artCargadoEnBD!!.cantTomada | |
| 138 | + mDialogView.tvCantInicial.text =String.format("%.2f", artCargadoEnBD!!.cantTomada.toString().toFloat()) | |
| 137 | 139 | |
| 138 | 140 | val mAlertDialog = mBuilder.show() |
| 139 | 141 | mDialogView.rbSumar.setOnClickListener { |
| 140 | 142 | if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { |
| 141 | - mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() + mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString() | |
| 143 | + mDialogView.tvResultado.text = String.format("%.2f",(mDialogView.tvCantInicial.text.toString().toFloat() + mDialogView.tvNuevaCantidad.text.toString().toFloat())) | |
| 142 | 144 | mDialogView.tvNuevaCantidad.isEnabled=false |
| 143 | 145 | } |
| 144 | 146 | } |
| 145 | 147 | mDialogView.rbRestar.setOnClickListener { |
| 146 | 148 | if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { |
| 147 | 149 | if (mDialogView.tvCantInicial.text.toString().toFloat() >= mDialogView.tvNuevaCantidad.text.toString().toFloat()) { |
| 148 | - mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() - mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString() | |
| 149 | - mDialogView.tvNuevaCantidad.isEnabled=false | |
| 150 | + mDialogView.tvResultado.text = String.format("%.2f",mDialogView.tvCantInicial.text.toString().toFloat() - mDialogView.tvNuevaCantidad.text.toString().toFloat()) | |
| 151 | + mDialogView.tvNuevaCantidad.isEnabled = false | |
| 152 | + }else{ | |
| 153 | + mDialogView.tvResultado.text="" | |
| 154 | + mDialogView.tvResultado.error = "Operaciรณn No Valida" | |
| 155 | + mDialogView.tvResultado.requestFocus() | |
| 156 | + mDialogView.tvResultado.hint = "Error" | |
| 150 | 157 | } |
| 151 | 158 | } |
| 152 | 159 | } |
| 153 | 160 | mDialogView.rbMdodificar.setOnClickListener { |
| 154 | 161 | if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { |
| 155 | - mDialogView.tvgenerico4.text = (mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString() | |
| 156 | - mDialogView.tvNuevaCantidad.isEnabled=false | |
| 162 | + mDialogView.tvResultado.text = String.format("%.2f", (mDialogView.tvNuevaCantidad.text.toString().toFloat())) | |
| 163 | + mDialogView.tvNuevaCantidad.isEnabled = false | |
| 157 | 164 | } |
| 158 | 165 | } |
| 159 | 166 | mDialogView.btnAceptar.setOnClickListener { |
| 160 | - if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { | |
| 161 | - val name = mDialogView.tvgenerico4.text.toString().toFloat() | |
| 167 | + if (mDialogView.tvNuevaCantidad.text.isNotEmpty() || !mDialogView.tvNuevaCantidad.text.isBlank()) { | |
| 168 | + if (mDialogView.tvResultado.text.isNotEmpty() || !mDialogView.tvResultado.text.isBlank()) { | |
| 169 | + | |
| 162 | 170 | updateCantidad((viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.sector.toString(), |
| 163 | 171 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codigo.toString(), |
| 164 | - name) | |
| 165 | - VolverAinventario() | |
| 172 | + mDialogView.tvResultado.text.toString().toFloat()) | |
| 173 | +// VolverAinventario() | |
| 174 | + activity?.onBackPressed(); | |
| 166 | 175 | mAlertDialog.dismiss() |
| 167 | - } else if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { | |
| 168 | - mDialogView.tvNuevaCantidad.error = "No vacio" | |
| 169 | - mDialogView.tvNuevaCantidad.requestFocus() | |
| 170 | - mDialogView.tvNuevaCantidad.hint = "Ingrese un valor" | |
| 176 | + } else if (mDialogView.tvNuevaCantidad.text.isNotEmpty() || mDialogView.tvNuevaCantidad.text.isBlank()) { | |
| 177 | + mDialogView.tvResultado.error = "Operaciรณn Requerida" | |
| 178 | + mDialogView.tvResultado.requestFocus() | |
| 179 | + mDialogView.tvResultado.hint = "Seleccione Operaciรณn" | |
| 171 | 180 | } |
| 181 | + } else if (mDialogView.tvNuevaCantidad.text.isEmpty() || mDialogView.tvNuevaCantidad.text.isBlank()) { | |
| 182 | + mDialogView.tvNuevaCantidad.error = "Completar" | |
| 183 | + mDialogView.tvNuevaCantidad.requestFocus() | |
| 184 | + mDialogView.tvNuevaCantidad.hint = "Ingrese un valor" | |
| 185 | + } | |
| 172 | 186 | } |
| 173 | 187 | mDialogView.dialogCancelBtn.setOnClickListener { |
| 188 | + activity?.onBackPressed(); | |
| 174 | 189 | mAlertDialog.dismiss() |
| 175 | 190 | } |
| 176 | 191 | } |
| ... | ... | @@ -207,14 +222,14 @@ class DescripcionFragment : Fragment() { |
| 207 | 222 | } |
| 208 | 223 | } |
| 209 | 224 | |
| 210 | - fun VolverAinventario() { | |
| 211 | - | |
| 212 | - val editor = sharedPreferences.edit() | |
| 213 | - editor?.putString("Inventario", numeroInventario.toString()) | |
| 214 | - editor?.apply() | |
| 215 | - editor.commit() | |
| 216 | - navController.navigate(R.id.action_descripcionFragment_to_inventarioFragment) | |
| 217 | - } | |
| 225 | +// fun VolverAinventario() { | |
| 226 | +// | |
| 227 | +// val editor = sharedPreferences.edit() | |
| 228 | +// editor?.putString("Inventario", numeroInventario.toString()) | |
| 229 | +// editor?.apply() | |
| 230 | +// editor.commit() | |
| 231 | +// navController.navigate(R.id.action_descripcionFragment_to_inventarioFragment) | |
| 232 | +// } | |
| 218 | 233 | |
| 219 | 234 | suspend fun buscarCodigoDeboEnBD(sector: String, codigo: String, numInventario: String): InvBody? { |
| 220 | 235 | //TODO BUSQUEDA POR CODIGO DE BARRAS |
| ... | ... | @@ -232,7 +247,6 @@ class DescripcionFragment : Fragment() { |
| 232 | 247 | if (activity != null && isAdded) { |
| 233 | 248 | AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.UpdateInvBody(cantidad, sector, codigo) |
| 234 | 249 | } |
| 235 | - | |
| 236 | 250 | } |
| 237 | 251 | } |
| 238 | 252 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/DialogNoEncontrado.kt
| ... | ... | @@ -1,20 +0,0 @@ |
| 1 | -package com.focasoftware.deboinventariov20.ui.dialogos | |
| 2 | - | |
| 3 | -import android.app.AlertDialog | |
| 4 | -import android.app.Dialog | |
| 5 | -import android.os.Bundle | |
| 6 | -import androidx.fragment.app.DialogFragment | |
| 7 | - | |
| 8 | -class DialogNoEncontrado : DialogFragment() { | |
| 9 | - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 10 | - return activity?.let { | |
| 11 | - val title = "Busqueda de Productos" | |
| 12 | - val content = "Producto no encotrado." | |
| 13 | - val builder: AlertDialog.Builder = AlertDialog.Builder(requireActivity()) | |
| 14 | - builder.setTitle(title).setMessage(content).setPositiveButton(android.R.string.ok) { _, _ -> | |
| 15 | - //Todo OK click | |
| 16 | - } | |
| 17 | - return builder.create() | |
| 18 | - } ?: throw IllegalStateException("Activity cannot be null") | |
| 19 | - } | |
| 20 | -} |
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/DialogoLogin.kt
| ... | ... | @@ -1,44 +0,0 @@ |
| 1 | -package com.focasoftware.deboinventariov20.ui.dialogos | |
| 2 | - | |
| 3 | -import android.app.AlertDialog | |
| 4 | -import android.app.Dialog | |
| 5 | -import android.content.SharedPreferences | |
| 6 | -import android.os.Bundle | |
| 7 | -import androidx.fragment.app.DialogFragment | |
| 8 | -import com.focasoftware.deboinventariov20.R | |
| 9 | - | |
| 10 | -class DialogoLogin() : DialogFragment() { | |
| 11 | - private lateinit var sharedPreferences: SharedPreferences | |
| 12 | - | |
| 13 | - interface OnContinueCancelClickListener { | |
| 14 | - fun onPositiveClick() | |
| 15 | - fun onCancelClick() | |
| 16 | - } | |
| 17 | - | |
| 18 | - fun newInstance(s: String): DialogoLogin? { | |
| 19 | - val dialog = DialogoLogin() | |
| 20 | - | |
| 21 | - val args = Bundle() | |
| 22 | - args.putString("title", s) | |
| 23 | - dialog.arguments = args | |
| 24 | - | |
| 25 | - return dialog | |
| 26 | - } | |
| 27 | - | |
| 28 | - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 29 | - return activity?.let { | |
| 30 | - val builder = AlertDialog.Builder(it) | |
| 31 | - | |
| 32 | - val inflater = requireActivity().layoutInflater; | |
| 33 | - | |
| 34 | - builder.setView(inflater.inflate(R.layout.login_dialog, null)).setTitle("El producto ya fue escaneado").setPositiveButton(android.R.string.ok) { _, _ -> | |
| 35 | - val listener = activity as OnContinueCancelClickListener? | |
| 36 | - listener!!.onPositiveClick() | |
| 37 | - }.setNegativeButton(android.R.string.cancel) { _, _ -> | |
| 38 | - val listener = activity as OnContinueCancelClickListener? | |
| 39 | - listener!!.onCancelClick() | |
| 40 | - } | |
| 41 | - builder.create() | |
| 42 | - } ?: throw IllegalStateException("Activity cannot be null") | |
| 43 | - } | |
| 44 | -} | |
| 45 | 0 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/InsertCant.kt
| ... | ... | @@ -1,48 +0,0 @@ |
| 1 | -package com.focasoftware.deboinventariov20.ui.dialogos | |
| 2 | - | |
| 3 | -import android.app.AlertDialog | |
| 4 | -import android.app.Dialog | |
| 5 | -import android.content.Context | |
| 6 | -import android.content.SharedPreferences | |
| 7 | -import android.os.Bundle | |
| 8 | -import android.view.View | |
| 9 | -import android.widget.EditText | |
| 10 | -import androidx.fragment.app.DialogFragment | |
| 11 | -import com.focasoftware.deboinventariov20.R | |
| 12 | - | |
| 13 | -class InsertCant() : DialogFragment() { | |
| 14 | - | |
| 15 | - private lateinit var sharedPreferences: SharedPreferences | |
| 16 | - | |
| 17 | - interface OnContinueCancelClickListener { | |
| 18 | - fun onPositiveClick() | |
| 19 | - fun onCancelClick() | |
| 20 | - } | |
| 21 | - | |
| 22 | - fun newInstance(s: String): InsertCant? { | |
| 23 | - val dialog = InsertCant() | |
| 24 | - | |
| 25 | - val args = Bundle() | |
| 26 | - args.putString("title", s) | |
| 27 | - dialog.arguments = args | |
| 28 | - | |
| 29 | - return dialog | |
| 30 | - } | |
| 31 | - | |
| 32 | - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 33 | - return activity?.let { | |
| 34 | - val builder = AlertDialog.Builder(it) | |
| 35 | - | |
| 36 | - val inflater = requireActivity().layoutInflater; | |
| 37 | - | |
| 38 | - builder.setView(inflater.inflate(R.layout.ingresar_cantidad, null)).setTitle("").setPositiveButton(android.R.string.ok) { _, _ -> | |
| 39 | - val listener = activity as OnContinueCancelClickListener? | |
| 40 | - listener!!.onPositiveClick() | |
| 41 | - }.setNegativeButton(android.R.string.cancel) { _, _ -> | |
| 42 | - val listener = activity as OnContinueCancelClickListener? | |
| 43 | - listener!!.onCancelClick() | |
| 44 | - } | |
| 45 | - builder.create() | |
| 46 | - } ?: throw IllegalStateException("Activity cannot be null") | |
| 47 | - } | |
| 48 | - } | |
| 49 | 0 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/SingleChoiceAlertDialog.kt
| ... | ... | @@ -1,53 +0,0 @@ |
| 1 | -package com.focasoftware.deboinventariov20.ui.dialogos | |
| 2 | - | |
| 3 | -import android.app.AlertDialog | |
| 4 | -import android.app.Dialog | |
| 5 | -import android.os.Bundle | |
| 6 | -import androidx.fragment.app.DialogFragment | |
| 7 | - | |
| 8 | -class SingleChoiceAlertDialog : DialogFragment() { | |
| 9 | - | |
| 10 | - interface OnDialogSelectorListener { | |
| 11 | - fun onSelectedOption(dialogId: Int) | |
| 12 | - } | |
| 13 | - | |
| 14 | - | |
| 15 | - var mDialogSelectorCallback: OnDialogSelectorListener? = null | |
| 16 | - | |
| 17 | - fun newInstance(title: String, values: Array<String>, selected: Int = -1): SingleChoiceAlertDialog? { | |
| 18 | - val dialog = SingleChoiceAlertDialog() | |
| 19 | - | |
| 20 | - val args = Bundle() | |
| 21 | - args.putString("title", title) | |
| 22 | - args.putStringArray("values", values) | |
| 23 | - args.putInt("selected", selected) | |
| 24 | - dialog.arguments = args | |
| 25 | - | |
| 26 | - return dialog | |
| 27 | - | |
| 28 | - } | |
| 29 | - | |
| 30 | - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 31 | - | |
| 32 | - return activity?.let { | |
| 33 | - | |
| 34 | - val args = requireArguments() | |
| 35 | - val title = args.getString("title") | |
| 36 | - val values = args.getStringArray("values") | |
| 37 | - val selectedIndex = args.getInt("selected") | |
| 38 | - | |
| 39 | - val builder: AlertDialog.Builder = AlertDialog.Builder(requireActivity()) | |
| 40 | - | |
| 41 | - builder.setSingleChoiceItems(values, selectedIndex) { _, which -> | |
| 42 | - //val item = values?.get(which) | |
| 43 | - mDialogSelectorCallback?.onSelectedOption(which) | |
| 44 | - dialog?.dismiss() | |
| 45 | - } | |
| 46 | - builder.setTitle(title) | |
| 47 | - | |
| 48 | - return builder.create() | |
| 49 | - } ?: throw IllegalStateException("Activity cannot be null") | |
| 50 | - } | |
| 51 | - | |
| 52 | - | |
| 53 | -} | |
| 54 | 0 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/InventarioFragment.kt
| ... | ... | @@ -9,9 +9,7 @@ import android.graphics.Canvas |
| 9 | 9 | import android.graphics.Color |
| 10 | 10 | import android.graphics.drawable.Drawable |
| 11 | 11 | import android.os.Bundle |
| 12 | -import android.text.InputType | |
| 13 | 12 | import android.text.InputType.TYPE_CLASS_NUMBER |
| 14 | -import android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | |
| 15 | 13 | import android.view.KeyEvent |
| 16 | 14 | import android.view.LayoutInflater |
| 17 | 15 | import android.view.View |
| ... | ... | @@ -33,19 +31,18 @@ import com.focasoftware.deboinventariov20.Model.Articles |
| 33 | 31 | import com.focasoftware.deboinventariov20.Model.InvBody |
| 34 | 32 | import com.focasoftware.deboinventariov20.Model.InvHead |
| 35 | 33 | import com.focasoftware.deboinventariov20.R |
| 36 | -import com.focasoftware.deboinventariov20.ui.dialogos.DialogNoEncontrado | |
| 34 | +import com.focasoftware.deboinventariov20.ui.util.Base.dialogos.DialogNoEncontrado | |
| 37 | 35 | import kotlinx.android.synthetic.main.fragment_inventario.* |
| 38 | 36 | import kotlinx.android.synthetic.main.ingresar_cantidad.view.* |
| 39 | 37 | import kotlinx.android.synthetic.main.login_dialog.view.* |
| 40 | 38 | import kotlinx.android.synthetic.main.login_dialog.view.btnAceptar |
| 41 | 39 | import kotlinx.coroutines.* |
| 42 | -import java.lang.Integer.TYPE | |
| 43 | 40 | import java.time.LocalDateTime |
| 44 | 41 | import java.time.format.DateTimeFormatter |
| 45 | 42 | import java.util.* |
| 46 | 43 | |
| 47 | 44 | |
| 48 | -class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickListener{ | |
| 45 | +class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickListener { | |
| 49 | 46 | |
| 50 | 47 | private lateinit var sharedPreferences: SharedPreferences |
| 51 | 48 | private var iArea: Int = 0 |
| ... | ... | @@ -89,7 +86,7 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 89 | 86 | //TODO: BUSCO EL ULTIMO INVENTARIO EN LA BD PARA PODER CREAR EL PROXIMO |
| 90 | 87 | InventarioNuevo = AppDb.getAppDb(requireActivity())?.InvHeadDAO()?.findLastInv()?.plus(1) ?: 1 |
| 91 | 88 | //TODO: CREAMOS EL INVENTARIO EN LA CABECERA DEL INVENTARIO |
| 92 | - invHead = InvHead(InventarioNuevo, if (SerchArea() == 0) "Ventas" else "Deposito", 1, ObtenerFechaActual(), ObtenerFechaActual(), 0L, SerchArea(), AjusteProductos(), ProdNoCont()) | |
| 89 | + invHead = InvHead(InventarioNuevo, if (SerchArea() == 0) "Ventas" else "Deposito", 1, ObtenerFechaActual(), ObtenerFechaActual(), 0L, SerchArea(), AjusteProductos(), ProdNoCont()) | |
| 93 | 90 | AppDb.getAppDb(requireActivity())!!.InvHeadDAO()!!.insertInvHead(invHead) |
| 94 | 91 | tvTitulo.text = "Inventario Dinamico" + " Nยฐ $InventarioNuevo" |
| 95 | 92 | } |
| ... | ... | @@ -122,12 +119,14 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 122 | 119 | // fCant = listArticulos[indiceDelArtEncontrado].cantTomada |
| 123 | 120 | // fCant += 1F |
| 124 | 121 | //TODO ACTUALIZO LA CANTIDAD EN LA BD |
| 125 | - updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), listArticulos[indiceDelArtEncontrado].cantTomada+1) | |
| 122 | + updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), | |
| 123 | + listArticulos[indiceDelArtEncontrado].codigo.toString(), | |
| 124 | + listArticulos[indiceDelArtEncontrado].cantTomada + 1) | |
| 126 | 125 | //TODO ACTUALIZO LA CANTIDAD EN EL RV |
| 127 | - listArticulos[indiceDelArtEncontrado].cantTomada = listArticulos[indiceDelArtEncontrado].cantTomada+1 | |
| 126 | + listArticulos[indiceDelArtEncontrado].cantTomada = listArticulos[indiceDelArtEncontrado].cantTomada + 1 | |
| 128 | 127 | viewAdapter.notifyDataSetChanged() |
| 129 | 128 | } else { |
| 130 | - dialogoSumaResta(requireContext(),indiceDelArtEncontrado, listArticulos[indiceDelArtEncontrado].univta) | |
| 129 | + dialogoSumaResta(requireContext(), indiceDelArtEncontrado, listArticulos[indiceDelArtEncontrado].univta, false) | |
| 131 | 130 | } |
| 132 | 131 | |
| 133 | 132 | } else if (indiceDelArtEncontrado == -1) {// no lo encontro en el RV, lo va a buscar en al BD |
| ... | ... | @@ -280,41 +279,29 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 280 | 279 | // modalDialog.show(requireActivity().supportFragmentManager, "confirmDialog") |
| 281 | 280 | |
| 282 | 281 | btnBorrarInv.setOnClickListener { |
| 283 | - AlertDialog.Builder(requireContext()) | |
| 284 | - .setTitle("Eliminaciรณn de Inventarios") | |
| 285 | - .setMessage("ยฟConfirma que desea eliminar el inventario?") | |
| 286 | - .setPositiveButton(R.string.btnOk, | |
| 287 | - DialogInterface.OnClickListener { dialog, which -> | |
| 282 | + AlertDialog.Builder(requireContext()).setTitle("Eliminaciรณn de Inventarios").setMessage("ยฟConfirma que desea eliminar el inventario?") | |
| 283 | + .setPositiveButton(R.string.btnOk, DialogInterface.OnClickListener { dialog, which -> | |
| 288 | 284 | BorrarInvActual() |
| 289 | 285 | Toast.makeText(requireContext(), "El inventario $InventarioNuevo fue Borrado", Toast.LENGTH_LONG).show() |
| 290 | 286 | navController.navigate(R.id.action_inventarioFragment_to_mainFragment2) |
| 291 | 287 | InventarioNuevo = 0 |
| 292 | 288 | |
| 293 | - }) | |
| 294 | - .setNegativeButton(R.string.btnCancelar, | |
| 295 | - DialogInterface.OnClickListener { dialog, which -> | |
| 296 | - //botรณn cancel pulsado | |
| 297 | - }) | |
| 298 | - .show() | |
| 289 | + }).setNegativeButton(R.string.btnCancelar, DialogInterface.OnClickListener { dialog, which -> | |
| 290 | + //botรณn cancel pulsado | |
| 291 | + }).show() | |
| 299 | 292 | } |
| 300 | 293 | |
| 301 | 294 | btnExportarInv.setOnClickListener { |
| 302 | - AlertDialog.Builder(requireContext()) | |
| 303 | - .setTitle(R.string.sTituloExportar) | |
| 304 | - .setMessage(R.string.sMensajeExportar) | |
| 305 | - .setPositiveButton(R.string.btnOk, | |
| 306 | - DialogInterface.OnClickListener { dialog, which -> | |
| 307 | - BorrarInvActual() | |
| 308 | - Toast.makeText(requireContext(), "El inventario $InventarioNuevo fue Exportado al Servidor", Toast.LENGTH_LONG).show() | |
| 309 | - navController.navigate(R.id.action_inventarioFragment_to_mainFragment2) | |
| 310 | - InventarioNuevo = 0 | |
| 311 | - | |
| 312 | - }) | |
| 313 | - .setNegativeButton(R.string.btnCancelar, | |
| 314 | - DialogInterface.OnClickListener { dialog, which -> | |
| 315 | - //botรณn cancel pulsado | |
| 316 | - }) | |
| 317 | - .show() | |
| 295 | + AlertDialog.Builder(requireContext()).setTitle(R.string.sTituloExportar).setMessage(R.string.sMensajeExportar) | |
| 296 | + .setPositiveButton(R.string.btnOk, DialogInterface.OnClickListener { dialog, which -> | |
| 297 | + BorrarInvActual() | |
| 298 | + Toast.makeText(requireContext(), "El inventario $InventarioNuevo fue Exportado al Servidor", Toast.LENGTH_LONG).show() | |
| 299 | + navController.navigate(R.id.action_inventarioFragment_to_mainFragment2) | |
| 300 | + InventarioNuevo = 0 | |
| 301 | + | |
| 302 | + }).setNegativeButton(R.string.btnCancelar, DialogInterface.OnClickListener { dialog, which -> | |
| 303 | + //botรณn cancel pulsado | |
| 304 | + }).show() | |
| 318 | 305 | |
| 319 | 306 | // MaterialDialog(requireContext()).show { |
| 320 | 307 | // title(R.string.sTituloExportar) |
| ... | ... | @@ -422,11 +409,11 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 422 | 409 | // cargarArtEnBd(acargarPorDesc, fCant) |
| 423 | 410 | // cargarRecicler(acargarPorDesc, fCant) |
| 424 | 411 | // } else { |
| 425 | - var bundle = Bundle() | |
| 426 | - bundle = bundleOf("ArrayDesc" to artAcargar) | |
| 427 | - bundle.putInt("numeroInv", InventarioNuevo) | |
| 428 | - navController.navigate(R.id.action_inventarioFragment_to_descripcionFragment, bundle) | |
| 429 | - //navController.backStack.removeLast() | |
| 412 | + var bundle = Bundle() | |
| 413 | + bundle = bundleOf("ArrayDesc" to artAcargar) | |
| 414 | + bundle.putInt("numeroInv", InventarioNuevo) | |
| 415 | + navController.navigate(R.id.action_inventarioFragment_to_descripcionFragment, bundle) | |
| 416 | + //navController.backStack.removeLast() | |
| 430 | 417 | // } |
| 431 | 418 | // } else {//SI NO ESTA +1 |
| 432 | 419 | // if (artAcargar.size == 1) { // TODO: SI EN EL ARRAY SOLO HAY UN ITEM LO METE DIRECTAMENTE AL RV |
| ... | ... | @@ -480,11 +467,11 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 480 | 467 | if (swSumaUno!!.isChecked) {//TODO: SI ESTA +1, PONE CANTIDAD 1 |
| 481 | 468 | fCant = 0F |
| 482 | 469 | fCant += 1F |
| 483 | - cargarArtEnBd(artAcargar, fCant) | |
| 470 | + cargarArtEnBd(artAcargar, String.format("%.3f", fCant)) | |
| 484 | 471 | cargarRecicler(artAcargar, fCant) |
| 485 | 472 | } else {//SI NO ESTA +1 PREGUNTA CANTIDAD |
| 486 | 473 | |
| 487 | - DialogingresarCantidad(requireContext(),artAcargar) | |
| 474 | + DialogingresarCantidad(requireContext(), artAcargar) | |
| 488 | 475 | } |
| 489 | 476 | } else {// TODO si no lo encuentra en la BD |
| 490 | 477 | val modalDialog = DialogNoEncontrado() |
| ... | ... | @@ -497,9 +484,8 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 497 | 484 | |
| 498 | 485 | fun DialogingresarCantidad(cnxt: Context, artAcargar: Articles?) { |
| 499 | 486 | val mDialogView = LayoutInflater.from(cnxt).inflate(R.layout.ingresar_cantidad, null) |
| 500 | - val mBuilder = AlertDialog.Builder(cnxt).setView(mDialogView) | |
| 501 | - .setCancelable(false) | |
| 502 | - if (artAcargar!!.balanza!!.toInt()==1 || artAcargar.balanza!!.toInt()==3 || artAcargar.balanza!!.toInt()==7) mDialogView.etCantidad.inputType=TYPE_CLASS_NUMBER | |
| 487 | + val mBuilder = AlertDialog.Builder(cnxt).setView(mDialogView).setCancelable(false) | |
| 488 | + if (artAcargar!!.balanza!!.toInt() == 1 || artAcargar.balanza!!.toInt() == 3 || artAcargar.balanza!!.toInt() == 7) mDialogView.etCantidad.inputType = TYPE_CLASS_NUMBER | |
| 503 | 489 | mDialogView.tvTitulo.text = artAcargar.descripcion.toString() |
| 504 | 490 | val mAlertDialog = mBuilder.show() |
| 505 | 491 | mDialogView.btnAceptar.setOnClickListener { |
| ... | ... | @@ -509,53 +495,61 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 509 | 495 | mDialogView.etCantidad.hint = "Ingrese un valor" |
| 510 | 496 | } else if (!mDialogView.etCantidad.text.isNullOrEmpty()) { |
| 511 | 497 | mAlertDialog.dismiss() |
| 512 | - cargarArtEnBd(artAcargar, mDialogView.etCantidad.text.toString().toFloat()) | |
| 513 | - cargarRecicler(artAcargar, mDialogView.etCantidad.text.toString().toFloat()) | |
| 498 | + cargarArtEnBd(artAcargar, String.format("%.2f", mDialogView.etCantidad.text.toString().toFloat())) | |
| 499 | + cargarRecicler(artAcargar, mDialogView.etCantidad.text.toString().toFloat()) | |
| 514 | 500 | } |
| 515 | 501 | } |
| 516 | 502 | } |
| 517 | 503 | |
| 518 | - fun dialogoSumaResta(context: Context, indiceDelArtEncontrado: Int, univta: String) { | |
| 504 | + fun dialogoSumaResta(context: Context, indiceDelArtEncontrado: Int, univta: String, cancelable: Boolean) { | |
| 519 | 505 | val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null) |
| 520 | - val mBuilder = | |
| 521 | - AlertDialog.Builder(context).setView(mDialogView).setTitle("${listArticulos[indiceDelArtEncontrado].descripcion} se encuentra cargado.") | |
| 522 | -// .setCancelable(false) | |
| 523 | - if (univta.contains("1" ) || univta.contains("3") || univta.contains("7")) mDialogView.tvNuevaCantidad.inputType=TYPE_CLASS_NUMBER | |
| 506 | + val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("${listArticulos[indiceDelArtEncontrado].descripcion} se encuentra cargado.").setCancelable(cancelable) | |
| 507 | + // TODO: SI PERMITE QUE INGRESE DECIMALES | |
| 508 | + if (univta.contains("1") || univta.contains("3") || univta.contains("7")) mDialogView.tvNuevaCantidad.inputType = TYPE_CLASS_NUMBER | |
| 524 | 509 | |
| 525 | - mDialogView.tvCantInicial.text = listArticulos[indiceDelArtEncontrado].cantTomada.toString() | |
| 510 | + mDialogView.tvCantInicial.text = String.format("%.2f", listArticulos[indiceDelArtEncontrado].cantTomada) | |
| 526 | 511 | val mAlertDialog = mBuilder.show() |
| 527 | 512 | mDialogView.rbSumar.setOnClickListener { |
| 528 | 513 | if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { |
| 529 | - mDialogView.tvgenerico4.text = (mDialogView.tvCantInicial.text.toString().toFloat() + mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString() | |
| 530 | - mDialogView.tvNuevaCantidad.isEnabled=false | |
| 514 | + mDialogView.tvResultado.text = String.format("%.2f", mDialogView.tvCantInicial.text.toString().toFloat() + mDialogView.tvNuevaCantidad.text.toString().toFloat()) | |
| 515 | + mDialogView.tvNuevaCantidad.isEnabled = false | |
| 531 | 516 | } |
| 532 | 517 | } |
| 533 | 518 | mDialogView.rbRestar.setOnClickListener { |
| 534 | 519 | if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { |
| 535 | 520 | if (mDialogView.tvCantInicial.text.toString().toFloat() >= mDialogView.tvNuevaCantidad.text.toString().toFloat()) { |
| 536 | - mDialogView.tvgenerico4.text = | |
| 537 | - (mDialogView.tvCantInicial.text.toString().toFloat() - mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString() | |
| 538 | - mDialogView.tvNuevaCantidad.isEnabled=false | |
| 521 | + mDialogView.tvResultado.text = String.format("%.2f", mDialogView.tvCantInicial.text.toString().toFloat() - mDialogView.tvNuevaCantidad.text.toString().toFloat()) | |
| 522 | + mDialogView.tvNuevaCantidad.isEnabled = false | |
| 523 | + } else { | |
| 524 | + mDialogView.tvResultado.text = "" | |
| 525 | + mDialogView.tvResultado.error = "Operaciรณn No Valida" | |
| 526 | + mDialogView.tvResultado.requestFocus() | |
| 527 | + mDialogView.tvResultado.hint = "Error" | |
| 539 | 528 | } |
| 540 | 529 | } |
| 541 | 530 | } |
| 542 | 531 | mDialogView.rbMdodificar.setOnClickListener { |
| 543 | 532 | if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { |
| 544 | - mDialogView.tvgenerico4.text = (mDialogView.tvNuevaCantidad.text.toString().toFloat()).toString() | |
| 545 | - mDialogView.tvNuevaCantidad.isEnabled=false | |
| 533 | + mDialogView.tvResultado.text = String.format("%.2f", mDialogView.tvNuevaCantidad.text.toString().toFloat()) | |
| 534 | + mDialogView.tvNuevaCantidad.isEnabled = false | |
| 546 | 535 | } |
| 547 | 536 | } |
| 548 | 537 | mDialogView.btnAceptar.setOnClickListener { |
| 549 | - if (!mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { | |
| 550 | - mAlertDialog.dismiss() | |
| 551 | -// val name = mDialogView.tvgenerico4.text.toString().toFloat() | |
| 552 | -// fCant = 0F | |
| 553 | -// fCant = name | |
| 554 | - listArticulos[indiceDelArtEncontrado].cantTomada = mDialogView.tvgenerico4.text.toString().toFloat() | |
| 555 | - updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), mDialogView.tvgenerico4.text.toString().toFloat()) | |
| 556 | - viewAdapter.notifyDataSetChanged() | |
| 557 | - } else if (mDialogView.tvNuevaCantidad.text.isNullOrEmpty()) { | |
| 558 | - mDialogView.tvNuevaCantidad.error = "No vacio" | |
| 538 | + if (mDialogView.tvNuevaCantidad.text.isNotEmpty() || !mDialogView.tvNuevaCantidad.text.isBlank()) { | |
| 539 | + if (mDialogView.tvResultado.text.isNotEmpty() || !mDialogView.tvResultado.text.isBlank()) { | |
| 540 | + mAlertDialog.dismiss() | |
| 541 | + listArticulos[indiceDelArtEncontrado].cantTomada = String.format("%.2f", mDialogView.tvResultado.text.toString().toFloat()).toFloat() | |
| 542 | + updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), | |
| 543 | + String.format("%.2f", mDialogView.tvResultado.text.toString().toFloat()).toFloat()) | |
| 544 | + | |
| 545 | + viewAdapter.notifyDataSetChanged() | |
| 546 | + } else if (mDialogView.tvNuevaCantidad.text.isNotEmpty() || mDialogView.tvNuevaCantidad.text.isBlank()) { | |
| 547 | + mDialogView.tvResultado.error = "Operaciรณn Requerida" | |
| 548 | + mDialogView.tvResultado.requestFocus() | |
| 549 | + mDialogView.tvResultado.hint = "Seleccione Operaciรณn" | |
| 550 | + } | |
| 551 | + } else if (mDialogView.tvNuevaCantidad.text.isEmpty() || mDialogView.tvNuevaCantidad.text.isBlank()) { | |
| 552 | + mDialogView.tvNuevaCantidad.error = "Completar" | |
| 559 | 553 | mDialogView.tvNuevaCantidad.requestFocus() |
| 560 | 554 | mDialogView.tvNuevaCantidad.hint = "Ingrese un valor" |
| 561 | 555 | } |
| ... | ... | @@ -640,12 +634,12 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 640 | 634 | }.await() |
| 641 | 635 | } |
| 642 | 636 | |
| 643 | - private fun cargarArtEnBd(articulos: Articles, cant: Float) { | |
| 637 | + private fun cargarArtEnBd(articulos: Articles, cant: String) { | |
| 644 | 638 | val body = InvBody(InventarioNuevo,// TODO PREPARO PARA MANDAR A CARGAR EN LA BD |
| 645 | 639 | articulos.sector, |
| 646 | 640 | articulos.codigo, |
| 647 | 641 | articulos.descripcion, |
| 648 | - cant.toString(), | |
| 642 | + cant, | |
| 649 | 643 | articulos.codBar, |
| 650 | 644 | articulos.codOrigen, |
| 651 | 645 | articulos.precio, |
| ... | ... | @@ -659,7 +653,7 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 659 | 653 | |
| 660 | 654 | fun cargarRecicler(articulos: Articles, cant: Float) { |
| 661 | 655 | //TODO CARGO EN LE RV |
| 662 | - val item = ItemsRecycler(articulos.sector, articulos.codigo, articulos.descripcion, cant, articulos.codBar, articulos.codOrigen, articulos.balanza.toString(),articulos.de.toString()) | |
| 656 | + val item = ItemsRecycler(articulos.sector, articulos.codigo, articulos.descripcion, cant, articulos.codBar, articulos.codOrigen, articulos.balanza.toString(), articulos.de.toString()) | |
| 663 | 657 | listArticulos.add(item) |
| 664 | 658 | |
| 665 | 659 | viewAdapter = ProductosListAdapter(requireContext(), listArticulos, this) |
| ... | ... | @@ -764,7 +758,7 @@ class InventarioFragment : Fragment(), ProductosListAdapter.OnImageDotsClickList |
| 764 | 758 | } |
| 765 | 759 | |
| 766 | 760 | override fun onImagePenClick(sector: String?, codigo: String?, cantidad: String?, position: String) { |
| 767 | - dialogoSumaResta(requireContext(), position.toInt(), listArticulos[position.toInt()].univta) | |
| 761 | + dialogoSumaResta(requireContext(), position.toInt(), listArticulos[position.toInt()].univta, true) | |
| 768 | 762 | |
| 769 | 763 | // val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null) |
| 770 | 764 | // val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("${listArticulos[position.toInt()].descripcion}") |
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/InventarioListAdapter.kt
| ... | ... | @@ -25,8 +25,11 @@ class InventarioListAdapter(private val context: Context, private val inv: List< |
| 25 | 25 | inner class ItemsViewHolder(itemView: View) : BaseViewHolder<InvHead>(itemView) { |
| 26 | 26 | override fun bind(item: InvHead, position: Int) { |
| 27 | 27 | itemView.setOnClickListener {itemClickListener.onItemClick(item.invNum.toString())} |
| 28 | - itemView.tvPrincipalinventario.text = item.invNum.toString() | |
| 28 | + itemView.tvPrincipalinventario.text = if ( item.invNum < 10) "0${ item.invNum.toString()}" else item.invNum.toString() | |
| 29 | + | |
| 29 | 30 | itemView.tvDescription.text=item.descripcion.toString() |
| 31 | + itemView.tvFecha.text=item.fechaInicio.toString() | |
| 32 | + itemView.tvCantContada.text=item.prodContados.toString() | |
| 30 | 33 | } |
| 31 | 34 | } |
| 32 | 35 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/MainFragment.kt
| ... | ... | @@ -48,7 +48,7 @@ private var listIvn2 = ArrayList<InvHead>() |
| 48 | 48 | val ivSort91= v.findViewById<ImageButton>(R.id.ivSort91) |
| 49 | 49 | val cbVentas= v.findViewById<CheckBox>(R.id.cbVentas) |
| 50 | 50 | val cbDeposito= v.findViewById<CheckBox>(R.id.cbDeposito) |
| 51 | - | |
| 51 | + val tvTipo = v.findViewById<TextView>(R.id.tvTipo) | |
| 52 | 52 | rcInventario = v.findViewById(R.id.rcInventario) |
| 53 | 53 | |
| 54 | 54 | GlobalScope.launch(Dispatchers.Main) { |
| ... | ... | @@ -76,6 +76,7 @@ private var listIvn2 = ArrayList<InvHead>() |
| 76 | 76 | ivSort19.visibility = View.VISIBLE |
| 77 | 77 | cbVentas.visibility = View.VISIBLE |
| 78 | 78 | cbDeposito.visibility = View.VISIBLE |
| 79 | + tvTipo.visibility = View.VISIBLE | |
| 79 | 80 | tvInvDinamicos.text = "Inventarios Dinamicos (${cantidadInventarios.toString()}) -" |
| 80 | 81 | } else { |
| 81 | 82 | bAbiertoCerrado = false |
| ... | ... | @@ -85,6 +86,7 @@ private var listIvn2 = ArrayList<InvHead>() |
| 85 | 86 | txtDeposito.visibility = View.VISIBLE |
| 86 | 87 | cbVentas.visibility = View.GONE |
| 87 | 88 | cbDeposito.visibility = View.GONE |
| 89 | + tvTipo.visibility = View.GONE | |
| 88 | 90 | tvInvDinamicos.text = "Inventarios Dinamicos (${cantidadInventarios.toString()}) +" |
| 89 | 91 | } |
| 90 | 92 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/servidores/ServidoresFragment.kt
| ... | ... | @@ -51,7 +51,7 @@ class ServidoresFragment : Fragment() { |
| 51 | 51 | if (!etDireccionServidor.text.isNullOrBlank() || !etNombreServidor.text.isNullOrBlank()) { |
| 52 | 52 | // GlobalScope.launch(Dispatchers.Main) { |
| 53 | 53 | // ServerNew =AppDb.getAppDb(requireContext())?.ServeInvDao()?.findLastServer()?.plus(1) ?: 1 |
| 54 | - val servidor = ServeInv(etNombreServidor.text.toString(), "http://${etDireccionServidor.text}/", "0") | |
| 54 | + val servidor = ServeInv(etNombreServidor.text.toString(), "http://${etDireccionServidor.text}/", 0) | |
| 55 | 55 | ingresarDatos(servidor) |
| 56 | 56 | cargarRecicler(servidor) |
| 57 | 57 | Toast.makeText(requireContext(), "Servidor ${etNombreServidor.text} Guardado", Toast.LENGTH_LONG).show() |
| ... | ... | @@ -95,7 +95,7 @@ class ServidoresFragment : Fragment() { |
| 95 | 95 | fun cargarRecicler(ser: ServeInv) { |
| 96 | 96 | //TODO CARGO EN LE RV |
| 97 | 97 | deleteIcon = ContextCompat.getDrawable(requireContext(), R.drawable.borrar)!! |
| 98 | - val item = ItemsServidores(ser.descripcion, ser.direccion, ser.predeterminado) | |
| 98 | + val item = ItemsServidores(ser.descripcion, ser.direccion, ser.predeterminado.toString()) | |
| 99 | 99 | |
| 100 | 100 | listServ.add(item) |
| 101 | 101 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/util/Base/dialogos/DialogNoEncontrado.kt
| ... | ... | @@ -0,0 +1,20 @@ |
| 1 | +package com.focasoftware.deboinventariov20.ui.util.Base.dialogos | |
| 2 | + | |
| 3 | +import android.app.AlertDialog | |
| 4 | +import android.app.Dialog | |
| 5 | +import android.os.Bundle | |
| 6 | +import androidx.fragment.app.DialogFragment | |
| 7 | + | |
| 8 | +class DialogNoEncontrado : DialogFragment() { | |
| 9 | + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 10 | + return activity?.let { | |
| 11 | + val title = "Busqueda de Productos" | |
| 12 | + val content = "Producto no encotrado." | |
| 13 | + val builder: AlertDialog.Builder = AlertDialog.Builder(requireActivity()) | |
| 14 | + builder.setTitle(title).setMessage(content).setPositiveButton(android.R.string.ok) { _, _ -> | |
| 15 | + //Todo OK click | |
| 16 | + } | |
| 17 | + return builder.create() | |
| 18 | + } ?: throw IllegalStateException("Activity cannot be null") | |
| 19 | + } | |
| 20 | +} |
app/src/main/java/com/focasoftware/deboinventariov20/ui/util/Base/dialogos/DialogoLogin.kt
| ... | ... | @@ -0,0 +1,44 @@ |
| 1 | +package com.focasoftware.deboinventariov20.ui.util.Base.dialogos | |
| 2 | + | |
| 3 | +import android.app.AlertDialog | |
| 4 | +import android.app.Dialog | |
| 5 | +import android.content.SharedPreferences | |
| 6 | +import android.os.Bundle | |
| 7 | +import androidx.fragment.app.DialogFragment | |
| 8 | +import com.focasoftware.deboinventariov20.R | |
| 9 | + | |
| 10 | +class DialogoLogin() : DialogFragment() { | |
| 11 | + private lateinit var sharedPreferences: SharedPreferences | |
| 12 | + | |
| 13 | + interface OnContinueCancelClickListener { | |
| 14 | + fun onPositiveClick() | |
| 15 | + fun onCancelClick() | |
| 16 | + } | |
| 17 | + | |
| 18 | + fun newInstance(s: String): DialogoLogin? { | |
| 19 | + val dialog = DialogoLogin() | |
| 20 | + | |
| 21 | + val args = Bundle() | |
| 22 | + args.putString("title", s) | |
| 23 | + dialog.arguments = args | |
| 24 | + | |
| 25 | + return dialog | |
| 26 | + } | |
| 27 | + | |
| 28 | + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 29 | + return activity?.let { | |
| 30 | + val builder = AlertDialog.Builder(it) | |
| 31 | + | |
| 32 | + val inflater = requireActivity().layoutInflater; | |
| 33 | + | |
| 34 | + builder.setView(inflater.inflate(R.layout.login_dialog, null)).setTitle("El producto ya fue escaneado").setPositiveButton(android.R.string.ok) { _, _ -> | |
| 35 | + val listener = activity as OnContinueCancelClickListener? | |
| 36 | + listener!!.onPositiveClick() | |
| 37 | + }.setNegativeButton(android.R.string.cancel) { _, _ -> | |
| 38 | + val listener = activity as OnContinueCancelClickListener? | |
| 39 | + listener!!.onCancelClick() | |
| 40 | + } | |
| 41 | + builder.create() | |
| 42 | + } ?: throw IllegalStateException("Activity cannot be null") | |
| 43 | + } | |
| 44 | +} | |
| 0 | 45 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/ui/util/Base/dialogos/InsertCant.kt
| ... | ... | @@ -0,0 +1,45 @@ |
| 1 | +package com.focasoftware.deboinventariov20.ui.util.Base.dialogos | |
| 2 | + | |
| 3 | +import android.app.AlertDialog | |
| 4 | +import android.app.Dialog | |
| 5 | +import android.content.SharedPreferences | |
| 6 | +import android.os.Bundle | |
| 7 | +import androidx.fragment.app.DialogFragment | |
| 8 | +import com.focasoftware.deboinventariov20.R | |
| 9 | + | |
| 10 | +class InsertCant() : DialogFragment() { | |
| 11 | + | |
| 12 | + private lateinit var sharedPreferences: SharedPreferences | |
| 13 | + | |
| 14 | + interface OnContinueCancelClickListener { | |
| 15 | + fun onPositiveClick() | |
| 16 | + fun onCancelClick() | |
| 17 | + } | |
| 18 | + | |
| 19 | + fun newInstance(s: String): InsertCant? { | |
| 20 | + val dialog = InsertCant() | |
| 21 | + | |
| 22 | + val args = Bundle() | |
| 23 | + args.putString("title", s) | |
| 24 | + dialog.arguments = args | |
| 25 | + | |
| 26 | + return dialog | |
| 27 | + } | |
| 28 | + | |
| 29 | + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 30 | + return activity?.let { | |
| 31 | + val builder = AlertDialog.Builder(it) | |
| 32 | + | |
| 33 | + val inflater = requireActivity().layoutInflater; | |
| 34 | + | |
| 35 | + builder.setView(inflater.inflate(R.layout.ingresar_cantidad, null)).setTitle("").setPositiveButton(android.R.string.ok) { _, _ -> | |
| 36 | + val listener = activity as OnContinueCancelClickListener? | |
| 37 | + listener!!.onPositiveClick() | |
| 38 | + }.setNegativeButton(android.R.string.cancel) { _, _ -> | |
| 39 | + val listener = activity as OnContinueCancelClickListener? | |
| 40 | + listener!!.onCancelClick() | |
| 41 | + } | |
| 42 | + builder.create() | |
| 43 | + } ?: throw IllegalStateException("Activity cannot be null") | |
| 44 | + } | |
| 45 | + } | |
| 0 | 46 | \ No newline at end of file |
app/src/main/java/com/focasoftware/deboinventariov20/ui/util/Base/dialogos/SingleChoiceAlertDialog.kt
| ... | ... | @@ -0,0 +1,53 @@ |
| 1 | +package com.focasoftware.deboinventariov20.ui.util.Base.dialogos | |
| 2 | + | |
| 3 | +import android.app.AlertDialog | |
| 4 | +import android.app.Dialog | |
| 5 | +import android.os.Bundle | |
| 6 | +import androidx.fragment.app.DialogFragment | |
| 7 | + | |
| 8 | +class SingleChoiceAlertDialog : DialogFragment() { | |
| 9 | + | |
| 10 | + interface OnDialogSelectorListener { | |
| 11 | + fun onSelectedOption(dialogId: Int) | |
| 12 | + } | |
| 13 | + | |
| 14 | + | |
| 15 | + var mDialogSelectorCallback: OnDialogSelectorListener? = null | |
| 16 | + | |
| 17 | + fun newInstance(title: String, values: Array<String>, selected: Int = -1): SingleChoiceAlertDialog? { | |
| 18 | + val dialog = SingleChoiceAlertDialog() | |
| 19 | + | |
| 20 | + val args = Bundle() | |
| 21 | + args.putString("title", title) | |
| 22 | + args.putStringArray("values", values) | |
| 23 | + args.putInt("selected", selected) | |
| 24 | + dialog.arguments = args | |
| 25 | + | |
| 26 | + return dialog | |
| 27 | + | |
| 28 | + } | |
| 29 | + | |
| 30 | + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | |
| 31 | + | |
| 32 | + return activity?.let { | |
| 33 | + | |
| 34 | + val args = requireArguments() | |
| 35 | + val title = args.getString("title") | |
| 36 | + val values = args.getStringArray("values") | |
| 37 | + val selectedIndex = args.getInt("selected") | |
| 38 | + | |
| 39 | + val builder: AlertDialog.Builder = AlertDialog.Builder(requireActivity()) | |
| 40 | + | |
| 41 | + builder.setSingleChoiceItems(values, selectedIndex) { _, which -> | |
| 42 | + //val item = values?.get(which) | |
| 43 | + mDialogSelectorCallback?.onSelectedOption(which) | |
| 44 | + dialog?.dismiss() | |
| 45 | + } | |
| 46 | + builder.setTitle(title) | |
| 47 | + | |
| 48 | + return builder.create() | |
| 49 | + } ?: throw IllegalStateException("Activity cannot be null") | |
| 50 | + } | |
| 51 | + | |
| 52 | + | |
| 53 | +} | |
| 0 | 54 | \ No newline at end of file |
app/src/main/res/layout/fragment_descripcion.xml
| ... | ... | @@ -17,24 +17,24 @@ |
| 17 | 17 | android:background="@android:color/darker_gray" |
| 18 | 18 | android:scrollbars="vertical" |
| 19 | 19 | app:layout_constraintTop_toBottomOf="@id/guideline4" |
| 20 | - app:layout_constraintBottom_toTopOf="@+id/guideline5" | |
| 20 | + app:layout_constraintBottom_toTopOf="@+id/guideline6" | |
| 21 | 21 | app:layout_constraintEnd_toEndOf="parent" |
| 22 | 22 | app:layout_constraintStart_toStartOf="parent" |
| 23 | 23 | tools:listitem="@layout/item" /> |
| 24 | 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" /> | |
| 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 | 38 | |
| 39 | 39 | <androidx.constraintlayout.widget.Guideline |
| 40 | 40 | android:id="@+id/guideline4" |
app/src/main/res/layout/fragment_main.xml
| ... | ... | @@ -27,10 +27,10 @@ |
| 27 | 27 | android:id="@+id/ivSort19" |
| 28 | 28 | android:layout_width="50dp" |
| 29 | 29 | android:layout_height="50dp" |
| 30 | - android:layout_margin="10dp" | |
| 30 | + android:layout_marginStart="10dp" | |
| 31 | 31 | android:padding="5dp" |
| 32 | - android:visibility="gone" | |
| 33 | 32 | android:src="@drawable/ic_sort19" |
| 33 | + android:visibility="gone" | |
| 34 | 34 | app:layout_constraintHorizontal_bias="0.0" |
| 35 | 35 | app:layout_constraintHorizontal_chainStyle="packed" |
| 36 | 36 | app:layout_constraintStart_toStartOf="parent" |
| ... | ... | @@ -40,36 +40,34 @@ |
| 40 | 40 | android:id="@+id/ivSort91" |
| 41 | 41 | android:layout_width="50dp" |
| 42 | 42 | android:layout_height="50dp" |
| 43 | - android:layout_margin="10dp" | |
| 43 | + android:layout_marginStart="10dp" | |
| 44 | 44 | android:padding="5dp" |
| 45 | - android:layout_marginTop="12dp" | |
| 46 | - android:visibility="gone" | |
| 47 | 45 | android:src="@drawable/ic_sort91" |
| 48 | - app:layout_constraintHorizontal_bias="1.0" | |
| 46 | + android:visibility="gone" | |
| 49 | 47 | app:layout_constraintHorizontal_chainStyle="packed" |
| 50 | 48 | app:layout_constraintStart_toStartOf="parent" |
| 51 | 49 | app:layout_constraintTop_toBottomOf="@id/tvInvDinamicos" /> |
| 52 | 50 | |
| 53 | - | |
| 54 | - <androidx.recyclerview.widget.RecyclerView | |
| 55 | - android:id="@+id/rcInventario" | |
| 56 | - android:layout_width="match_parent" | |
| 57 | - android:layout_height="0dp" | |
| 58 | - android:background="@android:color/darker_gray" | |
| 59 | - android:scrollbars="vertical" | |
| 51 | + <TextView | |
| 52 | + android:id="@+id/tvTipo" | |
| 53 | + android:layout_width="wrap_content" | |
| 54 | + android:layout_height="wrap_content" | |
| 55 | + android:layout_margin="5dp" | |
| 56 | + android:text="Tipo:" | |
| 57 | + android:layout_marginTop="12dp" | |
| 58 | + android:textSize="15sp" | |
| 60 | 59 | android:visibility="gone" |
| 61 | - app:layout_constraintEnd_toEndOf="parent" | |
| 62 | - app:layout_constraintStart_toStartOf="parent" | |
| 63 | - app:layout_constraintTop_toBottomOf="@id/ivSort19" | |
| 64 | - tools:listitem="@layout/item_principal" /> | |
| 60 | + app:layout_constraintBaseline_toBaselineOf="@+id/cbVentas" | |
| 61 | + app:layout_constraintEnd_toStartOf="@+id/cbVentas" /> | |
| 65 | 62 | |
| 66 | 63 | <com.google.android.material.checkbox.MaterialCheckBox |
| 67 | 64 | android:id="@+id/cbVentas" |
| 68 | 65 | android:layout_width="wrap_content" |
| 69 | 66 | android:layout_height="wrap_content" |
| 70 | 67 | android:layout_margin="5dp" |
| 71 | - android:text="Ventas" | |
| 72 | 68 | android:checked="true" |
| 69 | + android:text="Ventas" | |
| 70 | + android:layout_marginTop="12dp" | |
| 73 | 71 | android:visibility="gone" |
| 74 | 72 | app:layout_constraintEnd_toStartOf="@+id/cbDeposito" |
| 75 | 73 | app:layout_constraintTop_toBottomOf="@+id/tvInvDinamicos" /> |
| ... | ... | @@ -79,30 +77,44 @@ |
| 79 | 77 | android:layout_width="wrap_content" |
| 80 | 78 | android:layout_height="wrap_content" |
| 81 | 79 | android:layout_margin="5dp" |
| 82 | - android:visibility="gone" | |
| 83 | - android:text="Deposito" | |
| 84 | 80 | android:checked="true" |
| 81 | + android:text="Deposito" | |
| 82 | + android:layout_marginTop="12dp" | |
| 83 | + android:visibility="gone" | |
| 85 | 84 | app:layout_constraintEnd_toEndOf="parent" |
| 86 | 85 | app:layout_constraintTop_toBottomOf="@+id/tvInvDinamicos" /> |
| 87 | 86 | |
| 88 | - <androidx.appcompat.widget.AppCompatTextView | |
| 89 | - android:id="@+id/txtDeposito" | |
| 90 | - android:layout_width="match_parent" | |
| 91 | - android:layout_height="90dp" | |
| 92 | - android:autoSizeMaxTextSize="150sp" | |
| 93 | - android:autoSizeMinTextSize="25sp" | |
| 94 | - android:autoSizeStepGranularity="5sp" | |
| 95 | - android:autoSizeTextType="uniform" | |
| 96 | - android:gravity="start" | |
| 97 | - android:lines="1" | |
| 98 | - android:padding="10dp" | |
| 99 | - android:text="@string/invDinamicoCompra" | |
| 100 | - android:textColor="@color/colorAccent" | |
| 101 | - android:visibility="visible" | |
| 102 | - app:fontFamily="sans-serif-condensed" | |
| 103 | - app:layout_constraintBottom_toBottomOf="parent" | |
| 104 | - app:layout_constraintEnd_toEndOf="parent" | |
| 105 | - app:layout_constraintStart_toStartOf="parent" | |
| 106 | - app:layout_constraintTop_toBottomOf="@id/tvInvDinamicos" | |
| 107 | - app:layout_constraintVertical_bias="0.0" /> | |
| 87 | + <androidx.recyclerview.widget.RecyclerView | |
| 88 | + android:id="@+id/rcInventario" | |
| 89 | + android:layout_width="match_parent" | |
| 90 | + android:layout_height="0dp" | |
| 91 | + android:background="@android:color/darker_gray" | |
| 92 | + android:scrollbars="vertical" | |
| 93 | + android:visibility="gone" | |
| 94 | + app:layout_constraintEnd_toEndOf="parent" | |
| 95 | + app:layout_constraintStart_toStartOf="parent" | |
| 96 | + app:layout_constraintTop_toBottomOf="@id/ivSort19" | |
| 97 | + tools:listitem="@layout/item_principal" /> | |
| 98 | + | |
| 99 | + | |
| 100 | + <androidx.appcompat.widget.AppCompatTextView | |
| 101 | + android:id="@+id/txtDeposito" | |
| 102 | + android:layout_width="match_parent" | |
| 103 | + android:layout_height="90dp" | |
| 104 | + android:autoSizeMaxTextSize="150sp" | |
| 105 | + android:autoSizeMinTextSize="25sp" | |
| 106 | + android:autoSizeStepGranularity="5sp" | |
| 107 | + android:autoSizeTextType="uniform" | |
| 108 | + android:gravity="start" | |
| 109 | + android:lines="1" | |
| 110 | + android:padding="10dp" | |
| 111 | + android:text="@string/invDinamicoCompra" | |
| 112 | + android:textColor="@color/colorAccent" | |
| 113 | + android:visibility="visible" | |
| 114 | + app:fontFamily="sans-serif-condensed" | |
| 115 | + app:layout_constraintBottom_toBottomOf="parent" | |
| 116 | + app:layout_constraintEnd_toEndOf="parent" | |
| 117 | + app:layout_constraintStart_toStartOf="parent" | |
| 118 | + app:layout_constraintTop_toBottomOf="@id/tvInvDinamicos" | |
| 119 | + app:layout_constraintVertical_bias="0.0" /> | |
| 108 | 120 | </androidx.constraintlayout.widget.ConstraintLayout> |
| 109 | 121 | \ No newline at end of file |
app/src/main/res/layout/item_principal.xml
| ... | ... | @@ -15,33 +15,14 @@ |
| 15 | 15 | android:layout_gravity="center_horizontal|center_vertical" |
| 16 | 16 | android:orientation="vertical"> |
| 17 | 17 | |
| 18 | -<!-- <androidx.appcompat.widget.AppCompatImageView--> | |
| 19 | -<!-- android:id="@+id/ivCamara"--> | |
| 20 | -<!-- android:layout_width="80dp"--> | |
| 21 | -<!-- android:layout_height="80dp"--> | |
| 22 | -<!-- android:layout_margin="10dp"--> | |
| 23 | -<!-- android:layout_marginTop="15dp"--> | |
| 24 | -<!-- android:background="@drawable/boton_redondo2"--> | |
| 25 | -<!-- android:clickable="true"--> | |
| 26 | -<!-- android:contentDescription="@string/ibBusCB"--> | |
| 27 | -<!-- android:elevation="5dp"--> | |
| 28 | -<!-- android:focusable="false"--> | |
| 29 | -<!-- android:scaleType="fitEnd"--> | |
| 30 | -<!-- --> | |
| 31 | -<!-- app:layout_constraintBottom_toTopOf="@+id/ivFondo"--> | |
| 32 | -<!-- app:layout_constraintCircleRadius="40dp"--> | |
| 33 | -<!-- app:layout_constraintStart_toStartOf="parent"--> | |
| 34 | -<!-- app:layout_constraintTop_toTopOf="parent"--> | |
| 35 | -<!-- />--> | |
| 36 | - | |
| 37 | 18 | <TextView |
| 38 | 19 | android:id="@+id/tvPrincipalinventario" |
| 39 | 20 | android:layout_width="50dp" |
| 40 | 21 | android:layout_height="50dp" |
| 41 | 22 | android:layout_margin="10dp" |
| 23 | + android:background="@drawable/boton_redondo2" | |
| 42 | 24 | android:gravity="center" |
| 43 | 25 | android:lines="2" |
| 44 | - android:background="@drawable/boton_redondo2" | |
| 45 | 26 | android:textColor="@android:color/black" |
| 46 | 27 | android:textSize="@dimen/TitulosMedios" |
| 47 | 28 | android:textStyle="bold" |
| ... | ... | @@ -51,16 +32,69 @@ |
| 51 | 32 | tools:text="99" /> |
| 52 | 33 | |
| 53 | 34 | <TextView |
| 35 | + android:id="@+id/textView6" | |
| 36 | + android:layout_width="wrap_content" | |
| 37 | + android:layout_height="wrap_content" | |
| 38 | + android:layout_marginTop="5dp" | |
| 39 | + android:text="Fecha Inicio" | |
| 40 | + android:textSize="15sp" | |
| 41 | + android:textStyle="bold" | |
| 42 | + app:layout_constraintEnd_toEndOf="parent" | |
| 43 | + app:layout_constraintHorizontal_bias="0.217" | |
| 44 | + app:layout_constraintStart_toEndOf="@id/tvPrincipalinventario" | |
| 45 | + app:layout_constraintTop_toTopOf="parent" /> | |
| 46 | + | |
| 47 | + <TextView | |
| 48 | + android:id="@+id/tvFecha" | |
| 49 | + android:layout_width="wrap_content" | |
| 50 | + android:layout_height="wrap_content" | |
| 51 | + android:layout_marginStart="5dp" | |
| 52 | + android:text="01/01/2020 12:20:20" | |
| 53 | + android:textSize="15sp" | |
| 54 | + android:textStyle="bold" | |
| 55 | + app:layout_constraintBaseline_toBaselineOf="@+id/textView6" | |
| 56 | + app:layout_constraintEnd_toEndOf="parent" | |
| 57 | + app:layout_constraintHorizontal_bias="0.0" | |
| 58 | + app:layout_constraintStart_toEndOf="@id/textView6" /> | |
| 59 | + | |
| 60 | + <TextView | |
| 61 | + android:id="@+id/textView7" | |
| 62 | + android:layout_width="wrap_content" | |
| 63 | + android:layout_height="wrap_content" | |
| 64 | + android:layout_marginTop="4dp" | |
| 65 | + android:text="Art. Contados" | |
| 66 | + android:textSize="15sp" | |
| 67 | + android:textStyle="bold" | |
| 68 | + app:layout_constraintEnd_toEndOf="parent" | |
| 69 | + app:layout_constraintHorizontal_bias="0.23" | |
| 70 | + app:layout_constraintStart_toEndOf="@+id/tvPrincipalinventario" | |
| 71 | + app:layout_constraintTop_toBottomOf="@id/textView6" /> | |
| 72 | + | |
| 73 | + <TextView | |
| 74 | + android:id="@+id/tvCantContada" | |
| 75 | + android:layout_width="wrap_content" | |
| 76 | + android:layout_height="wrap_content" | |
| 77 | + android:layout_marginTop="4dp" | |
| 78 | + android:layout_marginStart="5dp" | |
| 79 | + android:text="002" | |
| 80 | + android:textSize="15sp" | |
| 81 | + android:textStyle="bold" | |
| 82 | + app:layout_constraintBaseline_toBaselineOf="@+id/textView7" | |
| 83 | + app:layout_constraintStart_toEndOf="@+id/textView7" | |
| 84 | + app:layout_constraintTop_toBottomOf="@+id/tvFecha" /> | |
| 85 | + | |
| 86 | + <TextView | |
| 54 | 87 | android:id="@+id/tvDescription" |
| 55 | 88 | android:layout_width="wrap_content" |
| 56 | 89 | android:layout_height="wrap_content" |
| 57 | 90 | android:text="prueba" |
| 58 | 91 | app:layout_constraintBottom_toTopOf="@id/ivFondo" |
| 59 | 92 | app:layout_constraintEnd_toEndOf="parent" |
| 60 | - app:layout_constraintHorizontal_bias="0.046" | |
| 93 | + app:layout_constraintHorizontal_bias="0.489" | |
| 61 | 94 | app:layout_constraintStart_toEndOf="@id/tvPrincipalinventario" |
| 62 | - app:layout_constraintTop_toTopOf="parent" | |
| 63 | - app:layout_constraintVertical_bias="0.607" /> | |
| 95 | + app:layout_constraintTop_toBottomOf="@+id/tvFecha" | |
| 96 | + app:layout_constraintVertical_bias="1.0" /> | |
| 97 | + | |
| 64 | 98 | |
| 65 | 99 | <androidx.appcompat.widget.AppCompatImageView |
| 66 | 100 | android:id="@+id/ivFondo" |
app/src/main/res/layout/login_dialog.xml
| ... | ... | @@ -45,22 +45,22 @@ |
| 45 | 45 | android:id="@+id/tvNuevaCantidad" |
| 46 | 46 | android:layout_width="0dp" |
| 47 | 47 | android:layout_height="wrap_content" |
| 48 | + android:autofillHints="" | |
| 48 | 49 | android:hint="" |
| 49 | 50 | android:inputType="numberDecimal" |
| 50 | 51 | app:layout_constraintBaseline_toBaselineOf="@+id/tvgenerico" |
| 51 | 52 | app:layout_constraintEnd_toEndOf="parent" |
| 52 | - app:layout_constraintStart_toEndOf="@id/tvgenerico" | |
| 53 | - android:autofillHints="" /> | |
| 53 | + app:layout_constraintStart_toEndOf="@id/tvgenerico" /> | |
| 54 | 54 | |
| 55 | 55 | <TextView |
| 56 | 56 | android:id="@+id/tvgenerico2" |
| 57 | 57 | android:layout_width="wrap_content" |
| 58 | 58 | android:layout_height="wrap_content" |
| 59 | 59 | android:layout_margin="5dp" |
| 60 | - android:visibility="gone" | |
| 61 | 60 | android:gravity="center" |
| 62 | 61 | android:text="@string/tvSeleccion" |
| 63 | 62 | android:textSize="20sp" |
| 63 | + android:visibility="gone" | |
| 64 | 64 | app:layout_constraintStart_toStartOf="parent" |
| 65 | 65 | app:layout_constraintTop_toBottomOf="@+id/tvgenerico" /> |
| 66 | 66 | |
| ... | ... | @@ -68,7 +68,6 @@ |
| 68 | 68 | android:id="@+id/rgFechaHora" |
| 69 | 69 | android:layout_width="wrap_content" |
| 70 | 70 | android:layout_height="wrap_content" |
| 71 | - android:layout_margin="5dp" | |
| 72 | 71 | android:gravity="start" |
| 73 | 72 | android:orientation="horizontal" |
| 74 | 73 | app:layout_constraintEnd_toEndOf="parent" |
| ... | ... | @@ -82,29 +81,29 @@ |
| 82 | 81 | android:layout_height="wrap_content" |
| 83 | 82 | android:layout_margin="5dp" |
| 84 | 83 | android:checked="false" |
| 85 | - android:padding="5dp" | |
| 84 | + | |
| 86 | 85 | android:text="@string/rbSumar" |
| 87 | 86 | android:textSize="@dimen/text_size2" /> |
| 88 | 87 | |
| 89 | 88 | <RadioButton |
| 90 | - android:id="@+id/rbRestar" | |
| 89 | + android:id="@+id/rbMdodificar" | |
| 91 | 90 | android:layout_width="wrap_content" |
| 92 | 91 | android:layout_height="wrap_content" |
| 93 | 92 | android:layout_margin="5dp" |
| 94 | 93 | android:checked="false" |
| 95 | - android:padding="5dp" | |
| 96 | - android:text="@string/rbRestar" | |
| 94 | + android:text="@string/rbModificar" | |
| 97 | 95 | android:textSize="@dimen/text_size2" /> |
| 98 | 96 | |
| 99 | 97 | <RadioButton |
| 100 | - android:id="@+id/rbMdodificar" | |
| 98 | + android:id="@+id/rbRestar" | |
| 101 | 99 | android:layout_width="wrap_content" |
| 102 | 100 | android:layout_height="wrap_content" |
| 103 | 101 | android:layout_margin="5dp" |
| 104 | 102 | android:checked="false" |
| 105 | 103 | android:padding="5dp" |
| 106 | - android:text="@string/rbModificar" | |
| 104 | + android:text="@string/rbRestar" | |
| 107 | 105 | android:textSize="@dimen/text_size2" /> |
| 106 | + | |
| 108 | 107 | </RadioGroup> |
| 109 | 108 | |
| 110 | 109 | <TextView |
| ... | ... | @@ -121,7 +120,7 @@ |
| 121 | 120 | app:layout_constraintTop_toBottomOf="@+id/rgFechaHora" /> |
| 122 | 121 | |
| 123 | 122 | <TextView |
| 124 | - android:id="@+id/tvgenerico4" | |
| 123 | + android:id="@+id/tvResultado" | |
| 125 | 124 | android:layout_width="wrap_content" |
| 126 | 125 | android:layout_height="wrap_content" |
| 127 | 126 | android:layout_margin="5dp" |
| ... | ... | @@ -133,36 +132,36 @@ |
| 133 | 132 | app:layout_constraintStart_toEndOf="@+id/tvgenerico3" |
| 134 | 133 | app:layout_constraintTop_toBottomOf="@+id/rgFechaHora" /> |
| 135 | 134 | |
| 136 | - <LinearLayout | |
| 137 | - android:layout_width="match_parent" | |
| 135 | + <LinearLayout | |
| 136 | + android:layout_width="match_parent" | |
| 137 | + android:layout_height="wrap_content" | |
| 138 | + android:gravity="center" | |
| 139 | + android:orientation="horizontal" | |
| 140 | + app:layout_constraintEnd_toEndOf="parent" | |
| 141 | + app:layout_constraintStart_toStartOf="parent" | |
| 142 | + app:layout_constraintTop_toBottomOf="@+id/tvResultado"> | |
| 143 | + | |
| 144 | + <Button | |
| 145 | + android:id="@+id/btnAceptar" | |
| 146 | + style="@style/Base.Widget.AppCompat.Button.Colored" | |
| 147 | + android:layout_width="wrap_content" | |
| 148 | + android:layout_height="wrap_content" | |
| 149 | + android:layout_margin="5dp" | |
| 150 | + android:background="@drawable/boton_borde_redondeado" | |
| 151 | + android:padding="20dp" | |
| 152 | + android:text="@string/btnOk" | |
| 153 | + android:textColor="@android:color/white" /> | |
| 154 | + | |
| 155 | + <Button | |
| 156 | + android:id="@+id/dialogCancelBtn" | |
| 157 | + style="@style/Base.Widget.AppCompat.Button.Colored" | |
| 158 | + android:layout_width="wrap_content" | |
| 138 | 159 | android:layout_height="wrap_content" |
| 139 | - android:orientation="horizontal" | |
| 140 | - android:gravity="center" | |
| 141 | - app:layout_constraintStart_toStartOf="parent" | |
| 142 | - app:layout_constraintEnd_toEndOf="parent" | |
| 143 | - app:layout_constraintTop_toBottomOf="@+id/tvgenerico4"> | |
| 144 | - | |
| 145 | - <Button | |
| 146 | - android:id="@+id/btnAceptar" | |
| 147 | - style="@style/Base.Widget.AppCompat.Button.Colored" | |
| 148 | - android:layout_width="wrap_content" | |
| 149 | - android:textColor="@android:color/white" | |
| 150 | - android:padding="20dp" | |
| 151 | - android:background="@drawable/boton_borde_redondeado" | |
| 152 | - android:layout_margin="5dp" | |
| 153 | - android:layout_height="wrap_content" | |
| 154 | - android:text="@string/btnOk" /> | |
| 155 | - | |
| 156 | - <Button | |
| 157 | - android:id="@+id/dialogCancelBtn" | |
| 158 | - style="@style/Base.Widget.AppCompat.Button.Colored" | |
| 159 | - android:textColor="@android:color/white" | |
| 160 | - android:padding="20dp" | |
| 161 | - android:background="@drawable/boton_borde_redondeado" | |
| 162 | - android:layout_margin="5dp" | |
| 163 | - android:layout_width="wrap_content" | |
| 164 | - android:layout_height="wrap_content" | |
| 165 | - android:text="@string/btnCancelar" /> | |
| 166 | - </LinearLayout> | |
| 160 | + android:layout_margin="5dp" | |
| 161 | + android:background="@drawable/boton_borde_redondeado" | |
| 162 | + android:padding="20dp" | |
| 163 | + android:text="@string/btnCancelar" | |
| 164 | + android:textColor="@android:color/white" /> | |
| 165 | + </LinearLayout> | |
| 167 | 166 | |
| 168 | 167 | </androidx.constraintlayout.widget.ConstraintLayout> |
| 169 | 168 | \ No newline at end of file |
app/src/main/res/navigation/mobile_navigation.xml
| ... | ... | @@ -67,8 +67,7 @@ |
| 67 | 67 | app:popExitAnim="@anim/slide_out_right" |
| 68 | 68 | app:enterAnim="@anim/slide_in_right" |
| 69 | 69 | app:exitAnim="@anim/slide_out_left" |
| 70 | - app:popUpTo="@+id/inventarioFragment" | |
| 71 | - app:popUpToInclusive="true"/> | |
| 70 | + /> | |
| 72 | 71 | <action |
| 73 | 72 | android:id="@+id/action_inventarioFragment_to_mainFragment2" |
| 74 | 73 | app:destination="@id/mainFragment2" |
| ... | ... | @@ -111,20 +110,19 @@ |
| 111 | 110 | app:popExitAnim="@anim/slide_out_right" |
| 112 | 111 | app:enterAnim="@anim/slide_in_right" |
| 113 | 112 | app:exitAnim="@anim/slide_out_left" |
| 114 | - app:popUpTo="@+id/descripcionFragment" | |
| 115 | - app:popUpToInclusive="true"/> | |
| 113 | + /> | |
| 116 | 114 | </fragment> |
| 117 | 115 | <dialog |
| 118 | 116 | android:id="@+id/dialogNoEncontrado" |
| 119 | - android:name="com.focasoftware.deboinventariov20.ui.dialogos.DialogNoEncontrado" | |
| 117 | + android:name="com.focasoftware.deboinventariov20.ui.util.Base.dialogos.DialogNoEncontrado" | |
| 120 | 118 | android:label="DialogNoEncontrado" /> |
| 121 | 119 | <fragment |
| 122 | 120 | android:id="@+id/dialogoLogin" |
| 123 | - android:name="com.focasoftware.deboinventariov20.ui.dialogos.DialogoLogin" | |
| 121 | + android:name="com.focasoftware.deboinventariov20.ui.util.Base.dialogos.DialogoLogin" | |
| 124 | 122 | android:label="dialogoLogin" /> |
| 125 | 123 | <fragment |
| 126 | 124 | android:id="@+id/singleChoiceAlertDialog" |
| 127 | - android:name="com.focasoftware.deboinventariov20.ui.dialogos.SingleChoiceAlertDialog" | |
| 125 | + android:name="com.focasoftware.deboinventariov20.ui.util.Base.dialogos.SingleChoiceAlertDialog" | |
| 128 | 126 | android:label="SingleChoiceAlertDialog" /> |
| 129 | 127 | |
| 130 | 128 | <fragment |
app/src/main/res/values/strings.xml
| ... | ... | @@ -121,7 +121,7 @@ |
| 121 | 121 | <string name="rbRestar">Restar</string> |
| 122 | 122 | <string name="rbModificar">Reemplazar</string> |
| 123 | 123 | <string name="tvTotal">Cantidad Final</string>tvTotal |
| 124 | - <string name="tvResultado">Cantidad final:</string>tvTotal | |
| 124 | + <string name="tvResultado">Resultado:</string>tvTotal | |
| 125 | 125 | |
| 126 | 126 | <string name="large_text"> |
| 127 | 127 | "Material is the metaphor.\n\n" |