refs #6574 feat:modify screen

This commit is contained in:
Sergio De la torre 2024-04-10 07:54:09 +02:00
parent 3cae4565da
commit 3b7b0291db
5 changed files with 168 additions and 31 deletions

View File

@ -6,12 +6,14 @@ import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.databinding.ItemHistoricoRowBinding import es.verdnatura.databinding.ItemHistoricoRowBinding
import es.verdnatura.presentation.common.OnClientHistoricItemClickListener
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
class HistoricoAdapter( class HistoricoAdapter(
private val items: List<ItemHistoricoVO> private val items: List<ItemHistoricoVO>,
private val onClientHistoricItemClickListener: OnClientHistoricItemClickListener
) : RecyclerView.Adapter<HistoricoAdapter.ItemHolder>() { ) : RecyclerView.Adapter<HistoricoAdapter.ItemHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
@ -47,14 +49,83 @@ class HistoricoAdapter(
) )
) )
val color = if (item.invalue != null && item.invalue!! > 0) { val colorIn = if ((item.invalue ?: 0) > 0) {
R.color.verdnatura_dark_green_verdnatura R.color.verdnatura_dark_green_verdnatura
} else { } else {
R.color.verdnatura_black_5 R.color.verdnatura_black_5
} }
inQuantity.setBackgroundColor(ContextCompat.getColor(historicoDate.context, color)) inQuantity.setBackgroundColor(
ContextCompat.getColor(
historicoDate.context, colorIn
)
)
val colorOut = if ((item.out ?: 0) < 0) {
R.color.verdnatura_red_salix
} else {
R.color.verdnatura_black_5
}
outQuantity.setBackgroundColor(
ContextCompat.getColor(
historicoDate.context, colorOut
)
)
paintClientName(item.stateName, binding)
clientName.setOnClickListener {
onClientHistoricItemClickListener.onClientHistoricItemClickListener(item)
}
} }
} }
} }
private fun paintClientName(
stateName: String?,
binding: ItemHistoricoRowBinding,
) {
when (stateName!!.lowercase()) {
"preparado", "en preparación", "autoimpreso", "impreso" -> {
binding.clientName.setBackgroundColor(
ContextCompat.getColor(
binding.root.context, R.color.verdnatura_pumpkin_orange
)
)
}
"encajando", "encajado", "reparto", "en reparto", "entregado" -> {
binding.clientName.setBackgroundColor(
ContextCompat.getColor(
binding.root.context, R.color.verdnatura_red_salix
)
)
}
"revisado", "en revisión" -> {
binding.clientName.setBackgroundColor(
ContextCompat.getColor(
binding.root.context, R.color.verdnatura_dark_green_verdnatura
)
)
}
"previa", "previa revisado", "previa OK", "previa revisando", "previa impreso" -> {
binding.clientName.setBackgroundColor(
ContextCompat.getColor(
binding.root.context, R.color.verdnatura_pink_salix
)
)
}
else -> {
binding.clientName.setBackgroundColor(
ContextCompat.getColor(
binding.root.context, R.color.verdnatura_black_5
)
)
}
}
}
} }

View File

