refs #5890 feat:itemShelvingSale

This commit is contained in:
Sergio De la torre 2024-02-28 09:41:39 +01:00
parent ce33e2cb15
commit 6c2855a7a4
4 changed files with 139 additions and 89 deletions

View File

@ -10,6 +10,12 @@ class ResponseItemVO(
var data:Any? =null var data:Any? =null
) )
class ResponseItemExistsItemShelvingSale(
var exists: Boolean,
var position:Int,
var quantity:Int
)
class ResponseItemNumber( class ResponseItemNumber(
var response: Int? = null, var response: Int? = null,
var isError: Boolean = false, var isError: Boolean = false,

View File

@ -3,10 +3,12 @@ package es.verdnatura.presentation.view.feature.collection.adapter
import android.content.Context import android.content.Context
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.Drawable
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.content.ContextCompat.getColor import androidx.core.content.ContextCompat.getColor
import androidx.core.graphics.drawable.DrawableCompat
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import es.verdnatura.R import es.verdnatura.R
@ -133,7 +135,7 @@ class SaleAdapterNew(
txtError.text = txtError.text =
binding.root.context.getString(R.string.originalQuantity) + sale.originalQuantity!! binding.root.context.getString(R.string.originalQuantity) + sale.originalQuantity!!
}else{ } else {
layoutError.visibility = View.GONE layoutError.visibility = View.GONE
} }
@ -142,7 +144,7 @@ class SaleAdapterNew(
txtError.text = binding.root.context.getString(R.string.newItem) txtError.text = binding.root.context.getString(R.string.newItem)
} }
paintTicketcolor(sale.rgb, itemTicketColor, sale.isPicked) paintTicketcolor(sale.rgb, binding.itemTicketColor.background)
if (sale.isAdded == 1 && sale.reservedQuantity != sale.saleQuantity) { if (sale.isAdded == 1 && sale.reservedQuantity != sale.saleQuantity) {
layoutError.visibility = View.GONE layoutError.visibility = View.GONE
@ -237,8 +239,7 @@ class SaleAdapterNew(
previous.visibility = View.INVISIBLE previous.visibility = View.INVISIBLE
} else { } else {
previous.visibility = View.VISIBLE previous.visibility = View.VISIBLE
// previous.text ="" previous.text = "PREV:" + sale.saleGroupFk
previous.text = "PREV:"+ sale.saleGroupFk
} }
var result: Int var result: Int
@ -323,20 +324,20 @@ class SaleAdapterNew(
} }
} }
private fun paintTicketcolor(color: String?, itemView: View, picked: Int) { private fun paintTicketcolor(color: String?, backgroundDrawableTicket: Drawable) {
if (color.isNullOrBlank()) { if (color.isNullOrBlank()) {
itemView.setBackgroundColor( DrawableCompat.setTint(
if (picked == 0) { backgroundDrawableTicket,
(Color.TRANSPARENT) Color.TRANSPARENT
} else {
(context!!.getColor(R.color.verdnatura_pumpkin_orange))
}
) )
} else { } else {
itemView.setBackgroundColor(Color.parseColor(color)) DrawableCompat.setTint(
} backgroundDrawableTicket,
Color.parseColor(color)
)
} }
}
} }

View File

