feat ChangeCategory #refs 5670
This commit is contained in:
parent
e940e9ec26
commit
f695dbdda3
|
@ -0,0 +1,274 @@
|
|||
package es.verdnatura.presentation.view.feature.category
|
||||
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.view.View
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.ImageView
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.databinding.FragmentChangeCategoryBinding
|
||||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||
import es.verdnatura.presentation.common.itemScanValue
|
||||
import es.verdnatura.presentation.view.component.CustomDialogInput
|
||||
import es.verdnatura.presentation.view.component.CustomDialogInputTwoValues
|
||||
import es.verdnatura.presentation.view.feature.articulo.model.ItemDetails
|
||||
|
||||
//Tarea #4940
|
||||
class ChangeCategoryFragment(var entrypoint: String) :
|
||||
BaseFragment<FragmentChangeCategoryBinding, ChangeCategoryViewModel>(
|
||||
ChangeCategoryViewModel::class
|
||||
) {
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.fragment_change_category
|
||||
private var barCodeScanned: Long = 0
|
||||
private lateinit var customDialogInput: CustomDialogInput
|
||||
private lateinit var customDialogDetails: CustomDialogInputTwoValues
|
||||
private lateinit var myItemDetail: ItemDetails
|
||||
private val listIcons: ArrayList<ImageView> = ArrayList()
|
||||
private var isScannedForDetails = false
|
||||
|
||||
companion object {
|
||||
fun newInstance(entrypoint: String) = ChangeCategoryFragment(entrypoint = entrypoint)
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
|
||||
customDialogInput = CustomDialogInput(requireContext())
|
||||
customDialogDetails = CustomDialogInputTwoValues(requireContext())
|
||||
binding.mainToolbar.toolbarTitle.text = entrypoint
|
||||
scanShelving()
|
||||
setEvents()
|
||||
setToolBar()
|
||||
|
||||
super.init()
|
||||
}
|
||||
|
||||
private fun setToolBar() {
|
||||
|
||||
val iconReset = ImageView(context)
|
||||
iconReset.setImageResource(R.drawable.ic_autorenew_black_24dp)
|
||||
listIcons.add(iconReset)
|
||||
|
||||
binding.mainToolbar.toolbarIcons.adapter =
|
||||
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
||||
override fun onOptionsItemSelected(item: Drawable) {
|
||||
|
||||
when (item) {
|
||||
|
||||
iconReset.drawable -> {
|
||||
scanShelving()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
binding.mainToolbar.toolbarIcons.layoutManager =
|
||||
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
||||
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
private fun setEvents() {
|
||||
|
||||
binding.mainToolbar.backButton.setOnClickListener {
|
||||
ma.onMyBackPressed()
|
||||
}
|
||||
binding.quantity.setOnEditorActionListener { _, actionId, _ ->
|
||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||
binding.price.requestFocus()
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
binding.quantity.setOnFocusChangeListener { _, hasFocus ->
|
||||
if (hasFocus) {
|
||||
binding.quantity.setSelection(binding.quantity.text.length)
|
||||
}
|
||||
}
|
||||
|
||||
binding.price.setOnFocusChangeListener { _, hasFocus ->
|
||||
if (hasFocus) {
|
||||
binding.price.setSelection(binding.price.text.length)
|
||||
}
|
||||
}
|
||||
binding.price.setOnEditorActionListener { _, actionId, _ ->
|
||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||
ma.hideKeyboard(binding.price)
|
||||
binding.btnChangeCategory.performClick()
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
customDialogDetails.setOnDismissListener {
|
||||
if (!isScannedForDetails) ma.onMyBackPressed()
|
||||
}
|
||||
|
||||
binding.btnChangeCategory.setOnClickListener {
|
||||
try {
|
||||
if (myItemDetail.visible < binding.quantity.text.toString().toInt()) {
|
||||
ma.messageWithSound(
|
||||
getString(R.string.quantityBigger), isPlayed = true, isError = true
|
||||
)
|
||||
} else {
|
||||
if (myItemDetail.itemCost < binding.price.text.toString().toDouble()) {
|
||||
ma.messageWithSound(
|
||||
getString(R.string.priceBigger), isPlayed = true, isError = true
|
||||
)
|
||||
|
||||
} else {
|
||||
viewModel.itemDevalueA2(
|
||||
itemFk = binding.itemFK.text.toString().toLong(),
|
||||
shelvingFk = binding.shelvingFK.text.toString(),
|
||||
buyingValue = binding.price.text.toString().toDouble(),
|
||||
quantity = binding.quantity.text.toString().toInt()
|
||||
)
|
||||
}
|
||||
}
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(
|
||||
message = ex.message!!.toString(), isError = true, isPlayed = true
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun observeViewModel() {
|
||||
with(viewModel) {
|
||||
|
||||
itemDetails.observe(viewLifecycleOwner) { item ->
|
||||
|
||||
if (item.itemFk == null) {
|
||||
scanShelving()
|
||||
customDialogDetails.getEditText().requestFocus()
|
||||
|
||||
} else {
|
||||
myItemDetail = item
|
||||
|
||||
binding.itemFK.setText(item.itemFk.toString())
|
||||
binding.shelvingFK.setText(item.vShelvingFK.uppercase())
|
||||
binding.price.setText((if (item.itemCost == 0.0) item.itemCost else item.itemCost / 2).toString())
|
||||
binding.quantity.setText(
|
||||
item.visible.toString()
|
||||
)
|
||||
binding.quantity.requestFocus()
|
||||
binding.quantity.setSelection(binding.quantity.text.length)
|
||||
customDialogDetails.dismiss()
|
||||
}
|
||||
|
||||
}
|
||||
responseDevalue.observe(viewLifecycleOwner) {
|
||||
if (it == true) {
|
||||
scanShelving()
|
||||
} else {
|
||||
resetTxt()
|
||||
|
||||
}
|
||||
}
|
||||
responseItem.observe(viewLifecycleOwner) {
|
||||
if (it.isError) {
|
||||
isScannedForDetails = false
|
||||
scanShelving()
|
||||
ma.messageWithSound(
|
||||
|
||||
message = it.errorMessage,
|
||||
titleWithError = getString(R.string.errorChangeCategory),
|
||||
isError = true,
|
||||
isPlayed = true,
|
||||
isToasted = false
|
||||
)
|
||||
resetTxt()
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun resetTxt() {
|
||||
binding.itemFK.setText("")
|
||||
binding.shelvingFK.setText("")
|
||||
binding.price.setText("")
|
||||
binding.quantity.setText("")
|
||||
}
|
||||
|
||||
private fun scanShelving() {
|
||||
|
||||
customDialogDetails.getEditText().requestFocus()
|
||||
customDialogDetails.setTitle(getString(R.string.titleChangeCategory))
|
||||
customDialogDetails.setDescription(getString(R.string.scanItemShelving))
|
||||
customDialogDetails.setInfoTex(getString(R.string.scanItem))
|
||||
customDialogDetails.setInfoTextTwo(getString(R.string.scanSmarttagOrShelving))
|
||||
customDialogDetails.setValue("")
|
||||
customDialogDetails.setValueTwo("")
|
||||
|
||||
.setOkButton(getString(R.string.itemDetails)) {
|
||||
|
||||
if (customDialogDetails.getValue().isNotEmpty() && customDialogDetails.getValueTwo()
|
||||
.isNotEmpty()
|
||||
) {
|
||||
|
||||
getInfoForA2(
|
||||
customDialogDetails.getValue().toLong(), customDialogDetails.getValueTwo()
|
||||
)
|
||||
}
|
||||
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
customDialogDetails.dismiss()
|
||||
ma.onMyBackPressed()
|
||||
}.show()
|
||||
|
||||
customDialogDetails.getEditText().setOnEditorActionListener { _, actionId, _ ->
|
||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||
customDialogDetails.setValue(
|
||||
itemScanValue(
|
||||
customDialogDetails.getValue(), arrayOf("buy"), "more"
|
||||
).toString()
|
||||
)
|
||||
|
||||
return@setOnEditorActionListener false
|
||||
}
|
||||
false
|
||||
}
|
||||
|
||||
customDialogDetails.getEditTextTwo().setOnEditorActionListener { _, actionId, _ ->
|
||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||
|
||||
if (customDialogDetails.getValue().isNotEmpty() && customDialogDetails.getValueTwo()
|
||||
.isNotEmpty()
|
||||
) {
|
||||
getInfoForA2(
|
||||
customDialogDetails.getValue().toLong(), customDialogDetails.getValueTwo()
|
||||
)
|
||||
}
|
||||
|
||||
return@setOnEditorActionListener true
|
||||
}
|
||||
false
|
||||
}
|
||||
|
||||
customDialogDetails.setFocusText()
|
||||
}
|
||||
|
||||
private fun getInfoForA2(barCode: Long, shelvingFK: String) {
|
||||
isScannedForDetails = true
|
||||
try {
|
||||
viewModel.itemShelvingGetItemDetails(
|
||||
barcode = barCode, shelvingFk = shelvingFK
|
||||
)
|
||||
|
||||
} catch (ex: Exception) {
|
||||
getString(R.string.errorInput).toast(requireActivity())
|
||||
}
|
||||
customDialogDetails.setValue("")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue