diff --git a/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt b/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt index abb15a4b..55348666 100644 --- a/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt +++ b/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt @@ -863,4 +863,8 @@ interface VerdnaturaService { @Body vararg params: Any ): Call> + @POST("/delivery/route_getExpeditionSummary") + fun route_getExpeditionSummary( + @Body vararg params: Any + ): Call> } \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt index 3951014d..f7db6cd3 100644 --- a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt +++ b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt @@ -6,6 +6,7 @@ import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO import es.verdnatura.presentation.view.feature.articulo.model.ItemCardRowVO import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO +import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO import es.verdnatura.presentation.view.feature.login.model.WorkForms import es.verdnatura.presentation.view.feature.packaging.model.ItemSupplier @@ -46,6 +47,14 @@ interface OnAjustesItemClickListener { interface OnItemCardRowClickListener { fun onItemCardRowClickListener(item: ItemCardRowVO) } + +interface OnItemImageLoadRowClickListener { + fun onItemImageLoadRowClickListener(item: ExpeditionInfoSummary) +} +interface OnAddressRowClickListener { + fun onAddressRowClickListener(item: ExpeditionInfoSummary) +} + /*interface OnItemExpeditionStateRowClickListener { fun OnItemExpeditionStateRowClickListener(item: ItemExpeditionStateRow) }*/ diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/ExpeditionSummaryAdapter.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/ExpeditionSummaryAdapter.kt new file mode 100644 index 00000000..fda00573 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/ExpeditionSummaryAdapter.kt @@ -0,0 +1,80 @@ +package es.verdnatura.presentation.view.feature.delivery.adapters + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import es.verdnatura.R +import es.verdnatura.databinding.ItemExpeditionSummaryRowBinding +import es.verdnatura.presentation.common.OnAddressRowClickListener +import es.verdnatura.presentation.common.OnItemCardRowClickListener +import es.verdnatura.presentation.common.OnItemImageLoadRowClickListener +import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary + + + +class ExpeditionSummaryAdapter( + private val items: List, + private val onAddressRowClickListener: OnAddressRowClickListener, + private val onItemImageLoadRowClickListener: OnItemImageLoadRowClickListener +) : RecyclerView.Adapter() { + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder { + return ItemHolder( + ItemExpeditionSummaryRowBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + ) + } + + override fun getItemCount() = items.size + + override fun onBindViewHolder(holder: ItemHolder, position: Int) { + holder.bind(items[position]) + + holder.binding.root.setOnClickListener { + onAddressRowClickListener.onAddressRowClickListener(items[position]) + } + + } + + inner class ItemHolder( + val binding: ItemExpeditionSummaryRowBinding + ) : RecyclerView.ViewHolder(binding.root) { + private val res = binding.root.context.resources + fun bind(item: ExpeditionInfoSummary) { + binding.apply { + + if (item.delivery != item.total || item.delivered == item.total) + + { + fondo.setBackgroundColor( + res.getColor(R.color.verdnatura_pumpkin_light) + ) + }else{ + res.getColor(R.color.verdnatura_black) + } + + + /* if (item.lost == item.total || (item.lost!! > 0 && item.lost == item.total)) + { + fondo.setBackgroundColor( + res.getColor(R.color.verdnatura_pumpkin_orange) + ) + } + if (item.delivered != null && item.delivered == item.total + ) { + fondo.setBackgroundColor( + res.getColor(R.color.verdnatura_black) + ) + }*/ + showExp.setOnClickListener { + onItemImageLoadRowClickListener.onItemImageLoadRowClickListener(item) + } + this.item = item + } + } + } +} diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt new file mode 100644 index 00000000..0e6d3c29 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt @@ -0,0 +1,438 @@ +package es.verdnatura.presentation.view.feature.delivery.fragments + +import android.content.Intent +import android.content.pm.PackageInfo +import android.content.pm.PackageManager +import android.graphics.drawable.Drawable +import android.os.Build +import android.view.View +import android.view.inputmethod.EditorInfo +import android.widget.ImageView +import android.widget.Toast +import androidx.activity.OnBackPressedCallback +import androidx.annotation.RequiresApi +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.gson.Gson +import es.verdnatura.R +import es.verdnatura.databinding.FragmentExpeditionSummaryBinding +import es.verdnatura.domain.toast +import es.verdnatura.presentation.base.BaseFragment +import es.verdnatura.presentation.common.* +import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionSummaryAdapter +import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload +import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary +import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel +import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO + + +class SummaryFragment( + var title: String = "", + var state: String = "", + var route: Int = 0, +) : BaseFragment( + DeliveryViewModel::class +) { + + private var adapter: ExpeditionSummaryAdapter? = null + private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null + private var originalItem: Int = 0 + private lateinit var myList: MutableList + private lateinit var myListSummary: List + private var counterCalls = 0 + private var counterResponse = 0 + private var positionOnScreen = 0 + private var addressFkSelected = 0 + private var routeSelected = 161059 + private var isScanning = false + private var positionSelected = -1 + + + companion object { + fun newInstance(title: String, state: String) = SummaryFragment(title, state) + } + + override fun getLayoutId(): Int = R.layout.fragment_expedition_summary + + @RequiresApi(Build.VERSION_CODES.O) + override fun init() { + setEvents() + setToolBar() + binding.scanInput.requestFocus() + callBack(viewModel.route_getExpeditionSummary(routeSelected)) + setViews() + + super.init() + } + + fun onLoadSelected(view: View) { + println("Pulsado") + } + + private fun callBack(routeGetexpeditionsummary: Unit) { + binding.splashProgress.visibility = View.VISIBLE + routeGetexpeditionsummary + } + + private fun setViews() { + binding.expeditionSummaryRecyclerview.addOnScrollListener(object : + RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + positionOnScreen = + (recyclerView.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition() + super.onScrolled(recyclerView, dx, dy) + } + }) + } + + @RequiresApi(Build.VERSION_CODES.O) + private fun setToolBar() { + ma.hideBottomNavigation(View.GONE) + binding.mainToolbar.toolbarTitle.visibility = View.VISIBLE + binding.mainToolbar.toolbarSubtitle.visibility = View.VISIBLE + binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE + binding.mainToolbar.toolbarTitle.text = title + + val listIcons: ArrayList = ArrayList() + val iconLoad = ImageView(context) + val iconExit = ImageView(context) + + iconLoad.setImageResource(R.drawable.camion) + iconExit.setImageResource(R.drawable.exit) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + iconLoad.tooltipText = getTooltip(R.drawable.camion) + iconExit.tooltipText = getTooltip(R.drawable.exit) + } + listIcons.add(iconLoad) + listIcons.add(iconExit) + + binding.mainToolbar.toolbarIcons.adapter = + ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener { + + override fun onOptionsItemSelected(item: Drawable) { + + when (item) { + iconLoad.drawable -> { + openLoadUnLoad(0) + } + + iconExit.drawable -> { + ma.onBackPressed() + + } + } + } + }) + + binding.mainToolbar.toolbarIcons.layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) + binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE + } + + private fun openLoadUnLoad(adress:Int) { + + var entryPoint = Gson().toJson( + mutableMapOf( + "route" to routeSelected, + "address" to adress + ) + ) + + ma.onPasillerosItemClickListener( + PasillerosItemVO(title = getString(R.string.titleLoadTruck)), + entryPoint + ) + } + + private fun setExpeditionsState( + list: MutableList, + state: String, + address: Int + ) { + + + if (list.filter { it.addressFk == address } + .filter { it.code == state }.size == list.filter { it.addressFk == address }.size) { + binding.splashProgress.visibility = View.VISIBLE + callBack(viewModel.expeditionState_add(list.filter { it.addressFk == address } + .filter { it.code == state }, state)) + counterCalls = 1 + isScanning = false + } else { + + val alertDialog = android.app.AlertDialog.Builder(requireContext()).create() + alertDialog.setTitle("Información") + alertDialog.setMessage("El total de expediciones escaneadas es diferente al total de la ruta. ¿ Quieres guardar las expediciones escaneadas o buscar la/s expedición/es ?") + alertDialog.setButton( + android.app.AlertDialog.BUTTON_POSITIVE, "GUARDAR" + ) { dialog, which -> + counterCalls = 2 + binding.splashProgress.visibility = View.VISIBLE + + viewModel.expeditionState_add(list.filter { it.addressFk == address } + .filter { it.code == state }, state) + viewModel.expeditionState_add(list.filter { it.addressFk == address } + .filter { it.code != state }, "LOST") + } + alertDialog.setButton( + android.app.AlertDialog.BUTTON_NEUTRAL, "BUSCAR" + ) { dialog, which -> + //createList(list.sortedByDescending { it.code }) + } + alertDialog.show() + } + + + } + + private fun openAppDelivery() { + val i = Intent() + val manager: PackageManager = requireContext().packageManager + val info: PackageInfo = manager.getPackageInfo(requireContext().packageName, 0) + val version = info.versionName + + if (version.contains("Beta")) { + i.setClassName( + "verdnatura.es.repartoverdnatura.sfusion", + "verdnatura.es.repartoverdnatura.ExpeditionSummaryActivity" + ) + } else { + i.setClassName( + "verdnatura.es.repartoverdnatura", + "verdnatura.es.repartoverdnatura.ExpeditionSummaryActivity" + ) + } + // i.putExtra("routeId", binding.route.text) + i.putExtra("app", "picking") + startActivity(i) + } + + private fun setEvents() { + binding.mainToolbar.backButton.setOnClickListener { + requireActivity().onBackPressed() + /* val callback = object : OnBackPressedCallback(true /* enabled by default */) { + override fun handleOnBackPressed() { + println("volviendo antras") + } + } + + requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, callback)*/ + } + + binding.scanInput.setOnEditorActionListener { _, actionId, _ -> + if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) { + if (!binding.scanInput.text.isNullOrEmpty()) { + isScanning = true + try { + markExpedition( + binding.scanInput.text.toString().toInt(), + "ON DELIVERY" + ) + + } catch (ex: Exception) { + getString(R.string.errorExpedition).toast(context, Toast.LENGTH_SHORT) + } + binding.scanInput.setText("") + } + + return@setOnEditorActionListener true + } + false + } + + } + + private fun markExpedition(expedNumber: Int, state: String) { + + var found = false + if (myList.filter { it.addressFk == addressFkSelected }.filter { it.id == expedNumber } + .filter { it.code == state }.isNotEmpty()) { + ma.messageWithSound(getString(R.string.expeditionMarked), null, true) + } else { + for (exped in myList.filter { it.addressFk == addressFkSelected }) { + if (exped.id == expedNumber) { + found = true + exped.code = state + + break + } + } + if (found) { + ma.messageWithSound("", false, true, isToasted = false) + } else { + ma.messageWithSound("", true, true, isToasted = null) + } + } + + if (found) { + updateCount(myList, state) + } + + + } + + @RequiresApi(Build.VERSION_CODES.O) + override fun observeViewModel() { + with(viewModel) { + + expeditionInfoLoadUnloadList.observe(viewLifecycleOwner) { + binding.splashProgress.visibility = View.GONE + createList(it.list as MutableList) + } + + expeditionInfoSummary.observe(viewLifecycleOwner) { + binding.splashProgress.visibility = View.GONE + createListSummary(it.list) + } + + routeInfoList.observe(viewLifecycleOwner) { + binding.splashProgress.visibility = View.GONE + if (it.list.isNotEmpty()) { + binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE + binding.mainToolbar.switchButton.visibility = View.VISIBLE + } else { + binding.scanInput.setText("") + binding.mainToolbar.toolbarIcons.visibility = View.GONE + binding.mainToolbar.switchButton.visibility = View.GONE + } + } + responseStateAdd.observe(viewLifecycleOwner) { + binding.splashProgress.visibility = View.GONE + if (!it.isError) { + counterResponse = counterResponse + 1 + if (counterResponse == counterCalls) { + callBack(viewModel.route_getExpeditionSummary(routeSelected)) + counterResponse = 0 + counterCalls = 0 + checkNextAddress() + } + } + + } + + } + } + + private fun checkNextAddress() { + + if (myListSummary.size > positionSelected + 1) { + + val startIndex = positionSelected + + for ((indice, elemento) in myListSummary.withIndex()) { + if (indice >= startIndex) { + // Realiza las operaciones necesarias con el elemento + if (myList.filter { it.addressFk == elemento.addressFk } + .filter { it.code == state }.size != myList.filter { it.addressFk == elemento.addressFk }.size) { + addressFkSelected = myListSummary[indice].addressFk + positionSelected = indice + break + + } + } + } + + /* if (myList.filter { it.addressFk == addressFkSelected } + .filter { it.code == state }.size == myList.filter { it.addressFk == addressFkSelected }.size) { + */ + /*println("la posision del adress" + positionSelected) + println("el addressSelecttionado" + addressFkSelected) + println("el nuevo addressSelecttionado" + myListSummary[positionSelected + 1].addressFk)*/ + + + } else { + addressFkSelected = myListSummary[positionSelected].addressFk + + } + + + setTitleSummary() + } + + private fun createListSummary(list: List) { + + myListSummary = list + adapter = ExpeditionSummaryAdapter(list, object : OnAddressRowClickListener { + override fun onAddressRowClickListener(item: ExpeditionInfoSummary) { + + positionSelected = myListSummary.indexOf(item) + println("la pos es " + positionSelected) + binding.scanInput.isEnabled = true + binding.scanInput.requestFocus() + + if (addressFkSelected != item.addressFk && !isScanning) { + + callBack(viewModel.getExpeditionFromRoute(routeSelected)) + + } + if (addressFkSelected != item.addressFk && isScanning) { + //actualiza el estado de las expediciones escaneadas + setExpeditionsState(myList, state, addressFkSelected) + + } + addressFkSelected = item.addressFk + isScanning = false + callBack(viewModel.getExpeditionFromRoute(routeSelected)) + } + + }, object : OnItemImageLoadRowClickListener { + override fun onItemImageLoadRowClickListener(item: ExpeditionInfoSummary) { + openLoadUnLoad(item.addressFk) + } + } + ) + + binding.expeditionSummaryRecyclerview.adapter = adapter + binding.expeditionSummaryRecyclerview.layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) + adapter!!.notifyDataSetChanged() + + } + + + private fun createList(list: MutableList) { + + binding.mainToolbar.toolbarTitle.text = "R:" + routeSelected + " C:" + addressFkSelected + + " ${ + list.filter { it.addressFk == addressFkSelected } + .filter { it.code == "ON DELIVERY" }.size + }/${list.filter { it.addressFk == addressFkSelected }.size}" + myList = list + + } + + private fun setListPosition(list: MutableList) { + for (i in list.indices) { + if (list[i].code != state) { + binding.expeditionSummaryRecyclerview.scrollToPosition(i) + break + } + } + } + + + private fun updateCount(list: MutableList, state: String) { + val countMarked = + list.filter { it.addressFk == addressFkSelected }.filter { it.code == state }.size + // getString(R.string.summaryCount, countMarked, list.size) + + binding.mainToolbar.toolbarTitle.text = "R:${routeSelected} C:${addressFkSelected} ${ + countMarked + }/${list.filter { it.addressFk == addressFkSelected }.size}" + + if (countMarked == list.filter { it.addressFk == addressFkSelected }.size) { + setExpeditionsState(list, state, addressFkSelected) + } + + } + + private fun setTitleSummary() { + val countMarked = + myList.filter { it.addressFk == addressFkSelected }.filter { it.code == state }.size + + binding.mainToolbar.toolbarTitle.text = "R:${routeSelected} C:${addressFkSelected} ${ + countMarked + }/${myList.filter { it.addressFk == addressFkSelected }.size}" + } +} \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt index 194e42de..a7409e57 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt @@ -8,10 +8,7 @@ import es.verdnatura.domain.SilexCallback import es.verdnatura.presentation.base.BaseViewModel import es.verdnatura.presentation.common.ResponseItemVO import es.verdnatura.presentation.view.feature.delivery.model.* -import retrofit2.Call -import retrofit2.Callback import retrofit2.Response -import retrofit2.http.POST class DeliveryViewModel(val context: Context) : BaseViewModel(context) { @@ -21,6 +18,9 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) { private val _expeditionInfoLoadUnloadList by lazy { MutableLiveData() } val expeditionInfoLoadUnloadList: LiveData = _expeditionInfoLoadUnloadList + private val _expeditionInfoSummary by lazy { MutableLiveData() } + val expeditionInfoSummary: LiveData = _expeditionInfoSummary + private val _routeInfoList by lazy { MutableLiveData() } val routeInfoList: LiveData = _routeInfoList @@ -136,7 +136,7 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) { } - fun expeditionState_add(expeditions: Any?, state: String) { + fun expeditionState_add(expeditions: Any?, state: String) { silex.expeditionState_add(expeditions, state) .enqueue(object : SilexCallback(context) { @@ -175,6 +175,32 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) { } }) } + + fun route_getExpeditionSummary( + route: Int + ) { + silex.route_getExpeditionSummary(route) + .enqueue(object : SilexCallback>(context) { + + override fun onSuccess(response: Response>) { + + if (response.body() != null) { + _expeditionInfoSummary.value = + response.body()?.let { ExpeditionSummaryList(it) } + } else { + _expeditionInfoSummary.value = ExpeditionSummaryList() + } + } + + override fun onError(t: Throwable) { + _expeditionInfoSummary.value = ExpeditionSummaryList() + super.onError(t) + + } + }) + } + + } 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 9b1a8c95..6a67b475 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 @@ -38,6 +38,7 @@ import es.verdnatura.presentation.view.feature.controlvehiculo.fragment.ControlV import es.verdnatura.presentation.view.feature.delivery.fragments.InfoFragment import es.verdnatura.presentation.view.feature.delivery.fragments.LoadUnloadFragment import es.verdnatura.presentation.view.feature.delivery.fragments.LogExpeditionFragment +import es.verdnatura.presentation.view.feature.delivery.fragments.SummaryFragment import es.verdnatura.presentation.view.feature.diadeventa.fragment.DayOfSaleFragment import es.verdnatura.presentation.view.feature.historicoarticulo.fragment.HistoricoArticuloFragment import es.verdnatura.presentation.view.feature.historicoshelving.fragment.itemShelvingLogFragment @@ -614,6 +615,8 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL ) ) } + + getString(R.string.titleInfo) -> { addFragmentOnTop( InfoFragment.newInstance(item.title), @@ -640,9 +643,8 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL } getString(R.string.titleLoadTruck) -> { - addFragmentOnTop( - LoadUnloadFragment.newInstance(item.title, "ON DELIVERY"), + LoadUnloadFragment.newInstance(item.title, "ON DELIVERY",entryPoint), if (comeFromDelivery == true) { getString(R.string.titleLoadTruck) } else { @@ -655,7 +657,7 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL getString(R.string.titleUnLoadTruck) -> { addFragmentOnTop( - LoadUnloadFragment.newInstance(item.title, "DELIVERED"), + LoadUnloadFragment.newInstance(item.title, "DELIVERED",entryPoint), if (comeFromDelivery == true) { getString(R.string.titleUnLoadTruck) } else { @@ -665,6 +667,19 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL } + getString(R.string.titleDeliverySummary) -> { + + addFragmentOnTop( + SummaryFragment.newInstance(item.title, "ON DELIVERY"), + if (comeFromDelivery == true) { + getString(R.string.titleDeliverySummary) + } else { + null + } + ) + + } + getString(R.string.testing) -> { addFragmentOnTop(testPrint.newInstance(item.title)) 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 68d703ec..1fc4243e 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 @@ -490,7 +490,7 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) { ) //Tarea 4678 - /* _pasillerositem.add( + _pasillerositem.add( PasillerosItemVO( 6, R.drawable.ic_delivery_truck, @@ -498,7 +498,8 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) { R.string.titleDelivery, contextApp.getString(R.string.titleDelivery) ) - )*/ + ) + //#tarea4679 /* _pasillerositem.add( @@ -599,5 +600,18 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) { ) ) ) + + + _pasillerositem.add( + PasillerosItemVO( + 6, + R.drawable.ic_delivery_truck, + contextApp.getString(R.string.titleDeliverySummary), + R.string.titleDeliverySummary, + contextApp.getString(R.string.titleDeliverySummary) + ) + ) + + } } diff --git a/app/src/main/res/drawable/exit.png b/app/src/main/res/drawable/exit.png new file mode 100644 index 00000000..a1c1876d Binary files /dev/null and b/app/src/main/res/drawable/exit.png differ diff --git a/app/src/main/res/layout/fragment_expedition_summary.xml b/app/src/main/res/layout/fragment_expedition_summary.xml new file mode 100644 index 00000000..6f939453 --- /dev/null +++ b/app/src/main/res/layout/fragment_expedition_summary.xml @@ -0,0 +1,194 @@ + + + + + + + + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_expedition_summary_row.xml b/app/src/main/res/layout/item_expedition_summary_row.xml new file mode 100644 index 00000000..269490d4 --- /dev/null +++ b/app/src/main/res/layout/item_expedition_summary_row.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file