From 6f7abca1b14cf87a62b17daa6d2f0b60b2a35764 Mon Sep 17 00:00:00 2001 From: Sergio De la torre Date: Fri, 7 Oct 2022 06:50:44 +0200 Subject: [PATCH] =?UTF-8?q?Version=209.2.1=20a=C3=B1adido=20error=20encaja?= =?UTF-8?q?do=20y=20modificado=20marcaje?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 6 +- .../domain/GetWokerMistakeUSerCase.kt | 23 ++- .../es/verdnatura/domain/VerdnaturaService.kt | 21 +++ .../presentation/base/BaseFragment.kt | 9 +- .../collection/fragment/CollectionFragment.kt | 3 +- .../inventario/fragment/InventaryViewModel.kt | 88 +++++++++ .../feature/login/fragment/LoginFragment.kt | 2 +- .../feature/main/activity/MainActivity.kt | 4 + .../pasillero/fragment/PasilleroViewModel.kt | 12 ++ .../fragment/PackingMistakeFragment.kt | 173 ++++++++++++++++++ .../main/res/drawable/ic_packing_mistake.xml | 8 + app/src/main/res/values-es/strings.xml | 4 +- app/src/main/res/values/strings.xml | 4 +- 13 files changed, 349 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/PackingMistakeFragment.kt create mode 100644 app/src/main/res/drawable/ic_packing_mistake.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 7a377a7d..2d159958 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -103,6 +103,7 @@ + @@ -198,7 +199,7 @@ - + @@ -213,10 +214,11 @@ + - + diff --git a/app/src/main/java/es/verdnatura/domain/GetWokerMistakeUSerCase.kt b/app/src/main/java/es/verdnatura/domain/GetWokerMistakeUSerCase.kt index a2863630..6605aa36 100644 --- a/app/src/main/java/es/verdnatura/domain/GetWokerMistakeUSerCase.kt +++ b/app/src/main/java/es/verdnatura/domain/GetWokerMistakeUSerCase.kt @@ -41,11 +41,32 @@ class GetWokerMistakeUSerCase(context: Context) : RestClient(context) { params ) } - + fun expeditionMistake_Add( + usuario: String, + password: String, + vExpeditionFk: String, + vTypeFk: String + ): Call { + val params: ArrayList = ArrayList() + params.add(vExpeditionFk) + params.add(vTypeFk) + return restClient!!.expeditionMistake_Add( + "json", + "1", + usuario, + password, + "application/json", + params + ) + } fun workerMistakeType_get(usuario: String, password: String): Call> { return restClient!!.workerMistakeType_get("json", "1", usuario, password, "application/json") } + fun expeditionMistakeType_get(usuario: String, password: String): Call> { + return restClient!!.expeditionMistakeType_get("json", "1", usuario, password, "application/json") + } + fun department_getHasMistake(usuario: String, password: String): Call> { return restClient!!.department_getHasMistake("json", "1", usuario, password, "application/json") } diff --git a/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt b/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt index 11e5e368..5d26ea16 100644 --- a/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt +++ b/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt @@ -710,6 +710,17 @@ interface VerdnaturaService { ): Call + @POST("almacennew/expeditionMistake_Add")//REVISADA + fun expeditionMistake_Add( + @Header("aplicacion") aplicacion: String, + @Header("version") version: String, + @Header("user") user: String, + @Header("pass") pass: String, + @Header("Content-Type") content_type: String, + @Body params: List + ): + Call + @POST("almacennew/mistakeType")//REVISADA fun mistakeType( @Header("aplicacion") aplicacion: String, @@ -731,6 +742,16 @@ interface VerdnaturaService { ): Call> + @POST("almacennew/expeditionMistakeType_get")//REVISADA + fun expeditionMistakeType_get( + @Header("aplicacion") aplicacion: String, + @Header("version") version: String, + @Header("user") user: String, + @Header("pass") pass: String, + @Header("Content-Type") content_type: String + ): + Call> + @POST("almacennew/department_getHasMistake")//REVISADA fun department_getHasMistake( @Header("aplicacion") aplicacion: String, 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 d3dbcb29..619afd55 100644 --- a/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt @@ -661,11 +661,18 @@ abstract class BaseFragment(viewModelCla ) saveWorkForm( WorkForms( - "Sergio", + "TestLocalhost", "http://10.1.4.42:9000", urlSalix = "https://test-salix.verdnatura.es/api/" ) ) + saveWorkForm( + WorkForms( + "TestHome", + "http://192.168.1.132:9000", + urlSalix = "https://test-salix.verdnatura.es/api/" + ) + ) saveWorkForm( WorkForms( 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 9b0cfabf..d24ceb9e 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 @@ -16,6 +16,7 @@ import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import android.widget.ImageView import android.widget.Toast +import androidx.core.net.toUri import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -1427,6 +1428,7 @@ class CollectionFragment( saleTracking_mark(position, newType) //saleTrackingReplace(position,newType) } else { + saleAdapter!!.notifyDataSetChanged() saleTrackingReplace(position, newType) setListPosition(position, false) } @@ -2811,7 +2813,6 @@ class CollectionFragment( FALTA -> { // speak("Orden no registrada") } - //else -> speak("Orden no registrada") } } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt index 88686b4d..c2ccdd26 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt @@ -374,6 +374,8 @@ class InventaryViewModel(context: Context) : BaseViewModel() { }) } + + fun workerMistake_Add( usuario: String, password: String, @@ -417,6 +419,92 @@ class InventaryViewModel(context: Context) : BaseViewModel() { } }) } + fun expeditionMistake_Add( + usuario: String, + password: String, + vExpeditionFk: String, + vTypeFk: String + ) { + getWorkerMistakeUserCase.expeditionMistake_Add(usuario, password, vExpeditionFk, vTypeFk) + .enqueue(object : + Callback { + override fun onFailure(call: Call, t: Throwable) { + _responseAddMistake.value = ResponseItemVO( + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) + } + + override fun onResponse( + call: Call, + response: Response + ) { + if (!response.isSuccessful) { + + _responseAddMistake.value = ResponseItemVO( + isError = true, + errorMessage = + getMessageFromAllResponse( + nameofFunction(this), + response.message() + ), codeError = response.code()) + } else { + + // sergio:refactor:solo debería haber un mensaje no un response o errorMessage + _responseAddMistake.value = + ResponseItemVO( + isError = false, + response = response.message() + ) + } + } + }) + } + fun expeditionMistakeType_get(usuario: String, password: String) { + getWorkerMistakeUserCase.expeditionMistakeType_get(usuario, password) + .enqueue(object : Callback> { + override fun onFailure(call: Call>, t: Throwable) { + val listError: ArrayList = ArrayList() + listError.add( + MistakeWorkerType( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + t.message!! + ), + id = "0", + description = "" + ) + ) + _mistakeWorkerList.value = workerMistakeTypeList(listError) + } + + override fun onResponse( + call: Call>, + response: Response> + ) { + if (response.body() != null) { + _mistakeWorkerList.value = + response.body()?.let { workerMistakeTypeList(it) } + } else { + val listError: ArrayList = ArrayList() + listError.add( + MistakeWorkerType( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ), + id = "0", + description = "" + ) + ) + _mistakeWorkerList.value = workerMistakeTypeList(listError) + } + } + + }) + } } 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 48fe0c00..c9136205 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 @@ -420,13 +420,13 @@ class LoginFragment : BaseFragment(LoginVi customDialog.dismiss() }.show() } - viewModel.operator_getNumberOfWagons(getData(USER), getData(PASSWORD)) viewModel.device_checkLogin( binding.edittextUsername.text.toString(), binding.edittextPassword.text.toString(), getData(ANDROID_ID) ) + viewModel.operator_getNumberOfWagons(getData(USER), getData(PASSWORD)) } operatorGetNumberOfWagons.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt index 841db705..43d41200 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt @@ -66,6 +66,7 @@ import es.verdnatura.presentation.view.feature.smarttag.sacador.fragment.Associa import es.verdnatura.presentation.view.feature.ubicador.fragment.AutomaticAddItemFragment import es.verdnatura.presentation.view.feature.ubicador.fragment.UbicadorFragment import es.verdnatura.presentation.view.feature.workermistake.adapter.WorkermistakeFragment +import es.verdnatura.presentation.view.feature.workermistake.fragment.PackingMistakeFragment import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -495,6 +496,9 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL getString(R.string.titleWorkerMistake) -> { addFragmentOnTop(WorkermistakeFragment.newInstance(item.title)) } + getString(R.string.titlePackingMistake) -> { + addFragmentOnTop(PackingMistakeFragment.newInstance(item.title)) + } getString(R.string.titlePrePicker) -> { addFragmentOnTop(InitPreSacadorFragment.newInstance(getString(R.string.getPreviousCollection))) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt index a0913b95..aa4e7d4a 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt @@ -155,6 +155,18 @@ class PasilleroViewModel(context: Context) : BaseViewModel() { ) ) ) + //Tarea 4585 + /* _pasillerositem.add( + PasillerosItemVO( + 7, + R.drawable.ic_packing_mistake, + contextApp.getString(R.string.titlePackingMistake), + R.string.titlePackingMistake, + contextApp.getString( + R.string.titlePackingMistakeDescrip + ) + ) + )*/ _pasillerositem.add( PasillerosItemVO( diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/PackingMistakeFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/PackingMistakeFragment.kt new file mode 100644 index 00000000..281589b2 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/PackingMistakeFragment.kt @@ -0,0 +1,173 @@ +package es.verdnatura.presentation.view.feature.workermistake.fragment + +import android.content.Context +import android.os.Bundle +import android.util.Log.d +import android.view.View +import android.view.View.GONE +import android.view.View.VISIBLE +import android.view.inputmethod.EditorInfo +import androidx.recyclerview.widget.LinearLayoutManager +import es.verdnatura.R +import es.verdnatura.databinding.FragmentGeneralBlackBinding +import es.verdnatura.domain.ConstAndValues +import es.verdnatura.presentation.base.BaseFragment +import es.verdnatura.presentation.common.GeneralAdapter +import es.verdnatura.presentation.common.GeneralItem +import es.verdnatura.presentation.common.OnCollectionSelectedListener +import es.verdnatura.presentation.common.OnGeneralItemRowClickListener +import es.verdnatura.presentation.view.component.CustomDialogList +import es.verdnatura.presentation.view.feature.inventario.fragment.InventaryViewModel +import es.verdnatura.presentation.view.feature.workermistake.model.MistakeWorkerType + + +@Suppress("UNUSED_ANONYMOUS_PARAMETER") +class PackingMistakeFragment(var menuOrigin: String) : + BaseFragment( + InventaryViewModel::class + ) { + + private var goBack: Boolean = false + private var onCollectionSelectedListener: OnCollectionSelectedListener? = null + override fun getLayoutId(): Int = R.layout.fragment_general_black + private var type = "" + private var expeditionScan: String = "" + private var listMistakes: ArrayList = ArrayList() + private var listMistakesAdapter: GeneralAdapter? = null + private lateinit var customDialogList: CustomDialogList + + companion object { + fun newInstance(menuOrigin: String) = PackingMistakeFragment(menuOrigin = menuOrigin) + } + + override fun onAttach(context: Context) { + super.onAttach(context) + if (context is OnCollectionSelectedListener) onCollectionSelectedListener = context + } + + override fun init() { + + binding.scanInput.visibility = View.VISIBLE + binding.scanInput.hint = getString(R.string.scanLabelExpedition) + binding.mainToolbar.toolbarTitle.text = getString(R.string.titlePackingMistake) + binding.splashProgress.visibility = View.GONE + customDialogList = CustomDialogList(requireContext()) + + setEvents() + + super.init() + } + + override fun onPause() { + goBack = true + super.onPause() + } + + override fun onCreate(savedInstanceState: Bundle?) { + + type = ConstAndValues.VERTICKET + super.onCreate(savedInstanceState) + } + + private fun setEvents() { + + binding.mainToolbar.backButton.setOnClickListener { + requireActivity().onBackPressed() + } + + binding.scanInput.requestFocus() + binding.scanInput.setOnEditorActionListener { v, actionId, event -> + if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) { + goBack = false + if (!binding.scanInput.text.isNullOrEmpty()) { + binding.splashProgress.visibility = View.VISIBLE + expeditionScan = binding.scanInput.text.toString() + + viewModel.expeditionMistakeType_get( + usuario = getData(USER), + password = getData(PASSWORD), + + ) + } + binding.scanInput.setText("") + ma.hideKeyboard(binding.scanInput) + return@setOnEditorActionListener true + } + false + } + } + + override fun observeViewModel() { + with(viewModel) { + mistakeWorkerList.observe(viewLifecycleOwner) { + binding.splashProgress.visibility = GONE + showMistakeList(it.list) + } + + responseAddMistake.observe(viewLifecycleOwner) { + + binding.splashProgress.visibility = GONE + ma.messageWithSound( + if (it.isError) { + if (it.codeError == 403) { + getString(R.string.userNotPermission) + } else { + it.errorMessage + } + + } else { + getString(R.string.errorCauseRegistered) + }, it.isError, true, isToasted = true + ) + + } + } + } + + private fun showMistakeList(list: List) { + binding.splashProgress.visibility = View.GONE + listMistakes = ArrayList() + list.forEach { + listMistakes.add(GeneralItem(code = it.code, text = it.description)) + } + + customDialogList.setTitle(getString(R.string.errorCause) + expeditionScan) + .setKoButton( + getString( + R.string.cancel + ) + ) { + customDialogList.dismiss() + }.hideDialog().show() + + + listMistakesAdapter = + GeneralAdapter(listMistakes, object : OnGeneralItemRowClickListener { + override fun OnGeneralItemRowClickListener(item: GeneralItem) { + list.forEach { + if (it.description == item.text) { + binding.splashProgress.visibility = VISIBLE + + d("VERDNATURA::", "el code es " + item.code + it.description) + viewModel.expeditionMistake_Add( + usuario = getData(USER), + password = getData(PASSWORD), + vExpeditionFk = expeditionScan, + vTypeFk = item.code.toString() + ) + customDialogList.dismiss() + } + } + + } + + }) + + customDialogList.getRecyclerView().adapter = listMistakesAdapter + + customDialogList.getRecyclerView().layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) + + } +} + diff --git a/app/src/main/res/drawable/ic_packing_mistake.xml b/app/src/main/res/drawable/ic_packing_mistake.xml new file mode 100644 index 00000000..06d89c7c --- /dev/null +++ b/app/src/main/res/drawable/ic_packing_mistake.xml @@ -0,0 +1,8 @@ + + + + \ 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 a0153ffc..fb59f982 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -230,7 +230,7 @@ Escanea un item No hemos podido encontrar el artículo. Revisa el sector. Error al realizar la operación - Escanea etiqueta de la expedición. + Escanea expedición. Buffer: Packing guardado Previa recogida @@ -489,5 +489,7 @@ ¿Desea borrar definitivamente la forma de trabajo? Ver colección o último ticket No asignado + Fallo encajado + Permite añadir error al encajado de una expedición diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5c4ca8f8..ce15cc38 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -158,7 +158,8 @@ Load buffer Buffer strapping Split - Worker mistaker + Worker mistake + Packing mistake Find department Claim Ubication Claims @@ -428,6 +429,7 @@ Allows you to relocate the items from a wagoon Visualize that it is missing or misplaced Allows to add faults to a worker + Allows to add faults to a expedition packing Allows to know modifications of items in a wagoon Allows to know the movements in a wagoon Visualize who and when has taken a vehicle