feat: refs #8188 orderPicking

This commit is contained in:
Sergio De la torre 2024-12-12 16:52:15 +01:00
parent 9e23313c3b
commit 01aa6eaab6
3 changed files with 260 additions and 64 deletions

View File

@ -2,10 +2,15 @@ package es.verdnatura.presentation.view.feature.ubicador.fragment
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.text.InputType
import android.text.TextWatcher
import android.util.Log.d
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
@ -18,6 +23,7 @@ import es.verdnatura.databinding.FragmentUbicadorBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
import es.verdnatura.domain.isShelving
import es.verdnatura.domain.isoToString
import es.verdnatura.domain.notNull
import es.verdnatura.domain.toInt
import es.verdnatura.domain.toast
@ -44,8 +50,10 @@ import es.verdnatura.presentation.view.feature.ubicador.adapter.UbicadorAdapter6
import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelving
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
import org.json.JSONObject
import java.text.SimpleDateFormat
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.util.Locale
import kotlin.math.ceil
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
@ -118,7 +126,6 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
setDialogs()
setEvents()
setToolBar()
println("Ubicador nuevo")
ma.hideBottomNavigation(GONE)
viewModel.getImageConfig()
@ -217,7 +224,7 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
listItems.clear()
when (item) {
iconAdd.drawable -> showAddItemNew(
isEditItem = false, null
@ -233,7 +240,7 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
}
iconReload.drawable -> {
listItems.clear()
if (shelvingFk.isNotBlank()) {
binding.editPrioridad.setText("")
viewModel.itemShelvingGet(
@ -252,7 +259,8 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip))
.setDescription(getString(R.string.checkItemShelving))
.setOkButton(getString(R.string.ok)) {
viewModel.itemShelvingDeleteChecked(shelvingFk)
if (listItems.isNotEmpty())
viewModel.itemShelvingDeleteChecked(listItems[0].shelvingFk)
customDialogReset.dismiss()
}.setKoButton(getString(R.string.cancel)) {
customDialogReset.dismiss()
@ -461,8 +469,8 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
private fun customDialogActionParking() {
parking = customDialogInput.getValue()
//tarea 6964
viewModel.hasItemOlder(
shelvingFk, customDialogInput.getValue(),
viewModel.getItemsByReviewOrder(
shelvingFk, customDialogInput.getValue(), itemFk = null, action = Action.PARKINEAR
)
customDialogInput.dismiss()
@ -471,15 +479,15 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
private fun customDialogActionChange() {
//Tarea 7920
if (listItems.isNotEmpty()) {
viewModel.shelvingChangeSalix(
shelvingFk, customDialogInput.getValue()
)
} else {
viewModel.getShelvingFkFromCode(
listItems[0].shelvingFk, customDialogInput.getValue()
)
}
/* if (listItems.isNotEmpty()) {
viewModel.shelvingChangeSalix(
shelvingFk, customDialogInput.getValue()
)
} else {*/
viewModel.getShelvingFkFromCode(
listItems[0].shelvingFk, customDialogInput.getValue()
)
// }
shelvingFk = customDialogInput.getValue()
customDialogInput.dismiss()
@ -605,7 +613,6 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
loadImageConfig.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
urlImage = it
println("urrrr $it")
}
}
@ -620,35 +627,99 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
}
}
loadGetParkingResponse.observe(viewLifecycleOwner) {
if (shelvingFk.isNotEmpty()) {
binding.mainToolbar.toolbarTitle.text = shelvingFk
viewModel.itemShelvingGet(
shelvingFk
)
}
}
loadShelvingListItemNewer.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
if (it.list.isNotEmpty()) {
val formattedList = it.list.map { item ->
val oldList = it.list.filter { item ->
item.itemCreated!!.contains("old", ignoreCase = true)
}.map { item ->
val itemFk = item.itemFk
val shelvingFk = item.shelvingFk
"$itemFk (${shelvingFk.uppercase()})"
val shelvingFk = item.code
val created = item.created.isoToString(returnOnlyDate = true)
val parkingCode = item.parkingFk
val formattedCreated =
SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(
created
)!!
)
"$itemFk:${shelvingFk?.uppercase()}${parkingCode}:(${formattedCreated}"
}
val newList = it.list.filter { item ->
item.itemCreated!!.contains("new", ignoreCase = true)
}.map { item ->
val itemFk = item.itemFk
val shelvingFk = item.code
val created = item.created.isoToString(returnOnlyDate = true)
val parkingCode = item.parkingFk
val formattedCreated =
SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(
created
)!!
)
"$itemFk:${shelvingFk?.uppercase()}${parkingCode}:(${formattedCreated})"
}
val resultString = formattedList.joinToString(separator = "\n")
val finalOutput = "\n$resultString"
customDialogOlder.setTitle(getString(R.string.info)).setDescription(
getString(
R.string.itemOlderInfo, Action.PARKINEAR
) + getString(R.string.listItems) + finalOutput
).setOkButton(
getString(R.string.ok)
) {
viewModel.setParking(
it.originalShelvingFk, it.originalParking
)
customDialogOlder.dismiss()
val resultStringOld = oldList.joinToString(separator = "\n")
val resultStringNew = newList.joinToString(separator = "\n")
}.setKoButton(getString(R.string.cancel)) {
customDialogOlder.dismiss()
}.show()
var finalOutput = ""
if (oldList.isNotEmpty()) {
finalOutput =
getString(R.string.ubicationItemNewer, resultStringOld)
}
if (newList.isNotEmpty()) {
finalOutput += getString(R.string.ubicationItemOlder, resultStringNew)
}
customDialogOlder.setTitle(getString(R.string.info))
.setDescription(
finalOutput
).setOkButton(
getString(R.string.ok)
) {
when (it.originalAction) {
Action.PARKINEAR -> viewModel.setParking(
it.originalShelvingFk, it.originalParking
)
Action.TRANSFERIR -> {
println("transfer item ${it.itemShelvingFk}")
println("transfer carro ${it.originalShelvingFk}")
viewModel.itemShelvingTransfer(
it.itemShelvingFk!!,
it.originalShelvingFk
)
}
null -> d("", "no action")
}
customDialogOlder.dismiss()
}.setKoButton(getString(R.string.cancel)) {
customDialogOlder.dismiss()
}.setCancelable(true)
customDialogOlder.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
Handler(Looper.getMainLooper()).postDelayed({
customDialogOlder.show()
}, 1000)
}
}
@ -794,7 +865,7 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
if (isEditItem) {
customDialogUbicador.setTitle(getString(R.string.editItem) + itemUbicador!!.item)
customDialogUbicador.setTitle(getString(R.string.editItem) + itemUbicador!!.item.id)
.setItemValue(itemUbicador.item.id.toString())
.setPackingValue(itemUbicador.packing.toString())
.setVisibleValue(itemUbicador.visible.toString())
@ -1209,16 +1280,26 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
}
private fun customDialogTransferAction(item: ItemShelving) {
if (customDialogInput.getValue().isNotEmpty()) {/*tearea 6964*//*
viewModel.hasItemOlder(
shelvingFkIn = shelvingFk,
shelvingFkOut = customDialogInput.getValue(),
itemFk = item.id,
action = Action.TRANSFERIR
)*/
viewModel.itemShelvingTransfer(
item.id, customDialogInput.getValue()
if (customDialogInput.getValue().isNotEmpty()) {
/*tearea 6964*/
// }
/* viewModel.hasItemOlder(
shelvingFk = shelvingFk,
parking = customDialogInput.getValue(),
itemFk = item.id,
action = Action.TRANSFERIR
)*/
viewModel.getParkingToTransfer(
shelvingFkTo = customDialogInput.getValue(),
itemShelvingFk = item.id,
itemFk = item.itemFk,
shelvingFkFrom = shelvingFk
)
println("transfer item ${item.id}")
println("transfer carro ${customDialogInput.getValue()}")
/* viewModel.itemShelvingTransfer(
item.id, customDialogInput.getValue()
)*/
listItems.remove(item)
adapter!!.notifyItemRemoved(listItems.indexOf(item))
//adapter!!.notifyDataSetChanged()

View File

@ -221,14 +221,15 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
listItems.clear()
when (item) {
iconAdd.drawable -> showAddItemNew(
isEditItem = false, null
)
iconAdd.drawable -> {
showAddItemNew(
isEditItem = false, null
)
}
iconAddMultiple.drawable -> {
ma.onPasillerosItemClickListener(
PasillerosItemVO(
title = R.string.addItemMultipleShelving,
@ -237,7 +238,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
}
iconReload.drawable -> {
listItems.clear()
if (shelvingFk.isNotBlank()) {
binding.editPrioridad.setText("")
viewModel.itemShelvingListNew(
@ -256,7 +257,8 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip))
.setDescription(getString(R.string.checkItemShelving))
.setOkButton(getString(R.string.ok)) {
viewModel.itemShelvingDeleteChecked(shelvingFk)
if (listItems.isNotEmpty())
viewModel.itemShelvingDeleteChecked(listItems[0].shelvingFk!!)
customDialogReset.dismiss()
}.setKoButton(getString(R.string.cancel)) {
customDialogReset.dismiss()
@ -467,7 +469,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
parking = customDialogInput.getValue()
//tarea 6964
viewModel.hasItemOlder(
shelvingFk, customDialogInput.getValue(),
shelvingFk, customDialogInput.getValue(), itemFk = null, action = null
)
customDialogInput.dismiss()

View File

@ -1,6 +1,7 @@
package es.verdnatura.presentation.view.feature.ubicador.fragment
import android.content.Context
import android.util.Log.d
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.map
@ -11,6 +12,7 @@ import es.verdnatura.domain.formatWithQuotes
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
import es.verdnatura.domain.userCases.GetItemPrintItemUseCase
import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.common.Action
import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.common.ItemShelvingSalix
import es.verdnatura.presentation.common.ResponseHasOlder
@ -79,6 +81,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse
val loadBuyUltimateResponse: LiveData<Event<Boolean>> = _buyUltimateResponse.map { Event(it) }
private val _getParkingResponse by lazy { MutableLiveData<Boolean>() }
val getParkingResponse: LiveData<Boolean> = _getParkingResponse
val loadGetParkingResponse: LiveData<Event<Boolean>> = _getParkingResponse.map { Event(it) }
fun itemShelvingListNew(
shelvingFk: String
) {
@ -243,23 +249,36 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
fun hasItemOlder(
shelvingFk: String,
parking: String,
parking: String?,
itemFk: Int?,
action: Action?,
itemShelvingFk: Number? = null
) {
salix.getListItemNewer(shelvingFk, parking)
) {
salix.getListItemNewerNew(shelvingFk, parking, itemFk)
//salix.getListItemNewer(shelvingFk, parking)
.enqueue(object : SalixCallback<List<ItemShelvingNewer>>(context) {
override fun onSuccess(response: Response<List<ItemShelvingNewer>>) {
if (response.body()!!.isEmpty()) {
setParking(shelvingFk, parking)
when (action) {
Action.PARKINEAR -> setParking(shelvingFk, parking!!)
Action.TRANSFERIR -> {
itemShelvingTransfer(itemShelvingFk!!, shelvingFk)
}
null -> setParking(shelvingFk, parking!!)
}
} else {
_shelvingListItemNewer.value =
response.body()?.let {
ItemShelvingNewerList(
it,
originalParking = parking,
originalShelvingFk = shelvingFk
originalShelvingFk = shelvingFk,
originalParking = parking!!,
originalItem = itemFk,
originalAction = action
)
}
}
@ -269,6 +288,98 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
})
}
fun getItemsByReviewOrder(
shelving: String,
parking: String?,
itemFk: Number?,
action: Action?,
itemShelvingFk: Number? = null,
shelvingFkFrom: String? = null
) {
salix.getItemsByReviewOrder(
if (action == Action.TRANSFERIR) shelvingFkFrom!! else shelving,
parking,
itemFk
)
.enqueue(object : SalixCallback<List<ItemShelvingNewer>>(context) {
override fun onSuccess(response: Response<List<ItemShelvingNewer>>) {
if (response.body()!!.isEmpty()) {
when (action) {
Action.PARKINEAR -> setParking(shelving, parking!!)
Action.TRANSFERIR -> {
itemShelvingTransfer(itemShelvingFk!!, shelving!!)
}
null -> d("", "No action")
}
} else {
_shelvingListItemNewer.value =
response.body()?.let {
ItemShelvingNewerList(
it,
originalShelvingFk = shelving,
originalParking = parking!!,
originalItem = itemFk,
originalAction = action,
itemShelvingFk = itemShelvingFk
)
}
}
}
})
}
fun getParkingToTransfer(
shelvingFkTo: String,
itemShelvingFk: Number,
itemFk: Number,
shelvingFkFrom: String? = null
) {
salix.shelvingGet(
filter = """{
"fields": ["priority", "parkingFk", "code", "id"],
"include": [
{
"relation": "parking",
"scope": {
"fields": ["code"]
}
}
],
"where": {
"code": "$shelvingFkTo"
}
}"""
).enqueue(object : SalixCallback<ShelvingItem>(context) {
override fun onSuccess(response: Response<ShelvingItem>) {
val itemShelving = response.body()
if (itemShelving?.parking == null) {
itemShelvingTransfer(itemShelvingFk, shelvingFkTo)
} else {
getItemsByReviewOrder(
shelving = shelvingFkTo,
itemFk = itemFk,
parking = itemShelving.parking.code,
action = Action.TRANSFERIR,
itemShelvingFk = itemShelvingFk,
shelvingFkFrom = shelvingFkFrom!!
)
}
}
override fun onError(t: Throwable) {
_getParkingResponse.value = false
super.onError(t)
}
})
}
fun itemShelvingMerge(
vShelf: Int, shelvingFk: String
@ -287,7 +398,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
}
fun itemShelvingDeleteChecked(
vShelvingFk: String
vShelvingFk: Number
) {
salix.itemShelvingsUpdate(
@ -395,9 +506,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
shelvingFkIn: String, shelvingFkOut: String
) {
salix.itemShelvingsUpdate(
where = JsonObject().apply { addProperty("shelvingFk", shelvingFkIn) },
where = JsonObject().apply {
addProperty("shelvingFk", shelvingFkIn)
},
hashMapOf("shelvingFk" to shelvingFkOut)
).enqueue(object : SalixCallback<Any>(context) {
@ -435,6 +547,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
override fun onSuccess(response: Response<ItemUbicador>) {
val myItemCode = response.body().let { it as ItemUbicador }
shelvingChangeSalixNew(
shelvingFkIn = shelvingFkIn,
myItemCode.id.toLong()
@ -445,10 +558,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
}
fun itemShelvingTransfer(
itemFk: Int, shelvingFk: String
itemShelvingFk: Number, shelvingFk: String
) {
salix.itemShelvingTransfer(arrayListOf(itemFk, shelvingFk).formatWithQuotes())
salix.itemShelvingTransfer(arrayListOf(itemShelvingFk, shelvingFk).formatWithQuotes())
.enqueue(object : SalixCallback<Any>(context) {
override fun onSuccess(response: Response<Any>) {
_responseUbicator.value = true