From 8cecd276b06722907656755ef2b4a75bbf0bddb4 Mon Sep 17 00:00:00 2001 From: Sergio De la torre Date: Tue, 29 Oct 2024 08:58:33 +0100 Subject: [PATCH] feat: refs #6861 reservas --- .../presentation/common/UICallbacks.kt | 4 ++ .../component/CustomDialogThreeButtons.kt | 54 ++++++++++--------- .../collection/adapter/SaleAdapterNew.kt | 33 ++++-------- .../collection/fragment/CollectionFragment.kt | 2 +- .../CollectionFragmentPickerPreviousNew.kt | 43 ++++++++++++++- app/src/main/res/values-es/strings.xml | 4 +- app/src/main/res/values-fr/strings.xml | 4 +- app/src/main/res/values-pt/strings.xml | 5 +- app/src/main/res/values/strings.xml | 4 +- 9 files changed, 99 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt index c5d5bec6..ced5df1e 100644 --- a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt +++ b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt @@ -271,6 +271,10 @@ interface OnSaleReserveClickListener { fun onSaleReserveListener(sale: Sale) } +interface OnAddItemClickListener { + fun onAddItemClickListener(sale: Sale) +} + interface OnBuyerSelectedListener { fun onBuyerSelected(userFk: String) } diff --git a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogThreeButtons.kt b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogThreeButtons.kt index 74e1ba91..8186e76b 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogThreeButtons.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogThreeButtons.kt @@ -7,10 +7,10 @@ import com.google.android.material.textfield.TextInputEditText import es.verdnatura.R import es.verdnatura.databinding.ComponentCustomThreeDialogBinding +class CustomDialogThreeButtons(context: Context) : Dialog(context, R.style.DialogTheme) { -class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.DialogTheme) { - - private var binding: ComponentCustomThreeDialogBinding = ComponentCustomThreeDialogBinding.inflate(layoutInflater) + private var binding: ComponentCustomThreeDialogBinding = + ComponentCustomThreeDialogBinding.inflate(layoutInflater) init { @@ -18,53 +18,52 @@ class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.Dial //setContentView(R.layout.component_custom_three_dialog) } - fun setTitle(title: String): CustomDialogThreeButtons { - binding.customDialogTitle.visibility= View.VISIBLE - binding.customDialogTitle.text=title - /* custom_dialog_title.visibility = View.VISIBLE - custom_dialog_title.text = title*/ + binding.customDialogTitle.visibility = View.VISIBLE + binding.customDialogTitle.text = title + /* custom_dialog_title.visibility = View.VISIBLE + custom_dialog_title.text = title*/ return this } fun setDescription(description: String): CustomDialogThreeButtons { - binding.customDialogDescription.visibility= View.VISIBLE - binding.customDialogDescription.text=description + binding.customDialogDescription.visibility = View.VISIBLE + binding.customDialogDescription.text = description - /* custom_dialog_description.visibility = View.VISIBLE - custom_dialog_description.text = description*/ + /* custom_dialog_description.visibility = View.VISIBLE + custom_dialog_description.text = description*/ return this } fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogThreeButtons { binding.customDialogButtonOk.visibility = View.VISIBLE - binding.customDialogButtonOk.text =text + binding.customDialogButtonOk.text = text binding.customDialogButtonOk.setOnClickListener { onButtonClicked() } - /* custom_dialog_button_ok.visibility = View.VISIBLE - custom_dialog_button_ok.text = text - custom_dialog_button_ok.setOnClickListener { onButtonClicked() }*/ + /* custom_dialog_button_ok.visibility = View.VISIBLE + custom_dialog_button_ok.text = text + custom_dialog_button_ok.setOnClickListener { onButtonClicked() }*/ return this } - - fun getValue() : String { + fun getValue(): String { return binding.customDialogValue.text.toString() //return custom_dialog_value.text.toString() } - fun getEditText() : TextInputEditText { + fun getEditText(): TextInputEditText { return binding.customDialogValue //return custom_dialog_value } - fun setValue(value : String): CustomDialogThreeButtons{ + + fun setValue(value: String): CustomDialogThreeButtons { binding.customDialogValue.setText(value) binding.textinputlayout.visibility = View.VISIBLE - /* custom_dialog_value.setText(value) - textinputlayout.visibility = View.VISIBLE*/ + /* custom_dialog_value.setText(value) + textinputlayout.visibility = View.VISIBLE*/ return this } @@ -117,10 +116,15 @@ class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.Dial return this } - fun setCustomDialogValue(visibility:Int){ - binding.customDialogValue.visibility=visibility + fun setCustomDialogValue(visibility: Int) { + binding.customDialogValue.visibility = visibility } - fun setFocusDialogValue(){ + + fun setFocusDialogValue() { binding.customDialogValue.requestFocus() } + + fun setHintDialogValue(text: String) { + binding.customDialogValue.hint = text + } } \ No newline at end of file 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 185c1b28..b294d5df 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 @@ -20,6 +20,7 @@ import es.verdnatura.domain.ConstAndValues.PREITEMPICKERTEST import es.verdnatura.domain.ConstAndValues.PREPARED import es.verdnatura.domain.ConstAndValues.SACADOR import es.verdnatura.domain.toast +import es.verdnatura.presentation.common.OnAddItemClickListener import es.verdnatura.presentation.common.OnMistakeClickListener import es.verdnatura.presentation.common.OnPackingClickSaleListener import es.verdnatura.presentation.common.OnPasillerosItemClickListener @@ -38,6 +39,7 @@ class SaleAdapterNew( private var onTicketClick: OnTicketClickSaleListener? = null, private var saleAdapter: SaleAdapterNew? = null, private var onReserveSaleClick: OnSaleReserveClickListener? = null, + private var onAddItemClickListener: OnAddItemClickListener? = null, private var type: String? = null, ) : RecyclerView.Adapter() { @@ -70,7 +72,6 @@ class SaleAdapterNew( ) : RecyclerView.ViewHolder(binding.root) { fun bind(sale: Sale) { binding.apply { - // if (sale.reservedQuantity == null) sale.reservedQuantity = 0 val childLayoutManager = LinearLayoutManager(context!!, RecyclerView.HORIZONTAL, false) @@ -148,12 +149,15 @@ class SaleAdapterNew( layoutError.visibility = VISIBLE txtError.text = binding.root.context.getString(R.string.originalQuantity) + sale.originalQuantity + binding.addItem.visibility = VISIBLE } else { layoutError.visibility = GONE + binding.addItem.visibility = GONE + } - binding.deleteReserve.visibility = if (sale.isAdded == 1) VISIBLE else INVISIBLE + binding.deleteReserve.visibility = if (sale.isAdded == 1) VISIBLE else GONE if (sale.isAdded == 1) { layoutError.visibility = VISIBLE @@ -183,16 +187,7 @@ class SaleAdapterNew( View.GONE } - if (sale.isParent) {/* itemArticleItemFk.visibility = View.INVISIBLE - itemPackingText.visibility = View.INVISIBLE - itemPackingItemFk.visibility = View.INVISIBLE - itemArticleCel1.visibility = View.INVISIBLE - itemArticleCel2.visibility = View.INVISIBLE - itemArticleCel3.visibility = View.INVISIBLE - itemArticleQuantity.visibility = View.INVISIBLE - txtdeNew.visibility = View.INVISIBLE - itemArticleQuantityPicked.visibility = View.INVISIBLE - itemArticleQuantityLine3.visibility = View.VISIBLE*/ + if (sale.isParent) { packingTopicker.visibility = View.INVISIBLE quantityReserved.visibility = View.INVISIBLE itemArticleItemFkNew.visibility = View.INVISIBLE @@ -200,16 +195,7 @@ class SaleAdapterNew( imageErrorMessage.visibility = View.INVISIBLE ivArrow.visibility = View.VISIBLE - } else {/*itemArticleItemFk.visibility = View.VISIBLE - itemPackingText.visibility = View.VISIBLE - itemPackingItemFk.visibility = View.VISIBLE - itemArticleCel1.visibility = View.VISIBLE - itemArticleCel2.visibility = View.VISIBLE - itemArticleCel3.visibility = View.VISIBLE - itemArticleQuantity.visibility = View.VISIBLE - txtdeNew.visibility = View.VISIBLE - itemArticleQuantityPicked.visibility = View.VISIBLE - itemArticleQuantityLine3.visibility = View.VISIBLE*/ + } else { imageErrorMessage.visibility = View.GONE if (type != SACADOR && type != PREITEMPICKERTEST) { @@ -350,6 +336,9 @@ class SaleAdapterNew( // if (type == PREITEMPICKERTEST) sale.parkingCodePrevia else sale.parkingCode sale.parkingCodePrevia + binding.addItem.setOnClickListener { + onAddItemClickListener!!.onAddItemClickListener(sale) + } println("parkingCodePrevia ${sale.parkingCodePrevia}") println("parkingCode ${sale.parkingCode}") diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt index ab263c09..5ff7c24c 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt @@ -2035,7 +2035,7 @@ class CollectionFragment( "" + totalMark + "/" + total if (totalMark == sales.size) { - getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT) + getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT) saleAdapter!!.notifyDataSetChanged() if (canChangeState) changeTicketState() diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt index d86f1111..37183c8d 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt @@ -37,6 +37,7 @@ import es.verdnatura.domain.notNull import es.verdnatura.domain.toast import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.common.ItemScanned +import es.verdnatura.presentation.common.OnAddItemClickListener import es.verdnatura.presentation.common.OnBarcodeRowClickListener import es.verdnatura.presentation.common.OnMistakeClickListener import es.verdnatura.presentation.common.OnOptionsSelectedListener @@ -464,6 +465,12 @@ class CollectionFragmentPickerPreviousNew( showDeleteItemShelving(sale) } + }, onAddItemClickListener = object : OnAddItemClickListener { + + override fun onAddItemClickListener(sale: Sale) { + customDialogAddItemFromSale(sale) + } + }, type = type ) @@ -914,6 +921,40 @@ class CollectionFragmentPickerPreviousNew( } + private fun customDialogAddItemFromSale(sale: Sale) { + + customDialogThreeButtonsQuantity.setTitle( + "${sale.ticketFk}" + ).setDescription(getString(R.string.addItemQuantity, sale.itemFk)) + customDialogThreeButtonsQuantity.setOkButtonAdd(text = getString(R.string.add)) { + ticketSelected = sale.ticketFk + if (customDialogThreeButtonsQuantity.getValue().isNotEmpty()) { + viewModel.collectionAddWithReservation( + sale.itemFk, + customDialogThreeButtonsQuantity.getValue().toInt(), + ticketSelected = sale.ticketFk, + saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get( + 0 + )?.saleGroupFk + ?: 0, + sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey( + SECTORFK + ) + ) + customDialogThreeButtonsQuantity.setValue("") + customDialogThreeButtonsQuantity.dismiss() + hideKeyboardFragment() + } else { + getString(R.string.indicateQuantity).toast(requireContext()) + } + + }.setKoButton(getString(R.string.cancel)) { + scanRequest() + customDialogThreeButtonsQuantity.dismiss() + }.show() + + } + private fun hideKeyboardFragment() { Handler(Looper.getMainLooper()).postDelayed({ val inputMethodManager = @@ -944,7 +985,7 @@ class CollectionFragmentPickerPreviousNew( binding.mainToolbar.toolbarSubtitle.text = getString(R.string.totalsPicker, totalMark, myGroupList.size) if (totalMark == myGroupList.size) { - getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT) + getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT) when (type) { PREPARED -> { tickets.forEach { diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f87d48df..1fb62c78 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -74,7 +74,7 @@ Basura Indica nueva cantidad Indica nuevo packing para el item : - Colección completa + Colección completa Parking Rechazar No se ha podido asociar el pallet al CMR. @@ -882,6 +882,8 @@ Borrar expedición Borrar expedición de reparto ,MRW o ViaExpress Caja preparada no válida. + Indica la cantidad + Vas a añadir el artículo %1$s con la siguiente cantidad: diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e35dcf1c..06e264d3 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -74,7 +74,7 @@ Basura Indica nueva cantidad Indica nuevo packing para el item : - Colección completa + Colección completa Parking Rechazar No se ha podido asociar el pallet al CMR. @@ -882,5 +882,7 @@ Borrar expedición Borrar expedición de reparto ,MRW o ViaExpress Caja preparada no válida. + Indica la cantidad + Vas a añadir el artículo %1$s con la siguiente cantidad: diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index e00f2d69..73e4e5f8 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -74,7 +74,7 @@ Basura Indica nueva cantidad Indica nuevo packing para el item : - Colección completa + Colección completa Parking Rechazar No se ha podido asociar el pallet al CMR. @@ -882,6 +882,7 @@ Borrar expedición Borrar expedición de reparto ,MRW o ViaExpress Caja preparada no válida. - + Indica la cantidad + Vas a añadir el artículo %1$s con la siguiente cantidad: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d038e63f..d1e734e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -88,7 +88,7 @@ Indicate new quantity Indicate the quantity you take Indicates previous number for printing - Complete collection + Complete collection Parking Shelving Parking Reject @@ -885,5 +885,7 @@ Borrar expedición Borrar expedición de reparto ,MRW o ViaExpress Caja preparada no válida. + Indica la cantidad + Vas a añadir el artículo %1$s con la siguiente cantidad: