diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterReserve.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterReserve.kt new file mode 100644 index 00000000..024f74c3 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterReserve.kt @@ -0,0 +1,365 @@ +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.GONE +import android.view.View.INVISIBLE +import android.view.View.VISIBLE +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 +import es.verdnatura.databinding.SaleRowFragmentReserveBinding +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 +import es.verdnatura.presentation.common.OnSaleClickSaleListener +import es.verdnatura.presentation.common.OnSaleReserveClickListener +import es.verdnatura.presentation.common.OnTicketClickSaleListener +import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO +import es.verdnatura.presentation.view.feature.sacador.model.Sale + +class SaleAdapterReserve( + private val items: List, + private val onPasillerosItemClickListener: OnPasillerosItemClickListener, + private val onSaleClickListener: OnSaleClickSaleListener, + private val onMistakeClickListener: OnMistakeClickListener, + private val onPackingClick: OnPackingClickSaleListener, + private var onTicketClick: OnTicketClickSaleListener? = null, + private var saleAdapter: SaleAdapterReserve? = null, + private var onReserveSaleClick: OnSaleReserveClickListener? = null, + private var onAddItemClickListener: OnAddItemClickListener? = null, + private var type: String? = null, + + ) : RecyclerView.Adapter() { + var context: Context? = null + var position: Int = 0 + + var isExpanded: Boolean = type == "PRECHECKER" + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AjustesItemHolder { + this.context = parent.context + + + return AjustesItemHolder( + + SaleRowFragmentReserveBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ) + ) + } + + override fun getItemCount() = items.size + + override fun onBindViewHolder(holder: AjustesItemHolder, position: Int) { + this.position = position + holder.bind(items[position]) + } + + inner class AjustesItemHolder( + val binding: SaleRowFragmentReserveBinding + ) : RecyclerView.ViewHolder(binding.root) { + fun bind(sale: Sale) { + binding.apply { + println("type $type ") + println("type isExpanded $isExpanded") + /* val childLayoutManager = + LinearLayoutManager(context!!, RecyclerView.HORIZONTAL, false) + */ + val childLayoutManagerV = + LinearLayoutManager(context!!, RecyclerView.VERTICAL, false) + + /* itemArticlePlacements.apply { + layoutManager = childLayoutManager + + }*/ + + //CLICK EVENTS + contentLayout.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + txtColor.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + txtDescrip.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + ticketFk.setOnClickListener { + onTicketClick?.onTicketClickListener(sale) + } + + txtParking.setOnClickListener { + onPasillerosItemClickListener.onPasillerosItemClickListener( + PasillerosItemVO( + title = R.string.titleItemSearch + ), sale.itemFk.toString() + ) + } + txtShelving.setOnClickListener { + onPackingClick.onPackingClick(sale) + } + + txtItem.setOnClickListener { + onPasillerosItemClickListener.onPasillerosItemClickListener( + PasillerosItemVO( + title = R.string.titleItemConsult + ), sale.itemFk.toString() + ) + } + + //ERROR + + if (sale.originalQuantity != sale.saleQuantity && sale.originalQuantity != null && !sale.isParent) { + 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 GONE + + if (sale.isAdded == 1) { + layoutError.visibility = VISIBLE + txtError.text = binding.root.context.getString(R.string.newItem) + binding.deleteReserve.setOnClickListener { + onReserveSaleClick!!.onSaleReserveListener(sale) + } + } + + + + if (isExpanded) { + itemArticlePlacements.visibility = VISIBLE + ivArrow.setImageResource(R.drawable.ic_arrow_down) + + } else { + itemArticlePlacements.visibility = GONE + ivArrow.setImageResource(R.drawable.ic_arrow_up) + } + + itemArticlePlacements.visibility = if (isExpanded) VISIBLE else { + GONE + } + + if (sale.isParent) { + txtQuantity.visibility = INVISIBLE + txtQuantityReserved.visibility = INVISIBLE + txtReserveToComplete.visibility = GONE + imageErrorMessage.visibility = GONE + ivArrow.visibility = VISIBLE + + } else { + + imageErrorMessage.visibility = GONE + if (type != SACADOR && type != PREITEMPICKERTEST) { + val colorRes = + if (sale.hasMistake == true) R.color.verdnatura_red_salix else R.color.verdnatura_black + imageErrorMessage.imageTintList = + ColorStateList.valueOf(getColor(context!!, colorRes)) + imageErrorMessage.visibility = VISIBLE + } else { + imageErrorMessage.visibility = GONE + } + ivArrow.visibility = INVISIBLE + } + println("sonSales ${sale.sonSales}") + + if (!sale.sonSales.isNullOrEmpty()) { + + itemArticlePlacements.apply { + layoutManager = childLayoutManagerV + adapter = SaleAdapterReserve( + sale.sonSales, + onPasillerosItemClickListener, + onSaleClickListener, + onMistakeClickListener, + onPackingClick, + + ) + } + } else { + itemArticlePlacements.visibility = VISIBLE + } + + ivArrow.setOnClickListener { + + if (isExpanded) { + ivArrow.setImageResource(R.drawable.ic_arrow_up) + itemArticlePlacements.visibility = GONE + } else { + ivArrow.setImageResource(R.drawable.ic_arrow_down) + itemArticlePlacements.visibility = VISIBLE + } + isExpanded = !isExpanded + + } + + if (sale.saleGroupFk == null) { + previous.visibility = INVISIBLE + } else { + previous.visibility = VISIBLE + previous.text = "PREV:${sale.saleGroupFk}" + } + + val result: Int + val textToConcat: String + + try { + + result = sale.reservedQuantity % (sale.packing ?: (sale.saleQuantity + 1)) + textToConcat = if (result != 0) { + "${sale.reservedQuantity / (sale.grouping ?: 1)} x ${sale.grouping ?: "1"}" + } else { + "${sale.reservedQuantity / (sale.packing ?: 1)} pack de ${sale.packing ?: "1"}" + } + binding.txtQuantityReserved.text = textToConcat + + val textToConcat2: String + + val result2: Int = + sale.accumulatedQuantity % (sale.packing ?: (sale.saleQuantity + 1)) + textToConcat2 = if (result2 != 0) { + "${(sale.saleQuantity - sale.accumulatedQuantity) / (sale.grouping ?: 1)} x ${sale.grouping ?: "1"}" + } else { + "${(sale.saleQuantity - sale.accumulatedQuantity) / (sale.packing ?: 1)} pack de ${sale.packing ?: "1"}" + } + + + if (sale.totalItemShelving > 1) { + binding.txtQuantityReserved.text = textToConcat + binding.txtQuantity.text = textToConcat2 + binding.txtReserveToComplete.text = + "${sale.currentItemShelving}/${sale.totalItemShelving}" + binding.txtReserveToComplete.visibility = VISIBLE + binding.txtQuantity.text = + "${sale.reservedQuantity}" + } else { + binding.txtQuantity.text = "${sale.reservedQuantity}" + binding.txtReserveToComplete.visibility = GONE + + } + + } catch (ex: Exception) { + ex.message!!.toast(context) + } + + + binding.txtReserveToComplete.text = + "${sale.currentItemShelving}/${sale.totalItemShelving}" + + //COLORES + paintTicketcolor(sale.rgb, binding.itemTicketColor.background) + if (sale.isPicked == 1) { + if (type == PREPARED) { + contentLayout.setBackgroundColor( + + if (sale.saleGroupFk == null) { + getColor( + context!!, R.color.verdnatura_orange_salix + ) + } else { + println("stateCode ${sale.stateCode}") + if (sale.stateCode != null && sale.stateCode == "PREPARED") { + getColor( + context!!, R.color.verdnatura_orange_salix + ) + } else { + if (sale.stateCode != null && sale.stateCode == "OK PREVIOUS") { + getColor( + context!!, R.color.verdnatura_dark_sky_blue + ) + } else { + if (sale.stateCode != null && sale.stateCode == "PREVIOUS_CONTROLLED") { + getColor( + context!!, R.color.verdnatura_dark_mint_light + ) + } else { + getColor( + context!!, R.color.verdnatura_black + ) + } + } + + } + } + ) + } else { + contentLayout.setBackgroundColor( + getColor( + context!!, R.color.verdnatura_dark_sky_blue + ) + ) + } + } else { + contentLayout.setBackgroundColor( + getColor( + context!!, R.color.verdnatura_black + ) + ) + + } + + binding.txtParking.text = + // if (type == PREPARED) sale.parkingCodePrevia else sale.parkingCode + sale.parkingCode ?: sale.parkingCodePrevia + + binding.addItem.setOnClickListener { + onAddItemClickListener!!.onAddItemClickListener(sale) + } + + if (type == PREITEMPICKERTEST) { + binding.level.visibility = GONE + binding.levelTxt.visibility = GONE + binding.ticketOrder.visibility = VISIBLE + binding.txtPoints.visibility = GONE + } else { + binding.level.visibility = VISIBLE + binding.levelTxt.visibility = VISIBLE + binding.ticketOrder.visibility = GONE + binding.txtPoints.visibility = VISIBLE + + } + + + this.sale = sale + + } + } + } + + private fun paintTicketcolor(color: String?, backgroundDrawableTicket: Drawable) { + + if (color.isNullOrBlank()) { + DrawableCompat.setTint( + backgroundDrawableTicket, Color.TRANSPARENT + ) + } else { + 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/adapter/SaleAdapterReserveSacador.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterReserveSacador.kt new file mode 100644 index 00000000..07a01334 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterReserveSacador.kt @@ -0,0 +1,363 @@ +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.GONE +import android.view.View.INVISIBLE +import android.view.View.VISIBLE +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 +import es.verdnatura.databinding.SaleRowFragmentReserveSacadorBinding +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 +import es.verdnatura.presentation.common.OnSaleClickSaleListener +import es.verdnatura.presentation.common.OnSaleReserveClickListener +import es.verdnatura.presentation.common.OnTicketClickSaleListener +import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO +import es.verdnatura.presentation.view.feature.sacador.model.Sale + +class SaleAdapterReserveSacador( + private val items: List, + private val onPasillerosItemClickListener: OnPasillerosItemClickListener, + private val onSaleClickListener: OnSaleClickSaleListener, + private val onMistakeClickListener: OnMistakeClickListener, + private val onPackingClick: OnPackingClickSaleListener, + private var onTicketClick: OnTicketClickSaleListener? = null, + private var saleAdapter: SaleAdapterReserveSacador? = null, + private var onReserveSaleClick: OnSaleReserveClickListener? = null, + private var onAddItemClickListener: OnAddItemClickListener? = null, + private var type: String? = null, + + ) : RecyclerView.Adapter() { + var context: Context? = null + var position: Int = 0 + + var isExpanded: Boolean = false + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AjustesItemHolder { + this.context = parent.context + + + return AjustesItemHolder( + + SaleRowFragmentReserveSacadorBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ) + ) + } + + override fun getItemCount() = items.size + + override fun onBindViewHolder(holder: AjustesItemHolder, position: Int) { + this.position = position + holder.bind(items[position]) + } + + inner class AjustesItemHolder( + val binding: SaleRowFragmentReserveSacadorBinding + ) : RecyclerView.ViewHolder(binding.root) { + fun bind(sale: Sale) { + binding.apply { + + val childLayoutManagerV = + LinearLayoutManager(context!!, RecyclerView.VERTICAL, false) + + //CLICK EVENTS + contentLayout.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + txtColor.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + txtDescrip.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + ticketFk.setOnClickListener { + onTicketClick?.onTicketClickListener(sale) + } + + txtParking.setOnClickListener { + onPasillerosItemClickListener.onPasillerosItemClickListener( + PasillerosItemVO( + title = R.string.titleItemSearch + ), sale.itemFk.toString() + ) + } + txtShelving.setOnClickListener { + onPackingClick.onPackingClick(sale) + } + + txtItem.setOnClickListener { + onPasillerosItemClickListener.onPasillerosItemClickListener( + PasillerosItemVO( + title = R.string.titleItemConsult + ), sale.itemFk.toString() + ) + } + + //ERROR + + if (sale.originalQuantity != sale.saleQuantity && sale.originalQuantity != null && !sale.isParent) { + 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 GONE + + if (sale.isAdded == 1) { + layoutError.visibility = VISIBLE + txtError.text = binding.root.context.getString(R.string.newItem) + binding.deleteReserve.setOnClickListener { + onReserveSaleClick!!.onSaleReserveListener(sale) + } + } + + + if (sale.isParent) { + txtQuantity.visibility = INVISIBLE + txtQuantityReserved.visibility = INVISIBLE + txtReserveToComplete.visibility = GONE + imageErrorMessage.visibility = GONE + ivArrow.visibility = VISIBLE + sale.color = sale.username ?: "" //mostrar en campo del colo el usuario + } else { + + imageErrorMessage.visibility = GONE + if (type != SACADOR && type != PREITEMPICKERTEST) { + val colorRes = + if (sale.hasMistake == true) R.color.verdnatura_red_salix else R.color.verdnatura_black + imageErrorMessage.imageTintList = + ColorStateList.valueOf(getColor(context!!, colorRes)) + imageErrorMessage.visibility = VISIBLE + } else { + imageErrorMessage.visibility = GONE + } + ivArrow.visibility = INVISIBLE + } + + if (!sale.sonSales.isNullOrEmpty()) { + + itemArticlePlacements.apply { + layoutManager = childLayoutManagerV + adapter = SaleAdapterReserveSacadorSaleGroup( + sale.sonSales, + onPasillerosItemClickListener, + onSaleClickListener, + onMistakeClickListener, + onPackingClick, + type = "PREPARED" + + ) + } + } else { + itemArticlePlacements.visibility = GONE + } + if (isExpanded) { + if (sale.isParent) { + itemArticlePlacements.visibility = VISIBLE + } else { + itemArticlePlacements.visibility = GONE + } + ivArrow.setImageResource(R.drawable.ic_arrow_down) + + } else { + itemArticlePlacements.visibility = GONE + ivArrow.setImageResource(R.drawable.ic_arrow_up) + } + + itemArticlePlacements.visibility = if (isExpanded) VISIBLE else { + GONE + } + ivArrow.setOnClickListener { + + if (isExpanded) { + ivArrow.setImageResource(R.drawable.ic_arrow_up) + itemArticlePlacements.visibility = GONE + + } else { + ivArrow.setImageResource(R.drawable.ic_arrow_down) + if (sale.isParent) { + itemArticlePlacements.visibility = VISIBLE + } else { + itemArticlePlacements.visibility = GONE + } + } + isExpanded = !isExpanded + + } + + if (sale.saleGroupFk == null) { + previous.visibility = INVISIBLE + } else { + previous.visibility = VISIBLE + previous.text = "PREV:${sale.saleGroupFk}" + + } + + val result: Int + val textToConcat: String + + try { + + result = sale.reservedQuantity % (sale.packing ?: (sale.saleQuantity + 1)) + textToConcat = if (result != 0) { + "${sale.reservedQuantity / (sale.grouping ?: 1)} x ${sale.grouping ?: "1"}" + } else { + "${sale.reservedQuantity / (sale.packing ?: 1)} pack de ${sale.packing ?: "1"}" + } + binding.txtQuantityReserved.text = textToConcat + + val textToConcat2: String + + val result2: Int = + sale.accumulatedQuantity % (sale.packing ?: (sale.saleQuantity + 1)) + textToConcat2 = if (result2 != 0) { + "${(sale.saleQuantity - sale.accumulatedQuantity) / (sale.grouping ?: 1)} x ${sale.grouping ?: "1"}" + } else { + "${(sale.saleQuantity - sale.accumulatedQuantity) / (sale.packing ?: 1)} pack de ${sale.packing ?: "1"}" + } + + + if (sale.totalItemShelving > 1) { + binding.txtQuantityReserved.text = textToConcat + binding.txtQuantity.text = textToConcat2 + binding.txtReserveToComplete.text = + "${sale.currentItemShelving}/${sale.totalItemShelving}" + binding.txtReserveToComplete.visibility = VISIBLE + binding.txtQuantity.text = + "${sale.reservedQuantity}" + } else { + binding.txtQuantity.text = "${sale.reservedQuantity}" + binding.txtReserveToComplete.visibility = GONE + + } + + } catch (ex: Exception) { + ex.message!!.toast(context) + } + + + binding.txtReserveToComplete.text = + "${sale.currentItemShelving}/${sale.totalItemShelving}" + + //COLORES + paintTicketcolor(sale.rgb, binding.itemTicketColor.background) + if (sale.isPicked == 1) { + if (type == PREPARED) { + contentLayout.setBackgroundColor( + + if (sale.saleGroupFk == null) { + getColor( + context!!, R.color.verdnatura_orange_salix + ) + } else { + + if (sale.stateCode != null && sale.stateCode == "PREPARED") { + getColor( + context!!, R.color.verdnatura_orange_salix + ) + } else { + if (sale.stateCode != null && sale.stateCode == "OK PREVIOUS") { + getColor( + context!!, R.color.verdnatura_dark_sky_blue + ) + } else { + if (sale.stateCode != null && sale.stateCode == "PREVIOUS_CONTROLLED") { + getColor( + context!!, R.color.verdnatura_dark_mint_light + ) + } else { + getColor( + context!!, R.color.verdnatura_black + ) + } + } + + } + } + ) + } else { + contentLayout.setBackgroundColor( + getColor( + context!!, R.color.verdnatura_dark_sky_blue + ) + ) + } + } else { + contentLayout.setBackgroundColor( + getColor( + context!!, R.color.verdnatura_black + ) + ) + + } + + binding.txtParking.text = + // if (type == PREPARED) sale.parkingCodePrevia else sale.parkingCode + sale.parkingCode ?: sale.parkingCodePrevia + + binding.addItem.setOnClickListener { + onAddItemClickListener!!.onAddItemClickListener(sale) + } + + if (type == PREITEMPICKERTEST) { + binding.level.visibility = GONE + binding.levelTxt.visibility = GONE + binding.ticketOrder.visibility = VISIBLE + binding.txtPoints.visibility = GONE + } else { + binding.level.visibility = VISIBLE + binding.levelTxt.visibility = VISIBLE + binding.ticketOrder.visibility = GONE + binding.txtPoints.visibility = VISIBLE + + } + + + this.sale = sale + + } + } + } + + private fun paintTicketcolor(color: String?, backgroundDrawableTicket: Drawable) { + + if (color.isNullOrBlank()) { + DrawableCompat.setTint( + backgroundDrawableTicket, Color.TRANSPARENT + ) + } else { + 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/adapter/SaleAdapterReserveSacadorSaleGroup.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterReserveSacadorSaleGroup.kt new file mode 100644 index 00000000..aa6f68fa --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterReserveSacadorSaleGroup.kt @@ -0,0 +1,308 @@ +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.GONE +import android.view.View.INVISIBLE +import android.view.View.VISIBLE +import android.view.ViewGroup +import androidx.core.content.ContextCompat.getColor +import androidx.core.graphics.drawable.DrawableCompat +import androidx.recyclerview.widget.RecyclerView +import es.verdnatura.R +import es.verdnatura.databinding.SaleRowFragmentReserveSacadorBinding +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 +import es.verdnatura.presentation.common.OnSaleClickSaleListener +import es.verdnatura.presentation.common.OnSaleReserveClickListener +import es.verdnatura.presentation.common.OnTicketClickSaleListener +import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO +import es.verdnatura.presentation.view.feature.sacador.model.Sale + +class SaleAdapterReserveSacadorSaleGroup( + private val items: List, + private val onPasillerosItemClickListener: OnPasillerosItemClickListener, + private val onSaleClickListener: OnSaleClickSaleListener, + private val onMistakeClickListener: OnMistakeClickListener, + private val onPackingClick: OnPackingClickSaleListener, + private var onTicketClick: OnTicketClickSaleListener? = null, + private var saleAdapter: SaleAdapterReserveSacadorSaleGroup? = null, + private var onReserveSaleClick: OnSaleReserveClickListener? = null, + private var onAddItemClickListener: OnAddItemClickListener? = null, + private var type: String? = null, + + ) : RecyclerView.Adapter() { + var context: Context? = null + var position: Int = 0 + + var isExpanded: Boolean = false + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AjustesItemHolder { + this.context = parent.context + + + return AjustesItemHolder( + + SaleRowFragmentReserveSacadorBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ) + ) + } + + override fun getItemCount() = items.size + + override fun onBindViewHolder(holder: AjustesItemHolder, position: Int) { + this.position = position + holder.bind(items[position]) + } + + inner class AjustesItemHolder( + val binding: SaleRowFragmentReserveSacadorBinding + ) : RecyclerView.ViewHolder(binding.root) { + fun bind(sale: Sale) { + binding.apply { + + //CLICK EVENTS + contentLayout.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + txtColor.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + txtDescrip.setOnClickListener { + if (!sale.isParent) { + onSaleClickListener.onSaleClick(sale) + } + } + ticketFk.setOnClickListener { + onTicketClick?.onTicketClickListener(sale) + } + + txtParking.setOnClickListener { + onPasillerosItemClickListener.onPasillerosItemClickListener( + PasillerosItemVO( + title = R.string.titleItemSearch + ), sale.itemFk.toString() + ) + } + txtShelving.setOnClickListener { + onPackingClick.onPackingClick(sale) + } + + txtItem.setOnClickListener { + onPasillerosItemClickListener.onPasillerosItemClickListener( + PasillerosItemVO( + title = R.string.titleItemConsult + ), sale.itemFk.toString() + ) + } + + //ERROR + + if (sale.originalQuantity != sale.saleQuantity && sale.originalQuantity != null && !sale.isParent) { + 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 GONE + + if (sale.isAdded == 1) { + layoutError.visibility = VISIBLE + txtError.text = binding.root.context.getString(R.string.newItem) + binding.deleteReserve.setOnClickListener { + onReserveSaleClick!!.onSaleReserveListener(sale) + } + } + + + if (sale.isParent) { + txtQuantity.visibility = INVISIBLE + txtQuantityReserved.visibility = INVISIBLE + txtReserveToComplete.visibility = GONE + imageErrorMessage.visibility = GONE + ivArrow.visibility = VISIBLE + + } else { + + imageErrorMessage.visibility = GONE + if (type != SACADOR && type != PREITEMPICKERTEST) { + val colorRes = + if (sale.hasMistake == true) R.color.verdnatura_red_salix else R.color.verdnatura_black + imageErrorMessage.imageTintList = + ColorStateList.valueOf(getColor(context!!, colorRes)) + imageErrorMessage.visibility = VISIBLE + } else { + imageErrorMessage.visibility = GONE + } + ivArrow.visibility = INVISIBLE + } + println("sonSales RESERVESACADORSALEGROUP ${sale.sonSales}") + + + if (sale.saleGroupFk == null) { + previous.visibility = INVISIBLE + } else { + previous.visibility = VISIBLE + previous.text = "PREV:${sale.saleGroupFk}" + } + + val result: Int + val textToConcat: String + + try { + + result = sale.reservedQuantity % (sale.packing ?: (sale.saleQuantity + 1)) + textToConcat = if (result != 0) { + "${sale.reservedQuantity / (sale.grouping ?: 1)} x ${sale.grouping ?: "1"}" + } else { + "${sale.reservedQuantity / (sale.packing ?: 1)} pack de ${sale.packing ?: "1"}" + } + binding.txtQuantityReserved.text = textToConcat + + val textToConcat2: String + + val result2: Int = + sale.accumulatedQuantity % (sale.packing ?: (sale.saleQuantity + 1)) + textToConcat2 = if (result2 != 0) { + "${(sale.saleQuantity - sale.accumulatedQuantity) / (sale.grouping ?: 1)} x ${sale.grouping ?: "1"}" + } else { + "${(sale.saleQuantity - sale.accumulatedQuantity) / (sale.packing ?: 1)} pack de ${sale.packing ?: "1"}" + } + + + if (sale.totalItemShelving > 1) { + binding.txtQuantityReserved.text = textToConcat + binding.txtQuantity.text = textToConcat2 + binding.txtReserveToComplete.text = + "${sale.currentItemShelving}/${sale.totalItemShelving}" + binding.txtReserveToComplete.visibility = VISIBLE + binding.txtQuantity.text = + "${sale.reservedQuantity}" + } else { + binding.txtQuantity.text = "${sale.reservedQuantity}" + binding.txtReserveToComplete.visibility = GONE + + } + + } catch (ex: Exception) { + ex.message!!.toast(context) + } + + + binding.txtReserveToComplete.text = + "${sale.currentItemShelving}/${sale.totalItemShelving}" + + //COLORES + paintTicketcolor(sale.rgb, binding.itemTicketColor.background) + if (sale.isPicked == 1) { + if (type == PREPARED) { + contentLayout.setBackgroundColor( + + if (sale.saleGroupFk == null) { + getColor( + context!!, R.color.verdnatura_orange_salix + ) + } else { + println("stateCode ${sale.stateCode}") + if (sale.stateCode != null && sale.stateCode == "PREPARED") { + getColor( + context!!, R.color.verdnatura_orange_salix + ) + } else { + if (sale.stateCode != null && sale.stateCode == "OK PREVIOUS") { + getColor( + context!!, R.color.verdnatura_dark_sky_blue + ) + } else { + if (sale.stateCode != null && sale.stateCode == "PREVIOUS_CONTROLLED") { + getColor( + context!!, R.color.verdnatura_dark_mint_light + ) + } else { + getColor( + context!!, R.color.verdnatura_black + ) + } + } + + } + } + ) + } else { + contentLayout.setBackgroundColor( + getColor( + context!!, R.color.verdnatura_dark_sky_blue + ) + ) + } + } else { + contentLayout.setBackgroundColor( + getColor( + context!!, R.color.verdnatura_black + ) + ) + + } + + binding.txtParking.text = + // if (type == PREPARED) sale.parkingCodePrevia else sale.parkingCode + sale.parkingCode ?: sale.parkingCodePrevia + + binding.addItem.setOnClickListener { + onAddItemClickListener!!.onAddItemClickListener(sale) + } + + if (type == PREITEMPICKERTEST) { + binding.level.visibility = GONE + binding.levelTxt.visibility = GONE + binding.ticketOrder.visibility = VISIBLE + binding.txtPoints.visibility = GONE + } else { + binding.level.visibility = VISIBLE + binding.levelTxt.visibility = VISIBLE + binding.ticketOrder.visibility = GONE + binding.txtPoints.visibility = VISIBLE + + } + + this.sale = sale + + } + } + } + + private fun paintTicketcolor(color: String?, backgroundDrawableTicket: Drawable) { + + if (color.isNullOrBlank()) { + DrawableCompat.setTint( + backgroundDrawableTicket, Color.TRANSPARENT + ) + } else { + 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/CollectionCheckerViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionCheckerViewModel.kt index 6ffa715b..11fed43b 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionCheckerViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionCheckerViewModel.kt @@ -27,6 +27,7 @@ import retrofit2.Response class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context) { private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix) + private val collectionViewModelChecker = CollectionViewModel(context) //var isPaused: Boolean = false @@ -359,4 +360,14 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context) _isPaused.value = paused } + fun itemShelvingSaleBySale( + saleFk: Number, quantityDiff: Int + + ) { + collectionViewModelChecker.itemShelvingSaleBySale( + saleFk = saleFk, + quantityDiff = quantityDiff + ) + } + } \ No newline at end of file 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/CollectionFragmentPickerPreviousNewInterface.kt similarity index 95% rename from app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt rename to app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNewInterface.kt index eb2e295b..89d8bab1 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/CollectionFragmentPickerPreviousNewInterface.kt @@ -59,7 +59,7 @@ import es.verdnatura.presentation.view.component.CustomDialogThreeButtons import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO import es.verdnatura.presentation.view.feature.collection.ItemVO -import es.verdnatura.presentation.view.feature.collection.adapter.SaleAdapterNew +import es.verdnatura.presentation.view.feature.collection.adapter.SaleAdapterReserve import es.verdnatura.presentation.view.feature.collection.mapper.map import es.verdnatura.presentation.view.feature.main.activity.MainActivity import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO @@ -82,7 +82,7 @@ import org.json.JSONObject variables: isVerifiedCollection */ -class CollectionFragmentPickerPreviousNew( +class CollectionFragmentPickerPreviousNewInterface( var collection: CollectionTicket, var type: String = PRESACADOR, private var hasPickingOrder: Boolean = false @@ -90,7 +90,7 @@ class CollectionFragmentPickerPreviousNew( CollectionViewModel::class ) { private var sales: List = listOf() - private var saleAdapter: SaleAdapterNew? = null + private var saleAdapter: SaleAdapterReserve? = null private var lm: LinearLayoutManager? = null private var storedPosition: Int = 0 private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null @@ -119,7 +119,7 @@ class CollectionFragmentPickerPreviousNew( companion object { fun newInstance( collection: CollectionTicket, type: String, hasPickingOrder: Boolean = false - ) = CollectionFragmentPickerPreviousNew(collection, type, hasPickingOrder) + ) = CollectionFragmentPickerPreviousNewInterface(collection, type, hasPickingOrder) } override fun onAttach(context: Context) { @@ -141,6 +141,7 @@ class CollectionFragmentPickerPreviousNew( } override fun init() { + println("El tipo es $type ") customDialogList = CustomDialogList(requireContext()) customDialogInput = CustomDialogInput(requireContext()) customDialog = CustomDialog(requireContext()) @@ -158,9 +159,9 @@ class CollectionFragmentPickerPreviousNew( } private fun setToolBar() { - binding.mainToolbar.toolbarSubtitle.visibility = View.VISIBLE - binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE - binding.mainToolbar.backButton.visibility = View.VISIBLE + binding.mainToolbar.toolbarSubtitle.visibility = VISIBLE + binding.mainToolbar.toolbarIcons.visibility = VISIBLE + binding.mainToolbar.backButton.visibility = VISIBLE collection.collectionFk.let { binding.mainToolbar.toolbarTitle.text = collection.collectionFk.toString() } @@ -237,6 +238,7 @@ class CollectionFragmentPickerPreviousNew( when (myQr.table) { "saleGroup" -> { binding.scanInput.setText(myQr.id.toString()) + findSale(binding.scanInput.text.toString()) } "buy" -> binding.scanInput.setText(myQr.more) @@ -437,19 +439,22 @@ class CollectionFragmentPickerPreviousNew( } - saleAdapter = SaleAdapterNew(myGroupList, pasillerosItemClickListener!!, + saleAdapter = SaleAdapterReserve(myGroupList, pasillerosItemClickListener!!, object : OnSaleClickSaleListener { override fun onSaleClick(sale: Sale) { + println("sale ${sale.saleFk} ${sale.itemFk} ${sale.isPicked}") val position = myGroupList.indexOfFirst { it.itemShelvingSaleFk == sale.itemShelvingSaleFk } - if (position > -1) { + if (position > -1 && !myGroupList[position].isParent) { if (sale.isPicked == 1) { unMarkLine(position, myGroupList[position]) } else { showScanner(position, sale) } + } else { + //TODO desmarcamos una linea de previa ? } } @@ -563,14 +568,27 @@ class CollectionFragmentPickerPreviousNew( isFoundSale = true storedPosition = indice viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt()) - setStateSaleGroup(txtscan.toInt()) + //actualizamos padre myGroupList[indice].stateCode = if (myGroupList[indice].stateCode == "PREPARED") { "OK PREVIOUS" } else { "PREPARED" } - saleAdapter!!.notifyDataSetChanged() + //actualizamos hijos + myGroupList[indice].sonSales.forEach { + it.stateCode = myGroupList[indice].stateCode + } + //actualizamos saleGroup + setStateSaleGroup( + txtscan.toInt(), if (myGroupList[indice].stateCode == "PREPARED") { + 14 + } else { + 28 + } + ) + + // saleAdapter!!.notifyDataSetChanged() break } @@ -594,7 +612,10 @@ class CollectionFragmentPickerPreviousNew( for (indice in sales.indices) { if (sales[indice].saleGroupFk != null && sales[indice].saleGroupFk == saleGroupScanned.toInt()) { viewModel.itemShelvingSaleSetSaleGroup(saleGroupScanned.toInt()) - setStateSaleGroup(saleGroupScanned.toInt()) + setStateSaleGroup( + saleGroupScanned.toInt(), + if (sales[indice].stateCode == "PREPARED") 28 else 14 + ) storedPosition = indice mpok!!.start() return true @@ -1082,7 +1103,7 @@ class CollectionFragmentPickerPreviousNew( } if (distinctSaleGroups.isNotEmpty()) distinctSaleGroups.forEach { saleGroup -> - setStateSaleGroup(saleGroup) + setStateSaleGroup(saleGroup, stateCodeId!!) } } @@ -1090,8 +1111,8 @@ class CollectionFragmentPickerPreviousNew( } } - private fun setStateSaleGroup(saleGroup: Number) { - viewModel.saleGroupUpdateState(saleGroup, stateCodeId!!) + private fun setStateSaleGroup(saleGroup: Number, stateCode: Number) { + viewModel.saleGroupUpdateState(saleGroup, stateCode) } private fun showScanner(index: Int, sale: Sale) { @@ -1146,6 +1167,8 @@ class CollectionFragmentPickerPreviousNew( } } else { // si tiene saleGroup se crea el padre con el tamaño e indicando que es padre, como ejemplo se toma el primer elemento /*crea padre*/ + + println("saleGroup $key lineas ${value.size}") if (value.size > 1) { val mySale = //= value[0] Sale( @@ -1166,9 +1189,11 @@ class CollectionFragmentPickerPreviousNew( origin = value[0].origin, size = value[0].size, itemShelvingSaleFk = value[0].itemShelvingSaleFk, - longName = value[0].parkingCode ?: "", + longName = value[0].parkingCodePrevia ?: "", itemShelvingFk = 0, - ticketOrder = value[0].ticketOrder ?: null + ticketOrder = value[0].ticketOrder ?: null, + parkingCodePrevia = value[0].parkingCodePrevia, + stateCode = value[0].stateCode ) //prime elemento//hay que hacer una copia si no queda la referencia @@ -1228,7 +1253,7 @@ class CollectionFragmentPickerPreviousNew( if (foundTicketInCollection != null) { isVerifiedCollection = true ma.hideKeyboard(customDialogList.getEditText()) - binding.fragmentSacadorCollections.visibility = View.VISIBLE + binding.fragmentSacadorCollections.visibility = VISIBLE customDialogList.dismiss() binding.scanInput.requestFocus() } else { 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/CollectionFragmentPickerPreviousNewInterfaceSacador.kt similarity index 61% rename from app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerNew.kt rename to app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNewInterfaceSacador.kt index a27361ee..887ca4ec 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/CollectionFragmentPickerPreviousNewInterfaceSacador.kt @@ -4,11 +4,20 @@ import android.content.Context import android.graphics.drawable.Drawable import android.media.MediaPlayer import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.text.InputType +import android.text.Spannable +import android.text.SpannableString +import android.text.style.AbsoluteSizeSpan +import android.util.Log.d +import android.util.TypedValue import android.view.KeyEvent import android.view.View +import android.view.View.VISIBLE import android.view.WindowManager import android.view.inputmethod.EditorInfo +import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.ImageView import android.widget.Toast @@ -18,21 +27,25 @@ import com.google.gson.Gson import es.verdnatura.R import es.verdnatura.databinding.FragmentCollectionNewBinding import es.verdnatura.domain.ConstAndValues.BASEURLSALIX -import es.verdnatura.domain.ConstAndValues.CONTROLADOR +import es.verdnatura.domain.ConstAndValues.PREITEMPICKERTEST +import es.verdnatura.domain.ConstAndValues.PREPARED import es.verdnatura.domain.ConstAndValues.PRINTERNAME import es.verdnatura.domain.ConstAndValues.SACADOR -import es.verdnatura.domain.isParking +import es.verdnatura.domain.ConstAndValues.SECTORFK import es.verdnatura.domain.notNull +import es.verdnatura.domain.showToastCenterWithBackground import es.verdnatura.domain.toast import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.common.ItemScanned import es.verdnatura.presentation.common.LabelDialogHelper +import es.verdnatura.presentation.common.OnAddItemClickListener import es.verdnatura.presentation.common.OnBarcodeRowClickListener import es.verdnatura.presentation.common.OnMistakeClickListener import es.verdnatura.presentation.common.OnOptionsSelectedListener import es.verdnatura.presentation.common.OnPackingClickSaleListener import es.verdnatura.presentation.common.OnPasillerosItemClickListener import es.verdnatura.presentation.common.OnSaleClickSaleListener +import es.verdnatura.presentation.common.OnSaleReserveClickListener import es.verdnatura.presentation.common.OnTicketClickSaleListener import es.verdnatura.presentation.common.ToolBarAdapterTooltip import es.verdnatura.presentation.common.hideKeyboard @@ -45,26 +58,38 @@ import es.verdnatura.presentation.view.component.CustomDialogThreeButtons import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO import es.verdnatura.presentation.view.feature.collection.ItemVO -import es.verdnatura.presentation.view.feature.collection.adapter.SaleAdapterNew +import es.verdnatura.presentation.view.feature.collection.adapter.SaleAdapterReserveSacador import es.verdnatura.presentation.view.feature.collection.mapper.map import es.verdnatura.presentation.view.feature.main.activity.MainActivity import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket import es.verdnatura.presentation.view.feature.sacador.model.Sale import es.verdnatura.presentation.view.feature.sacador.model.SaleVO +import kotlinx.coroutines.runBlocking import org.json.JSONObject @Suppress("UNUSED_ANONYMOUS_PARAMETER") -class CollectionFragmentPickerNew( + +/*CAMBIO DEL SACADOR AL PRESACADOR, FUNCIONES EXTRA AL FINAL DEL FICHERO +1- EL SACADOR AGRUPA LINEAS EL PRESACADOR NO +2- AL AÑADIR ITEM A A LA COLECCIÓN , EL SACADOR SALEGROUPFK Y SECTORFK SON NULOS. +3-VERIFICAR COLECCIÓN +4-IMPRIMIR +5-EL SACADOR PUEDE MARCAR PREVIA, EL PRESACADOR NO. +6-EL PRE marca los estados del saleGroup con OK PREVIOUS (28) y el SACADOR con PREPARED (14) + +variables: +isVerifiedCollection + */ +class CollectionFragmentPickerPreviousNewInterfaceSacador( var collection: CollectionTicket, - var type: String = SACADOR, + var type: String = PREPARED, private var hasPickingOrder: Boolean = false ) : BaseFragment( CollectionViewModel::class ) { private var sales: List = listOf() - private var salesParent: List = listOf() - private var saleAdapter: SaleAdapterNew? = null + private var saleAdapter: SaleAdapterReserveSacador? = null private var lm: LinearLayoutManager? = null private var storedPosition: Int = 0 private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null @@ -76,33 +101,25 @@ class CollectionFragmentPickerNew( private lateinit var customDialogThreeButtonsQuantity: CustomDialogThreeButtons private var ticketSelected: Int = 0 private lateinit var customDialog: CustomDialog - private var goBack: Boolean = false - private var goBack2: Boolean = false - private var goMistakeBack: Boolean = false var mperror: MediaPlayer? = null var mpok: MediaPlayer? = null - private var itemShelvingFkStored: Int = 0 private var storedBackPosition: Int = 0 private var tickets: ArrayList = ArrayList() - private var mistakeSale: SaleVO? = null - private var isMarking = false - private lateinit var ticketScanTxt: String private var lastScanned: Int = 0 - private var buttonPushedGetCollection = false private var positionUnmarked = -1 - private var state = 0 - private var originalItemScan: Long = 0 - private var workerFkFromTicket: String? = null private var isScanned: Boolean? = null private var positionConfirm = 0 private var quantityConfirm = 0 - private var positionMarkPrevia = 0 private lateinit var myGroupList: List + private var quantityReserveToCheckItemScan = 0 + private var isVerifiedCollection = false + private var stateCodeId: Number? = null + private var stateCodePreparedId: Number? = null companion object { fun newInstance( collection: CollectionTicket, type: String, hasPickingOrder: Boolean = false - ) = CollectionFragmentPickerNew(collection, type, hasPickingOrder) + ) = CollectionFragmentPickerPreviousNewInterfaceSacador(collection, type, hasPickingOrder) } override fun onAttach(context: Context) { @@ -113,12 +130,8 @@ class CollectionFragmentPickerNew( override fun getLayoutId(): Int = R.layout.fragment_collection_new override fun onCreate(savedInstanceState: Bundle?) { - mperror = MediaPlayer.create((activity as MainActivity), R.raw.error) mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok) - viewModel.collectionTicketGetSalix( - collection.collectionFk, print = false - ) super.onCreate(savedInstanceState) } @@ -128,6 +141,7 @@ class CollectionFragmentPickerNew( } override fun init() { + println("Nueva interfaz del sacador : $type ") customDialogList = CustomDialogList(requireContext()) customDialogInput = CustomDialogInput(requireContext()) customDialog = CustomDialog(requireContext()) @@ -136,66 +150,52 @@ class CollectionFragmentPickerNew( ma.hideBottomNavigation(View.GONE) setEvents() setToolBar() + viewModel.collectionTicketGetSalix( + collection.collectionFk, print = false + ) + viewModel.getStateId("OK PREVIOUS") + viewModel.getStatePreparedId("PREPARED") - if (collection.tickets.isNotEmpty()) { - createCollectionList() - } super.init() } - override fun onPause() { - super.onPause() - goBack = true - goBack2 = true - goMistakeBack = true - } - private fun setToolBar() { - binding.mainToolbar.toolbarSubtitle.visibility = View.VISIBLE - binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE - binding.mainToolbar.backButton.visibility = View.VISIBLE + binding.mainToolbar.toolbarSubtitle.visibility = VISIBLE + binding.mainToolbar.toolbarIcons.visibility = VISIBLE + binding.mainToolbar.backButton.visibility = VISIBLE collection.collectionFk.let { binding.mainToolbar.toolbarTitle.text = collection.collectionFk.toString() } val listIcons: ArrayList = ArrayList() - val iconPrint = ImageView(context) - iconPrint.setImageResource(R.drawable.ic_print_black_24dp) + val iconAdd = ImageView(context) iconAdd.setImageResource(R.drawable.ic_playlist_add_black_24dp) - val iconViewCollection = ImageView(context) - iconViewCollection.setImageResource(R.drawable.ic_collection) - val iconWorker = ImageView(context) - iconWorker.setImageResource(R.drawable.ic_worker) - val iconPhone = ImageView(context) - iconPhone.setImageResource(R.drawable.phone_call) val iconParking = ImageView(context) iconParking.setImageResource(R.drawable.ic_local_parking_black_24dp) val iconUpdate = ImageView(context) iconUpdate.setImageResource(R.drawable.ic_autorenew_black_24dp) + val iconPrint = ImageView(context) + iconPrint.setImageResource(R.drawable.ic_print_black_24dp) - iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp) iconAdd.tooltipText = getTooltip(R.drawable.ic_playlist_add_black_24dp) - iconViewCollection.tooltipText = getTooltip(R.drawable.ic_collection) - iconPhone.tooltipText = getTooltip(R.drawable.phone_call) iconParking.tooltipText = getTooltip(R.drawable.ic_local_parking_black_24dp) iconUpdate.tooltipText = getTooltip(R.drawable.ic_autorenew_black_24dp) + iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp) + - listIcons.add(iconPrint) listIcons.add(iconAdd) listIcons.add(iconUpdate) - listIcons.remove(iconWorker) + if (type == PREPARED) listIcons.add(iconPrint) else listIcons.add(iconParking) binding.mainToolbar.toolbarIcons.adapter = ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener { override fun onOptionsItemSelected(item: Drawable) { when (item) { - //iconViewCollection.drawable -> getCollection() iconPrint.drawable -> print() iconAdd.drawable -> addItem() - iconWorker.drawable -> showUser() iconUpdate.drawable -> updateScreen() iconParking.drawable -> pasillerosItemClickListener?.onPasillerosItemClickListener( PasillerosItemVO( @@ -216,38 +216,11 @@ class CollectionFragmentPickerNew( ) } - private fun markPrevia(saleGroupScanned: String): Boolean { - - try { - for (indice in sales.indices) { - if (sales[indice].saleGroupFk != null && sales[indice].saleGroupFk == saleGroupScanned.toInt()) { - viewModel.itemShelvingSaleSetSaleGroup(saleGroupScanned.toInt()) - positionMarkPrevia = indice - mpok!!.start() - return true - - } - } - } catch (ex: Exception) { - return false - } - return false - } - private fun scanRequest() { binding.scanInput.requestFocus() hideKeyboards() } - private fun showUser() { - - ma.onPasillerosItemClickListener( - PasillerosItemVO(title = R.string.titleUserControlVehicle), - workerFkFromTicket.toString() - ) - - } - private fun setEvents() { binding.mainToolbar.backButton.setOnClickListener { @@ -266,12 +239,8 @@ class CollectionFragmentPickerNew( val myQr = ItemScanned(JSONObject(binding.scanInput.text.toString())) when (myQr.table) { "saleGroup" -> { - if (type == CONTROLADOR) { - markPrevia(myQr.id.toString()) - } else { - binding.scanInput.setText(myQr.id.toString()) - findSale(binding.scanInput.text.toString()) - } + binding.scanInput.setText(myQr.id.toString()) + findSale(binding.scanInput.text.toString()) } "buy" -> binding.scanInput.setText(myQr.more) @@ -281,7 +250,6 @@ class CollectionFragmentPickerNew( ma.hideKeyboard(binding.scanInput) findSale(binding.scanInput.text.toString()) } - buttonPushedGetCollection = false } binding.scanInput.setText("") hideKeyboards() @@ -294,10 +262,8 @@ class CollectionFragmentPickerNew( //LISTA ========= binding.collectionSwipe.setOnRefreshListener { - isMarking = false binding.collectionSwipe.isRefreshing = false updateScreen() - buttonPushedGetCollection = false binding.collectionSwipe.isRefreshing = false } @@ -307,7 +273,7 @@ class CollectionFragmentPickerNew( try { requireActivity().hideKeyboard() } catch (e: Exception) { - e.toast(requireContext()) + println(e.message) } } @@ -317,17 +283,11 @@ class CollectionFragmentPickerNew( loadCollectionTicketSalix.observe(viewLifecycleOwner) { event -> event.getContentIfNotHandled().notNull { - // 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" @@ -367,17 +327,7 @@ class CollectionFragmentPickerNew( } } } - responseParking.observe(viewLifecycleOwner) { - if (!goBack) { - ma.messageWithSound( - if (it.isError) it.errorMessage else getString(R.string.Aparcado), - it.isError, - true - ) - } - - } loadResponseAddItem.observe(viewLifecycleOwner) { event -> event.getContentIfNotHandled().notNull { @@ -386,91 +336,77 @@ class CollectionFragmentPickerNew( } - responsePrint.observe(viewLifecycleOwner) { - - if (!goBack) { - - if (it.isError) { - ma.messageWithSound( - it.errorMessage, isError = true, isPlayed = true - ) - } else { - (getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey( - PRINTERNAME - )).toast( - requireContext() - ) - } - } - - } - - loadUnpicked.observe(viewLifecycleOwner) { event -> - event.getContentIfNotHandled().notNull { - - myGroupList[positionUnmarked].isPicked = 0 - myGroupList[positionUnmarked].reservedQuantity = quantityConfirm - saleAdapter!!.notifyItemChanged(positionUnmarked) - - lm!!.scrollToPositionWithOffset(positionUnmarked, 0) - - } - } loadPicked.observe(viewLifecycleOwner) { event -> event.getContentIfNotHandled().notNull { if (it) { myGroupList[positionConfirm].isPicked = 1 saleAdapter!!.notifyItemChanged(positionConfirm) lm!!.scrollToPositionWithOffset(positionConfirm, 0) + //lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0) setTotalLines() } else { updateScreen() } } } - responseItemShelvingSaleGroup.observe(viewLifecycleOwner) { - viewModel.collectionTicketGetSalix( - collection.collectionFk, print = false - ) - lm!!.scrollToPositionWithOffset(positionMarkPrevia, 0) + loadUnpicked.observe(viewLifecycleOwner) { event -> + event.getContentIfNotHandled().notNull { - ma.messageWithSound( - getString(R.string.previousCollected), it.isError, !it.isError - ) + myGroupList[positionUnmarked].isPicked = 0 + // myGroupList[positionUnmarked].reservedQuantity = quantityConfirm + saleAdapter!!.notifyItemChanged(positionUnmarked) + lm!!.scrollToPositionWithOffset(positionUnmarked, 0) + + } + } + loadResponseStateId.observe(viewLifecycleOwner) { event -> + event.getContentIfNotHandled().notNull { + stateCodeId = it + } + } + loadResponseStatePreparedId.observe(viewLifecycleOwner) { event -> + event.getContentIfNotHandled().notNull { + stateCodePreparedId = it + } + } + loadResponseReserveAddPrevOK.observe(viewLifecycleOwner) { event -> + event.getContentIfNotHandled().notNull { + } + } + loadSetStateResponse.observe(viewLifecycleOwner) { event -> + event.getContentIfNotHandled().notNull { + // updateScreen() + } } - responseCode.observe(viewLifecycleOwner) { - if (!goBack2) { + loadResponseCode.observe(viewLifecycleOwner) { event -> + event.getContentIfNotHandled().notNull { + if (it == null) { - customDialog.setTitle(getString(R.string.error)) showErrorMessage(text = getString(R.string.codeNotExist)) if (mperror != null) mperror?.start() } else { - if (checkItemScan(it.toString())) { + if (checkItemScan(it.toString(), positionConfirm)) { scanRequest() customDialogList.dismiss() mpok?.start() - onQuantityOfShelvingSelected(itemShelvingFkStored) + markLine(positionConfirm, quantityReserveToCheckItemScan, false) } else { - + customDialogList.setValueTwo("") showErrorMessage(text = getString(R.string.lineNotExist)) - if (mperror != null) mperror?.start() } } } - - goBack2 = false - } } } private fun createCollectionList() { - state = 0 binding.mainToolbar.toolbarTitle.text = collection.collectionFk.toString() + collection.map(requireContext()) val salesList: ArrayList = ArrayList() @@ -480,8 +416,7 @@ class CollectionFragmentPickerNew( val myPickingTo = mobileApplication.dataStoreApp.readDataStoreKey("PICKING_TO") collection.tickets.forEach { ticket -> - if (observations.isNotEmpty()) observations = - observations + " " + ticket.observations + if (observations.isNotEmpty()) observations = observations + " " + ticket.observations ticket.sales.forEach { sale -> if (hasPickingOrder) { @@ -494,46 +429,55 @@ class CollectionFragmentPickerNew( } } + // sales = salesList.sortedWith(compareBy { it.pickingOrderPrevia }.thenBy { it.itemFk }) + //quitar comentarios FALTA AGRUPAR LAS PREVIAS - sales = salesList.sortedWith(compareBy { it.pickingOrder }.thenBy { it.itemFk }) - myGroupList = - groupSaleGroup(salesList).sortedWith(compareBy { it.pickingOrder }.thenBy { it.itemFk }) - saleAdapter = SaleAdapterNew( - myGroupList, - pasillerosItemClickListener!!, + when (type) { + PREITEMPICKERTEST -> { + myGroupList = + salesList.sortedWith(compareBy { it.pickingOrder }.thenBy { it.itemFk }) + } + + SACADOR -> { + myGroupList = + groupSaleGroup(salesList).sortedWith(compareBy { it.pickingOrder }.thenBy { it.itemFk }) + } + + } + + + saleAdapter = SaleAdapterReserveSacador(myGroupList, pasillerosItemClickListener!!, object : OnSaleClickSaleListener { - override fun onSaleClick(mySale: Sale) { - myGroupList.forEachIndexed { index, sale -> - - if (sale.itemShelvingSaleFk == mySale.itemShelvingSaleFk) { - if (sale.isPicked != 1 && sale.saleGroupFk == null) { - showScanner(index, sale) - } else { - unMarkLine(index, myGroupList[index]) - } + override fun onSaleClick(sale: Sale) { + val position = + myGroupList.indexOfFirst { it.itemShelvingSaleFk == sale.itemShelvingSaleFk } + if (position > -1 && !myGroupList[position].isParent) { + if (sale.isPicked == 1) { + unMarkLine(position, myGroupList[position]) + } else { + showScanner(position, sale) } - + } else { + //TODO desmarcamos una linea de previa ? ya se desmarca el salegroup } + } - }, - object : OnMistakeClickListener { + }, object : OnMistakeClickListener { override fun onMistakeClickListener(sale: SaleVO) { } - }, - object : OnPackingClickSaleListener { + }, object : OnPackingClickSaleListener { override fun onPackingClick(sale: Sale) { - goBack = true + if (!sale.code.isNullOrEmpty()) ma.onPasillerosItemClickListener( PasillerosItemVO( title = R.string.titleUbicator, ), entryPoint = sale.code ) } - }, - object : OnTicketClickSaleListener { + }, object : OnTicketClickSaleListener { override fun onTicketClickListener(sale: Sale) { val entryPoint = Gson().toJson( mutableMapOf( @@ -550,8 +494,18 @@ class CollectionFragmentPickerNew( ), entryPoint = entryPoint ) } - }, - type = type + }, onReserveSaleClick = object : OnSaleReserveClickListener { + override fun onSaleReserveListener(sale: Sale) { + showDeleteItemShelving(sale) + } + + }, onAddItemClickListener = object : OnAddItemClickListener { + + override fun onAddItemClickListener(sale: Sale) { + customDialogAddItemFromSale(sale) + } + + }, type = type ) @@ -563,6 +517,29 @@ class CollectionFragmentPickerNew( setListPosition() setScrollListener(lm!!) printObservations(observations) + if (!isVerifiedCollection && type == PREPARED) { + binding.fragmentSacadorCollections.visibility = View.INVISIBLE + if (mobileApplication.userId != 19591) + verifyCollection() else binding.fragmentSacadorCollections.visibility = VISIBLE + } + } + + private fun showDeleteItemShelving(sale: Sale) { + customDialog.setTitle(getString(R.string.deleteSale)).setDescription( + getString(R.string.deleteSaleDescrip) + getString( + R.string.sure + ) + ).setOkButton(getString(R.string.delete)) { + + viewModel.itemShelvingSaleDeleteIsAdded(sale.itemShelvingSaleFk) + scanRequest() + customDialog.dismiss() + + }.setKoButton(getString(R.string.cancel)) { + scanRequest() + customDialog.dismiss() + }.show() + } private fun setScrollListener(lm: LinearLayoutManager) { @@ -570,7 +547,8 @@ class CollectionFragmentPickerNew( binding.fragmentSacadorCollections.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { - storedBackPosition = lm.findFirstVisibleItemPosition() + // storedBackPosition = lm.findFirstVisibleItemPosition() + storedPosition = lm.findFirstVisibleItemPosition() super.onScrolled(recyclerView, dx, dy) } }) @@ -588,7 +566,85 @@ class CollectionFragmentPickerNew( private fun findSale(txtscan: String) { - var isOk = markPrevia(txtscan) + var isFoundSale = false + //Se busca la matricula en las lineas + for (indice in myGroupList.indices) { + //como cuando es presacador no hay parent no entrará + try { + if (myGroupList[indice].isParent && myGroupList[indice].saleGroupFk == txtscan.toInt() || (type == PREPARED && myGroupList[indice].saleGroupFk == txtscan.toInt())) { + isFoundSale = true + storedPosition = indice + viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt()) + //actualizamos padre + myGroupList[indice].stateCode = + if (myGroupList[indice].stateCode == "PREPARED") { + "OK PREVIOUS" + } else { + "PREPARED" + } + //actualizamos hijos + myGroupList[indice].sonSales.forEach { + it.stateCode = myGroupList[indice].stateCode + } + //actualizamos saleGroup + try { + setStateSaleGroup( + txtscan.toInt(), if (myGroupList[indice].stateCode == "PREPARED") { + stateCodePreparedId!! + } else { + stateCodeId!! + } + ) + } catch (ex: Exception) { + ex.message!!.toast(requireContext()) + } + + saleAdapter!!.notifyDataSetChanged() + break + + } + } catch (ex: Exception) { + d("Verdnatura", "not find") + } + if (myGroupList[indice].isPicked != 1 && myGroupList[indice].code != null && myGroupList[indice].code!!.uppercase() == txtscan.uppercase()) { + isFoundSale = true + printShelvingResult(indice) + break + } + } + + if (!isFoundSale) mperror!!.start() else mpok!!.start() + + } + + private fun markPrevia(saleGroupScanned: String): Boolean { + + try { + for (indice in sales.indices) { + if (sales[indice].saleGroupFk != null && sales[indice].saleGroupFk == saleGroupScanned.toInt()) { + viewModel.itemShelvingSaleSetSaleGroup(saleGroupScanned.toInt()) + + setStateSaleGroup( + saleGroupScanned.toInt(), + if (sales[indice].stateCode == "PREPARED") stateCodeId!! else stateCodePreparedId!! + ) + storedPosition = indice + mpok!!.start() + return true + + } + } + } catch (ex: Exception) { + return false + } + return false + } + + private fun findSale(txtscan: String, position: Int, sale: Sale) { + + storedPosition = position + + val isOk = markPrevia(txtscan) if (isOk) { //Se ha escanado un ticket y se ha marcado la previa @@ -599,85 +655,56 @@ class CollectionFragmentPickerNew( isToasted = true ) } else { - //Se busca la matricula en las lineas - for (indice in myGroupList.indices) { - if (myGroupList[indice].isPicked != 1 && myGroupList[indice].code != null && myGroupList[indice].code!!.uppercase() == txtscan.uppercase()) { - mpok!!.start() - isOk = true - printShelvingResult(indice) - break - } - } - if (!isOk) { - //Si no es previa ni está cogiendo nada se comprueba si es un parking - if (txtscan.contains("-")) { - viewModel.setParking( - ticketFk = collection.collectionFk, parking = txtscan - ) - } else { - mperror!!.start() - } + if (sale.code!!.uppercase() == txtscan.uppercase()) { + mpok!!.start() + printShelvingResult(position) + } else { + mperror!!.start() } } - - } - - private fun findSale(txtscan: String, position: Int, sale: Sale) { - - storedPosition = position - - if (sale.code!!.uppercase() == txtscan.uppercase()) { - mpok!!.start() - printShelvingResult(position) - sale.isPicked = 1 - saleAdapter!!.notifyDataSetChanged() - } else { - mperror!!.start() - } - } private fun markLine(position: Int, quantity: Int, isItemShelvingSaleEmpty: Boolean?) { - state = 0 isScanned = null positionConfirm = position quantityConfirm = quantity - isMarking = true - viewModel.itemShelvingSaleSetQuantity( - myGroupList[position].itemShelvingSaleFk, - quantity, - isItemShelvingSaleEmpty, - shelvingFk = myGroupList[position].code!! - ) - - val mySale = sales[position].itemShelvingSaleFk - for (indice in myGroupList.indices) { - if (!myGroupList[indice].isParent && myGroupList[indice].itemShelvingSaleFk == mySale) { - storedBackPosition = indice - } + runBlocking { + val sectorFk = mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK) + viewModel.itemShelvingSaleSetQuantity( + myGroupList[position].itemShelvingSaleFk, + quantity, + isItemShelvingSaleEmpty = isItemShelvingSaleEmpty, + sectorFk = if (sectorFk == -1) null else sectorFk, + shelvingFk = myGroupList[position].code!! + ) } + // storedBackPosition = position } private fun setListPosition() { - if (storedPosition == 0 && storedBackPosition == 0) { // se inicia lista, se busca porqué item vamos. + + //if (storedPosition == 0 && storedBackPosition == 0) { // se inicia lista, se busca porqué item vamos. + if (storedPosition == 0) { for (indice in myGroupList.indices) { if (myGroupList[indice].isPicked == 0) { + //storedPosition = indice lm!!.scrollToPositionWithOffset(indice - 1, 0) break } } } else { - lm!!.scrollToPositionWithOffset(storedBackPosition, 0) + // lm!!.scrollToPositionWithOffset(storedBackPosition, 0) + lm!!.scrollToPositionWithOffset(storedPosition, 0) } } private fun unMarkLine(position: Int, sale: Sale) { - state = 0 + customDialog.setTitle(getString(R.string.unmarkLine)).setDescription( getString(R.string.goUnmark) + sale.itemFk + getString( R.string.sure @@ -686,8 +713,9 @@ class CollectionFragmentPickerNew( if (!sale.isParent && sale.reservedQuantity == 0 && sale.originalQuantity != sale.saleQuantity) { getString(R.string.unmarkError).toast(requireContext()) } else { - storedBackPosition = position - setListPosition() + //storedBackPosition = position + //storedPosition = position + // setListPosition() viewModel.itemShelvingSaleUnpicked(myGroupList[position].itemShelvingSaleFk) sale.isPicked = 0 positionUnmarked = position @@ -704,10 +732,10 @@ class CollectionFragmentPickerNew( } - //SHELVINGS - private fun printShelvingResult(pos: Int) { + storedPosition = pos + customDialogList = CustomDialogList(requireContext()) customDialogList.getEditTextTwo().inputType = InputType.TYPE_CLASS_TEXT customDialogList.getEditTextTwo().setRawInputType(InputType.TYPE_CLASS_NUMBER) customDialogList.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER) @@ -716,32 +744,36 @@ class CollectionFragmentPickerNew( val item = myGroupList[pos].itemFk val longName = myGroupList[pos].longName val totalReserved = myGroupList[pos].reservedQuantity - val itemShelvingFk = myGroupList[pos].itemShelvingSaleFk + + val spannable = SpannableString("$item\n$longName") + + spannable.setSpan( + AbsoluteSizeSpan( + TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 16f, resources.displayMetrics) + .toInt(), true + ), + 0, + item.toString().length, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) try { - customDialogList.setTitle("$shelving($item) $totalReserved de $longName").setOkButton( + customDialogList.setTitleSpannable(spannable) + customDialogList.setOkButton( getString( R.string.take ) ) { - if (customDialogList.getValueTwo().isParking()) { - ma.messageWithSound( - message = getString(R.string.scanItem), - isError = true, - isPlayed = true, - isToasted = true - ) - customDialogList.setValueTwo("") - } else { - customDialogTakeAction(pos, itemShelvingFk, totalReserved, false) - } + customDialogTakeAction(pos, totalReserved, false) }.setKoButton(getString(R.string.close)) { requireActivity().hideKeyboard(customDialogList.getEditTextTwo()) customDialogList.dismiss() scanRequest() - }.setHintValue(getString(R.string.quantitySelect)).setValue(totalReserved.toString()) + }.setHintValue(getString(R.string.quantitySelect)) + .setTextSize(20f) + .setValue(totalReserved.toString()) .setHintValueTwo(getString(R.string.scanItem)).setValueTwo("").show() customDialogList.getEditTextTwo().setOnEditorActionListener { v, actionId, event -> @@ -749,7 +781,6 @@ class CollectionFragmentPickerNew( customDialogTakeAction( pos, - itemShelvingFk, totalReserved, event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER ) @@ -760,14 +791,13 @@ class CollectionFragmentPickerNew( false } } catch (e: Exception) { - ma.messageWithSound(e.message.toString(), isError = true, isPlayed = true) + ma.messageWithSound(e.message.toString(), isError = true, true) } } private fun customDialogTakeAction( - position: Int, itemShelvingFk: Int, totalReserved: Int, isItemScanned: Boolean? + position: Int, totalReserved: Int, isItemScanned: Boolean? ) { - goBack = false isScanned = isItemScanned if (customDialogList.getValueTwo().isNotEmpty()) { @@ -780,7 +810,7 @@ class CollectionFragmentPickerNew( if (quantityToReserve < totalReserved) { - if (customDialogList.getValueTwo() in sales[position].Barcodes || customDialogList.getValueTwo() == sales[position].itemFk.toString()) { + if (customDialogList.getValueTwo() in myGroupList[position].Barcodes || customDialogList.getValueTwo() == myGroupList[position].itemFk.toString()) { customDialogList.dismiss() showQuestionUbicationEmpty(position, quantityToReserve) } else { @@ -797,27 +827,34 @@ class CollectionFragmentPickerNew( ma.hideKeyboard(customDialogList.getEditTextTwo()) getString(R.string.quantityHigh).toast(requireContext()) } - if (quantityToReserve == totalReserved) { - originalItemScan = customDialogList.getValueTwo().toLong() - if (checkItemScan(customDialogList.getValueTwo())) { + try { + if (checkItemScan(customDialogList.getValueTwo(), position)) { - onQuantityOfShelvingSelected( - quantityToReserve - ) + markLine(position, quantityToReserve, false) - mpok?.start() - ma.hideKeyboard(customDialogList.getEditTextTwo()) - customDialogList.dismiss() - scanRequest() + mpok?.start() + ma.hideKeyboard(customDialogList.getEditTextTwo()) + customDialogList.dismiss() + requireContext().showToastCenterWithBackground( + if (type == PREITEMPICKERTEST) "(" + myGroupList[position].ticketOrder + ")" + myGroupList[position].ticketFk.toString() else { + myGroupList[position].ticketFk.toString() + } + ) + scanRequest() - } else { - itemShelvingFkStored = itemShelvingFk - viewModel.getIdFromCodeSalix( - code = customDialogList.getValueTwo(), - ) - customDialogList.dismiss() + } else { + + quantityReserveToCheckItemScan = quantityToReserve + viewModel.getIdFromCodeSalix( + code = customDialogList.getValueTwo(), + ) + customDialogList.dismiss() + } + } catch (ex: Exception) { + getString(R.string.errorInput).toast(requireContext()) } + } } else { @@ -825,34 +862,30 @@ class CollectionFragmentPickerNew( } } - private fun checkItemScan(valueToCheck: String): Boolean { - if (storedPosition >= 0 && sales.size > storedPosition) { - val saleToCheck = myGroupList[storedPosition] - if (saleToCheck.itemFk.toString() == valueToCheck) return true - else { - saleToCheck.Barcodes.forEach { barcode -> - if (barcode == valueToCheck) return true - } + private fun checkItemScan(valueToCheck: String, position: Int): Boolean { + println("CheckItemScan $valueToCheck") + val saleToCheck = myGroupList[position] + println("CheckItemScan saleTocheck$saleToCheck") + println("CheckItemScan saleTocheck Item ${saleToCheck.itemFk}") + println("CheckItemScan saleTocheck ItemBarcodes ${saleToCheck.Barcodes}") + if (saleToCheck.itemFk.toString() == valueToCheck) return true + else { + saleToCheck.Barcodes.forEach { barcode -> + if (barcode == valueToCheck) return true } } + return false } - //Tarea #4371 - private fun onQuantityOfShelvingSelected(quantity: Int = 0) { - markLine(storedPosition, quantity, null) - - } - private fun showQuestionUbicationEmpty(position: Int, quantity: Int = 0) { - customDialogThreeButtonsQuantity.setTitle( getString( - R.string.changeQuantity, quantity, sales[position].itemFk + R.string.changeQuantity, quantity, myGroupList[position].itemFk ) - ).setDescription(getString(R.string.questionItemShelving, sales[position].itemFk)) - .setValue("").setValue("").setCustomDialogValue(View.GONE) - customDialogThreeButtonsQuantity.setOkButtonAdd(getString(R.string.yes)) { + ).setDescription(getString(R.string.questionItemShelving, myGroupList[position].itemFk)) + .setValue("").setCustomDialogValue(View.GONE) + customDialogThreeButtonsQuantity.setOkButtonAdd(text = getString(R.string.yes)) { scanRequest() customDialogThreeButtonsQuantity.dismiss() getString(R.string.errorQuantityShelving).toast(requireContext()) @@ -860,8 +893,27 @@ class CollectionFragmentPickerNew( showQuestionUbicationEmpty(position, quantity) }.setOkButtonTwo(getString(R.string.no)) { scanRequest() - customDialogThreeButtonsQuantity.dismiss() - markLine(position, quantity, true) + customDialogThreeButtonsQuantity.dismiss()/* viewModel.itemShelvingSaleExists( + myGroupList[position].itemShelvingSaleFk, + myGroupList[position].itemShelvingFk, + position, + quantity + )*/ + markLine(position, quantity, true)/* if (quantity == 0) { + + /* viewModel.itemShelvingGet( + myGroupList[position].itemShelvingFk, + position = position, + quantity = quantity + )*/ + } else { + //markLine(position, quantity, true) + viewModel.itemShelvingGet( + myGroupList[position].itemShelvingFk, + position = position, + quantity = quantity + ) + }*/ }.setKoButton(getString(R.string.cancel)) { scanRequest() customDialogThreeButtonsQuantity.dismiss() @@ -869,25 +921,6 @@ class CollectionFragmentPickerNew( customDialogThreeButtons.setFocusDialogValue() } - //OPTIONS - private fun print() { - - if (ma.havePrinter() && ma.haveSector()) { - showDialogLabelCount() - - } else { - ma.messageWithSound( - getString(R.string.printerFault), - isError = true, - true, - getString(R.string.printError), - false - ) - - } - - } - private fun addItem() { listPlacementSupply = ArrayList() collection.tickets.forEach { @@ -903,13 +936,13 @@ class CollectionFragmentPickerNew( .setOkButton(getString(R.string.Agregar)) { customDialogAddItem() }.setKoButton(getString(R.string.close)) { - scanRequest() customDialogList.dismiss() + scanRequest() + hideKeyboardFragment() }.setHintValue(getString(R.string.Artículo)).setValue("") .setHintValueTwo(getString(R.string.Cantidad)).setValueTwo("").show() customDialogList.getEditText().requestFocus() - requireActivity().hideKeyboard() - + hideKeyboardFragment() customDialogList.getEditText().setOnEditorActionListener { v, actionId, event -> if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) { if (customDialogList.getValue().isNotEmpty()) { @@ -921,7 +954,7 @@ class CollectionFragmentPickerNew( ) } catch (e: Exception) { - ma.messageWithSound(e.message.toString(), isError = true, isPlayed = true) + ma.messageWithSound(e.message.toString(), isError = true, true) } customDialogList.getEditTextTwo().requestFocus() } @@ -933,7 +966,6 @@ class CollectionFragmentPickerNew( } - customDialogList.getEditTextTwo().setOnEditorActionListener { v, actionId, event -> if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) { customDialogAddItem() @@ -974,13 +1006,18 @@ class CollectionFragmentPickerNew( customDialogList.getValue().toInt(), customDialogList.getValueTwo().toInt(), ticketSelected, - saleGroupFk = null, - sectorFk = null + 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 + ) ) customDialogList.dismiss() - hideKeyboards() - scanRequest() + customDialogList.cancel() + binding.scanInput.requestFocus() + hideKeyboardFragment() } } else { getString(R.string.scanItem).toast(requireContext()) @@ -988,6 +1025,52 @@ class CollectionFragmentPickerNew( } + private fun customDialogAddItemFromSale(sale: Sale) { + + customDialogThreeButtonsQuantity.setTitle( + "${getString(R.string.ticket)}${sale.ticketFk}" + ).setDescription( + getString( + R.string.addItemQuantity, sale.itemFk + ) + ) + customDialogThreeButtonsQuantity.setCustomDialogValue(VISIBLE) + 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() + customDialogThreeButtonsQuantity.getEditText().requestFocus() + } + + private fun hideKeyboardFragment() { + Handler(Looper.getMainLooper()).postDelayed({ + val inputMethodManager = + requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + inputMethodManager.hideSoftInputFromWindow(binding.scanInput.windowToken, 0) + }, 300L) + } + private fun toastDisponibility(item: ItemVO) { if (item.available.isEmpty()) { item.available = "0" @@ -1002,39 +1085,48 @@ class CollectionFragmentPickerNew( } private fun setTotalLines() { - - var totalMark = 0 - sales.forEach { - if (it.isPicked == 1) { - totalMark += 1 - } - - } - + val totalMark = myGroupList.count { it.isPicked == 1 } binding.mainToolbar.toolbarTitle.text = if (collection.collectionFk != 0) collection.collectionFk.toString() else "" - - var total = sales.size - val totalParents = sales.filter { it.isParent }.size - total -= totalParents - binding.mainToolbar.toolbarSubtitle.text = - getString(R.string.totalsPicker, totalMark, total) - - if (totalMark == sales.size) { + getString(R.string.totalsPicker, totalMark, myGroupList.size) + if (totalMark == myGroupList.size) { getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT) - saleAdapter!!.notifyDataSetChanged() - changeTicketState() + when (type) { + PREPARED -> { + tickets.forEach { + viewModel.ticketStateTodaySetState( + ticketFk = it.toInt(), state = "PREPARED" + ) + } + //setStateSaleGroup() + } + PREITEMPICKERTEST -> { + viewModel.saleTrackingAddPrevOK(collection.collectionFk) + //viewModel.saleTrackingSectorCollectionAddPrevOK(collection.collectionFk) + val distinctSaleGroups = mutableSetOf() + myGroupList.forEach { sale -> + sale.saleGroupFk?.let { + distinctSaleGroups.add(it) + } ?: run { + println("No hay salegroup") + } + } + if (distinctSaleGroups.isNotEmpty()) + distinctSaleGroups.forEach { saleGroup -> + setStateSaleGroup(saleGroup, stateCodeId!!) + } + } + + } } } - //ESTADOS - private fun changeTicketState() { - viewModel.collection_setState(collectionFk = collection.collectionFk, "PREPARED") + private fun setStateSaleGroup(saleGroup: Number, stateCode: Number) { + viewModel.saleGroupUpdateState(saleGroup, stateCode) } - //OTROS private fun showScanner(index: Int, sale: Sale) { customDialogInput.getEditText().inputType = InputType.TYPE_CLASS_TEXT customDialogInput.setTitle("" + sale.itemFk) @@ -1068,7 +1160,6 @@ class CollectionFragmentPickerNew( scanInput.requestFocus() customDialogInput.dismiss() scanInput.requestFocus() - } private fun showErrorMessage(title: String = getString(R.string.errorMarkLine), text: String) { @@ -1077,36 +1168,6 @@ class CollectionFragmentPickerNew( }.show() } - private fun showDialogLabelCount() { - var isTicket = false - for (t in collection.tickets) { - if (t.ticketFk == (collection.collectionFk)) { - isTicket = true - } - } - if (isTicket) { - val labelDialogHelper = LabelDialogHelper(requireContext()) - labelDialogHelper.showLabelDialog( - onItemSelected = { labelCount -> - viewModel.collectionStickerPrint( - collectionFk = collection.collectionFk, - labelCount = labelCount - ) - - (getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey( - PRINTERNAME - )).toast(requireContext()) - } - ) - } else { - viewModel.collectionStickerPrint( - collectionFk = collection.collectionFk, null - ) - - } - - } - private fun groupSaleGroup(salesList: ArrayList): MutableList { val myMap = salesList.groupBy { it.saleGroupFk } val myList: MutableList = mutableListOf() @@ -1118,11 +1179,13 @@ class CollectionFragmentPickerNew( } } else { // si tiene saleGroup se crea el padre con el tamaño e indicando que es padre, como ejemplo se toma el primer elemento /*crea padre*/ - if (value.size > 1) { + + println("saleGroup $key lineas ${value.size}") + if (value.size >= 1) { val mySale = //= value[0] Sale( level = value[0].level, - isPicked = value[0].isPicked, + isPicked = value[0].isPicked,//isPicked va por saleGroup i parkingCode = getString(R.string.linesSaelGroup, value.size), pickingOrder = value[0].pickingOrder, workerFk = value[0].workerFk, @@ -1138,8 +1201,12 @@ class CollectionFragmentPickerNew( origin = value[0].origin, size = value[0].size, itemShelvingSaleFk = value[0].itemShelvingSaleFk, - longName = value[0].parkingCode ?: "", - itemShelvingFk = 0 + longName = value[0].parkingCodePrevia ?: "", + itemShelvingFk = 0, + ticketOrder = value[0].ticketOrder ?: null, + parkingCodePrevia = value[0].parkingCodePrevia, + stateCode = value[0].stateCode, + username = value[0].username ) //prime elemento//hay que hacer una copia si no queda la referencia @@ -1163,6 +1230,108 @@ class CollectionFragmentPickerNew( return myList } -} + /* FUNCIONES PROPIAS DE LOS SACADORES */ + private fun verifyCollection() { + + customDialogList.setTitle( + getString(R.string.verifyCollection) + ) + customDialogList.setDescription( + + getString(R.string.scanTicketsVerifyCollection, collection.collectionFk) + ).setKoButton(getString(R.string.cancel)) { + ma.hideKeyboard(customDialogList.getEditText()) + customDialogList.dismiss() + ma.onMyBackPressed() + }.setValue("").setOkButton(getString(R.string.print)) { + print() + }.show() + + customDialogList.getEditText().requestFocus() + ma.hideKeyboard(customDialogList.getEditText()) + + customDialogList.getEditText().setOnEditorActionListener { v, actionId, event -> + if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) { + if (customDialogList.getValue().isNotEmpty()) { + try { + customDialogList.setValue( + itemScanValue( + customDialogList.getValue(), arrayOf("ticket", "saleGroup"), "id" + ).toString() + ) + + val foundTicketInCollection = collection.tickets.find { + it.ticketFk == customDialogList.getValue().toInt() + } + if (foundTicketInCollection != null) { + isVerifiedCollection = true + ma.hideKeyboard(customDialogList.getEditText()) + binding.fragmentSacadorCollections.visibility = VISIBLE + customDialogList.dismiss() + binding.scanInput.requestFocus() + } else { + + throw Exception(getString(R.string.ticketErrorCollection)) + } + + } catch (ex: Exception) { + ma.messageWithSound( + ex.message.toString(), isError = true, isPlayed = true, isToasted = true + ) + } + + } + customDialogList.setValue("") + ma.hideKeyboard(customDialogList.getEditText()) + return@setOnEditorActionListener true + } + false + } + customDialogList.getRecyclerView().layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) + + } + + private fun print() { + if (ma.havePrinter() && ma.haveSector()) { + showDialogLabelCount() + } else { + ma.messageWithSound( + getString(R.string.printerFault), + isError = true, + true, + getString(R.string.printError), + false + ) + + } + + } + + private fun showDialogLabelCount() { + var isTicket = false + for (t in collection.tickets) { + if (t.ticketFk == (collection.collectionFk)) { + isTicket = true + } + } + if (isTicket) { + val labelDialogHelper = LabelDialogHelper(requireContext()) + labelDialogHelper.showLabelDialog(onItemSelected = { labelCount -> + viewModel.collectionStickerPrint( + collectionFk = collection.collectionFk, labelCount = labelCount + ) + (getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey( + PRINTERNAME + )).toast(requireContext()) + }) + } else { + viewModel.collectionStickerPrint( + collectionFk = collection.collectionFk, null + ) + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt index 22670e40..b6c3ca69 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.map import com.google.gson.JsonObject import es.verdnatura.MobileApplication +import es.verdnatura.R import es.verdnatura.domain.SalixCallback import es.verdnatura.domain.formatWithQuotes import es.verdnatura.domain.toast @@ -24,10 +25,12 @@ import es.verdnatura.presentation.view.feature.collection.SalixSaleQuantity import es.verdnatura.presentation.view.feature.collection.mapper.map import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO +import es.verdnatura.presentation.view.feature.sacador.model.ItemShelvingSale import es.verdnatura.presentation.view.feature.sacador.model.MistakeTypeListVO import es.verdnatura.presentation.view.feature.sacador.model.MistakeTypeVO import es.verdnatura.presentation.view.feature.sacador.model.PlacementSupplyListVO import es.verdnatura.presentation.view.feature.sacador.model.PlacementSupplyVO +import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador import es.verdnatura.presentation.view.feature.workermistake.model.SaleMistakeSalix import es.verdnatura.presentation.view.feature.workermistake.model.SaleTrackingDelSalix import retrofit2.Response @@ -192,6 +195,11 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) { val responseStateId: LiveData = _responseStateId val loadResponseStateId: LiveData> = _responseStateId.map { Event(it) } + private val _responseStatePreparedId by lazy { MutableLiveData() } + val responseStatePreparedId: LiveData = _responseStatePreparedId + val loadResponseStatePreparedId: LiveData> = + _responseStatePreparedId.map { Event(it) } + private val _mistakeList by lazy { MutableLiveData() } val mistakeList: LiveData get() = _mistakeList @@ -347,6 +355,54 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) { }) } + fun itemShelvingSaleBySale( + saleFk: Number, quantityDiff: Int + + ) { + salix.itemShelvingSaleTotalBySale( + filter = """{"where":{"saleFk":$saleFk},"limit":2}""" + ).enqueue(object : SalixCallback>(context) { + + override fun onSuccess(response: Response>) { + + if (!response.body().isNullOrEmpty()) { + if (response.body()!!.size == 1) { + val itemList = response.body() + val itemShelvingFk = itemList?.firstOrNull()?.itemShelvingFk + salix.itemShelvingGet( + id = itemShelvingFk!! + ).enqueue(object : SalixCallback(context) { + + override fun onSuccess(response: Response) { + + if (response.body() != null) { + val visible = response.body()!!.visible!!.toInt() + val differenceVisible = (visible + quantityDiff) + val available = response.body()!!.available!!.toInt() + val differenceAvailable = (available + quantityDiff) + + val updateParams = mapOf( + "visible" to (differenceVisible), + "available" to (differenceAvailable) + ) + + salix.itemShelvingUpdate( + id = itemShelvingFk, params = updateParams + ).enqueue(object : SalixCallback(context) { + + }) + + } + } + + }) + + } + } + } + }) + } + fun itemShelvingGet( itemShelvingFk: Number, position: Int, quantity: Int @@ -502,6 +558,10 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) { _responseCollectionAddItem.value = true } + override fun onError(t: Throwable) { + + super.onError(Throwable(context.getString(R.string.errorAddItemReserva))) + } }) } @@ -519,6 +579,20 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) { }) } + fun getStatePreparedId(stateCode: String) { + + salix.getStateId( + filter = """{"where":{"code":"$stateCode"}, "fields":["id"]}""".trimMargin() + ).enqueue(object : SalixCallback(context) { + override fun onSuccess(response: Response) { + _responseStatePreparedId.value = + response.body()?.get("id").toString().toInt() + + } + + }) + } + fun setStateSaleGroup( saleGroups: List, stateCode: Int ) { diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt index 64b114c2..dc1860bd 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt @@ -68,7 +68,8 @@ import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFra import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentChecker import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentCheckerPreviousNew import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentPicker -import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentPickerPreviousNew +import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentPickerPreviousNewInterface +import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentPickerPreviousNewInterfaceSacador import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentPreChecker import es.verdnatura.presentation.view.feature.collection.fragment.CollectionShowTicketFragment import es.verdnatura.presentation.view.feature.controlvehiculo.fragment.ControlVehiculoFragment @@ -781,7 +782,11 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL addFragmentOnTop(PackingMistakeFragment.newInstance(itemTitle)) } - getString(R.string.titlePrePickerTest) -> { + /* getString(R.string.titlePrePickerTest) -> { + addFragmentOnTop(SacadorFragmentNew.newInstance("PREITEMPICKERTEST")) + }*/ + + getString(R.string.preSacadorInterfaz) -> { addFragmentOnTop(SacadorFragmentNew.newInstance("PREITEMPICKERTEST")) } @@ -952,13 +957,15 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL } "PREITEMPICKERTEST" -> { + addFragmentOnTop( - CollectionFragmentPickerPreviousNew.newInstance( + CollectionFragmentPickerPreviousNewInterface.newInstance( CollectionTicket(collectionFk = entryPoint.toInt()), "PREITEMPICKERTEST", false ) ) + } } @@ -1066,15 +1073,11 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL //Misma pantalla para los dos scador y prescador SACADOR -> { addFragmentOnTop( - CollectionFragmentPickerPreviousNew.newInstance( + CollectionFragmentPickerPreviousNewInterfaceSacador.newInstance( collection, type, hasPicking ) ) - /* addFragmentOnTop( - CollectionFragmentPickerNew.newInstance( - collection, type, hasPicking - ) - )*/ + } } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt index 4ca8bf67..f2284b16 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt @@ -282,12 +282,22 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) { ) //sacador if (isOnReservationModeSector == true || (!existSectorOnReservationMode && isOnReservationMode)) { + _pasillerositem.add( PasillerosItemVO( R.drawable.ic_picker_ui, R.string.sacador_test, R.string.sacador_test ) ) + + //a quitar + _pasillerositem.add( + PasillerosItemVO( + R.drawable.ic_picker_ui, R.string.titlePickers, R.string.titlePickersDescrip + + ) + ) } else { + _pasillerositem.add( PasillerosItemVO( R.drawable.ic_picker_ui, R.string.titlePickers, R.string.titlePickersDescrip @@ -418,21 +428,25 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) { workerActivityAdd(CodeWorkerAction.PREVIOUS) if (isOnReservationModeSector == true || (!existSectorOnReservationMode && isOnReservationMode)) { + _pasillerositem.add( PasillerosItemVO( R.drawable.ic_previous_presacador, - R.string.titlePrePickerTest, - R.string.titlePickerDescrip + R.string.preSacadorInterfaz, + R.string.preSacadorInterfaz ) ) + } else { + _pasillerositem.add( PasillerosItemVO( R.drawable.ic_previous_presacador, R.string.titlePrePicker, - R.string.titlePickerDescrip + R.string.titlePrePicker ) ) + } diff --git a/app/src/main/res/layout/fragment_collection_new.xml b/app/src/main/res/layout/fragment_collection_new.xml index 8d23b62d..6a58886d 100644 --- a/app/src/main/res/layout/fragment_collection_new.xml +++ b/app/src/main/res/layout/fragment_collection_new.xml @@ -1,17 +1,14 @@ - - - + android:background="@color/verdnatura_black"> + app:layout_constraintTop_toTopOf="@+id/main_toolbar" /> + app:srcCompat="@drawable/ic_streetview_black_24dp" /> - + android:id="@+id/fragment_sacador_collections" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="8dp" + tools:listitem="@layout/sale_row_fragment_reserve_sacador" /> diff --git a/app/src/main/res/layout/sale_row_fragment.xml b/app/src/main/res/layout/sale_row_fragment.xml index c42f4b77..d29703c6 100644 --- a/app/src/main/res/layout/sale_row_fragment.xml +++ b/app/src/main/res/layout/sale_row_fragment.xml @@ -72,7 +72,7 @@ android:layout_height="wrap_content" android:text="@{Integer.toString(sale.ticketFk)}" android:textColor="@color/verdnatura_black" - android:textSize="@dimen/h7" + android:textSize="@dimen/h9" android:textStyle="bold" tool:text="123456789" diff --git a/app/src/main/res/layout/sale_row_fragment_reserve.xml b/app/src/main/res/layout/sale_row_fragment_reserve.xml new file mode 100644 index 00000000..8cd4c51c --- /dev/null +++ b/app/src/main/res/layout/sale_row_fragment_reserve.xml @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/sale_row_fragment_reserve_sacador.xml b/app/src/main/res/layout/sale_row_fragment_reserve_sacador.xml new file mode 100644 index 00000000..3215660b --- /dev/null +++ b/app/src/main/res/layout/sale_row_fragment_reserve_sacador.xml @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +