From 6c2855a7a48a03ccd01858eec3c34fce0469051e Mon Sep 17 00:00:00 2001 From: Sergio De la torre Date: Wed, 28 Feb 2024 09:41:39 +0100 Subject: [PATCH] refs #5890 feat:itemShelvingSale --- .../presentation/common/ResponseItemVO.kt | 6 + .../collection/adapter/SaleAdapterNew.kt | 29 ++-- .../fragment/CollectionFragmentPickerNew.kt | 161 +++++++++++------- app/src/main/res/layout/sale_row_fragment.xml | 32 ++-- 4 files changed, 139 insertions(+), 89 deletions(-) diff --git a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt index 009837f0..4c07bf2e 100644 --- a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt +++ b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt @@ -10,6 +10,12 @@ class ResponseItemVO( var data:Any? =null ) +class ResponseItemExistsItemShelvingSale( + var exists: Boolean, + var position:Int, + var quantity:Int +) + class ResponseItemNumber( var response: Int? = null, var isError: Boolean = false, diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt index aab46bd3..41107581 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt @@ -3,10 +3,12 @@ package es.verdnatura.presentation.view.feature.collection.adapter import android.content.Context import android.content.res.ColorStateList import android.graphics.Color +import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat.getColor +import androidx.core.graphics.drawable.DrawableCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import es.verdnatura.R @@ -86,7 +88,7 @@ class SaleAdapterNew( packingTopicker.setOnClickListener { // Solo se cambia la cantidad al cogerla no al pulsar !! - // onQuantityClick.onQuantityClick(sale) + // onQuantityClick.onQuantityClick(sale) } @@ -133,7 +135,7 @@ class SaleAdapterNew( txtError.text = binding.root.context.getString(R.string.originalQuantity) + sale.originalQuantity!! - }else{ + } else { layoutError.visibility = View.GONE } @@ -142,7 +144,7 @@ class SaleAdapterNew( 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) { layoutError.visibility = View.GONE @@ -237,8 +239,7 @@ class SaleAdapterNew( previous.visibility = View.INVISIBLE } else { previous.visibility = View.VISIBLE - // previous.text ="" - previous.text = "PREV:"+ sale.saleGroupFk + previous.text = "PREV:" + sale.saleGroupFk } 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()) { - itemView.setBackgroundColor( - if (picked == 0) { - (Color.TRANSPARENT) - } else { - (context!!.getColor(R.color.verdnatura_pumpkin_orange)) - } + DrawableCompat.setTint( + backgroundDrawableTicket, + Color.TRANSPARENT ) } else { - itemView.setBackgroundColor(Color.parseColor(color)) - } + DrawableCompat.setTint( + backgroundDrawableTicket, + Color.parseColor(color) + ) + } } } \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerNew.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerNew.kt index ed3479b4..d069b507 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerNew.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerNew.kt @@ -29,6 +29,7 @@ import es.verdnatura.domain.ConstAndValues.CONTROLADOR import es.verdnatura.domain.ConstAndValues.PRINTERNAME import es.verdnatura.domain.ConstAndValues.SACADOR import es.verdnatura.domain.ConstAndValues.SECTORFK +import es.verdnatura.domain.notNull import es.verdnatura.domain.toast import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.common.* @@ -237,11 +238,9 @@ class CollectionFragmentPickerNew( ) buttonPushedGetCollection = true } else { - viewModel.collectionTicketGet( + viewModel.collectionTicketGetSalix( lastScanned, - mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), - print = "0", - type + print = false ) buttonPushedGetCollection = false @@ -266,7 +265,7 @@ class CollectionFragmentPickerNew( private fun setEvents() { binding.mainToolbar.backButton.setOnClickListener { - requireActivity().onBackPressed() + ma.onBackPressed() } //ESCANER ========= @@ -312,12 +311,14 @@ class CollectionFragmentPickerNew( isMarking = false binding.collectionSwipe.isRefreshing = false binding.splashProgress.visibility = View.VISIBLE - viewModel.collectionTicketGet( - collection.collectionFk, - mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), - print = "0", - type - ) + + updateScreen() + /* viewModel.collectionTicketGet( + collection.collectionFk, + mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), + print = "0", + type + )*/ buttonPushedGetCollection = false binding.collectionSwipe.isRefreshing = false @@ -336,52 +337,90 @@ class CollectionFragmentPickerNew( with(viewModel) { binding.splashProgress.visibility = View.GONE - collectionTicketList.observe(viewLifecycleOwner, Observer { - if (!it.isError) { - if (it.tickets.isNotEmpty()) { - //collection = it - createCollectionList() - workerFkFromTicket = it.tickets.get(0).sales.get(0).workerFk + /* collectionTicketList.observe(viewLifecycleOwner, Observer { + if (!it.isError) { + if (it.tickets.isNotEmpty()) { + //collection = it + createCollectionList() + workerFkFromTicket = it.tickets.get(0).sales.get(0).workerFk - } 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) requireActivity().onBackPressed() - }.show() - } + } 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() + } - }) + })*/ + loadCollectionTicketSalix.observe(viewLifecycleOwner) { event -> + event.getContentIfNotHandled().notNull { + binding.splashProgress.visibility = View.GONE + if (!it.isError) { - collectionTicketSalix.observe(viewLifecycleOwner, Observer { - binding.splashProgress.visibility = View.GONE - if (!it.isError) { + if (it.tickets.isNotEmpty()) { + collection = it + createCollectionList() + workerFkFromTicket = if (it.tickets[0].sales.isNotEmpty()) { + it.tickets[0].sales[0].workerFk.toString() + } else { + "" + } - if (it.tickets.isNotEmpty()) { - collection = it - createCollectionList() - workerFkFromTicket = if (it.tickets[0].sales.isNotEmpty()) { - it.tickets[0].sales[0].workerFk.toString() } else { - "" + binding.mainToolbar.toolbarSubtitle.text = "0/0" } - } else { - binding.mainToolbar.toolbarSubtitle.text = "0/0" + 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 + if (!it.isError) { + + 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() + } + + })*/ + 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) } - } else { - customDialog.setTitle(getString(R.string.error)).setDescription(it.errorMessage) - .setOkButton(getString(R.string.accept)) { - customDialog.dismiss() - if (activity != null) requireActivity().onBackPressed() - }.show() } }) - responseParking.observe(viewLifecycleOwner, Observer { binding.splashProgress.visibility = View.GONE @@ -398,13 +437,7 @@ class CollectionFragmentPickerNew( responseCollectionAddItem.observe(viewLifecycleOwner, Observer { if (!goBack) { - viewModel.collectionTicketGet( - collection.collectionFk, - mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), - print = "0", - type - ) - + updateScreen() goBack = false } @@ -441,8 +474,9 @@ class CollectionFragmentPickerNew( ) } if (!it.isError) { - sales[positionConfirm].isPicked = 1 + myGroupList[positionConfirm].isPicked = 1 saleAdapter!!.notifyDataSetChanged() + lm!!.scrollToPositionWithOffset(storedPosition, 0) viewModel.collectionTicketGetSalix( collection.collectionFk, print = false ) @@ -593,8 +627,8 @@ class CollectionFragmentPickerNew( }, object : OnSaleClickSaleListener { override fun onSaleClick(mysale: Sale) { - - sales.forEachIndexed { index, sale -> + myGroupList.forEachIndexed { index, sale -> + //sales.forEachIndexed { index, sale -> // println("Sacador la sale es ${sale.saleFk}") // println("Sacador la sale picked es ${sale.isPicked}") // println("Sacador la sale group es ${sale.saleGroupFk}") @@ -632,6 +666,8 @@ class CollectionFragmentPickerNew( }, object : OnPackingClickSaleListener { override fun onPackingClick(sale: Sale) { + goBack = true + println("ubicador") if (!sale.code.isNullOrEmpty()) ma.onPasillerosItemClickListener( PasillerosItemVO( title = getString(R.string.titleUbicator), @@ -757,6 +793,7 @@ class CollectionFragmentPickerNew( //nuevo tema agrupacion sales //checkStateParent() // var mySale = sales[position].saleFk Ordenar setPosition + var mySale = sales[position].itemShelvingSaleFk for (indice in myGroupList.indices) { if (!myGroupList[indice].isParent && myGroupList[indice].itemShelvingSaleFk == mySale) { @@ -810,7 +847,7 @@ class CollectionFragmentPickerNew( for (indice in myGroupList.indices) { if (myGroupList[indice].isPicked == 0) { //storedPosition = indice - lm!!.scrollToPositionWithOffset(storedPosition, 0) + lm!!.scrollToPositionWithOffset(indice - 1, 0) break } } @@ -954,7 +991,9 @@ class CollectionFragmentPickerNew( } 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 { @@ -971,6 +1010,7 @@ class CollectionFragmentPickerNew( } return false + return false } //Tarea #4371 @@ -985,7 +1025,7 @@ class CollectionFragmentPickerNew( private fun showQuestionUbicationEmpty(position: Int, quantity: Int = 0) { 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) customDialogThreeButtonsQuantity.setOkButtonAdd("SI") { scanRequest() @@ -997,7 +1037,8 @@ class CollectionFragmentPickerNew( }.setOkButtonTwo("NO") { scanRequest() customDialogThreeButtonsQuantity.dismiss() - markLine(position, quantity, true) + viewModel.itemShelvingSaleExists(myGroupList[position].itemShelvingSaleFk, position, quantity) + //markLine(position, quantity, true) }.setKoButton("CANCELAR") { scanRequest() customDialogThreeButtonsQuantity.dismiss() diff --git a/app/src/main/res/layout/sale_row_fragment.xml b/app/src/main/res/layout/sale_row_fragment.xml index 58529a06..d449f38c 100644 --- a/app/src/main/res/layout/sale_row_fragment.xml +++ b/app/src/main/res/layout/sale_row_fragment.xml @@ -54,8 +54,8 @@ android:id="@+id/levelTxt" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginRight="@dimen/layout_margin_min" - android:text="@string/Nivel" + android:layout_marginRight="@dimen/layout_margin_minest" + android:text="Nivel:" android:textColor="@color/verdnatura_black" android:textSize="@dimen/h8" /> @@ -63,7 +63,7 @@ android:id="@+id/level" android:layout_width="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:textColor="@color/verdnatura_black" android:textSize="@dimen/h8" @@ -73,8 +73,8 @@ @@ -89,6 +89,14 @@ tool:text="123456789" /> + @@ -200,13 +208,7 @@ android:visibility="invisible" tool:text="3 x 1" /> - +