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.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.text.InputType import android.text.InputType
import android.text.TextWatcher import android.text.TextWatcher
import android.util.Log.d
import android.view.View import android.view.View
import android.view.View.GONE import android.view.View.GONE
import android.view.View.VISIBLE import android.view.View.VISIBLE
@ -18,6 +23,7 @@ import es.verdnatura.databinding.FragmentUbicadorBinding
import es.verdnatura.domain.ConstAndValues import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
import es.verdnatura.domain.isShelving import es.verdnatura.domain.isShelving
import es.verdnatura.domain.isoToString
import es.verdnatura.domain.notNull import es.verdnatura.domain.notNull
import es.verdnatura.domain.toInt import es.verdnatura.domain.toInt
import es.verdnatura.domain.toast 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.ItemShelving
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
import org.json.JSONObject import org.json.JSONObject
import java.text.SimpleDateFormat
import java.time.LocalDate import java.time.LocalDate
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
import java.util.Locale
import kotlin.math.ceil import kotlin.math.ceil
@Suppress("UNUSED_ANONYMOUS_PARAMETER") @Suppress("UNUSED_ANONYMOUS_PARAMETER")
@ -118,7 +126,6 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
setDialogs() setDialogs()
setEvents() setEvents()
setToolBar() setToolBar()
println("Ubicador nuevo")
ma.hideBottomNavigation(GONE) ma.hideBottomNavigation(GONE)
viewModel.getImageConfig() viewModel.getImageConfig()
@ -217,7 +224,7 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
binding.mainToolbar.toolbarIcons.adapter = binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener { ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) { override fun onOptionsItemSelected(item: Drawable) {
listItems.clear()
when (item) { when (item) {
iconAdd.drawable -> showAddItemNew( iconAdd.drawable -> showAddItemNew(
isEditItem = false, null isEditItem = false, null
@ -233,7 +240,7 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
} }
iconReload.drawable -> { iconReload.drawable -> {
listItems.clear()
if (shelvingFk.isNotBlank()) { if (shelvingFk.isNotBlank()) {
binding.editPrioridad.setText("") binding.editPrioridad.setText("")
viewModel.itemShelvingGet( viewModel.itemShelvingGet(
@ -252,7 +259,8 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip)) customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip))
.setDescription(getString(R.string.checkItemShelving)) .setDescription(getString(R.string.checkItemShelving))
.setOkButton(getString(R.string.ok)) { .setOkButton(getString(R.string.ok)) {
viewModel.itemShelvingDeleteChecked(shelvingFk) if (listItems.isNotEmpty())
viewModel.itemShelvingDeleteChecked(listItems[0].shelvingFk)
customDialogReset.dismiss() customDialogReset.dismiss()
}.setKoButton(getString(R.string.cancel)) { }.setKoButton(getString(R.string.cancel)) {
customDialogReset.dismiss() customDialogReset.dismiss()
@ -461,8 +469,8 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
private fun customDialogActionParking() { private fun customDialogActionParking() {
parking = customDialogInput.getValue() parking = customDialogInput.getValue()
//tarea 6964 //tarea 6964
viewModel.hasItemOlder( viewModel.getItemsByReviewOrder(
shelvingFk, customDialogInput.getValue(), shelvingFk, customDialogInput.getValue(), itemFk = null, action = Action.PARKINEAR
) )
customDialogInput.dismiss() customDialogInput.dismiss()
@ -471,15 +479,15 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
private fun customDialogActionChange() { private fun customDialogActionChange() {
//Tarea 7920 //Tarea 7920
if (listItems.isNotEmpty()) { /* if (listItems.isNotEmpty()) {
viewModel.shelvingChangeSalix( viewModel.shelvingChangeSalix(
shelvingFk, customDialogInput.getValue() shelvingFk, customDialogInput.getValue()
) )
} else { } else {*/
viewModel.getShelvingFkFromCode( viewModel.getShelvingFkFromCode(
listItems[0].shelvingFk, customDialogInput.getValue() listItems[0].shelvingFk, customDialogInput.getValue()
) )
} // }
shelvingFk = customDialogInput.getValue() shelvingFk = customDialogInput.getValue()
customDialogInput.dismiss() customDialogInput.dismiss()
@ -605,7 +613,6 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
loadImageConfig.observe(viewLifecycleOwner) { event -> loadImageConfig.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
urlImage = it 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 -> loadShelvingListItemNewer.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
if (it.list.isNotEmpty()) { 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 itemFk = item.itemFk
val shelvingFk = item.shelvingFk val shelvingFk = item.code
"$itemFk (${shelvingFk.uppercase()})" 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)) { var finalOutput = ""
customDialogOlder.dismiss() if (oldList.isNotEmpty()) {
}.show() 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) { if (isEditItem) {
customDialogUbicador.setTitle(getString(R.string.editItem) + itemUbicador!!.item) customDialogUbicador.setTitle(getString(R.string.editItem) + itemUbicador!!.item.id)
.setItemValue(itemUbicador.item.id.toString()) .setItemValue(itemUbicador.item.id.toString())
.setPackingValue(itemUbicador.packing.toString()) .setPackingValue(itemUbicador.packing.toString())
.setVisibleValue(itemUbicador.visible.toString()) .setVisibleValue(itemUbicador.visible.toString())
@ -1209,16 +1280,26 @@ class UbicadorFragment6869 : BaseFragment<FragmentUbicadorBinding, UbicadorViewM
} }
private fun customDialogTransferAction(item: ItemShelving) { private fun customDialogTransferAction(item: ItemShelving) {
if (customDialogInput.getValue().isNotEmpty()) {/*tearea 6964*//* if (customDialogInput.getValue().isNotEmpty()) {
viewModel.hasItemOlder( /*tearea 6964*/
shelvingFkIn = shelvingFk, // }
shelvingFkOut = customDialogInput.getValue(), /* viewModel.hasItemOlder(
itemFk = item.id, shelvingFk = shelvingFk,
action = Action.TRANSFERIR parking = customDialogInput.getValue(),
)*/ itemFk = item.id,
viewModel.itemShelvingTransfer( action = Action.TRANSFERIR
item.id, customDialogInput.getValue() )*/
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) listItems.remove(item)
adapter!!.notifyItemRemoved(listItems.indexOf(item)) adapter!!.notifyItemRemoved(listItems.indexOf(item))
//adapter!!.notifyDataSetChanged() //adapter!!.notifyDataSetChanged()

View File

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

View File

@ -1,6 +1,7 @@
package es.verdnatura.presentation.view.feature.ubicador.fragment package es.verdnatura.presentation.view.feature.ubicador.fragment
import android.content.Context import android.content.Context
import android.util.Log.d
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.map import androidx.lifecycle.map
@ -11,6 +12,7 @@ import es.verdnatura.domain.formatWithQuotes
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
import es.verdnatura.domain.userCases.GetItemPrintItemUseCase import es.verdnatura.domain.userCases.GetItemPrintItemUseCase
import es.verdnatura.presentation.base.BaseViewModel import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.common.Action
import es.verdnatura.presentation.common.Event import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.common.ItemShelvingSalix import es.verdnatura.presentation.common.ItemShelvingSalix
import es.verdnatura.presentation.common.ResponseHasOlder import es.verdnatura.presentation.common.ResponseHasOlder
@ -79,6 +81,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse
val loadBuyUltimateResponse: LiveData<Event<Boolean>> = _buyUltimateResponse.map { Event(it) } 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( fun itemShelvingListNew(
shelvingFk: String shelvingFk: String
) { ) {
@ -243,23 +249,36 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
fun hasItemOlder( fun hasItemOlder(
shelvingFk: String, 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) { .enqueue(object : SalixCallback<List<ItemShelvingNewer>>(context) {
override fun onSuccess(response: Response<List<ItemShelvingNewer>>) { override fun onSuccess(response: Response<List<ItemShelvingNewer>>) {
if (response.body()!!.isEmpty()) { if (response.body()!!.isEmpty()) {
setParking(shelvingFk, parking) when (action) {
Action.PARKINEAR -> setParking(shelvingFk, parking!!)
Action.TRANSFERIR -> {
itemShelvingTransfer(itemShelvingFk!!, shelvingFk)
}
null -> setParking(shelvingFk, parking!!)
}
} else { } else {
_shelvingListItemNewer.value = _shelvingListItemNewer.value =
response.body()?.let { response.body()?.let {
ItemShelvingNewerList( ItemShelvingNewerList(
it, 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( fun itemShelvingMerge(
vShelf: Int, shelvingFk: String vShelf: Int, shelvingFk: String
@ -287,7 +398,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
} }
fun itemShelvingDeleteChecked( fun itemShelvingDeleteChecked(
vShelvingFk: String vShelvingFk: Number
) { ) {
salix.itemShelvingsUpdate( salix.itemShelvingsUpdate(
@ -395,9 +506,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
shelvingFkIn: String, shelvingFkOut: String shelvingFkIn: String, shelvingFkOut: String
) { ) {
salix.itemShelvingsUpdate( salix.itemShelvingsUpdate(
where = JsonObject().apply { addProperty("shelvingFk", shelvingFkIn) }, where = JsonObject().apply {
addProperty("shelvingFk", shelvingFkIn)
},
hashMapOf("shelvingFk" to shelvingFkOut) hashMapOf("shelvingFk" to shelvingFkOut)
).enqueue(object : SalixCallback<Any>(context) { ).enqueue(object : SalixCallback<Any>(context) {
@ -435,6 +547,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
override fun onSuccess(response: Response<ItemUbicador>) { override fun onSuccess(response: Response<ItemUbicador>) {
val myItemCode = response.body().let { it as ItemUbicador } val myItemCode = response.body().let { it as ItemUbicador }
shelvingChangeSalixNew( shelvingChangeSalixNew(
shelvingFkIn = shelvingFkIn, shelvingFkIn = shelvingFkIn,
myItemCode.id.toLong() myItemCode.id.toLong()
@ -445,10 +558,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
} }
fun itemShelvingTransfer( 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) { .enqueue(object : SalixCallback<Any>(context) {
override fun onSuccess(response: Response<Any>) { override fun onSuccess(response: Response<Any>) {
_responseUbicator.value = true _responseUbicator.value = true