diff --git a/.idea/misc.xml b/.idea/misc.xml
index 83b8cb7d..61e3cef2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -153,6 +153,7 @@
+
@@ -240,6 +241,7 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index 51ee3869..21e68eea 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,7 +13,7 @@ android {
applicationId "es.verdnatura"
minSdkVersion 21 //21
targetSdkVersion 30
- versionCode 133
+ versionCode 134
versionName = "9"
//versionName = "9.2Beta" versionCode 133
//versionName = "9" versionCode 133
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index b991e3b1..9ee47ccf 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -11,7 +11,7 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
- "versionCode": 133,
+ "versionCode": 134,
"versionName": "9",
"outputFile": "app-release.apk"
}
diff --git a/app/release/vn-picking.apk b/app/release/vn-picking.apk
index b16dd402..213e5816 100644
Binary files a/app/release/vn-picking.apk and b/app/release/vn-picking.apk differ
diff --git a/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt b/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt
index ef9e1000..d98e2c58 100644
--- a/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt
@@ -30,19 +30,22 @@ import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.common.mediaCurrentVolume
+import es.verdnatura.presentation.view.feature.login.model.WorkForms
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
+import org.json.JSONObject
import org.koin.androidx.viewmodel.ext.android.viewModel
import timber.log.Timber
import java.util.*
-import kotlin.collections.ArrayList
+import kotlin.collections.Map.*
import kotlin.reflect.KClass
abstract class BaseFragment(viewModelClass: KClass) :
Fragment(), TextToSpeech.OnInitListener, RecognitionListener {
- protected val TAG = "VERDNATURA"
+ protected val TAG = "VERDNATURA::"
protected val PREFS_USER = "es.verdnatura.user.prefs"
+ protected val PREFS_SERVER = "es.verdnatura.server.prefs"
protected val USERFK = "userFk"
protected val USER = "user"
protected val PASSWORD = "password"
@@ -58,6 +61,7 @@ abstract class BaseFragment(viewModelCla
protected val DEVICENAME = "devicename"
protected val TRAINNAME = "trainName"
protected val TRAINFK = "trainFk"
+ protected val WORKFORMSELECTED="workFormSelected"
protected val ITEMPACKING = "itemPackingType"
protected val ITEMPACKINGFK = "itemPackingTypeFk"
@@ -546,6 +550,8 @@ abstract class BaseFragment(viewModelCla
TRAINNAME -> prefs.getString(name, "").toString()
ITEMPACKING -> prefs.getString(name, "").toString()
ITEMPACKINGFK -> prefs.getString(name, "").toString()
+ WORKFORMSELECTED->prefs.getString(name, "Producción").toString()
+
"base_url" -> {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
@@ -587,6 +593,91 @@ abstract class BaseFragment(viewModelCla
}
+ fun saveWorkForm(workForm: WorkForms) {
+ var prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_SERVER, 0)
+ var editor = prefs.edit()
+ var gson = Gson()
+ var json = gson.toJson(workForm)
+ editor.putString(workForm.name, json)
+ editor.commit()
+
+ saveData("base_url", workForm.urlSilex)
+ saveData("base_urlSalix", workForm.urlSalix)
+ }
+
+ fun deleteWorkForm(nameWorkForm: String) {
+ var prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_SERVER, 0)
+ var editor = prefs.edit()
+ editor.remove(nameWorkForm).commit()
+ }
+
+ fun getWorkForm(): List {
+ var listForms: ArrayList = ArrayList()
+ val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_SERVER, 0)
+ val editor = prefs.edit()
+
+ val keys: Map = prefs.all
+ for (Map in keys) {
+
+
+ var json2 = JSONObject(Map.value.toString())
+
+ listForms.add(
+ WorkForms(
+ Map.key,
+ json2.get("urlSilex").toString(),
+ json2.get("urlSalix").toString(),
+ json2.get("isShowDelete").toString().toBoolean(),
+ json2.get("created") as Long
+
+
+ )
+ )
+
+ }
+ editor.commit()
+ if (listForms.isEmpty()) {
+ createWorksDefault()
+ }
+
+ return listForms.sortedBy { it.created }
+ }
+
+ fun createWorksDefault() {
+ saveWorkForm(
+ WorkForms(
+ "Producción",
+ "https://app.verdnatura.es",
+ "https://salix.verdnatura.es/api/"
+ )
+ )
+ saveWorkForm(
+ WorkForms(
+ "Test",
+ "https://test-app.verdnatura.es",
+ urlSalix = "https://test-salix.verdnatura.es/api/"
+ )
+ )
+ saveWorkForm(
+ WorkForms(
+ "Sergio",
+ "httpsergiodt://10.1.4.42:9000",
+ urlSalix = "https://test-salix.verdnatura.es/api/"
+ )
+ )
+
+ saveWorkForm(
+ WorkForms(
+ "Añadir...",
+ "",
+ "",
+ created = Calendar.getInstance().timeInMillis+Calendar.getInstance().timeInMillis
+
+
+ )
+ )
+ }
+
fun saveData(name: String, value: String) {
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
diff --git a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt
index d14a9074..705505c6 100644
--- a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt
+++ b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt
@@ -1,5 +1,8 @@
package es.verdnatura.presentation.common
+import java.sql.Time
+import java.util.*
+
class ResponseItemVO(
var response: String = "",
var isError: Boolean = false,
@@ -33,3 +36,5 @@ class GeneralItem(
var code: String? = "",
var text: String? = ""
)
+
+
diff --git a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt
index 1b03cde3..375b4916 100644
--- a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt
+++ b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt
@@ -8,6 +8,7 @@ import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal
import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO
import es.verdnatura.presentation.view.feature.faltas.model.ItemFaltasVO
import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO
+import es.verdnatura.presentation.view.feature.login.model.WorkForms
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionScanVO
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO
import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO
@@ -60,6 +61,12 @@ interface OnSmartTagRowClickListener {
interface OnGeneralItemRowClickListener {
fun OnGeneralItemRowClickListener(item: GeneralItem)
}
+interface OnWorkFormsItemRowClickListener {
+ fun OnWorkFormsItemRowClickListener(item: WorkForms)
+}
+interface OnTrashItemRowClickListener {
+ fun OnTrashItemRowClickListener(item: WorkForms)
+}
interface OnLocationRowClickListener {
fun onLocationRowClickListener(item: ItemLocationVO)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogInputThreeValues.kt b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogInputThreeValues.kt
new file mode 100644
index 00000000..f126e210
--- /dev/null
+++ b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogInputThreeValues.kt
@@ -0,0 +1,142 @@
+package es.verdnatura.presentation.view.component
+
+import android.app.Dialog
+import android.content.Context
+import android.text.InputType
+import android.view.View
+import com.google.android.material.textfield.TextInputEditText
+import es.verdnatura.R
+import es.verdnatura.databinding.ComponentCustomEditDialogThreeValuesBinding
+import es.verdnatura.databinding.ComponentCustomEditDialogTwoValuesBinding
+
+
+class CustomDialogInputThreeValues(context: Context) : Dialog(context, R.style.DialogTheme) {
+
+ private var binding: ComponentCustomEditDialogThreeValuesBinding =
+ ComponentCustomEditDialogThreeValuesBinding.inflate(layoutInflater)
+
+
+ init {
+
+ setContentView(binding.root)
+
+
+ }
+
+ fun getEditText(): TextInputEditText {
+
+ return binding.customDialogValueOne
+
+
+ }
+
+ fun getEditTextTwo(): TextInputEditText {
+
+ return binding.customDialogValueTwo
+
+ }
+
+ fun getValue(): String {
+
+ return binding.customDialogValueOne.text.toString()
+
+
+ }
+
+ fun getValueTwo(): String {
+
+ return binding.customDialogValueTwo.text.toString()
+
+ }
+ fun getValueThree(): String {
+
+ return binding.customDialogValueThree.text.toString()
+
+ }
+
+ fun setValue(value: String): CustomDialogInputThreeValues {
+
+ binding.customDialogValueOne.setText(value)
+ binding.customDialogValueOne.visibility = View.VISIBLE
+
+
+ return this
+ }
+ fun setValueTwo(value: String): CustomDialogInputThreeValues {
+
+ binding.customDialogValueTwo.setText(value)
+ binding.customDialogValueOne.visibility = View.VISIBLE
+
+
+ return this
+ }
+ fun setEnableValue(isEnabled: Boolean): CustomDialogInputThreeValues {
+
+ binding.customDialogValueOne.isEnabled=isEnabled
+
+
+ return this
+ }
+ fun setTitle(title: String): CustomDialogInputThreeValues {
+
+ binding.customDialogTitle.visibility = View.VISIBLE
+ binding.customDialogTitle.text = title
+
+ return this
+ }
+
+ fun setDescription(description: String): CustomDialogInputThreeValues {
+
+ binding.customDialogDescription.visibility = View.VISIBLE
+ binding.customDialogDescription.text = description
+
+
+ return this
+ }
+
+ fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogInputThreeValues {
+
+ binding.customDialogButtonOk.visibility = View.VISIBLE
+ binding.customDialogButtonOk.text = text
+ binding.customDialogButtonOk.setOnClickListener { onButtonClicked() }
+
+ return this
+ }
+
+ fun setKoButton(text: String, onButtonClicked: () -> Unit): CustomDialogInputThreeValues {
+
+ binding.customDialogButtonKo.visibility = View.VISIBLE
+ binding.customDialogButtonKo.text = text
+ binding.customDialogButtonKo.setOnClickListener { onButtonClicked() }
+
+
+ return this
+ }
+
+
+ fun setInfoTex(text:String,text2:String,text3:String){
+ binding.textinputlayoutOne.hint = text
+ binding.textinputlayoutTwo.hint = text2
+ binding.textinputlayoutThree.hint = text3
+ }
+
+
+
+ fun setInputTextTwoVisibility() {
+ binding.textinputlayoutTwo.visibility = View.VISIBLE
+ }
+ fun setInputTextVisibility(visibility:Int) {
+ binding.textinputlayoutTwo.visibility = visibility
+ }
+
+ fun setFocusText() {
+ binding.customDialogValueOne.requestFocus()
+ }
+
+ fun setFocusTextTwo() {
+ binding.customDialogValueTwo.requestFocus()
+ }
+ fun setFocusTextThree() {
+ binding.customDialogValueThree.requestFocus()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt
index df1af17a..03783ff6 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt
@@ -128,5 +128,10 @@ class CustomDialogList (context: Context) : Dialog(context, R.style.DialogTheme)
//custom_dialog_value.visibility = View.GONE
return this
}
+ fun hideDescription():CustomDialogList{
+ binding.customDialogDescription.visibility = View.GONE
+
+ return this
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt
index 79908ca0..b9c5842b 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt
@@ -102,7 +102,7 @@ class CollectionFragment(
private var originalItemScan: String = ""
private var workerFkFromTicket = ""
- private var itemShelvingTracking_mark:String=""
+ private var itemShelvingTracking_mark: String = ""
companion object {
fun newInstance(collection: CollectionVO, type: String) =
@@ -769,7 +769,7 @@ class CollectionFragment(
})
responseSaleReplace.observe(viewLifecycleOwner, Observer {
- binding.splashProgress.visibility=GONE
+ binding.splashProgress.visibility = GONE
if (it.isError) {
@@ -797,7 +797,7 @@ class CollectionFragment(
ma.messageWithSound(it.errorMessage, it.isError, true)
- binding.splashProgress.visibility=VISIBLE
+ binding.splashProgress.visibility = VISIBLE
viewModel.collectionTicketGet(
getData(USER),
@@ -810,7 +810,7 @@ class CollectionFragment(
} else {
- // pintar línea
+ // pintar línea
saleAdapter!!.notifyDataSetChanged()
setListPosition(storedPosition, false)
@@ -1054,10 +1054,10 @@ class CollectionFragment(
binding.fragmentSacadorCollections.layoutManager = lm
setTotalLines()
- if (storedPosition != 0)
- setListPosition(storedPosition, true)
- else if (storedBackPosition != 0)
- setListPosition(storedBackPosition, true)
+ if (storedPosition != 0)
+ setListPosition(storedPosition, true)
+ else if (storedBackPosition != 0)
+ setListPosition(storedBackPosition, true)
setScrollListener(lm!!)
//sergio: se quita porque se realiza desde triggers
@@ -1360,11 +1360,11 @@ class CollectionFragment(
//saleAdapter!!.notifyDataSetChanged()
//setListPosition(position, false)
- if (type==SACADOR){
+ if (type == SACADOR) {
saleTracking_mark(position, newType)
//saleTrackingReplace(position,newType)
- }else{
- saleTrackingReplace(position,newType)
+ } else {
+ saleTrackingReplace(position, newType)
setListPosition(position, false)
}
isMarking = true
@@ -1399,7 +1399,7 @@ class CollectionFragment(
//Tarea #4371 se quita para ver si funciona correctamente
//binding.splashProgress.visibility=VISIBLE
- viewModel.saleTrackingReplace(
+ viewModel.saleTrackingReplace(
getData(USER),
getData(PASSWORD),
saleFk = sales[position].saleFk,
@@ -1417,21 +1417,21 @@ class CollectionFragment(
//Tarea #4371 se quita para ver si funciona correctamente
private fun saleTracking_mark(position: Int, type: String) {
- binding.splashProgress.visibility= VISIBLE
+ binding.splashProgress.visibility = VISIBLE
- viewModel.saleTracking_mark(
- getData(USER),
- getData(PASSWORD),
- saleFk = sales[position].saleFk,
- vIsChecked = if (type == SACADOR) sales[position].isPrepared else if (type == CONTROLADOR) sales[position].isControlled else if (type == "PRECHECKER") sales[position].isPreControlled else "1",
- vOriginalQuantity = sales[position].pickedQuantity,
- vStateFk = if (type == CONTROLADOR) "CHECKED" else if (type == "PRECHECKER") "PREVIOUS_CONTROL" else type,//type.toString(),
- vBuyFk = originalItemScan,
- vItemShelvingFk = itemShelvingTracking_mark,
- vQuantity=customDialogList.getValue()
+ viewModel.saleTracking_mark(
+ getData(USER),
+ getData(PASSWORD),
+ saleFk = sales[position].saleFk,
+ vIsChecked = if (type == SACADOR) sales[position].isPrepared else if (type == CONTROLADOR) sales[position].isControlled else if (type == "PRECHECKER") sales[position].isPreControlled else "1",
+ vOriginalQuantity = sales[position].pickedQuantity,
+ vStateFk = if (type == CONTROLADOR) "CHECKED" else if (type == "PRECHECKER") "PREVIOUS_CONTROL" else type,//type.toString(),
+ vBuyFk = originalItemScan,
+ vItemShelvingFk = itemShelvingTracking_mark,
+ vQuantity = customDialogList.getValue()
- )
+ )
}
private fun unMarkLine(position: Int, newType: String) {
@@ -1757,14 +1757,14 @@ class CollectionFragment(
"(" + (shelvingVisible.toInt() - quantity.toInt()).toString() + ")"
}
//Tarea #4371 se quita para ver si funciona correctamente
- /*viewModel.itemShelvingSaleSupplyAdd(
- getData(USER),
- getData(PASSWORD),
- itemShelvingFk = itemShelvingFk,
- saleFk = sales[storedPosition].saleFk,
- quantity = if (quantity != "0") quantity else customDialogList.getValue()
+ /*viewModel.itemShelvingSaleSupplyAdd(
+ getData(USER),
+ getData(PASSWORD),
+ itemShelvingFk = itemShelvingFk,
+ saleFk = sales[storedPosition].saleFk,
+ quantity = if (quantity != "0") quantity else customDialogList.getValue()
- )*/
+ )*/
} catch (e: Exception) {
@@ -1787,7 +1787,7 @@ class CollectionFragment(
//3- MARCAR LINEA
//Tarea #4371
- itemShelvingTracking_mark = itemShelvingFk
+ itemShelvingTracking_mark = itemShelvingFk
if (sales[storedPosition].pickedQuantity != sales[storedPosition].quantity) {
sales[storedPosition].isPrepared = "1"
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt
new file mode 100644
index 00000000..d145810c
--- /dev/null
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt
@@ -0,0 +1,61 @@
+package es.verdnatura.presentation.view.feature.login.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import es.verdnatura.databinding.ItemWorkFormsRowBinding
+import es.verdnatura.presentation.common.OnTrashItemRowClickListener
+import es.verdnatura.presentation.common.OnWorkFormsItemRowClickListener
+import es.verdnatura.presentation.view.feature.login.model.WorkForms
+
+class WorkFormAdapter(
+ private val items: List,
+ private val OnWorkFormsItemRowClickListener: OnWorkFormsItemRowClickListener,
+ private val OnTrashItemRowClickListener: OnTrashItemRowClickListener
+ // private var showDelete: Boolean = false
+) : RecyclerView.Adapter() {
+
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
+ return ItemHolder(
+ ItemWorkFormsRowBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ )
+ }
+
+ override fun getItemCount() = items.size
+
+ override fun onBindViewHolder(holder: ItemHolder, position: Int) {
+ holder.bind(items[position])
+
+ holder.binding.root.setOnClickListener {
+ OnWorkFormsItemRowClickListener.OnWorkFormsItemRowClickListener(items[position])
+ }
+ holder.binding.itemImage.setOnClickListener{
+ OnTrashItemRowClickListener.OnTrashItemRowClickListener(items[position])
+ }
+
+ }
+
+
+ inner class ItemHolder(
+ val binding: ItemWorkFormsRowBinding
+ ) : RecyclerView.ViewHolder(binding.root) {
+ //private val res = binding.root.context.resources
+ fun bind(item: WorkForms) {
+ binding.apply {
+ this.item = item
+ if (item.isShowDelete) {
+ itemImage.visibility = View.VISIBLE
+ }
+ else itemImage.visibility = View.GONE
+
+ itemImage.setOnClickListener{
+ //deleteWorkForm(item.name)
+ }
+ //itemCode.visibility = View.GONE
+ }
+ }
+ }
+
+}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt
index ea87d1ad..48fe0c00 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt
@@ -1,33 +1,39 @@
package es.verdnatura.presentation.view.feature.login.fragment
//import es.verdnatura.presentation.view.feature.login.model.LoginItemVO
+
import android.annotation.SuppressLint
-import android.app.AlertDialog
import android.content.Intent
import android.content.SharedPreferences
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.net.Uri
import android.provider.Settings
-import android.view.KeyEvent
import android.view.View
import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentLoginBinding
import es.verdnatura.domain.notNull
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
-import es.verdnatura.presentation.common.hideKeyboard
+import es.verdnatura.presentation.common.OnTrashItemRowClickListener
+import es.verdnatura.presentation.common.OnWorkFormsItemRowClickListener
import es.verdnatura.presentation.view.component.CustomDialog
+import es.verdnatura.presentation.view.component.CustomDialogInputThreeValues
+import es.verdnatura.presentation.view.component.CustomDialogList
+import es.verdnatura.presentation.view.feature.login.adapter.WorkFormAdapter
+import es.verdnatura.presentation.view.feature.login.model.WorkForms
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
-import kotlinx.coroutines.*
-import java.lang.Boolean.TRUE
-import kotlin.system.exitProcess
class LoginFragment : BaseFragment(LoginViewModel::class) {
private lateinit var customDialog: CustomDialog
+ private lateinit var customNewForm: CustomDialogInputThreeValues
+ private var workFormAdapter: WorkFormAdapter? = null
+ private lateinit var customDialogList: CustomDialogList
+ private lateinit var listForms: List
companion object {
fun newInstance() = LoginFragment()
@@ -36,6 +42,7 @@ class LoginFragment : BaseFragment(LoginVi
override fun getLayoutId(): Int = R.layout.fragment_login
override fun init() {
+ customDialogList = CustomDialogList(requireContext())
customDialog = CustomDialog(requireContext())
saveIdentifiers()
@@ -59,70 +66,139 @@ class LoginFragment : BaseFragment(LoginVi
}
+ // binding.edittextServer.setText(getData(getString(R.string.baseurl)))
+ binding.edittextServer.setText(getData(WORKFORMSELECTED))
- binding.edittextServer.setText(getData(getString(R.string.baseurl)))
- binding.edittextServer.setOnKeyListener { _, keyCode, event ->
- if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) {
+ /* binding.edittextServer.setOnKeyListener { _, keyCode, event ->
+ if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) {
- saveData(
- "base_url",
- binding.edittextServer.text.toString()
- )
- val working_in_test = false
- if (working_in_test) {
- saveData(
- "base_urlSalix",
- "http://localhost:3000/api/"
+ saveData(
+ "base_url",
+ binding.edittextServer.text.toString()
+ )
+ val working_in_test = false
+ if (working_in_test) {
+ saveData(
+ "base_urlSalix",
+ "http://localhost:3000/api/"
- )
- } else {
- if (binding.edittextServer.text!!.contains("test-app.verdnatura.es")) {
- saveData(
- "base_urlSalix",
- "https://test-salix.verdnatura.es/api/"
- // "https://test-salix.verdnatura.es/" //localhost desde emulador 10.0.2.2:3000
- // "http://localhost:3000/api/"
- //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000
- )
+ )
+ } else {
+ if (binding.edittextServer.text!!.contains("test-app.verdnatura.es")) {
+ saveData(
+ "base_urlSalix",
+ "https://test-salix.verdnatura.es/api/"
+ // "https://test-salix.verdnatura.es/" //localhost desde emulador 10.0.2.2:3000
+ // "http://localhost:3000/api/"
+ //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000
+ )
- } else {
- saveData(
- "base_urlSalix",
- "https://salix.verdnatura.es/api/"
- /*working_in_test*/
- // "http://localhost:3000/api/"
- //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000
- )
+ } else {
+ saveData(
+ "base_urlSalix",
+ "https://salix.verdnatura.es/api/"
+ /*working_in_test*/
+ // "http://localhost:3000/api/"
+ //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000
+ )
+ }
+ }
+
+ "${getString(R.string.serverSalix)}${getData("base_urlSalix")})".toast(
+ requireContext()
+ )
+ this.hideKeyboard()
+
+ CoroutineScope(Dispatchers.IO).launch {
+ delay(2000)
+ withContext(Dispatchers.Main) {
+ exitProcess(0)
+ }
+ }
+
+
+ }
+ false
+ }*/
+
+ // se crean/listan las opciones de formas de trabajo
+ listForms = getWorkForm().sortedBy { it.created }
+
+ binding.edittextServer.keyListener = null
+
+ binding.edittextServer.setOnLongClickListener {
+ showWorkingForms()
+ true
+ }
+ binding.edittextUsername.requestFocus()
+
+ }
+
+ private fun setAdapter(listWorkForms: List) {
+
+ workFormAdapter = WorkFormAdapter(listWorkForms, object : OnWorkFormsItemRowClickListener {
+
+ override fun OnWorkFormsItemRowClickListener(item: WorkForms) {
+
+ when (item.name) {
+ "Añadir..." -> {
+ showNewForm()
+ }
+ else -> {
+
+ binding.edittextServer.setText(item.name)
+
+ saveData("base_url", item.urlSilex)
+ saveData("base_urlSalix", item.urlSalix)
+ saveData(WORKFORMSELECTED, item.name)
+
+ customDialogList.dismiss()
+ requireActivity().recreate()
}
}
- "${getString(R.string.serverSalix)}${getData("base_urlSalix")})".toast(
- requireContext()
- )
- this.hideKeyboard()
+ }
+ }, object : OnTrashItemRowClickListener {
+ override fun OnTrashItemRowClickListener(workForm: WorkForms) {
- CoroutineScope(Dispatchers.IO).launch {
- delay(2000)
- withContext(Dispatchers.Main) {
- exitProcess(0)
+ customDialog.setTitle(getString(R.string.deleteWorkForm))
+ .setDescription(getString(R.string.deleteWorkFormConfirmation))
+ .setOkButton(getString(R.string.cancel)) {
+ customDialog.dismiss()
}
- }
+ .setOkButton(getString(R.string.ok)) {
+ deleteWorkForm(workForm.name)
+ workFormAdapter!!.notifyDataSetChanged()
+
+ customDialog.dismiss()
+ customDialogList.dismiss()
+ saveData(WORKFORMSELECTED, "Producción")
+ requireActivity().recreate()
+
+ }
+ .show()
}
- false
- }
+ })
- binding.textviewWelcome.setOnLongClickListener {
- binding.edittextServer.isEnabled = TRUE
- true
- }
+ customDialogList.getRecyclerView().adapter = workFormAdapter
+ customDialogList.getRecyclerView().layoutManager =
+ LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
+
+
+ customDialogList.setTitle(getString(R.string.selectWorkingForm))
+ .hideDescription()
+ .hideDialog()
+ .setOkButton(getString(R.string.cancel)) {
+ customDialogList.dismiss()
+ // customNewForm.dismiss()
+ // customDialog.dismiss()
+ }
+ .show()
- binding.edittextServer.setOnClickListener {
- // showWorkingForms()
- }
}
@@ -137,63 +213,43 @@ class LoginFragment : BaseFragment(LoginVi
private fun showWorkingForms() {
- val listForms: ArrayList = ArrayList()
+ listForms = getWorkForm().sortedBy { it.created }
+ setAdapter(listForms)
- listForms.add(
- workForms(
- "Producción",
- "https://app.verdnatura.es",
- "https://salix.verdnatura.es"
- )
+ }
+
+ private fun showNewForm() {
+ customNewForm = CustomDialogInputThreeValues(requireContext())
+ .setTitle(getString(R.string.workFormAdd))
+ .setDescription(getString(R.string.workFormDescrip))
+ customNewForm.setInfoTex(
+ getString(R.string.name),
+ getString(R.string.silexServer),
+ getString(R.string.salixServer)
)
- listForms.add(
- workForms(
- "Test",
- "https://test-app.verdnatura.es",
- "https://test-salix.verdnatura.es"
+ customNewForm.setFocusText()
+ customNewForm.setOkButton(getString(R.string.save)) {
+ saveWorkForm(
+ WorkForms(
+ customNewForm.getValue(),
+ customNewForm.getValueTwo(),
+ customNewForm.getValueThree(),
+ true
+ )
)
- )
- listForms.add(
- workForms(
- "Sergio",
- "https://test-app.verdnatura.es",
- "https://test-salix.verdnatura.es",
- true
- )
- )
+ binding.edittextServer.setText(customNewForm.getValue())
+ saveData(WORKFORMSELECTED, customNewForm.getValue())
+ customNewForm.dismiss()
+ customDialogList.dismiss()
+ requireActivity().recreate()
- listForms.add(workForms("Añadir otra forma", " ", " "))
-
- val array = arrayOfNulls(listForms.size)
- var showList: ArrayList = ArrayList()
-
- for (l in listForms) {
- showList.add(l.name)
+ }.setKoButton(getString(R.string.cancel)) {
+ customNewForm.dismiss()
}
- val builder = AlertDialog.Builder(this.context)
- builder.setTitle(getString(R.string.selectWorkingForm))
- builder.setItems(showList.toArray(array)) { _, which ->
- val selected = array[which]
- showList.forEach {
- if (it == selected) {
+ customNewForm.show()
- binding.edittextServer.setText(it)
- saveData(
- "base_urlSalix",
- it
- )
-
- return@forEach
- }
- }
-
-
- }
-
- val dialog = builder.create()
- dialog.show()
}
private fun checkUser() {
@@ -557,4 +613,3 @@ class LoginFragment : BaseFragment(LoginVi
}
-data class workForms(val name: String, val urlSilex: String, val urlSalix: String,val isShowDelete:Boolean=false)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/WorkForms.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/WorkForms.kt
new file mode 100644
index 00000000..e0f71854
--- /dev/null
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/WorkForms.kt
@@ -0,0 +1,11 @@
+package es.verdnatura.presentation.view.feature.login.model
+
+import java.util.*
+
+class WorkForms(
+ val name: String,
+ val urlSilex: String,
+ val urlSalix: String,
+ val isShowDelete: Boolean = false,
+ val created: Long = Calendar.getInstance().timeInMillis
+)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt
index 20fe566d..7d9c8317 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt
@@ -1,9 +1,12 @@
package es.verdnatura.presentation.view.feature.login.model
+import java.util.*
+
class errorMessage (
val message: String = ""
){
override fun toString(): String {
return "${this.message}"
}
-}
\ No newline at end of file
+}
+
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt
index f09c12af..4cbe8fbc 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt
@@ -1,8 +1,8 @@
package es.verdnatura.presentation.view.feature.pasillero.fragment
import android.content.Context
+import android.graphics.Color
import android.os.Bundle
-import android.util.Log
import android.view.View
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
@@ -36,10 +36,17 @@ class PasilleroFragment(
ma.hideBottomNavigation(View.VISIBLE)
when (tagName) {
- getString(R.string.main)-> {
- binding.mainToolbarDesign.imageViewMenu.visibility = View.VISIBLE
- binding.mainToolbarDesign.backButton.visibility = View.GONE
-
+ getString(R.string.main) -> {
+ if (getData(WORKFORMSELECTED) != "Producción") {
+ binding.mainToolbarDesign.toolbarTitle.setBackgroundColor(Color.RED)
+ "En modo " + getData(WORKFORMSELECTED)
+ binding.mainToolbarDesign.toolbarTitle.text =
+ "En modo " + getData(WORKFORMSELECTED)
+ binding.mainToolbarDesign.backButton.visibility = View.GONE
+ } else {
+ binding.mainToolbarDesign.imageViewMenu.visibility = View.VISIBLE
+ binding.mainToolbarDesign.backButton.visibility = View.GONE
+ }
}
tagName -> {
@@ -66,9 +73,10 @@ class PasilleroFragment(
override fun onCreate(savedInstanceState: Bundle?) {
-
when (tagName) {
- getString(R.string.titleCorridors) -> { viewModel.inititializeDefaultData() }
+ getString(R.string.titleCorridors) -> {
+ viewModel.inititializeDefaultData()
+ }
getString(R.string.titlePalletizers) -> viewModel.inititializeDefaultPallet()
getString(R.string.titleBufferManegement) -> viewModel.inititializeDefaultBuffer()
getString(R.string.main) -> viewModel.inititializeDefaultDataInit()
@@ -99,7 +107,12 @@ class PasilleroFragment(
context,
LinearLayoutManager.VERTICAL
)
- dividerItemDecoration.setDrawable(requireContext().resources.getDrawable(R.drawable.list_divider_items,requireContext().theme))
+ dividerItemDecoration.setDrawable(
+ requireContext().resources.getDrawable(
+ R.drawable.list_divider_items,
+ requireContext().theme
+ )
+ )
binding.pasillerosItems.addItemDecoration(dividerItemDecoration)
}
}
diff --git a/app/src/main/res/layout/component_custom_edit_dialog_three_values.xml b/app/src/main/res/layout/component_custom_edit_dialog_three_values.xml
new file mode 100644
index 00000000..91df8db7
--- /dev/null
+++ b/app/src/main/res/layout/component_custom_edit_dialog_three_values.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
index c2d4d3b1..1aeb378f 100644
--- a/app/src/main/res/layout/fragment_login.xml
+++ b/app/src/main/res/layout/fragment_login.xml
@@ -1,5 +1,6 @@
-
@@ -33,6 +34,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+ app:layout_constraintTop_toBottomOf="@id/textview_welcome"
+ >
-
+ android:textColorHint="@android:color/darker_gray"
+
+ android:drawableRight="@drawable/ic_chevron_right_black_24dp" />
+
+
diff --git a/app/src/main/res/layout/item_work_forms_row.xml b/app/src/main/res/layout/item_work_forms_row.xml
new file mode 100644
index 00000000..f74cc9b0
--- /dev/null
+++ b/app/src/main/res/layout/item_work_forms_row.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 32f59d8e..8e749019 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -479,5 +479,13 @@
Filtro ítem
Actualizado
CMR no escaneado
- Selecciona la forma de trabajo:
+ Selecciona la forma de trabajo de la app:
+ Añadir forma de trabajo
+ Proporciona un nombre y url de los servidores a los que la app se conectará
+ Servidor Silex
+ Servidor Salix
+ Nombre
+ Borrar forma trabajo
+ ¿Desea borrar definitivamente la forma de trabajo?
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b8db19d9..097f00af 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -480,6 +480,13 @@
Packing type
No item packing type
Select ticket type
+ Add work way
+ Give a name and urls of the servers
+ Server Silex
+ Server Salix
+ Name
+ Delete work form
+ ¿Do you delete definitely?