From c4378b3f4cd8fb831111ac50903b9af3b6a05bc7 Mon Sep 17 00:00:00 2001 From: Sergio De la torre Date: Wed, 26 Mar 2025 08:40:21 +0100 Subject: [PATCH] feat: refs#8811 buscarItemByWarehouse --- .../fragment/BuscarItemComposeViewModel.kt | 51 +++++++++++++++++-- .../fragment/BuscarItemFragmentCompose.kt | 2 +- .../buscaritem/fragment/LocationScreen.kt | 24 ++++----- .../buscaritem/model/ItemLocationVO.kt | 3 +- 4 files changed, 61 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemComposeViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemComposeViewModel.kt index a8e4509f..485d9eeb 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemComposeViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemComposeViewModel.kt @@ -1,5 +1,7 @@ package es.verdnatura.presentation.view.feature.buscaritem.fragment +import es.verdnatura.MobileApplication +import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK import es.verdnatura.domain.SalixCallback import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase import es.verdnatura.presentation.base.BaseViewModelCompose @@ -23,7 +25,7 @@ class BuscarItemComposeViewModel(var application: android.app.Application) : val uiState = _uiState.asStateFlow() fun getIdFromCodeSalix(code: String) { - _uiState.update { it.copy(itemFk = code, isLoading = true) } + _uiState.update { it.copy(itemFk = code, isLoading = false) } getItemFromBarcodeUseCase.execute(code) .enqueue(object : SalixCallback(application.applicationContext) { override fun onSuccess(response: Response) { @@ -42,14 +44,53 @@ class BuscarItemComposeViewModel(var application: android.app.Application) : fun itemshelvingsGet(itemFk: Any) { salix.itemShelvingsGet( - filter = """{"where":{"itemFk":$itemFk},"fields":["created","visible","available","shelvingFk"], - |"include":[{"relation":"shelving","scope":{"fields":["code","priority","parkingFk"], - |"include":{"relation":"parking","scope":{"fields":["code","sectorFk"]}}}}]}""".trimMargin() + filter = """{ + "where": { "itemFk": $itemFk }, + "fields": ["created", "visible", "available", "shelvingFk"], + "include": [ + { + "relation": "shelving", + "scope": { + "fields": ["code", "priority", "parkingFk"], + "include": [ + { + "relation": "parking", + "scope": { + "fields": ["code", "sectorFk"], + "include": [ + { + "relation": "sector", + "scope": { + "fields": ["warehouseFk","description"], + "where": { "warehouseFk": + ${ + (application as MobileApplication).dataStoreApp.readDataStoreKey( + WAREHOUSEFK + ) + }} + } + } + ] + } + } + ] + } + } + ] + }""".trimIndent() ) .enqueue(object : SalixCallback>(application.applicationContext) { override fun onSuccess(response: Response>) { response.body()?.let { list -> - _uiState.update { it.copy(items = list, isLoading = false) } + val filteredList = list.filter { + it.shelving.parking?.sector?.warehouseFk != null + } + _uiState.update { + it.copy( + items = filteredList, + isLoading = false, + ) + } } } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemFragmentCompose.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemFragmentCompose.kt index 419c4b29..b603fb89 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemFragmentCompose.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/BuscarItemFragmentCompose.kt @@ -58,7 +58,7 @@ class BuscarItemFragmentCompose( } private fun showSector(item: LocationItem) { - item.sector.toast(requireContext()) + item.sector?.toast(requireContext()) } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/LocationScreen.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/LocationScreen.kt index a43c9375..43e1b16e 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/LocationScreen.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/fragment/LocationScreen.kt @@ -53,16 +53,16 @@ fun BuscarItemScreen( val locationItems = uiState.items .filter { it.shelving.parking != null } .map { - LocationItem( - parking = it.shelving.parking!!.code, - matricula = it.shelving.code, - visible = it.visible.toString(), - reserve = it.available.toString(), - priority = it.shelving.priority.toString(), - fecha = it.created, - sector = it.shelving.parking.sector.description - ) - } + LocationItem( + parking = it.shelving.parking!!.code, + matricula = it.shelving.code, + visible = it.visible.toString(), + reserve = it.available.toString(), + priority = it.shelving.priority.toString(), + fecha = it.created, + sector = it.shelving.parking.sector?.description + ) + } LocationScreenContent( items = locationItems, @@ -182,7 +182,7 @@ private fun LocationScreenContent( LocationRow( item = item, onLongClick = { selectedItem -> - onLongClick(selectedItem.sector) + selectedItem.sector?.let { onLongClick(it) } }, onClick = { selectedItem -> onClick(selectedItem.matricula) @@ -357,7 +357,7 @@ data class LocationItem( val reserve: String, val priority: String, val fecha: String, - val sector: String + val sector: String? = "" ) // Vista previa diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/model/ItemLocationVO.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/model/ItemLocationVO.kt index 2500ec56..07e70daf 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/model/ItemLocationVO.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/model/ItemLocationVO.kt @@ -24,5 +24,6 @@ data class Parking( ) data class Sector( - val description: String + val description: String, + val warehouseFk: Number ) \ No newline at end of file