@ -1,13 +1,12 @@
package es.verdnatura.presentation.view.feature.historicoarticulo.fragment package es.verdnatura.presentation.view.feature.historicoarticulo.fragment
import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat.getColor import androidx.core.content.ContextCompat.getColor
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.google.gson.Gson
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.R.color.verdnatura_pumpkin_orange import es.verdnatura.R.color.verdnatura_pumpkin_orange
import es.verdnatura.R.color.verdnatura_white import es.verdnatura.R.color.verdnatura_white
@ -15,11 +14,15 @@ import es.verdnatura.databinding.FragmentHistoricoBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
import es.verdnatura.domain.notNull import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnClientHistoricItemClickListener
import es.verdnatura.presentation.common.OnOptionsSelectedListener import es.verdnatura.presentation.common.OnOptionsSelectedListener
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
import es.verdnatura.presentation.common.ToolBarAdapterTooltip import es.verdnatura.presentation.common.ToolBarAdapterTooltip
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.historicoarticulo.adapter.HistoricoAdapter import es.verdnatura.presentation.view.feature.historicoarticulo.adapter.HistoricoAdapter
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoListVO import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoListVO
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
@ -33,6 +36,8 @@ class HistoricoArticuloFragment(
private var listHistoric: ArrayList<ItemHistoricoVO> = ArrayList() private var listHistoric: ArrayList<ItemHistoricoVO> = ArrayList()
private var listHistoryAux: ArrayList<ItemHistoricoVO> = ArrayList() private var listHistoryAux: ArrayList<ItemHistoricoVO> = ArrayList()
private var filter: String = "" private var filter: String = ""
private var onpasillerosItemClickListener: OnPasillerosItemClickListener? = null
private lateinit var customDialog: CustomDialog
companion object { companion object {
fun newInstance(entryPoint: Int) = HistoricoArticuloFragment(entryPoint) fun newInstance(entryPoint: Int) = HistoricoArticuloFragment(entryPoint)
@ -49,12 +54,18 @@ class HistoricoArticuloFragment(
it, mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) it, mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
) )
} }
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemdiary) + ":" + itemFk binding.mainToolbar.toolbarTitle.text =
getString(R.string.itemDiarySelected, itemFk.toString())
setToolBar() setToolBar()
setEvents() setEvents()
super.init() super.init()
} }
override fun onAttach(context: Context) {
if (context is OnPasillerosItemClickListener) onpasillerosItemClickListener = context
super.onAttach(context)
}
private fun setToolBar() { private fun setToolBar() {
val listIcons: ArrayList<ImageView> = ArrayList() val listIcons: ArrayList<ImageView> = ArrayList()
@ -65,11 +76,9 @@ class HistoricoArticuloFragment(
val iconFault = ImageView(context) val iconFault = ImageView(context)
iconFault.setImageResource(R.drawable.alpha_f_circle_outline) iconFault.setImageResource(R.drawable.alpha_f_circle_outline)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { iconReload.tooltipText = getTooltip(R.drawable.ic_info_refresh)
iconReload.tooltipText = getTooltip(R.drawable.ic_info_refresh) iconGargabe.tooltipText = getTooltip(R.drawable.alpha_b_circle_outline)
iconGargabe.tooltipText = getTooltip(R.drawable.alpha_b_circle_outline) iconFault.tooltipText = getTooltip(R.drawable.alpha_f_circle_outline)
iconFault.tooltipText = getTooltip(R.drawable.alpha_f_circle_outline)
}
listIcons.add(iconGargabe) listIcons.add(iconGargabe)
listIcons.add(iconFault) listIcons.add(iconFault)
@ -122,9 +131,9 @@ class HistoricoArticuloFragment(
} }
binding.filterNameordateitem.setOnKeyListener { v, keyCode, event -> binding.filterNameordateitem.setOnKeyListener { v, keyCode, event ->
if (binding.filterNameordateitem.text.toString().isNullOrEmpty()) { if (binding.filterNameordateitem.text.toString().isEmpty()) {
if (listHistoric.size != listHistoryAux.size) { if (listHistoric.size != listHistoryAux.size) {
listHistoric.removeAll(listHistoryAux) listHistoric.removeAll(listHistoryAux.toSet())
listHistoryAux.forEach { listHistoryAux.forEach {
listHistoric.add(it) listHistoric.add(it)
} }
@ -132,7 +141,7 @@ class HistoricoArticuloFragment(
} }
} else { } else {
listHistoric.removeAll(listHistoryAux) listHistoric.removeAll(listHistoryAux.toSet())
listHistoryAux.forEach { listHistoryAux.forEach {
if (it.name?.contains( if (it.name?.contains(
@ -147,38 +156,89 @@ class HistoricoArticuloFragment(
} }
adapter!!.notifyDataSetChanged() adapter!!.notifyDataSetChanged()
return@setOnKeyListener false return@setOnKeyListener false
} }
} }
@RequiresApi(Build.VERSION_CODES.O)
override fun observeViewModel() { override fun observeViewModel() {
with(viewModel) { with(viewModel) {
loadHistoricoList.observe(viewLifecycleOwner, Observer { event -> loadHistoricoList.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
listToAdapter(it.list, filter) listToAdapter(it.list, filter)
navigateToToday(it) navigateToToday(it)
} }
}) }
} }
} }
@RequiresApi(Build.VERSION_CODES.O)
private fun listToAdapter(lista: List<ItemHistoricoVO>, filter: String) { private fun listToAdapter(lista: List<ItemHistoricoVO>, filter: String) {
listHistoric.clear() listHistoric.clear()
listHistoryAux.clear() listHistoryAux.clear()
lista.forEach { lista.forEach {
if (filter == "all" || (filter == "falta" && it.name?.contains(filter, true) == true) || (filter != "falta" && it.name?.contains("merma", true) == true && !it.name?.contains("falta", true)!!)) { if (filter == "all" || (filter == "falta" && it.name?.contains(
filter,
true
) == true) || (filter != "falta" && it.name?.contains(
"merma",
true
) == true && !it.name?.contains("falta", true)!!)
) {
listHistoric.add(it) listHistoric.add(it)
} }
} }
listHistoric.sortWith { item1, item2 ->
val compareShipped = item1.shipped.compareTo(item2.shipped)
if (compareShipped == 0) {
if (item1.order == null) {
-1
} else if (item2.order == null) {
1
} else {
item2.order!!.compareTo(item1.order!!) // Invertir el orden
}
} else {
compareShipped
}
}
adapter = HistoricoAdapter(listHistoric, object : OnClientHistoricItemClickListener {
adapter = HistoricoAdapter(listHistoric) override fun onClientHistoricItemClickListener(item: ItemHistoricoVO) {
if (item.isTicket == 1) {
ma.onPasillerosItemClickListener(
PasillerosItemVO(
title = getString(R.string.titleWebViewer),
), entryPoint = Gson().toJson(
mutableMapOf(
"entryPoint" to item.origin,
"web" to "${
mobileApplication.dataStoreApp.getServerSalix()
}/#!/ticket/${item.origin}/summary"
)
)
)
} else {
customDialog = CustomDialog(requireContext())
customDialog
.setTitle(getString(R.string.entry))
.setDescription(item.origin.toString())
.setOkButton(
getString(
R.string.accept
)
) {
customDialog.dismiss()
}
.show()
}
}
})
binding.historicoRecyclerview.adapter = adapter binding.historicoRecyclerview.adapter = adapter
binding.historicoRecyclerview.layoutManager = binding.historicoRecyclerview.layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
@ -187,7 +247,6 @@ class HistoricoArticuloFragment(
} }
@RequiresApi(Build.VERSION_CODES.O)
private fun navigateToToday(it: ItemHistoricoListVO) { private fun navigateToToday(it: ItemHistoricoListVO) {
var positionToday = 0 var positionToday = 0
val sdf = SimpleDateFormat(getString(R.string.dateFormat)) val sdf = SimpleDateFormat(getString(R.string.dateFormat))

View File

@ -14,6 +14,8 @@ class ItemHistoricoVO(
var invalue: Int? = null, var invalue: Int? = null,
var out: Int? = null, var out: Int? = null,
var balance: Int? = null, var balance: Int? = null,
var isTicket: Int? = 0,
var order: Int? = 0,
var isError: Boolean = false, var isError: Boolean = false,
var errorMessage: String = "" var errorMessage: String = ""
) { ) {

View File

@ -47,23 +47,24 @@
android:layout_marginBottom="@dimen/layout_margin_1" android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min" android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min"> android:paddingEnd="@dimen/layout_margin_min"
>
<TextView <TextView
android:layout_width="match_parent" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:gravity="start"
android:gravity="center"
android:text="@string/Fecha" android:text="@string/Fecha"
android:textColor="@color/verdnatura_white" android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" /> android:textSize="@dimen/body2"
/>
<TextView <TextView
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:text="@string/Cliente" android:text="@string/Cliente"
android:layout_marginStart="@dimen/layout_margin_min"
android:textColor="@color/verdnatura_white" android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" /> android:textSize="@dimen/body2" />
@ -72,8 +73,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:text="@string/Entrada" android:text="@string/entry"
android:textColor="@color/verdnatura_white" android:textColor="@color/verdnatura_white"
android:layout_marginStart="@dimen/layout_margin_1"
android:textSize="@dimen/body2" /> android:textSize="@dimen/body2" />
<TextView <TextView

View File

@ -35,6 +35,7 @@
android:textSize="@dimen/body2" /> android:textSize="@dimen/body2" />
<TextView <TextView
android:id="@+id/clientName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
@ -50,10 +51,12 @@
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:text="@{String.valueOf(item.invalue)}" android:text="@{String.valueOf(item.invalue)}"
android:layout_marginStart="@dimen/layout_margin_min"
android:textColor="@color/verdnatura_white" android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" /> android:textSize="@dimen/body2" />
<TextView <TextView
android:id="@+id/outQuantity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"