@ -29,6 +29,7 @@ import es.verdnatura.domain.ConstAndValues.CONTROLADOR
import es.verdnatura.domain.ConstAndValues.PRINTERNAME import es.verdnatura.domain.ConstAndValues.PRINTERNAME
import es.verdnatura.domain.ConstAndValues.SACADOR import es.verdnatura.domain.ConstAndValues.SACADOR
import es.verdnatura.domain.ConstAndValues.SECTORFK import es.verdnatura.domain.ConstAndValues.SECTORFK
import es.verdnatura.domain.notNull
import es.verdnatura.domain.toast import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.* import es.verdnatura.presentation.common.*
@ -237,11 +238,9 @@ class CollectionFragmentPickerNew(
) )
buttonPushedGetCollection = true buttonPushedGetCollection = true
} else { } else {
viewModel.collectionTicketGet( viewModel.collectionTicketGetSalix(
lastScanned, lastScanned,
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), print = false
print = "0",
type
) )
buttonPushedGetCollection = false buttonPushedGetCollection = false
@ -266,7 +265,7 @@ class CollectionFragmentPickerNew(
private fun setEvents() { private fun setEvents() {
binding.mainToolbar.backButton.setOnClickListener { binding.mainToolbar.backButton.setOnClickListener {
requireActivity().onBackPressed() ma.onBackPressed()
} }
//ESCANER ========= //ESCANER =========
@ -312,12 +311,14 @@ class CollectionFragmentPickerNew(
isMarking = false isMarking = false
binding.collectionSwipe.isRefreshing = false binding.collectionSwipe.isRefreshing = false
binding.splashProgress.visibility = View.VISIBLE binding.splashProgress.visibility = View.VISIBLE
viewModel.collectionTicketGet(
updateScreen()
/* viewModel.collectionTicketGet(
collection.collectionFk, collection.collectionFk,
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
print = "0", print = "0",
type type
) )*/
buttonPushedGetCollection = false buttonPushedGetCollection = false
binding.collectionSwipe.isRefreshing = false binding.collectionSwipe.isRefreshing = false
@ -336,7 +337,7 @@ class CollectionFragmentPickerNew(
with(viewModel) { with(viewModel) {
binding.splashProgress.visibility = View.GONE binding.splashProgress.visibility = View.GONE
collectionTicketList.observe(viewLifecycleOwner, Observer { /* collectionTicketList.observe(viewLifecycleOwner, Observer {
if (!it.isError) { if (!it.isError) {
if (it.tickets.isNotEmpty()) { if (it.tickets.isNotEmpty()) {
//collection = it //collection = it
@ -350,13 +351,41 @@ class CollectionFragmentPickerNew(
customDialog.setTitle(getString(R.string.error)).setDescription(it.errorMessage) customDialog.setTitle(getString(R.string.error)).setDescription(it.errorMessage)
.setOkButton(getString(R.string.accept)) { .setOkButton(getString(R.string.accept)) {
customDialog.dismiss() customDialog.dismiss()
if (activity != null) requireActivity().onBackPressed() if (activity != null) ma.onBackPressed()
}.show() }.show()
} }
}) })*/
loadCollectionTicketSalix.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
binding.splashProgress.visibility = View.GONE
if (!it.isError) {
collectionTicketSalix.observe(viewLifecycleOwner, Observer { if (it.tickets.isNotEmpty()) {
collection = it
createCollectionList()
workerFkFromTicket = if (it.tickets[0].sales.isNotEmpty()) {
it.tickets[0].sales[0].workerFk.toString()
} else {
""
}
} else {
binding.mainToolbar.toolbarSubtitle.text = "0/0"
}
} else {
customDialog.setTitle(getString(R.string.error))
.setDescription(it.errorMessage)
.setOkButton(getString(R.string.accept)) {
customDialog.dismiss()
if (activity != null) ma.onBackPressed()
}.show()
}
}
}
/* collectionTicketSalix.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = View.GONE binding.splashProgress.visibility = View.GONE
if (!it.isError) { if (!it.isError) {
@ -376,12 +405,22 @@ class CollectionFragmentPickerNew(
customDialog.setTitle(getString(R.string.error)).setDescription(it.errorMessage) customDialog.setTitle(getString(R.string.error)).setDescription(it.errorMessage)
.setOkButton(getString(R.string.accept)) { .setOkButton(getString(R.string.accept)) {
customDialog.dismiss() customDialog.dismiss()
if (activity != null) requireActivity().onBackPressed() if (activity != null) ma.onBackPressed()
}.show() }.show()
} }
}) })*/
responseExistsItemShelvingSale.observe(viewLifecycleOwner, Observer {
if (!goBack) {
if (it.exists){
markLine(it.position, it.quantity,true)
}else{
"Actualizando las líneas porque la reserva está modificada".toast(requireContext())
viewModel.collectionTicketGetSalix(collection.collectionFk, false)
}
}
})
responseParking.observe(viewLifecycleOwner, Observer { responseParking.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = View.GONE binding.splashProgress.visibility = View.GONE
@ -398,13 +437,7 @@ class CollectionFragmentPickerNew(
responseCollectionAddItem.observe(viewLifecycleOwner, Observer { responseCollectionAddItem.observe(viewLifecycleOwner, Observer {
if (!goBack) { if (!goBack) {
viewModel.collectionTicketGet( updateScreen()
collection.collectionFk,
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
print = "0",
type
)
goBack = false goBack = false
} }
@ -441,8 +474,9 @@ class CollectionFragmentPickerNew(
) )
} }
if (!it.isError) { if (!it.isError) {
sales[positionConfirm].isPicked = 1 myGroupList[positionConfirm].isPicked = 1
saleAdapter!!.notifyDataSetChanged() saleAdapter!!.notifyDataSetChanged()
lm!!.scrollToPositionWithOffset(storedPosition, 0)
viewModel.collectionTicketGetSalix( viewModel.collectionTicketGetSalix(
collection.collectionFk, print = false collection.collectionFk, print = false
) )
@ -593,8 +627,8 @@ class CollectionFragmentPickerNew(
}, },
object : OnSaleClickSaleListener { object : OnSaleClickSaleListener {
override fun onSaleClick(mysale: Sale) { override fun onSaleClick(mysale: Sale) {
myGroupList.forEachIndexed { index, sale ->
sales.forEachIndexed { index, sale -> //sales.forEachIndexed { index, sale ->
// println("Sacador la sale es ${sale.saleFk}") // println("Sacador la sale es ${sale.saleFk}")
// println("Sacador la sale picked es ${sale.isPicked}") // println("Sacador la sale picked es ${sale.isPicked}")
// println("Sacador la sale group es ${sale.saleGroupFk}") // println("Sacador la sale group es ${sale.saleGroupFk}")
@ -632,6 +666,8 @@ class CollectionFragmentPickerNew(
}, },
object : OnPackingClickSaleListener { object : OnPackingClickSaleListener {
override fun onPackingClick(sale: Sale) { override fun onPackingClick(sale: Sale) {
goBack = true
println("ubicador")
if (!sale.code.isNullOrEmpty()) ma.onPasillerosItemClickListener( if (!sale.code.isNullOrEmpty()) ma.onPasillerosItemClickListener(
PasillerosItemVO( PasillerosItemVO(
title = getString(R.string.titleUbicator), title = getString(R.string.titleUbicator),
@ -757,6 +793,7 @@ class CollectionFragmentPickerNew(
//nuevo tema agrupacion sales //nuevo tema agrupacion sales
//checkStateParent() //checkStateParent()
// var mySale = sales[position].saleFk Ordenar setPosition // var mySale = sales[position].saleFk Ordenar setPosition
var mySale = sales[position].itemShelvingSaleFk var mySale = sales[position].itemShelvingSaleFk
for (indice in myGroupList.indices) { for (indice in myGroupList.indices) {
if (!myGroupList[indice].isParent && myGroupList[indice].itemShelvingSaleFk == mySale) { if (!myGroupList[indice].isParent && myGroupList[indice].itemShelvingSaleFk == mySale) {
@ -810,7 +847,7 @@ class CollectionFragmentPickerNew(
for (indice in myGroupList.indices) { for (indice in myGroupList.indices) {
if (myGroupList[indice].isPicked == 0) { if (myGroupList[indice].isPicked == 0) {
//storedPosition = indice //storedPosition = indice
lm!!.scrollToPositionWithOffset(storedPosition, 0) lm!!.scrollToPositionWithOffset(indice - 1, 0)
break break
} }
} }
@ -954,7 +991,9 @@ class CollectionFragmentPickerNew(
} }
private fun setStoredPosition(isFromBack: Boolean) { private fun setStoredPosition(isFromBack: Boolean) {
setListPosition(storedPosition, isFromBack) setListPosition(storedBackPosition, isFromBack)
/*if (goBack) setListPosition(storedBackPosition, isFromBack) else {
setListPosition(storedPosition, isFromBack)*/
} }
private fun checkItemScan(valueToCheck: String): Boolean { private fun checkItemScan(valueToCheck: String): Boolean {
@ -971,6 +1010,7 @@ class CollectionFragmentPickerNew(
} }
return false return false
return false
} }
//Tarea #4371 //Tarea #4371
@ -985,7 +1025,7 @@ class CollectionFragmentPickerNew(
private fun showQuestionUbicationEmpty(position: Int, quantity: Int = 0) { private fun showQuestionUbicationEmpty(position: Int, quantity: Int = 0) {
customDialogThreeButtonsQuantity.setTitle("Cambio de cantidad a $quantity") customDialogThreeButtonsQuantity.setTitle("Cambio de cantidad a $quantity")
.setDescription("¿Hay unidades del artículo ${sales[position].itemFk} en el carro escaneado?") .setDescription("¿Quedan unidades del artículo ${sales[position].itemFk} en el carro escaneado?")
.setValue("").setCustomDialogValue(View.GONE) .setValue("").setCustomDialogValue(View.GONE)
customDialogThreeButtonsQuantity.setOkButtonAdd("SI") { customDialogThreeButtonsQuantity.setOkButtonAdd("SI") {
scanRequest() scanRequest()
@ -997,7 +1037,8 @@ class CollectionFragmentPickerNew(
}.setOkButtonTwo("NO") { }.setOkButtonTwo("NO") {
scanRequest() scanRequest()
customDialogThreeButtonsQuantity.dismiss() customDialogThreeButtonsQuantity.dismiss()
markLine(position, quantity, true) viewModel.itemShelvingSaleExists(myGroupList[position].itemShelvingSaleFk, position, quantity)
//markLine(position, quantity, true)
}.setKoButton("CANCELAR") { }.setKoButton("CANCELAR") {
scanRequest() scanRequest()
customDialogThreeButtonsQuantity.dismiss() customDialogThreeButtonsQuantity.dismiss()

View File

@ -54,8 +54,8 @@
android:id="@+id/levelTxt" android:id="@+id/levelTxt"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="@dimen/layout_margin_min" android:layout_marginRight="@dimen/layout_margin_minest"
android:text="@string/Nivel" android:text="Nivel:"
android:textColor="@color/verdnatura_black" android:textColor="@color/verdnatura_black"
android:textSize="@dimen/h8" /> android:textSize="@dimen/h8" />
@ -63,7 +63,7 @@
android:id="@+id/level" android:id="@+id/level"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="@dimen/layout_margin_min" android:layout_marginRight="@dimen/layout_margin_minest"
android:text="@{sale.level}" android:text="@{sale.level}"
android:textColor="@color/verdnatura_black" android:textColor="@color/verdnatura_black"
android:textSize="@dimen/h8" android:textSize="@dimen/h8"
@ -73,8 +73,8 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="@dimen/layout_margin_min" android:layout_marginRight="@dimen/layout_margin_minest"
android:text="@string/Ticket" android:text="-T:"
android:textColor="@color/verdnatura_black" android:textColor="@color/verdnatura_black"
android:textSize="@dimen/h8" /> android:textSize="@dimen/h8" />
@ -89,6 +89,14 @@
tool:text="123456789" tool:text="123456789"
/> />
<View
android:id="@+id/item_ticket_color"
android:layout_width="@dimen/semaforo_next_to_ticket"
android:layout_height="@dimen/semaforo_next_to_ticket"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:layout_marginLeft="1dp"
android:background="@drawable/background_and_round_collection_fragment" />
<TextView <TextView
@ -96,11 +104,11 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="" android:text=""
android:layout_marginStart="4dp" android:layout_marginStart="@dimen/layout_margin_minest"
android:textColor="@color/verdnatura_black" android:textColor="@color/verdnatura_black"
android:textSize="@dimen/h8" android:textSize="@dimen/h9"
android:textStyle="bold" android:textStyle="bold"
tool:text="PREVIA" tool:text="PREV:"
/> />
@ -200,13 +208,7 @@
android:visibility="invisible" android:visibility="invisible"
tool:text="3 x 1" /> tool:text="3 x 1" />
<View
android:id="@+id/item_ticket_color"
android:layout_width="@dimen/semaforo_width"
android:layout_height="@dimen/ticketColor_height"
android:layout_marginBottom="1dp"
android:background="@drawable/border"
android:visibility="invisible" />
</LinearLayout> </LinearLayout>