From 59deb90428d1c314c4e2a0ca2f181f85317a6501 Mon Sep 17 00:00:00 2001 From: Sergio De la torre Date: Thu, 14 Nov 2024 12:17:26 +0100 Subject: [PATCH] feat: refs #8176 refactorSearchDialog --- .../view/commom/SearchableAdapter.kt | 4 +- .../view/commom/SearchableRecyclerView.kt | 27 +++-- .../ajustes/fragment/AjustesFragment.kt | 77 +++++++------ .../inventario/fragment/InventaryFragment.kt | 92 ++++++++------- .../inventario/fragment/InventaryViewModel.kt | 4 +- .../fragment/WorkermistakeFragment.kt | 109 ++++++++---------- .../workermistake/model/mistakeWorkerType.kt | 4 +- .../layout/component_searchable_dialog.xml | 2 +- app/src/main/res/layout/fragment_ajustes.xml | 36 +++--- .../main/res/layout/fragment_inventary.xml | 16 ++- .../main/res/layout/fragment_packaging.xml | 36 ++++-- .../res/layout/fragment_workermistake.xml | 12 ++ app/src/main/res/values-es/strings.xml | 5 + app/src/main/res/values-fr/strings.xml | 5 + app/src/main/res/values-pt/strings.xml | 5 + app/src/main/res/values/strings.xml | 5 + 16 files changed, 257 insertions(+), 182 deletions(-) diff --git a/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableAdapter.kt b/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableAdapter.kt index fdd2e981..eb9bdf47 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableAdapter.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableAdapter.kt @@ -24,7 +24,7 @@ class SearchableAdapter( private lateinit var searchView: SearchView inner class NameViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - private val nombreTextView: TextView = itemView.findViewById(android.R.id.text1) + private val nameText: TextView = itemView.findViewById(android.R.id.text1) fun bind(nameWithId: NameWithId, query: String) { val spannableString = SpannableString(nameWithId.name) @@ -41,7 +41,7 @@ class SearchableAdapter( ) } } - nombreTextView.text = spannableString + nameText.text = spannableString itemView.setOnClickListener { onItemClick(nameWithId) } diff --git a/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableRecyclerView.kt b/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableRecyclerView.kt index 31b13506..90d568fe 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableRecyclerView.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/commom/SearchableRecyclerView.kt @@ -17,7 +17,7 @@ class SearchableRecyclerView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : LinearLayout(context, attrs, defStyleAttr) { - private val searchView: SearchView + val searchView: SearchView private val recyclerView: RecyclerView lateinit var adapter: SearchableAdapter private var allItems: MutableList = mutableListOf() @@ -33,7 +33,7 @@ class SearchableRecyclerView @JvmOverloads constructor( visibility = View.GONE true } - visibility = View.GONE + searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?): Boolean { return false @@ -53,18 +53,23 @@ class SearchableRecyclerView @JvmOverloads constructor( adapter.notifyDataSetChanged() } - fun setVisibilityRecycler(visibility: Int) { - recyclerView.visibility = visibility - if (visibility == View.VISIBLE) { - searchView.requestFocus() - } - } - fun setOnCloseListener(listener: () -> Boolean) { searchView.setOnCloseListener { listener() } } - fun getSearchView(): SearchView { - return searchView + fun setVisibility() { + searchView.visibility = View.VISIBLE + recyclerView.visibility = View.VISIBLE + } + + fun setSearchHint(searchHint: String): SearchableRecyclerView { + searchView.queryHint = searchHint + searchView.setIconifiedByDefault(true) + searchView.isIconified = false + searchView.post { + searchView.requestFocus() + } + + return this } } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt index 6410cdf6..314f2759 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt @@ -32,6 +32,7 @@ import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.common.OnAjustesItemClickListener import es.verdnatura.presentation.common.OnOptionsSelectedListener import es.verdnatura.presentation.common.ToolBarAdapterTooltip +import es.verdnatura.presentation.view.commom.NameWithId import es.verdnatura.presentation.view.commom.SearchableAdapter import es.verdnatura.presentation.view.component.CustomDialog import es.verdnatura.presentation.view.feature.ajustes.adapter.SettingsAdapter @@ -81,42 +82,46 @@ class AjustesFragment : super.init() } - private fun setSearchable(name: MutableList) { - val searchableRecyclerView = binding.searchableRecyclerView - searchableRecyclerView.visibility = View.VISIBLE - - val adapter = SearchableAdapter(names = name, context = requireContext()) { nombre -> - sectorListVO.forEach { - if (it.description == nombre) { - runBlocking { - mobileApplication.dataStoreApp.editDataStoreKey( - PRINTERNAME, getString(R.string.noprinter) - ) - mobileApplication.dataStoreApp.editDataStoreKey(PRINTERFK, -1) - mobileApplication.dataStoreApp.editDataStoreKey( - SECTORDESCRIP, it.description - ) - mobileApplication.dataStoreApp.editDataStoreKey( - SECTORFK, it.id - ) - it.warehouseFk?.let { it1 -> + private fun setSearchable(listNames: MutableList) { + val adapter = + SearchableAdapter( + listElements = listNames, + context = requireContext() + ) { elementSelected -> + sectorListVO.forEach { + if (it.id == elementSelected.id) { + runBlocking { mobileApplication.dataStoreApp.editDataStoreKey( - WAREHOUSEFK, it1 + PRINTERNAME, getString(R.string.noprinter) ) + mobileApplication.dataStoreApp.editDataStoreKey(PRINTERFK, -1) + mobileApplication.dataStoreApp.editDataStoreKey( + SECTORDESCRIP, it.description + ) + mobileApplication.dataStoreApp.editDataStoreKey( + SECTORFK, it.id + ) + it.warehouseFk?.let { it1 -> + mobileApplication.dataStoreApp.editDataStoreKey( + WAREHOUSEFK, it1 + ) + } } + viewModel.settingsItem[0].sectorFk = it.id + viewModel.settingsItem[0].selected = it.description + viewModel.workerUpdateOperatorSalix( + "sector", mobileApplication.userId!!, it.id, null + ) + settingsAdapter!!.notifyItemChanged(0) + return@forEach } - viewModel.settingsItem[0].sectorFk = it.id - viewModel.settingsItem[0].selected = it.description - viewModel.workerUpdateOperatorSalix( - "sector", mobileApplication.userId!!, it.id, null - ) - settingsAdapter!!.notifyItemChanged(0) - return@forEach } + binding.searchableRecyclerView.visibility = View.GONE } - searchableRecyclerView.visibility = View.GONE - } - searchableRecyclerView.setAdapter(adapter, name) + + binding.searchableRecyclerView.setAdapter(adapter, listNames) + binding.searchableRecyclerView.visibility = View.VISIBLE + binding.searchableRecyclerView.setSearchHint(getString(R.string.sectorSearch)) } @@ -266,13 +271,13 @@ class AjustesFragment : } // modificar listSectores.sort() - val array = arrayOfNulls(listSectores.size) sectorListVO = it.list - //Tarea 8176 - //setSearchable(sectorListVO.map { it.description } as MutableList) - showDialogForAll( - listSectores.toArray(array), getString(R.string.selectSector) - ) + setSearchable(sectorListVO.map { + NameWithId( + id = it.id, + name = it.description + ) + } as MutableList) } else { customDialog.setTitle(getString(R.string.sectors)) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt index 1e90aab1..e0a78a80 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt @@ -18,13 +18,13 @@ import es.verdnatura.presentation.common.OnInvetoryNichoClickListener import es.verdnatura.presentation.common.OnOptionsSelectedListener import es.verdnatura.presentation.common.OnPasillerosItemClickListener import es.verdnatura.presentation.common.ToolBarAdapterTooltip +import es.verdnatura.presentation.view.commom.NameWithId +import es.verdnatura.presentation.view.commom.SearchableAdapter import es.verdnatura.presentation.view.component.CustomDialogInput import es.verdnatura.presentation.view.component.CustomDialogTwoButtons -import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO import es.verdnatura.presentation.view.feature.inventario.adapter.InventoryAdapter import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO -import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat import kotlinx.coroutines.launch @Suppress("UNUSED_ANONYMOUS_PARAMETER") @@ -39,10 +39,8 @@ class InventaryFragment : private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null private var layoutManager: LinearLayoutManager? = null private var firstVisiblePosition = 0 - private var secondVisiblePosition = 1 private lateinit var itemClicked: ItemInventaryVO - private val items = ArrayList() - private lateinit var buyerId: String + private var buyerId: Number = -1 companion object { fun newInstance() = InventaryFragment() @@ -59,39 +57,17 @@ class InventaryFragment : viewModel.itemShelvingBuyerGet() binding.filterBuyer.text = mobileApplication.dataStoreApp.readDataStoreKey((BUYER)) - buyerId = mobileApplication.dataStoreApp.readDataStoreKey((BUYERID)) - if (buyerId.isNotBlank()) { + buyerId = mobileApplication.dataStoreApp.readDataStoreKey((BUYERID)) + if (buyerId != -1) { viewModel.getInventory( - buyerId.toInt(), mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) + buyerId, mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) ) } binding.filterBuyer.setOnClickListener { - SimpleSearchDialogCompat( - context, - getString(R.string.compradores), - getString(R.string.escribirparteNombre), - null, - items - ) { baseSearchDialogCompat, nombre, position -> - - binding.filterBuyer.text = (nombre.title) - buyerId = nombre.getBuyerId() - - lifecycleScope.launch { - mobileApplication.dataStoreApp.editDataStoreKey( - BUYER, nombre.getBuyerNickname() - ) - mobileApplication.dataStoreApp.editDataStoreKey( - BUYERID, nombre.getBuyerId() - ) - } - viewModel.getInventory( - nombre.getBuyerId().toInt(), - mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) - ) - baseSearchDialogCompat.dismiss() - }.show() + binding.searchableRecyclerView.visibility = View.VISIBLE + binding.searchableRecyclerView.setSearchHint(getString(R.string.BuyerSearch)) } + customDialogInput = CustomDialogInput(requireContext()) customDialog = CustomDialogTwoButtons(requireContext()) binding.mainToolbar.toolbarTitle.text = getString(R.string.itemShelvingRadar) @@ -100,6 +76,36 @@ class InventaryFragment : super.init() } + private fun setSearchable(listNames: MutableList) { + + val adapter = + SearchableAdapter( + listElements = listNames, + context = requireContext() + ) { elementSelected -> + + lifecycleScope.launch { + mobileApplication.dataStoreApp.editDataStoreKey( + BUYER, elementSelected.name + ) + mobileApplication.dataStoreApp.editDataStoreKey( + BUYERID, elementSelected.id + ) + } + viewModel.getInventory( + elementSelected.id, + mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) + ) + binding.filterBuyer.text = (elementSelected.name) + buyerId = elementSelected.id + binding.searchableRecyclerView.visibility = View.GONE + + } + + binding.searchableRecyclerView.setAdapter(adapter, listNames) + + } + private fun setToolBar() { ma.hideBottomNavigation(View.GONE) val listIcons: ArrayList = ArrayList() @@ -114,9 +120,9 @@ class InventaryFragment : if (item == iconReload.drawable) { firstVisiblePosition = layoutManager?.findFirstVisibleItemPosition() ?: 0 - if (buyerId.isNotBlank()) { + if (buyerId != -1) { viewModel.getInventory( - buyerId.toInt(), + buyerId, mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) ) } else { @@ -178,8 +184,13 @@ class InventaryFragment : override fun observeViewModel() { with(viewModel) { - buyersList.observe(viewLifecycleOwner) { - createBuyerList(it.list) + buyersList.observe(viewLifecycleOwner) { item -> + setSearchable(item.list.map { + NameWithId( + it.userFk, + it.nickname + ) + } as MutableList) } inventaryList.observe(viewLifecycleOwner) { it -> @@ -265,13 +276,6 @@ class InventaryFragment : } - private fun createBuyerList(list: List) { - items.clear() - if (list.isNotEmpty()) list.forEach { buyer -> - items.add(SearchBuyerModel(buyer.nickname, buyer.userFk)) - } - } - } 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 019dcc2b..1294b65e 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 @@ -82,7 +82,7 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) { val loadInventaryList: LiveData> = _inventaryList.map { Event(it) } - fun getInventory(buyerFk: Int, warehouseFk: Int) { + fun getInventory(buyerFk: Number, warehouseFk: Int) { salix.itemShelvingFilterBuyer(params = arrayListOf(buyerFk, warehouseFk)) .enqueue(object : SalixCallback>(context) { override fun onSuccess(response: Response>) { @@ -146,7 +146,7 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) { }) } - fun workerGetFromHasMistake(departmentFk: Int) { + fun workerGetFromHasMistake(departmentFk: Number) { salix.workerGetFromHasMistake(arrayListOf(departmentFk)) .enqueue(object : SalixCallback>(context) { override fun onSuccess(response: Response>) { diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/WorkermistakeFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/WorkermistakeFragment.kt index 9e6a46c7..e31f769b 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/WorkermistakeFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/WorkermistakeFragment.kt @@ -4,7 +4,6 @@ import android.content.Context import android.os.Bundle import android.view.View import androidx.core.widget.addTextChangedListener -import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import es.verdnatura.R import es.verdnatura.databinding.FragmentWorkermistakeBinding @@ -15,23 +14,19 @@ import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.common.OnBarcodeRowClickListener import es.verdnatura.presentation.common.OnMistakeWorkerClickListener import es.verdnatura.presentation.common.OnPasillerosItemClickListener +import es.verdnatura.presentation.view.commom.NameWithId +import es.verdnatura.presentation.view.commom.SearchableAdapter import es.verdnatura.presentation.view.component.CustomDialog import es.verdnatura.presentation.view.component.CustomDialogInput import es.verdnatura.presentation.view.component.CustomDialogList import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO import es.verdnatura.presentation.view.feature.inventario.fragment.InventaryViewModel -import es.verdnatura.presentation.view.feature.inventario.fragment.SearchDepartmentModel import es.verdnatura.presentation.view.feature.workermistake.adapter.WorkermistakeAdapter -import es.verdnatura.presentation.view.feature.workermistake.model.DepartmentMistake import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake -import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking -@Suppress("UNUSED_ANONYMOUS_PARAMETER") class WorkermistakeFragment( var entryPoint: String = "" @@ -49,7 +44,6 @@ class WorkermistakeFragment( private var listMistakes: ArrayList = ArrayList() private var listMistakesAdapter: BarcodeAdapter? = null private var workerMistakeName: WorkerFromMistake? = null - private val departments = ArrayList() companion object { fun newInstance(entryPoint: String) = WorkermistakeFragment(entryPoint) @@ -83,32 +77,8 @@ class WorkermistakeFragment( customDialogList = CustomDialogList(requireContext()) binding.filterDepartment.setOnClickListener { - SimpleSearchDialogCompat( - context, - getString(R.string.departamentos), - getString(R.string.escribirparteNombre), - null, - departments - ) { baseSearchDialogCompat, nombre, position -> - - binding.filterDepartment.text = (nombre.title) - lifecycleScope.launch(Dispatchers.IO) { - mobileApplication.dataStoreApp.editDataStoreKey( - DEPARTMENTMISTAKE, - nombre.getDepartmentName() - ) - mobileApplication.dataStoreApp.editDataStoreKey( - DEPARTMENTMISTAKEID, - nombre.getDepartmentId() - ) - } - - viewModel.workerGetFromHasMistake( - nombre.getDepartmentId() - ) - binding.filterItemFk.isEnabled = true - baseSearchDialogCompat.dismiss() - }.show() + binding.searchableRecyclerView.visibility = View.VISIBLE + binding.searchableRecyclerView.setSearchHint(getString(R.string.departamentSearch)) } customDialogInput = CustomDialogInput(requireContext()) customDialog = CustomDialog(requireContext()) @@ -122,6 +92,36 @@ class WorkermistakeFragment( binding.mainToolbar.toolbarTitle.text = entryPoint } + private fun setSearchable(listNames: MutableList) { + + val adapter = + SearchableAdapter( + listElements = listNames, + context = requireContext() + ) { elementSelected -> + + runBlocking { + mobileApplication.dataStoreApp.editDataStoreKey( + DEPARTMENTMISTAKE, + elementSelected.name + ) + mobileApplication.dataStoreApp.editDataStoreKey( + DEPARTMENTMISTAKEID, + elementSelected.id + ) + viewModel.workerGetFromHasMistake( + elementSelected.id + ) + } + binding.filterDepartment.text = elementSelected.name + binding.searchableRecyclerView.visibility = View.GONE + + } + + binding.searchableRecyclerView.setAdapter(adapter, listNames) + + } + private fun setEvents() { binding.mainToolbar.backButton.setOnClickListener { ma.onMyBackPressed() @@ -151,7 +151,12 @@ class WorkermistakeFragment( override fun observeViewModel() { with(viewModel) { mistakeDepartmentList.observe(viewLifecycleOwner) { - createDepartmentList(it.list) + setSearchable(it.list.map { item -> + NameWithId( + id = item.id, + name = item.name + ) + } as MutableList) } workerFromMistakeList.observe(viewLifecycleOwner) { createWorkerList(it.list) @@ -214,32 +219,20 @@ class WorkermistakeFragment( } - private fun createDepartmentList(list: List) { - departments.clear() - list.forEach { department -> - try { - departments.add(SearchDepartmentModel(department.name, department.id)) - } catch (e: Exception) { - e.message!!.toast(requireContext()) - - } - } - } - private fun createWorkerList(list: List) { - listWorker.clear() - - list.forEach { worker -> - try { - listWorker.add(worker) - } catch (e: Exception) { - e.message!!.toast(requireContext()) + try { + listWorker.apply { + clear() + addAll(list) } - + listWorkerAuxiliary.apply { + clear() + addAll(listWorker) + } + } catch (e: Exception) { + e.message?.toast(requireContext()) } - listWorkerAuxiliary.clear() - listWorkerAuxiliary.addAll(listWorker) - } + } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/model/mistakeWorkerType.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/model/mistakeWorkerType.kt index 6d63f020..322fdc33 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/model/mistakeWorkerType.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/model/mistakeWorkerType.kt @@ -13,8 +13,8 @@ data class ExpeditionMistakeSalix( ) data class DepartmentMistake( - var id: Int? = null, - var name: String = "" + var id: Int, + var name: String ) data class WorkerFromMistake( diff --git a/app/src/main/res/layout/component_searchable_dialog.xml b/app/src/main/res/layout/component_searchable_dialog.xml index d7c71d3b..452257e1 100644 --- a/app/src/main/res/layout/component_searchable_dialog.xml +++ b/app/src/main/res/layout/component_searchable_dialog.xml @@ -10,7 +10,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:queryHint="Buscar..." - android:text="sdfsdf" + android:text="" android:textColor="@android:color/white" android:textColorHint="@android:color/darker_gray" /> diff --git a/app/src/main/res/layout/fragment_ajustes.xml b/app/src/main/res/layout/fragment_ajustes.xml index d8498c12..9116c9e4 100644 --- a/app/src/main/res/layout/fragment_ajustes.xml +++ b/app/src/main/res/layout/fragment_ajustes.xml @@ -27,25 +27,15 @@ - - - - + app:layout_constraintTop_toTopOf="parent"> - + + + + + + + app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" + tools:ignore="TextContrastCheck" /> @@ -111,9 +111,19 @@ android:layout_height="wrap_content" android:clipToPadding="false" tools:listitem="@layout/item_inventary_row" /> - + + + android:visibility="visible" + app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" /> @@ -73,10 +73,9 @@ android:id="@+id/filter_entry" style="@style/InputLineTextSearch" android:layout_width="0dp" - android:layout_weight="1" android:layout_marginTop="24dp" + android:layout_weight="1" android:backgroundTint="@android:color/white" - app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" android:focusable="false" android:hint="@string/entry" android:lines="1" @@ -84,11 +83,34 @@ android:textAlignment="center" android:textColor="@color/verdnatura_pumpkin_orange" android:textColorHint="@android:color/darker_gray" - android:visibility="invisible" /> + android:visibility="invisible" + app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" /> + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_workermistake.xml b/app/src/main/res/layout/fragment_workermistake.xml index 2132e0d8..3cfa414d 100644 --- a/app/src/main/res/layout/fragment_workermistake.xml +++ b/app/src/main/res/layout/fragment_workermistake.xml @@ -101,6 +101,7 @@ + + + Escanea la/s caja/s que cambia/n de ruta Ticket de recogida El ticket %1$s van a pasar a recogerlo + Escribe departamento + Escribe comprador + Escribe sector + Escribe proveedor + Escribe entrada diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 66eff229..d490e4d6 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -904,5 +904,10 @@ Escanea la/s caja/s que cambia/n de ruta Ticket de recogida El ticket %1$s van a pasar a recogerlo + Escribe departamento + Escribe comprador + Escribe sector + Escribe proveedor + Escribe entrada diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index cfb7dbd4..8acf78d3 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -904,5 +904,10 @@ Escanea la/s caja/s que cambia/n de ruta Ticket de recogida El ticket %1$s van a pasar a recogerlo + Escribe departamento + Escribe comprador + Escribe sector + Escribe proveedor + Escribe entrada diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 791b0b4e..d86f927b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -907,5 +907,10 @@ Escanea la/s caja/s que cambia/n de ruta Ticket de recogida El ticket %1$s van a pasar a recogerlo + Escribe departamento + Escribe comprador + Escribe sector + Escribe proveedor + Escribe entrada