Version 7.3: añade parking de sales, número de baldas que ocupa un ticket, número items en balda, filtro si no funciona tecla ENTER y pinta colores del ticket

This commit is contained in:
Sergio De la torre 2021-12-23 09:00:32 +01:00
parent 7fb7825a6b
commit f36ab51499
69 changed files with 2803 additions and 887 deletions

View File

@ -29,6 +29,7 @@
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/crane.xml" value="0.23802083333333332" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/day_of_sale.xml" value="0.184375" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/delete.xml" value="0.19166666666666668" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/eraser.xml" value="0.26564102564102565" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/face_man_outline.xml" value="0.22708333333333333" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/filter_outline.xml" value="0.22239583333333332" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/human_dolly.xml" value="0.2111111111111111" />
@ -71,6 +72,7 @@
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/pallet_shipping_black.xml" value="0.1" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/pallet_shipping_selected.xml" value="0.1" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/qrcode_scan.xml" value="0.17395833333333333" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/rectangle.xml" value="0.31979166666666664" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/revision_icon.xml" value="0.1" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/round_av_timer_24.xml" value="0.15052083333333333" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable/round_outline.xml" value="0.11979166666666667" />
@ -80,6 +82,7 @@
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/activity_main.xml" value="0.17916666666666667" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/buyers_fragment.xml" value="0.18333333333333332" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/component_custom_dialog.xml" value="0.1490036231884058" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/component_custom_edit_dialog.xml" value="0.10208333333333333" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/component_custom_list_dialog.xml" value="0.1490036231884058" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/component_custom_three_dialog.xml" value="0.12817028985507245" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_ajustes.xml" value="0.3333333333333333" />
@ -108,18 +111,20 @@
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_paletizador_menu.xml" value="0.13829787234042554" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_parking.xml" value="0.5" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_pasillero.xml" value="0.13829787234042554" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_pre_sacador.xml" value="0.3333333333333333" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_qr.xml" value="0.19882246376811594" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_sacador.xml" value="0.12952898550724637" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_sacador_associatesmarttag.xml" value="0.22" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_shelvinglog.xml" value="0.13269927536231885" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_smarttag_register.xml" value="0.3118811881188119" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_transferencia.xml" value="0.10666666666666667" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_ubicador.xml" value="0.15729166666666666" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_ubicador.xml" value="0.22" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_vehiclecontrol.xml" value="0.1546875" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_vehiclecontrol_user.xml" value="0.23052536231884058" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/fragment_web.xml" value="0.2463768115942029" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/item_ajustes_row.xml" value="0.10009057971014493" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/item_article_row.xml" value="0.4466666666666667" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/item_article_row_presacador.xml" value="0.4466666666666667" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/item_card_row.xml" value="0.2269021739130435" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/item_expeditionstate_row.xml" value="0.23489583333333333" />
<entry key="..\:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout/item_historicovehiculo_row.xml" value="0.18795289855072464" />

View File

@ -14,8 +14,15 @@ android {
applicationId "es.verdnatura"
minSdkVersion 21
targetSdkVersion 29
versionCode 84
versionName "6.4" //VERSION CODE 84. Modificados menus buffer y añadido hsitorico carro por items y por carro.
versionCode 94
versionName "7.3" //VERSION CODE 94. Se ve productos en balda y posibilidad de modificarlo.
//versionName "7.2.1" //VERSION CODE 93. Si eliges sector en V no aparece insertar las baldas.
//versionName "7.2" //VERSION CODE 92. Ordena sales en presacador por pickingOrder, ya no llama siempre para poner numero de baldas.
//versionName "7" //VERSION CODE 88. Se añade llamadas a parkingsales,incorpora poner numero de baldas
//versionName "6.6" //VERSION CODE 87. Modificado parking presacador.faltaba ver el ticket y se añade carro al historico de shelving.
//versionName "6.5.1" //VERSION CODE 86. Modificado parking presacador.faltaba ver el ticket y se añade carro al historico de shelving.
//versionName "6.5" //VERSION CODE 85. Modificado parking presacador. Llama a saleParking.
//versionName "6.4" //VERSION CODE 84. Modificados menus buffer y añadido hsitorico carro por items y por carro.
//versionName "6.3" //VERSION CODE 83 Nueva funcionalidad Cargar expedición en buffer
//versionName "6.2.1" // VERSION CODE 82 Aparece mensaje de error completo en "Error al construir la colección".
//versionName "6.2" //VERSION CODE 81, arreglado el null de grouping en ubicador.

View File

@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 84,
"versionName": "6.4",
"versionCode": 94,
"versionName": "7.3",
"outputFile": "app-release.apk"
}
],

Binary file not shown.

View File

@ -20,7 +20,7 @@ import es.verdnatura.presentation.view.feature.login.fragment.LoginViewModel
import es.verdnatura.presentation.view.feature.paletizador.fragment.*
import es.verdnatura.presentation.view.feature.parking.fragment.ParkingViewModel
import es.verdnatura.presentation.view.feature.pasillero.fragment.PasilleroViewModel
import es.verdnatura.presentation.view.feature.precontrol.PreControladorViewModel
import es.verdnatura.presentation.view.feature.precontrol.ShowTicketViewModel
import es.verdnatura.presentation.view.feature.presacador.fragment.PreSacadorViewModel
import es.verdnatura.presentation.view.feature.qr.QrFragmentViewModel
import es.verdnatura.presentation.view.feature.reposicion.fragment.ReposicionViewModel
@ -66,7 +66,7 @@ val viewModelModule = module {
// Pasilleros / Buscar Item 2
viewModel {
PreControladorViewModel(androidContext())
ShowTicketViewModel(androidContext())
}
// Pasilleros / Inventario

View File

@ -11,5 +11,8 @@ object ConstAndValues {
const val ON_CHECKING = "ON_CHECKING"
const val PRECHECKER = "PRECHECKER"
const val MAINACTIVITY = "MAIN"
const val VERTICKET = "SHOWTICKET"
const val SECTORFKDEFAULT=37
const val WAREHOUSEFKDEFAULT=1
}

View File

@ -86,13 +86,14 @@ class GetLoginUserCase(context: Context) : RestClient(context)
params.add(version)
return restClient!!.version("json", "1", usuario, password, "application/json", params)
//SALIX MENSAJE :SERGIO: PARA NO ENVIAR MENSAJES A COMERCIALES PONGO QUE LAS MODIFICACIONES SE ENVIAN AL CANAL CREADO.
*/
//SALIX SERGIO MENSAJE : PARA NO ENVIAR MENSAJES A COMERCIALES PONGO QUE LAS MODIFICACIONES SE ENVIAN AL CANAL CREADO.
fun sendChekingPresence(token:String,workerId:Int,message:String) : Call<Boolean>{
return salixClient!!.sendChekingPresence(content_type = "application/json", authorization = token, params = SalixMessageVO(workerId = workerId,message = message))
}
// SERGIO: PARA DESARROLLO Y PRUEBAS SE DESCOMENTA ESTAS LÍNEAS Y SE COMENTAN LAS DE ARRIBA
// SERGIO: PARA DESARROLLO SE DESCOMENTA ESTAS LÍNEAS Y SE COMENTAN LAS DE ARRIBA
/* fun sendChekingPresence(token: String, workerId: Int, message: String): Call<Boolean>
{

View File

@ -29,4 +29,21 @@ class GetPreControladorUserCase(context: Context) : RestClient(context) {
)
}
fun ticket_get(
usuario: String,
password: String,
vParamFk: String
): Call<String> {
val params: ArrayList<String> = ArrayList()
params.add(vParamFk)
return restClient!!.ticket_get(
"json",
"1",
usuario,
password,
"application/json",
params
)
}
}

View File

@ -1,7 +1,6 @@
package es.verdnatura.domain
import android.content.Context
import es.verdnatura.presentation.view.feature.collection.ItemVO
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.sacador.model.MistakeTypeVO
import es.verdnatura.presentation.view.feature.sacador.model.PlacementSupplyVO
@ -214,6 +213,62 @@ class GetSacadorControladorUserCase(context: Context) : RestClient(context) {
)
}
fun ticketCollection_setUsedShelves(
usuario: String,
password: String,
ticketFk: String,
usedShelves: String
): Call<Void> {
val params: ArrayList<String> = ArrayList()
params.add(ticketFk)
params.add(usedShelves)
return restClient!!.ticketCollection_setUsedShelves(
"json",
"1",
usuario,
password,
"application/json",
params
)
}
fun item_updatePackingShelve(
usuario: String,
password: String,
vSelf : String,
vPacking : String
): Call<Void> {
val params: ArrayList<String> = ArrayList()
params.add(vSelf)
params.add(vPacking)
return restClient!!.item_updatePackingShelve(
"json",
"1",
usuario,
password,
"application/json",
params
)
}
fun saleTracking_add(
usuario: String,
password: String,
saleGroupFk: String
): Call<Void> {
val params: ArrayList<String> = ArrayList()
params.add(saleGroupFk)
return restClient!!.saleTracking_add(
"json",
"1",
usuario,
password,
"application/json",
params
)
}
/* fun itemGetAvailable(
usuario: String,
password: String,

View File

@ -144,6 +144,18 @@ class GetUbicadorUserCase(context: Context) : RestClient(context) {
return restClient!!.shelvingPark("json", "1", usuario, password, "application/json", params)
}
fun saleParking_add(
usuario: String,
password: String,
sales:List<String>,
parking: String
): Call<String> {
val params: ArrayList<Any> = ArrayList()
params.add(sales)
params.add(parking)
return restClient!!.saleParking_add("json", "1", usuario, password, "application/json", params)
}
fun shelvingChange(
usuario: String,
password: String,

View File

@ -202,6 +202,17 @@ interface VerdnaturaService {
):
Call<CollectionVO>
@POST("almacennew/ticket_get")//REVISADA
fun ticket_get(
@Header("aplicacion") aplicacion: String,
@Header("version") version: String,
@Header("user") user: String,
@Header("pass") pass: String,
@Header("Content-Type") content_type: String,
@Body params: List<String>
):
Call<String>
@POST("almacennew/saleTrackingReplace")//REVISADA
fun saleTrackingReplace(
@Header("aplicacion") aplicacion: String,
@ -257,6 +268,40 @@ interface VerdnaturaService {
):
Call<String>
@POST("almacennew/ticketCollection_setUsedShelves")//REVISADA
fun ticketCollection_setUsedShelves(
@Header("aplicacion") aplicacion: String,
@Header("version") version: String,
@Header("user") user: String,
@Header("pass") pass: String,
@Header("Content-Type") content_type: String,
@Body params: List<String>
):
Call<Void>
@POST("almacennew/item_updatePackingShelve")//REVISADA
fun item_updatePackingShelve(
@Header("aplicacion") aplicacion: String,
@Header("version") version: String,
@Header("user") user: String,
@Header("pass") pass: String,
@Header("Content-Type") content_type: String,
@Body params: List<String>
):
Call<Void>
@POST("almacennew/saleTracking_add")//REVISADA
fun saleTracking_add(
@Header("aplicacion") aplicacion: String,
@Header("version") version: String,
@Header("user") user: String,
@Header("pass") pass: String,
@Header("Content-Type") content_type: String,
@Body params: List<String>
):
Call<Void>
/*sergio:modificada en el caso de que quiera utilizarse por item_Card
@POST("almacennew/itemGetAvailable")//REVISADA
fun itemGetAvailable(
@ -732,6 +777,18 @@ interface VerdnaturaService {
):
Call<String>
@POST("almacennew/saleParking_add")//REVISADA
fun saleParking_add(
@Header("aplicacion") aplicacion: String,
@Header("version") version: String,
@Header("user") user: String,
@Header("pass") pass: String,
@Header("Content-Type") content_type: String,
@Body params: List<Any>
):
Call<String>
@POST("almacennew/shelvingPark")//REVISADA
fun shelvingPark(
@Header("aplicacion") aplicacion: String,

View File

@ -107,6 +107,10 @@ interface OnQuantityClickListener {
fun onQuantityClick(sale: SaleVO)
}
interface onPackingClickListener {
fun onPackingClick(sale:SaleVO)
}
interface OnSaleClickListener {
fun onSaleClick(sale: SaleVO)
}

View File

@ -7,12 +7,14 @@ import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.media.AudioManager
import android.os.Bundle
import android.text.InputType
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.view.ViewTreeObserver
import android.view.inputmethod.InputMethodManager
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
@ -139,12 +141,27 @@ fun Fragment.hideKeyboard() {
fun Activity.hideKeyboard() {
hideKeyboard(currentFocus ?: View(this))
}
fun Activity.showKeyboardIn() {
showKeyboardIn(currentFocus ?: View(this))
}
fun Context.hideKeyboard(view: View) {
val inputMethodManager = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
}
fun Context.showKeyboard(){
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager?
imm!!.toggleSoftInput(InputType.TYPE_CLASS_NUMBER, 0)
}
fun Context.showKeyboardIn(view:View){
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager?
imm!!.showSoftInput(view, 0)
}
// Extension function to change media volume programmatically
fun AudioManager.setMediaVolume(volumeIndex:Int) {
// Set media volume level

View File

@ -2,10 +2,13 @@ package es.verdnatura.presentation.view.component
import android.app.Dialog
import android.content.Context
import android.text.InputType
import android.view.View
import com.google.android.material.textfield.TextInputEditText
import es.verdnatura.R
import es.verdnatura.databinding.ComponentCustomEditDialogBinding
import es.verdnatura.presentation.common.showKeyboard
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
class CustomDialogInput (context: Context) : Dialog(context, R.style.DialogTheme) {
@ -86,4 +89,10 @@ class CustomDialogInput (context: Context) : Dialog(context, R.style.DialogTheme
return this
}
fun setInputText(){
binding.customDialogValue.inputType= InputType.TYPE_CLASS_NUMBER
}
fun setFocusText(){
binding.customDialogValue.requestFocus()
}
}

View File

@ -1,8 +1,5 @@
package es.verdnatura.presentation.view.feature.ajustes.fragment
//import android.preference.PreferenceManager
//import kotlinx.android.synthetic.main.activity_main.*
import android.app.AlertDialog
import android.content.ClipData
import android.content.ClipboardManager
@ -28,11 +25,9 @@ import es.verdnatura.presentation.view.feature.ajustes.model.AjustesItemVO
import es.verdnatura.presentation.view.feature.ajustes.model.SectorItemVO
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
//import kotlinx.android.synthetic.main.activity_main.view.*
//import kotlinx.android.synthetic.main.fragment_login.*
class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(AjustesViewModel::class) {
class AjustesFragment :
BaseFragment<FragmentAjustesBinding, AjustesViewModel>(AjustesViewModel::class) {
private var user: String? = ""
private var userFk: String? = ""
@ -42,6 +37,7 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
private var vozList: List<String> = listOf()
private var prefs: SharedPreferences? = null
private var ajustesAdapter: AjustesAdapter? = null
//añadido
private var wagonList: List<String> = listOf()
private var tagsList: List<String> = listOf()
@ -49,30 +45,24 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
companion object {
fun newInstance() = AjustesFragment()
}
override fun getLayoutId(): Int = R.layout.fragment_ajustes
/* override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// binding=FragmentAjustesBinding.inflate(inflater,container,false)
//val view=binding.root
//return view
return super.onCreateView(inflater, container, savedInstanceState)
}*/
override fun onCreate(savedInstanceState: Bundle?) {
prefs = requireActivity().getSharedPreferences(PREFS_USER, 0)
customDialog = CustomDialog(requireContext())
// binding = DataBindingUtil.setContentView(requireActivity(), R.layout.activity_main)
//modificat el InitilializeAjusts
viewModel.inititializeDefaultAjusts(prefs!!.getString(SECTORDESCRIP,getString(R.string.Sinsector)).toString(),prefs!!.getInt(SECTORFK,0),prefs!!.getInt(WAREHOUSEFK,0),prefs!!.getString(VOZ,"NO").toString(),prefs!!.getInt(WAGON,2).toString(),prefs!!.getString(TAGSTYPE,"Stickers").toString())
viewModel.inititializeDefaultAjusts(
prefs!!.getString(
SECTORDESCRIP,
getString(R.string.Sinsector)
).toString(),
prefs!!.getInt(SECTORFK, 0),
prefs!!.getInt(WAREHOUSEFK, 0),
prefs!!.getString(VOZ, "NO").toString(),
prefs!!.getInt(WAGON, 2).toString(),
prefs!!.getString(TAGSTYPE, "Stickers").toString()
)
super.onCreate(savedInstanceState)
}
@ -80,40 +70,24 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
override fun init() {
//ActivityMainBinding.bind(main_bottom_navigation).mainBottomNavigation.visibility=View.VISIBLE
(activity as MainActivity).hideBottomNavigation(View.VISIBLE)
//requireActivity().main_bottom_navigation.visibility = View.VISIBLE
binding.userText.setText(prefs!!.getString(USERFK, ""))
//user_text.setText(prefs!!.getString(USERFK,""))
val versionName = requireActivity().packageManager.getPackageInfo(requireActivity().packageName,0).versionName!!
val versionName = requireActivity().packageManager.getPackageInfo(
requireActivity().packageName,
0
).versionName!!
binding.itemVersion.setText(versionName)
//item_version.setText(versionName)
user = prefs!!.getString(USER, "")
userFk = prefs!!.getString(USERFK, "")
password = prefs!!.getString(PASSWORD, "")
binding.androididText.setText(Settings.Secure.getString(context?.contentResolver, Settings.Secure.ANDROID_ID))
//androidid_text.setText(Settings.Secure.getString(context?.contentResolver, Settings.Secure.ANDROID_ID))
binding.androididText.setText(
Settings.Secure.getString(
context?.contentResolver,
Settings.Secure.ANDROID_ID
)
)
binding.txtserver.setText(this.getDefaults("base_url", this.requireContext()))
//txtserver.setText(this.getDefaults("base_url",this.requireContext()))
binding.txtserver.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
//binding.txtserver.setOnKeyListener((View.OnKeyListener { v, keyCode, event ->
if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) {
//this.setDefaults("base_url",txtserver.text.toString(),this.requireContext())
this.setDefaults("base_url",binding.txtserver.toString(),this.requireContext())
// sergio: se comenta línea de abajo porque da fallo en la app//
// this.setDefaults("base_url", edittext_server.text.toString(), this.requireContext())
this.hideKeyboard()
//sergio:creada restartapp en BaseFragment por si es necesario utilizarla de nuevo.
// se hace un restart por si se cambia el servidor para que tome nuevos valores
restartapp(this)
return@OnKeyListener false
}
false
})
super.init()
@ -124,8 +98,7 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
binding.androididText.setOnClickListener { copyanddrag(binding.androididText.text.toString()) }
binding.androididText.setOnLongClickListener { copyanddrag(binding.androididText.text.toString()) }
/*androidid_text.setOnClickListener { copyanddrag(androidid_text.text.toString()) }
androidid_text.setOnLongClickListener { copyanddrag(androidid_text.text.toString()) }*/
}
@ -135,12 +108,10 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
override fun onAjustesItemClickListener(item: AjustesItemVO) {
if (item.id == 0) {
binding.splashProgress.visibility = View.VISIBLE
//splash_progress.visibility = View.VISIBLE
viewModel.getSectors(user!!, password!!)
} else if (item.id == 5) {
requireActivity().onBackPressed()
} else if (item.id == 1) {
// //////Log.i("VERDNATURA:","Carros pulsados")
val listCarros: ArrayList<String> = ArrayList()
listCarros.add("1")
listCarros.add("2")
@ -171,22 +142,25 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
val array = arrayOfNulls<String>(listTagsType.size)
showItemPickerType(array = listTagsType.toArray(array))
} else if (item.id == 4) {
(activity as MainActivity).onPasillerosItemClickListener( PasillerosItemVO(title = "Control de usuario de vehículo"),userFk!!)
(activity as MainActivity).onPasillerosItemClickListener(
PasillerosItemVO(
title = "Control de usuario de vehículo"
), userFk!!
)
}
}
})
binding.ajustessItems.adapter = ajustesAdapter
binding.ajustessItems.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
//austess_items.adapter = ajustesAdapter
//ajustess_items.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.ajustessItems.layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
loadSectorList.observe(viewLifecycleOwner, { event ->
event.getContentIfNotHandled().notNull {
binding.splashProgress.visibility = View.INVISIBLE
//splash_progress.visibility = View.INVISIBLE
if (it.list.isNotEmpty() && it.list.get(0).isError) {
customDialog.setTitle("Error").setDescription(it.list.get(0).errorMessage).setOkButton(getString(R.string.Close)){
customDialog.setTitle("Error").setDescription(it.list.get(0).errorMessage)
.setOkButton(getString(R.string.Close)) {
customDialog.dismiss()
}.show()
} else {
@ -201,7 +175,9 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
showDialogSector(listSectores.toArray(array))
} else {
customDialog.setTitle("Sectores").setDescription(getString(R.string.Noexistessectores)).setOkButton(getString(R.string.Close)){
customDialog.setTitle("Sectores")
.setDescription(getString(R.string.Noexistessectores))
.setOkButton(getString(R.string.Close)) {
customDialog.dismiss()
}.show()
}
@ -268,12 +244,8 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
dialog.show()
}
//sergio : guardar datos
private fun showDialogCarros(array: Array<String>) {
val builder = AlertDialog.Builder(this.context)
builder.setTitle(getString(R.string.Seleccionauncarro))
builder.setItems(array) { _, which ->
val selected = array[which]
@ -325,7 +297,6 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
}
fun setDefaults(key: String?, value: String?, context: Context?) {
val preferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
val editor = preferences.edit()
@ -333,19 +304,16 @@ class AjustesFragment : BaseFragment<FragmentAjustesBinding,AjustesViewModel>(Aj
editor.commit()
}
fun getDefaults(key: String?, context: Context?): String? {
private fun getDefaults(key: String?, context: Context?): String? {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
return preferences.getString(key, null)
}
fun copyanddrag(string:String): Boolean {
private fun copyanddrag(string: String): Boolean {
val clipboard = getActivity()?.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val clip: ClipData = ClipData.newPlainText("Android_id", string)
clipboard.setPrimaryClip(clip)
//androidid_text.performLongClick()
//Log.i(TD,"se copia $string")
//getString(R.string.copied).toast(requireContext())
setTooltipText(binding.androididText, getString(R.string.copied))
return false

View File

@ -19,6 +19,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentItemCardBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
@ -163,7 +164,7 @@ class ItemCardFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
this.itemFk = itemFk
binding.splashProgressTwo.visibility = View.VISIBLE

View File

@ -9,6 +9,8 @@ import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentBufferBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnCollectionSelectedListener
import es.verdnatura.presentation.view.component.CustomDialog
@ -59,8 +61,8 @@ class BufferFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
type = ConstAndValues.PRECHECKER
super.onCreate(savedInstanceState)
}

View File

@ -10,6 +10,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentBufferLoadexpeditionBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -109,8 +111,8 @@ class BufferLoadFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
userFk = prefs.getString(USERFK, "0").toString()
super.onCreate(savedInstanceState)

View File

@ -9,6 +9,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentBuscarItemBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
@ -75,7 +76,7 @@ class BuscarItemFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
this.itemFk = itemFk
binding.splashProgress.visibility = View.VISIBLE
viewModel.getLocations(user,password,itemFk,"getItemUbication")

View File

@ -9,6 +9,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.BuyersFragmentBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnAjustesItemClickListener
import es.verdnatura.presentation.common.OnBuyerSelectedListener
@ -54,8 +56,8 @@ class BuyersFragment : BaseFragment<BuyersFragmentBinding,BuyersViewModel>(Buyer
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
viewModel.itemShelvingBuyerGet(user = user,password = password,"itemShelving_BuyerGet")
super.onCreate(savedInstanceState)
}

View File

@ -10,6 +10,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.QaualityFragmentBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
import es.verdnatura.presentation.view.component.CustomDialog
@ -60,8 +62,8 @@ class QaualityFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
viewModel.itemShelvingBuyerTask(user = user,password = password,userFk = userFk,"itemShelving_BuyerTask")
super.onCreate(savedInstanceState)
}

View File

@ -6,24 +6,25 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.getColor
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import es.verdnatura.R
import es.verdnatura.databinding.ItemArticleRowBinding
import es.verdnatura.domain.toast
import es.verdnatura.presentation.common.OnMistakeClickListener
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
import es.verdnatura.presentation.common.OnQuantityClickListener
import es.verdnatura.presentation.common.OnSaleClickListener
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
import android.graphics.drawable.GradientDrawable
import es.verdnatura.presentation.common.*
class SaleAdapter(
private val items: List<SaleVO>,
private val onPasillerosItemClickListener: OnPasillerosItemClickListener,
private val onQuantityClick: OnQuantityClickListener,
private val onSaleClickListener: OnSaleClickListener,
private val onMistakeClickListener: OnMistakeClickListener
private val onMistakeClickListener: OnMistakeClickListener,
private val onPackingClick: onPackingClickListener,
): RecyclerView.Adapter<SaleAdapter.AjustesItemHolder> () {
var context:Context? = null
var position:Int = 0
@ -65,6 +66,9 @@ class SaleAdapter (
onPasillerosItemClickListener.onPasillerosItemClickListener(PasillerosItemVO(title = "Consultar artículo"),sale.itemFk)
}
itemPackingItemFk.setOnClickListener{
onPackingClick.onPackingClick(sale)
}
itemArticleQuantity.setOnClickListener {
onQuantityClick.onQuantityClick(sale)
@ -108,11 +112,7 @@ class SaleAdapter (
}
/*if (sale.level.equals("AMARILLO")){
level.setTextColor(Color.YELLOW)
}else{
level.setTextColor(Color.GREEN)
}*/
paintTicketcolor(sale.level,itemTicketColor)
if (!sale.isNew && sale.originalQuantity == sale.quantity){
@ -139,6 +139,7 @@ class SaleAdapter (
itemArticleRowSemaforoCon.setBackgroundColor(ContextCompat.getColor(context!!, R.color.verdnatura_warm_grey))
}
if (sale.isControlled == "1"){
contentLayout.setBackgroundColor(ContextCompat.getColor(context!!, R.color.verdnatura_dark_mint))
}else if (sale.isPrepared == "1"){
@ -149,6 +150,8 @@ class SaleAdapter (
contentLayout.setBackgroundColor(ContextCompat.getColor(context!!, R.color.verdnatura_black))
}
//sergio: para de momento que pinten las lineas sin actualizar ni nada
if (sale.isControlled == "2"){
itemArticleRowSemaforoCon.setBackgroundColor(ContextCompat.getColor(context!!, R.color.verdnatura_white))
@ -162,4 +165,40 @@ class SaleAdapter (
}
}
}
private fun paintTicketcolor(color: String, itemTicketColor: View) {
when (color){
"ROJO"-> itemTicketColor.setBackgroundColor(Color.RED)
"AMARILLO"->itemTicketColor.setBackgroundColor(Color.YELLOW)
"VERDE"->itemTicketColor.setBackgroundColor(Color.GREEN)
"AZUL"->itemTicketColor.setBackgroundColor(Color.BLUE)
"BLANCO"->itemTicketColor.setBackgroundColor(Color.WHITE)
// "NEGRO"-> itemTicketColor.setBackgroundResource((R.drawable.rectangle))
"NEGRO"-> {itemTicketColor.setBackgroundColor(Color.BLACK)
itemTicketColor.setBackgroundResource((R.drawable.border))}
"VIOLETA"-> itemTicketColor.setBackgroundColor(0xFF4c2882.toInt())
"GRIS"-> itemTicketColor.setBackgroundColor(Color.GRAY)
"ORANGE"-> itemTicketColor.setBackgroundColor(getColor(context!!,android.R.color.holo_orange_light))
"MORADO"-> itemTicketColor.setBackgroundColor(getColor(context!!,android.R.color.holo_purple))
"CELESTE"-> itemTicketColor.setBackgroundColor(0xFF5b85F5.toInt())
"ROSA"-> itemTicketColor.setBackgroundColor(0xFFfc0fc0.toInt())
"DORADO"-> itemTicketColor.setBackgroundColor(0xFFb8860b.toInt())
"MARRON"-> itemTicketColor.setBackgroundColor(0xFF663300.toInt())
"PERLA"-> itemTicketColor.setBackgroundColor(0xFFcdcecf.toInt())
"MARFIL"-> itemTicketColor.setBackgroundColor(0xFFf7eada.toInt())
"CIAN"-> itemTicketColor.setBackgroundColor(0xFF00ffff.toInt())
"BEIGE"-> itemTicketColor.setBackgroundColor(0xFFf2e7bf.toInt())
else->{
}
}
// itemTicketColor.setBackgroundResource((R.drawable.rectangle))
}
}

View File

@ -1,5 +1,8 @@
package es.verdnatura.presentation.view.feature.collection.fragment
/*import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_collection.*
import kotlinx.android.synthetic.main.toolbar.**/
import android.content.Context
import android.content.SharedPreferences
import android.graphics.drawable.Drawable
@ -24,6 +27,8 @@ import es.verdnatura.domain.ConstAndValues.ON_CHECKING
import es.verdnatura.domain.ConstAndValues.ON_PREPARATION
import es.verdnatura.domain.ConstAndValues.PRECHECKER
import es.verdnatura.domain.ConstAndValues.SACADOR
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -39,16 +44,15 @@ import es.verdnatura.presentation.view.feature.inventario.adapter.ToolBarAdapter
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.*
/*import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_collection.*
import kotlinx.android.synthetic.main.toolbar.**/
import timber.log.Timber
import timber.log.Timber.d
class CollectionFragment(
var collection: CollectionVO = CollectionVO(),
var type: String = SACADOR
) : BaseFragment<FragmentCollectionBinding, CollectionViewModel>(CollectionViewModel::class) {
private lateinit var dataMessageSalix: DataMessageSalix
private var user = ""
private var password = ""
@ -79,8 +83,9 @@ class CollectionFragment(
private var tickets: ArrayList<String> = ArrayList()
private var mistakeSale: SaleVO? = null
private var positionIncreaseQuantity = 0
private var positionReject = 0
private var quantityIncrease = ""
private var isMarking = false
//private var myKM: KeyguardManager? = null
private var state = 0
@ -110,25 +115,37 @@ class CollectionFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
token = prefs.getString(TOKEN, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
voz = prefs.getString(VOZ, "NO").toString()
mperror = MediaPlayer.create((activity as MainActivity), R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok)
SectorDescription = prefs.getString(SECTORDESCRIP, "Sin Sector").toString()
if ((collection.collectionFk != null) && type.equals(CONTROLADOR)) {
//sergio: comprueba si viene de la pantalla de controlador
viewModel.ticketOrCollection_checkFullyControlled(user, password, collection.collectionFk,"ticketOrCollection_checkFullyControlled")
viewModel.ticketOrCollection_checkFullyControlled(
user,
password,
collection.collectionFk,
"ticketOrCollection_checkFullyControlled"
)
workerFkFromTicket = collection.tickets.get(0).sales.get(0).workerFk
}
if (collection.tickets.isEmpty()) {
viewModel.collectionTicketGet(user, password, collection.collectionFk, sectorFk, type,"collection_getTickets")
viewModel.collectionTicketGet(
user,
password,
collection.collectionFk,
sectorFk,
type,
"collection_getTickets"
)
}
@ -184,6 +201,7 @@ class CollectionFragment(
}
val listIcons: ArrayList<Drawable> = ArrayList()
val iconPrint: Drawable =
resources.getDrawable(R.drawable.ic_print_black_24dp, resources.newTheme())
/*val iconSearch: Drawable =
@ -193,13 +211,18 @@ class CollectionFragment(
val iconFace: Drawable =
resources.getDrawable(R.drawable.face_man_outline, resources.newTheme())
/* val iconShelve:Drawable =
resources.getDrawable(R.drawable.alpha_b_circle_outline, resources.newTheme())*/
//listIcons.add(iconShelve)
listIcons.add(iconFace)
listIcons.add(iconPrint)
// listIcons.add(iconSearch)
listIcons.add(iconAdd)
binding.mainToolbar.toolbarIcons.adapter = ToolBarAdapter(listIcons, object : OnOptionsSelectedListener {
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapter(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
if (item == iconPrint) {
print()
@ -209,7 +232,9 @@ class CollectionFragment(
addItem()
} else if (item == iconFace) {
showUser()
}
}/*else if(item== iconShelve){
ticketCollection_setUsedShelves()
}*/
}
})
binding.mainToolbar.toolbarIcons.layoutManager =
@ -225,13 +250,11 @@ class CollectionFragment(
private fun showUser() {
(activity as MainActivity).onPasillerosItemClickListener(
PasillerosItemVO(title = "Control de usuario de vehículo"),
workerFkFromTicket
)
}
private fun setEvents() {
@ -248,9 +271,25 @@ class CollectionFragment(
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
d("La tecla es "+actionId)
findSale(binding.scanInput.text.toString())
// d("La tecla es " + actionId)
//sergio:para ver si ha marcado dos veces el mismo ticket
if (binding.scanInput.text!!.length > 13) {
var size = binding.scanInput.text!!.length
if (binding.scanInput.text!!.substring((size / 2), size)
.equals(binding.scanInput.text!!.substring(0, size / 2))
) {
binding.scanInput.setText(
binding.scanInput.text!!.substring(
0,
size / 2
)
)
}
}
findSale(binding.scanInput.text.toString())
}
binding.scanInput.setText("")
@ -265,7 +304,7 @@ class CollectionFragment(
//LISTA =========
binding.collectionSwipe.setOnRefreshListener {
isMarking = false
binding.collectionSwipe.isRefreshing = false
if (type != PRECHECKER) {
if (binding.splashProgress != null) binding.splashProgress.visibility = VISIBLE
@ -274,8 +313,8 @@ class CollectionFragment(
password,
collection.collectionFk,
sectorFk,
type
,"collection_getTickets")
type, "collection_getTickets"
)
binding.collectionSwipe.isRefreshing = false
}
}
@ -288,6 +327,20 @@ class CollectionFragment(
}
}
private fun showKeyboards() {
try {
requireActivity().showKeyboard()
} catch (e: Exception) {
}
}
private fun showKeyboardsIN() {
try {
requireActivity().showKeyboardIn()
} catch (e: Exception) {
}
}
override fun observeViewModel() {
with(viewModel) {
binding.splashProgress.visibility = GONE
@ -298,11 +351,7 @@ class CollectionFragment(
collection = it
createCollectionList()
workerFkFromTicket = it.tickets.get(0).sales.get(0).workerFk
// Log.i("VERDNATURA:", "El primer ticket es : ${it.tickets.get(0).ticketFk}")
/* Log.i(
"VERDNATURA:",
"El primer workerfk es :${it.tickets.get(0).sales.get(0).workerFk}"
)*/
} else {
binding.mainToolbar.toolbarSubtitle.text = "0/0"
}
@ -316,6 +365,52 @@ class CollectionFragment(
})
responseUsedShelves.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = GONE
(activity as MainActivity).messageWithSound(
if (it.isError) it.errorMessage else "Baldas guardadas",
it.isError
)
})
responseItem_updatePackingShelve.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = GONE
(activity as MainActivity).messageWithSound(
if (it.isError) it.errorMessage else "Packing guardado",
it.isError
)
if (!it.isError) {
viewModel.collectionTicketGet(
user,
password,
collection.collectionFk,
sectorFk,
type,
"collection_getTickets"
)
}
})
responseSaleGroup.observe(viewLifecycleOwner, Observer {
if (it.isError) {
(activity as MainActivity).messageWithSound(it.errorMessage, true)
} else {
(activity as MainActivity).messageWithSound("Previa recogida", false)
binding.splashProgress.visibility = VISIBLE
viewModel.collectionTicketGet(
user,
password,
collection.collectionFk,
sectorFk,
type,
"collection_getTickets"
)
}
})
placementSuppleyList.observe(viewLifecycleOwner, Observer {
if (binding.splashProgress != null) binding.splashProgress.visibility = View.GONE
if (!goBack) printShelvingResult(it)
@ -339,7 +434,8 @@ class CollectionFragment(
}.show()
} else {
if (binding.splashProgress != null) binding.splashProgress.visibility = View.VISIBLE
if (binding.splashProgress != null) binding.splashProgress.visibility =
View.VISIBLE
sendSalixMessage(
item = dataMessageSalix.item,
@ -352,8 +448,8 @@ class CollectionFragment(
password,
collection.collectionFk,
sectorFk,
type
,"collection_getTickets")
type, "collection_getTickets"
)
// //Log.i("VERDNATURA:","La collection es ${collection.collectionFk}")
}
@ -394,15 +490,17 @@ class CollectionFragment(
responseMissingTrash.observe(viewLifecycleOwner, Observer {
if (it.isError) {
customDialog.setTitle("Error").setDescription(it.errorMessage)
(activity as MainActivity).messageWithSound(it.errorMessage, isError = true)
/* customDialog.setTitle("Error").setDescription(it.errorMessage)
.setOkButton("Aceptar") {
customDialog.dismiss()
}.show()
}else
{
}.show()*/
} else {
//incresaseSuccesful()
/*FALTA RELLENAR*/
//TODO()
TODO("FALTA ADAPTAR LA FUNCION MISSING()")
// missingTrashSuccesful()
} //sergio:esto ya estaba
/* binding.splashProgress.visibility = View.VISIBLE
viewModel.collectionTicketGet(user,password,collection.collectionFk,sectorFk)*/
@ -412,12 +510,12 @@ class CollectionFragment(
responseIncQuantity.observe(viewLifecycleOwner, Observer {
if (it.isError) {
customDialog.setTitle("Error").setDescription(it.errorMessage)
(activity as MainActivity).messageWithSound(it.errorMessage, isError = true)
/*customDialog.setTitle("Error").setDescription(it.errorMessage)
.setOkButton("Aceptar") {
customDialog.dismiss()
}.show()
}else
{
}.show()*/
} else {
incresaseSuccesful()
}
//sergio:esto ya estaba
@ -443,14 +541,22 @@ class CollectionFragment(
} else {
//sergio: devuelve false si no hay para revisar y <> false.
if (it.response != "false") {
customDialog.setTitle("Aviso").setDescription("Pendiente de revisar : "+it.response)
customDialog.setTitle("Aviso")
.setDescription("Pendiente de revisar : " + it.response)
.setOkButton("Aceptar") {
customDialog.dismiss()
}
.setKoButton("Revisar") {
binding.splashProgress.visibility = View.VISIBLE
viewModel.collectionTicketGet(user, password, it.response, sectorFk, type,"collection_getTickets")
viewModel.collectionTicketGet(
user,
password,
it.response,
sectorFk,
type,
"collection_getTickets"
)
customDialog.dismiss()
}
customDialog.show()
@ -473,14 +579,11 @@ class CollectionFragment(
}
}
private fun getSalePerson(ticketFk:String):String
{
private fun getSalePerson(ticketFk: String): String {
var salePerson = ""
for (it in sales)
{
if (it.ticketFk.equals(ticketFk))
{
for (it in sales) {
if (it.ticketFk.equals(ticketFk)) {
salePerson = it.salePersonFk
break
}
@ -488,8 +591,12 @@ class CollectionFragment(
return salePerson
}
private fun sendSalixMessage(item:String,ticketFk:String,quantity:String,salePerson:String)
{
private fun sendSalixMessage(
item: String,
ticketFk: String,
quantity: String,
salePerson: String
) {
val ticket =
"[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message =
@ -568,7 +675,6 @@ class CollectionFragment(
// SalesSorter()
saleAdapter =
SaleAdapter(sales, pasillerosItemClickListener!!, object : OnQuantityClickListener {
@ -594,7 +700,9 @@ class CollectionFragment(
markLine(index, type)
//////Log.i("VERDNATURA:","marcamos linea")
} else if (type == SACADOR) {
if (sale.isPrepared == "0") {
Log.d("VERDNATURA", "El tipo es sacador")
Log.d("VERDNATURA", "La sale es" + sale.isPrepared)
if (sale.isPrepared == "0" || sale.isPrepared.isNullOrEmpty()) {
showScanner(index, sale)
} else {
unMarkLine(index, OK)
@ -609,12 +717,18 @@ class CollectionFragment(
}, object : OnMistakeClickListener {
override fun onMistakeClickListener(sale: SaleVO) {
if (type != "PRECHECKER") {
if (binding.splashProgress != null) binding.splashProgress.visibility = View.VISIBLE
if (binding.splashProgress != null) binding.splashProgress.visibility =
View.VISIBLE
mistakeSale = sale
viewModel.mistakeType(usuario = user, password = password)
}
}
})
}, object : onPackingClickListener {
override fun onPackingClick(sale: SaleVO) {
item_updatePackingShelve(sale.itemFk)
}
}
)
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.fragmentSacadorCollections.adapter = saleAdapter
@ -634,7 +748,8 @@ class CollectionFragment(
}
private fun setScrollListener(lm: LinearLayoutManager) {
binding.fragmentSacadorCollections.addOnScrollListener(object : RecyclerView.OnScrollListener() {
binding.fragmentSacadorCollections.addOnScrollListener(object :
RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
storedBackPosition = lm.findFirstVisibleItemPosition()
super.onScrolled(recyclerView, dx, dy)
@ -663,13 +778,23 @@ class CollectionFragment(
if (type == SACADOR) {
for (saleVO in sales) {
//sergio: pita si encuentra ticket
//////Log.i("VERDNATURA:","SE busca en sales ${saleVO.ticketFk}")
if (saleVO.ticketFk == txtscan) {
//sergio: pita si encuentra ticket o el saleGroupFk
//Log.i("VERDNATURA:","SE busca en sales ${saleVO.ticketFk}")
//canviar el titcket per salegroup i enviar a pako saleTracking_add (saleGroupFk) i refrescar pantalla.
d("El salegroup es " + saleVO.saleGroupFk)
if (saleVO.saleGroupFk == txtscan) {
// if (saleVO.ticketFk == txtscan ) {
isOk = true
if ((isOk) && mpok != null) mpok!!.start()
//Log.i("VERDNTURA","ENCONTRADO")
viewModel.saleTracking_add(
usuario = user,
password = password,
txtscan,
"saleTracking_add"
)
if ((isOk) && mpok != null) {
mpok!!.start()
}
break
}
@ -771,15 +896,28 @@ class CollectionFragment(
if (mpok != null) mpok!!.start()
getString(R.string.Ticketaparcado).toast(requireContext())
} else {
if (binding.splashProgress != null) binding.splashProgress.visibility = View.VISIBLE
if (binding.splashProgress != null) binding.splashProgress.visibility =
View.VISIBLE
storedPosition = 0
storedBackPosition = 0
if (type != PRECHECKER) {
viewModel.collectionTicketGet(user, password, txtscan, sectorFk, type,"collection_getTickets")
isMarking = false
viewModel.collectionTicketGet(
user,
password,
txtscan,
sectorFk,
type,
"collection_getTickets"
)
if (type.equals(CONTROLADOR)) {
viewModel.ticketOrCollection_checkFullyControlled(user, password, txtscan,"ticketOrCollection_checkFullyControlled")
viewModel.ticketOrCollection_checkFullyControlled(
user,
password,
txtscan,
"ticketOrCollection_checkFullyControlled"
)
}
} else {
binding.splashProgress.visibility = View.GONE
@ -853,7 +991,6 @@ class CollectionFragment(
}
private fun markLine(position: Int, newType: String) {
state = 0
//////Log.i("VERDNATURA:","Marcamos linea y enviamos saleTracking")
@ -876,6 +1013,7 @@ class CollectionFragment(
if (type != PRECHECKER) {
saleTrackingReplace(position, newType)
isMarking = true
}
// sergio: a borrar. Solo para hacer pruebas
@ -962,7 +1100,7 @@ class CollectionFragment(
(sales[position].quantity.toInt() - sales[position].pickedQuantity.toInt()).toString()
} catch (e: Exception) {
}
//////Log.i("VERDNATURA:","Aparece para enviar")
//Log.i("VERDNATURA:","Aparece para enviar")
viewModel.itemPlacementSupplyAiming(
usuario = user,
password = password,
@ -1014,14 +1152,18 @@ class CollectionFragment(
// Log.i("VERDATURA","Le pasamos el siguiente item $originalItemScan que es el escaneado")
if (checkItemScan(customDialogList.getValueTwo())) {
onQuantityOfShelvingSelected(itemShelvingFk)
//////Log.i("VERDNATURA:","Cantidad seleccionada")
//Log.i("VERDNATURA:","Cantidad seleccionada")
mpok?.start()
ReviewQuantityForRefreshingAndSorting(customDialogList.getValue().toInt(),sales[storedPosition].quantity.toInt(),
sales[storedPosition].pickedQuantity.toInt())
ReviewQuantityForRefreshingAndSorting(
customDialogList.getValue().toInt(),
sales[storedPosition].quantity.toInt(),
sales[storedPosition].pickedQuantity.toInt()
)
customDialogList.dismiss()
} else {
itemShelvingFkStored = itemShelvingFk
if (binding.splashProgress != null) binding.splashProgress.visibility = View.VISIBLE
if (binding.splashProgress != null) binding.splashProgress.visibility =
View.VISIBLE
viewModel.getIdFromCode(
usuario = user,
password = password,
@ -1072,18 +1214,20 @@ class CollectionFragment(
if (customDialogList.getValueTwo().isNotEmpty()) {
try {
if (isNumber(customDialogList.getValue()) && customDialogList.getValue()
.toInt() > total.toInt())
{
.toInt() > total.toInt()
) {
"La cantidad supera a la disponible".toast(requireContext())
}
else if (isNumber(customDialogList.getValue())) {
} else if (isNumber(customDialogList.getValue())) {
originalItemScan = customDialogList.getValueTwo()
if (checkItemScan(customDialogList.getValueTwo())) {
onQuantityOfShelvingSelected(itemShelvingFk)
mpok?.start()
ReviewQuantityForRefreshingAndSorting(customDialogList.getValue().toInt(),sales[storedPosition].quantity.toInt(),
sales[storedPosition].pickedQuantity.toInt())
ReviewQuantityForRefreshingAndSorting(
customDialogList.getValue().toInt(),
sales[storedPosition].quantity.toInt(),
sales[storedPosition].pickedQuantity.toInt()
)
// SalesSorter(sales)
customDialogList.dismiss()
@ -1150,12 +1294,18 @@ class CollectionFragment(
Log.i("VERDNATURA::","Total"+quantityTotal)
Log.i("VERDNATURA::","Now picked"+quantityPicked)*/
if (quantityPicked<quantityTotal)
{
if (quantityPicked < quantityTotal) {
// SalesSorter()
// Log.i("VERDNATURA::","Lanzamos collection para que refresque adaptador y ordene")
viewModel.collectionTicketGet(user, password, collection.collectionFk, sectorFk, type,"collection_getTickets")
viewModel.collectionTicketGet(
user,
password,
collection.collectionFk,
sectorFk,
type,
"collection_getTickets"
)
}
@ -1290,7 +1440,8 @@ class CollectionFragment(
) {
getString(R.string.Todosloscampossonobligatorios).toast(requireContext())
} else {
if (binding.splashProgress != null) binding.splashProgress.visibility = View.VISIBLE
if (binding.splashProgress != null) binding.splashProgress.visibility =
View.VISIBLE
//sergio datos para mensaje salix
@ -1346,7 +1497,8 @@ class CollectionFragment(
) {
getString(R.string.Todosloscampossonobligatorios).toast(requireContext())
} else {
if (binding.splashProgress != null) binding.splashProgress.visibility = View.VISIBLE
if (binding.splashProgress != null) binding.splashProgress.visibility =
View.VISIBLE
dataMessageSalix = DataMessageSalix(
ticket = ticketSelected,
@ -1460,6 +1612,7 @@ class CollectionFragment(
}
private fun setTotalLines() {
// Log.d("VERDNTURA::","el itempacking ggg es "+collection.tickets.get(0).itemPackingTypeFk)
var totalMark = 0
sales.forEach {
if (type == SACADOR) {
@ -1471,6 +1624,7 @@ class CollectionFragment(
} else if (type == CONTROLADOR || type == PRECHECKER) {
if (it.isControlled == "1" || it.isControlled == "2")
totalMark += 1
}
}
//toolbar_title.text = "" + totalMark + "/" + sales.size
@ -1480,14 +1634,149 @@ class CollectionFragment(
"" + totalMark + "/" + sales.size
if (totalMark == sales.size) {
getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT)
showBottomNavigation(View.VISIBLE)
ticketCollection_setUsedShelves()
//showBottomNavigation(View.VISIBLE)
//sergio: se quita porque se realiza desde triggers
//changeTicketState()
}
}
private fun showBottomNavigation(visibilitiy:Int)
{
private fun ticketCollection_setUsedShelves() {
// Log.d("VERDNATURA::","la descrip es "+SectorDescription.first())
if (type.equals("CHECKER") && isMarking && !SectorDescription.first().uppercaseChar()
.equals('V')
) {
customDialogInput.setTitle("Número de baldas del ticket")
.setDescription("Indica el número de baldas que ocupa el ticket")
.setOkButton("Aceptar") {
if (!customDialogInput.getValue().isNullOrEmpty()) {
binding.splashProgress.visibility = VISIBLE
viewModel.ticketCollection_setUsedShelves(
usuario = user,
password = password,
ticketFk = collection.collectionFk,
usedShelves = customDialogInput.getValue(),
"ticketCollection_setUsedShelves"
)
hideKeyboards()
// showKeyboards()
}
customDialogInput.setValue("")
customDialogInput.dismiss()
showKeyboards()
//hideKeyboards()
//showKeyboards()
}.setKoButton("Cancelar") {
customDialogInput.dismiss()
// hideKeyboards()
showKeyboards()
}.setValue("").show()
customDialogInput.setInputText()
// customDialogInput.currentFocus
customDialogInput.setFocusText()
showKeyboards()
customDialogInput.getEditText().setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
if (!customDialogInput.getValue().isNullOrEmpty()) {
binding.splashProgress.visibility = VISIBLE
viewModel.ticketCollection_setUsedShelves(
usuario = user,
password = password,
ticketFk = collection.collectionFk,
usedShelves = customDialogInput.getValue(),
"ticketCollection_setUsedShelves"
)
hideKeyboards()
}
customDialogInput.setValue("")
scanRequest()
customDialogInput.dismiss()
hideKeyboards()
return@setOnEditorActionListener true
}
false
}
}
}
private fun item_updatePackingShelve(itemFk: String) {
isMarking = false
customDialogInput.setTitle("Número de paquetes en balda")
.setDescription("Indica el número de paquetes que caben en una balda")
.setOkButton("Aceptar") {
if (!customDialogInput.getValue().isNullOrEmpty()) {
binding.splashProgress.visibility = VISIBLE
viewModel.item_updatePackingShelve(
usuario = user,
password = password,
vSelf = itemFk,
vPacking = customDialogInput.getValue(),
"item_updatePackingShelve"
)
hideKeyboards()
//showKeyboards()
}
customDialogInput.setValue("")
customDialogInput.dismiss()
// hideKeyboards()
showKeyboards()
}.setKoButton("Cancelar") {
customDialogInput.dismiss()
//hideKeyboards()
showKeyboards()
}.setValue("").show()
customDialogInput.setInputText()
customDialogInput.currentFocus
customDialogInput.setFocusText()
showKeyboards()
customDialogInput.getEditText().setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
if (!customDialogInput.getValue().isNullOrEmpty()) {
binding.splashProgress.visibility = VISIBLE
viewModel.ticketCollection_setUsedShelves(
usuario = user,
password = password,
ticketFk = collection.collectionFk,
usedShelves = customDialogInput.getValue(),
"ticketCollection_setUsedShelves"
)
}
customDialogInput.setValue("")
scanRequest()
customDialogInput.dismiss()
hideKeyboards()
return@setOnEditorActionListener true
}
false
}
}
private fun showBottomNavigation(visibilitiy: Int) {
//requireActivity().main_bottom_navigation.visibility = visibilitiy
}
@ -1496,7 +1785,11 @@ class CollectionFragment(
// //Log.i("VERDNATURA:","Aparece CustomDialog")
customDialogThreeButtons.setDescription(getString(R.string.txtnuevacantidad)).setValue("")
.setOkButton(getString(R.string.Faltas)) {
checkAndCall(position,customDialogThreeButtons.getValue(),getString(R.string.Faltas))
checkAndCall(
position,
customDialogThreeButtons.getValue(),
getString(R.string.Faltas)
)
/*if (customDialogThreeButtons.getValue().trim().isNullOrEmpty()) {
getString(R.string.Indicanuevacantidad).toast(requireContext())
} else {
@ -1506,7 +1799,11 @@ class CollectionFragment(
}*/
}.setOkButtonTwo(getString(R.string.BasuraRechazar)) {
checkAndCall(position,customDialogThreeButtons.getValue(),getString(R.string.BasuraRechazar))
checkAndCall(
position,
customDialogThreeButtons.getValue(),
getString(R.string.BasuraRechazar)
)
/* if (customDialogThreeButtons.getValue().trim().isNullOrEmpty()) {
getString(R.string.Indicanuevacantidad).toast(requireContext())
} else {
@ -1515,7 +1812,11 @@ class CollectionFragment(
customDialogThreeButtons.dismiss()
}*/
}.setOkButtonThree(getString(R.string.Reject)) {
checkAndCall(position,customDialogThreeButtons.getValue(),getString(R.string.Reject))
checkAndCall(
position,
customDialogThreeButtons.getValue(),
getString(R.string.Reject)
)
/* if (customDialogThreeButtons.getValue().trim().isNullOrEmpty()) {
getString(R.string.Indicanuevacantidad).toast(requireContext())
} else {
@ -1525,7 +1826,11 @@ class CollectionFragment(
}*/
}.setOkButtonFour(getString(R.string.Split)) {
checkAndCall(position,customDialogThreeButtons.getValue(),getString(R.string.Split))
checkAndCall(
position,
customDialogThreeButtons.getValue(),
getString(R.string.Split)
)
/*if (customDialogThreeButtons.getValue().trim().isNullOrEmpty()) {
getString(R.string.Indicanuevacantidad).toast(requireContext())
@ -1536,7 +1841,11 @@ class CollectionFragment(
}*/
}.setOkButtonAdd(getString(R.string.Agregar)) {
checkAndCall(position,customDialogThreeButtons.getValue(),getString(R.string.Agregar))
checkAndCall(
position,
customDialogThreeButtons.getValue(),
getString(R.string.Agregar)
)
/* if (customDialogThreeButtons.getValue().trim().isNullOrEmpty()) {
getString(R.string.Indicanuevacantidad).toast(requireContext())
} else {
@ -1568,6 +1877,7 @@ class CollectionFragment(
customDialogThreeButtons.dismiss()
}
}
private fun split(position: Int, quantity: String) {
var totalQuantity: Int = 0
try {
@ -1675,6 +1985,7 @@ class CollectionFragment(
}
private fun reject(position: Int, quantity: String) {
positionReject = position
var totalQuantity: Int = 0
try {
totalQuantity = sales[position].quantity.toInt() - quantity.toInt()
@ -1687,16 +1998,18 @@ class CollectionFragment(
quantity = totalQuantity.toString(),
warehouseFk = warehouseFk,
type = "reject",
originalQuantity = quantity
,callFunction = "collectionMissingTrash")
originalQuantity = quantity, callFunction = "collectionMissingTrash"
)
//sales[position].originalQuantity = quantity
sales[position].quantity = quantity
//sales[position].startQuantity = quantity
saleAdapter!!.notifyDataSetChanged()
// saleAdapter!!.notifyDataSetChanged()
if (quantity == "0")
markLine(position, type)
/*
//enviar mensaje a salix
val ticket =
"[" + sales[position].ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + sales[position].ticketFk + "/summary)"
@ -1706,8 +2019,22 @@ class CollectionFragment(
token = token,
workerId = sales[position].salePersonFk,
message = message, "sendChekingPresence"
)
)*/
}
private fun missingTrashSuccesful() {
saleAdapter!!.notifyDataSetChanged()
val ticket =
"[" + sales[positionReject].ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + sales[positionReject].ticketFk + "/summary)"
val message =
"Se ha modificado la cantidad original " + sales[positionReject].originalQuantity + " del artículo " + sales[positionReject].itemFk + " a nueva cantidad: " + sales[positionReject].quantity + " del ticket " + ticket
sendSalixMessageNew(ticket, message, sales[positionReject].salePersonFk)
}
private fun incresaseSuccesful() {
try {
//val quantityPicked = (quantity.toInt() - sales[position].quantity.toInt()).toString()
@ -1720,18 +2047,37 @@ class CollectionFragment(
}
saleAdapter?.notifyDataSetChanged()
//enviar mensaje a salix
val ticket =
"[" + sales[positionIncreaseQuantity].ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + sales[positionIncreaseQuantity].ticketFk + "/summary)"
val message =
"Se ha modificado la cantidad original " + sales[positionIncreaseQuantity].originalQuantity + " del artículo " + sales[positionIncreaseQuantity].itemFk + " a nueva cantidad: " + sales[positionIncreaseQuantity].quantity + " del ticket " + ticket
sendSalixMessageNew(ticket, message, sales[positionIncreaseQuantity].salePersonFk)
/* val ticket =
"[" + sales[positionIncreaseQuantity].ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + sales[positionIncreaseQuantity].ticketFk + "/summary)"
val message =
"Se ha modificado la cantidad original " + sales[positionIncreaseQuantity].originalQuantity + " del artículo " + sales[positionIncreaseQuantity].itemFk + " a nueva cantidad: " + sales[positionIncreaseQuantity].quantity + " del ticket " + ticket
viewModel.sendChekingPresence(
token = token,
workerId = sales[positionIncreaseQuantity].salePersonFk,
message = message, "sendChekingPresence"
)
)*/
}
private fun sendSalixMessageNew(ticket: String, message: String, workerId: String) {
viewModel.sendChekingPresence(
token = token,
workerId = workerId,
message = message + ticket,
"sendChekingPresence"
)
}
private fun increaseQuantity(position: Int, quantity: String) {
positionIncreaseQuantity = position
quantityIncrease = quantity
@ -1794,6 +2140,8 @@ class CollectionFragment(
//OTROS
private fun showScanner(index: Int, sale: SaleVO) {
Log.d("VERDNATURA", "Entrant en el show scanner al punxar sobre la sale")
customDialogInput.setTitle("" + sale.itemFk)
.setDescription(getString(R.string.Escaneaelcarroparaelitemseleccionado))
.setOkButton("Aceptar") {

View File

@ -40,6 +40,18 @@ class CollectionViewModel(context: Context) : BaseViewModel()
val response: LiveData<ResponseItemVO>
get() = _response
private val _responseUsedShelves by lazy { MutableLiveData<ResponseItemVO>() }
val responseUsedShelves: LiveData<ResponseItemVO>
get() = _responseUsedShelves
private val _responseItem_updatePackingShelve by lazy { MutableLiveData<ResponseItemVO>() }
val responseItem_updatePackingShelve: LiveData<ResponseItemVO>
get() = _responseItem_updatePackingShelve
private val _responseSaleGroup by lazy { MutableLiveData<ResponseItemVO>() }
val responseSaleGroup: LiveData<ResponseItemVO>
get() = _responseSaleGroup
private val _responsecheckfully by lazy { MutableLiveData<ResponseItemVO>() }
val responsecheckfully: LiveData<ResponseItemVO>
get() = _responsecheckfully
@ -115,6 +127,9 @@ class CollectionViewModel(context: Context) : BaseViewModel()
})
}
fun saleTrackingReplace(
usuario: String,
password: String,
@ -283,6 +298,113 @@ class CollectionViewModel(context: Context) : BaseViewModel()
})
}
fun ticketCollection_setUsedShelves(
usuario: String,
password: String,
ticketFk: String,
usedShelves: String,
callFunction:String)
{
getSacadorControladorUserCase.ticketCollection_setUsedShelves(
usuario,
password,
ticketFk,
usedShelves
).enqueue(object : Callback<Void>
{
override fun onFailure(call: Call<Void>, t: Throwable)
{
_responseUsedShelves.value = ResponseItemVO(isError = true, errorMessage = getMessageFromAllResponse(callFunction,t.message!!))
}
override fun onResponse(call: Call<Void>, response: Response<Void>)
{
if (!response.isSuccessful)
{
_responseUsedShelves.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(callFunction,response.message())
)
} else
{
_responseUsedShelves.value = ResponseItemVO(isError = false)
}
}
})
}
fun item_updatePackingShelve(
usuario: String,
password: String,
vSelf: String,
vPacking: String,
callFunction:String)
{
getSacadorControladorUserCase.item_updatePackingShelve(
usuario,
password,
vSelf,
vPacking
).enqueue(object : Callback<Void>
{
override fun onFailure(call: Call<Void>, t: Throwable)
{
_responseItem_updatePackingShelve.value = ResponseItemVO(isError = true, errorMessage = getMessageFromAllResponse(callFunction,t.message!!))
}
override fun onResponse(call: Call<Void>, response: Response<Void>)
{
if (!response.isSuccessful)
{
_responseItem_updatePackingShelve.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(callFunction,response.message())
)
} else
{
_responseItem_updatePackingShelve.value = ResponseItemVO(isError = false)
}
}
})
}
fun saleTracking_add(
usuario: String,
password: String,
saleGroupFk: String,
callFunction:String)
{
getSacadorControladorUserCase.saleTracking_add(
usuario,
password,
saleGroupFk
).enqueue(object : Callback<Void>
{
override fun onFailure(call: Call<Void>, t: Throwable)
{
_responseSaleGroup.value = ResponseItemVO(isError = true, errorMessage = getMessageFromAllResponse(callFunction,t.message!!))
}
override fun onResponse(call: Call<Void>, response: Response<Void>)
{
if (!response.isSuccessful)
{
_responseSaleGroup.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(callFunction,response.message())
)
} else
{
_responseSaleGroup.value = ResponseItemVO(isError = false)
}
}
})
}
/* fun itemGetAvailable(usuario: String, password: String, itemFk: String, warehouseFk: String,callFunction:String)
{
getSacadorControladorUserCase.itemGetAvailable(usuario, password, itemFk, warehouseFk)

View File

@ -0,0 +1,332 @@
package es.verdnatura.presentation.view.feature.collection.fragment
import android.content.Context
import android.content.SharedPreferences
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.inputmethod.EditorInfo
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import es.verdnatura.R
import es.verdnatura.databinding.FragmentCollectionBinding
import es.verdnatura.domain.ConstAndValues.CONTROLADOR
import es.verdnatura.domain.ConstAndValues.PRECHECKER
import es.verdnatura.domain.ConstAndValues.SACADOR
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.VERTICKET
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.collection.adapter.SaleAdapter
import es.verdnatura.presentation.view.feature.inventario.adapter.ToolBarAdapter
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
import timber.log.Timber.d
class CollectionShowTicketFragment(
var collection: CollectionVO = CollectionVO(),
var type: String = VERTICKET
) : BaseFragment<FragmentCollectionBinding, CollectionViewModel>(CollectionViewModel::class) {
private var user = ""
private var password = ""
private var sectorFk = ""
private var warehouseFk = ""
private var SectorDescription = ""
private var token = ""
private var voz = ""
private var sales: List<SaleVO> = listOf()
private var saleAdapter: SaleAdapter? = null
private var lm: LinearLayoutManager? = null
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
private lateinit var customDialog: CustomDialog
private var tickets: ArrayList<String> = ArrayList()
private var state = 0
companion object {
fun newInstance(collection: CollectionVO, type: String) =
CollectionShowTicketFragment(collection, type)
}
override fun onAttach(context: Context) {
if (context is OnPasillerosItemClickListener) pasillerosItemClickListener = context
super.onAttach(context)
}
override fun getLayoutId(): Int = R.layout.fragment_collection
override fun onCreate(savedInstanceState: Bundle?) {
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
token = prefs.getString(TOKEN, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
voz = prefs.getString(VOZ, "NO").toString()
SectorDescription = prefs.getString(SECTORDESCRIP, "Sin Sector").toString()
if (collection.tickets.isEmpty()) {
viewModel.collectionTicketGet(
user,
password,
collection.collectionFk,
sectorFk,
type,
"collection_getTickets"
)
}
super.onCreate(savedInstanceState)
}
override fun init() {
customDialog = CustomDialog(requireContext())
(activity as MainActivity).hideBottomNavigation(GONE)
binding.splashProgress.visibility = VISIBLE
setEvents()
setToolBarIcon()
binding.mainToolbar.toolbarSubtitle.visibility = VISIBLE
if (collection.tickets.isNotEmpty()) {
createCollectionList()
}
super.init()
}
private fun setToolBarIcon() {
binding.mainToolbar.toolbarSubtitle.visibility = VISIBLE
val listIcons: ArrayList<Drawable> = ArrayList()
val iconPrint: Drawable =
resources.getDrawable(R.drawable.ic_print_black_24dp, resources.newTheme())
listIcons.add(iconPrint)
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapter(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
if (item == iconPrint) {
print()
}
}
})
binding.mainToolbar.toolbarIcons.layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
}
private fun print() {
viewModel.collectionStickerPrint(
usuario = user,
password = password,
collectionFk = collection.collectionFk,
sectorFk = sectorFk,
"collectionStickerPrint"
)
(getString(R.string.Imprimiendo) + " por " + SectorDescription).toast(requireContext())
}
private fun setEvents() {
binding.mainToolbar.backButton.setOnClickListener {
requireActivity().onBackPressed()
}
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
binding.splashProgress.visibility = VISIBLE
viewModel.collectionTicketGet(
user,
password,
binding.scanInput.text.toString(),
sectorFk,
type, "collection_getTickets"
)
}
binding.scanInput.setText("")
hideKeyboards()
return@setOnEditorActionListener true
}
true
}
hideKeyboards()
binding.collectionSwipe.setOnRefreshListener {
binding.collectionSwipe.isRefreshing = false
binding.splashProgress.visibility = VISIBLE
viewModel.collectionTicketGet(
user,
password,
collection.collectionFk,
sectorFk,
type, "collection_getTickets"
)
binding.collectionSwipe.isRefreshing = false
}
}
private fun hideKeyboards() {
try {
requireActivity().hideKeyboard()
} catch (e: Exception) {
}
}
override fun observeViewModel() {
with(viewModel) {
binding.splashProgress.visibility = GONE
collectionTicketList.observe(viewLifecycleOwner, Observer {
if (!it.isError) {
if (it.tickets.isNotEmpty()) {
collection = it
createCollectionList()
} else {
binding.mainToolbar.toolbarSubtitle.text = "0/0"
}
} else {
customDialog.setTitle("Error").setDescription(it.errorMessage)
.setOkButton("Aceptar") {
customDialog.dismiss()
if (activity != null) requireActivity().onBackPressed()
}.show()
}
})
}
}
private fun createCollectionList() {
state = 0
binding.mainToolbar.toolbarTitle.text = collection.collectionFk
binding.splashProgress.visibility = View.GONE
var salesList: ArrayList<SaleVO> = ArrayList()
tickets = ArrayList()
var observations = ""
collection.tickets.forEach { ticket ->
ticket.sales.forEach { saleVO ->
if (type == SACADOR && saleVO.quantity != "0") {
salesList.add(saleVO)
if (tickets.firstOrNull { it == saleVO.ticketFk }.isNullOrEmpty())
tickets.add(saleVO.ticketFk)
} else if (type == CONTROLADOR || type == PRECHECKER || type == VERTICKET) {
salesList.add(saleVO)
if (tickets.firstOrNull { it == saleVO.ticketFk }.isNullOrEmpty())
tickets.add(saleVO.ticketFk)
}
}
observations = observations + " " + ticket.observations
}
sales = salesList.sortedWith(compareBy({ it.saleOrder }))
saleAdapter =
SaleAdapter(sales, pasillerosItemClickListener!!, object : OnQuantityClickListener {
override fun onQuantityClick(sale: SaleVO) {
}
}, object : OnSaleClickListener {
override fun onSaleClick(sale: SaleVO) {
}
}, object : OnMistakeClickListener {
override fun onMistakeClickListener(sale: SaleVO) {
}
},object : onPackingClickListener{
override fun onPackingClick(sale: SaleVO) {
}
}
)
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.fragmentSacadorCollections.adapter = saleAdapter
binding.fragmentSacadorCollections.layoutManager = lm
setTotalLines()
printObservations(observations)
binding.scanInput.requestFocus()
}
private fun printObservations(observations: String) {
if (observations.trim().isNotEmpty()) {
customDialog.setTitle("Observaciones").setDescription(observations)
.setOkButton("Aceptar") {
customDialog.hide()
customDialog.dismiss()
}.show()
}
}
/* private fun setListPosition(position: Int, isFromBack: Boolean) {
storedPosition = position
if (type == SACADOR) {
if (binding.fragmentSacadorCollections != null) {
binding.fragmentSacadorCollections.addViewObserver {
lm!!.scrollToPositionWithOffset(position, 0)
}
}
} else if (isFromBack) {
if (binding.fragmentSacadorCollections != null) {
binding.fragmentSacadorCollections.addViewObserver {
lm!!.scrollToPositionWithOffset(position, 0)
}
}
}
}*/
private fun setTotalLines() {
var totalMark = 0
sales.forEach {
if (type == SACADOR) {
if (it.isPrepared == "1" || it.isControlled == "1" || it.isPreviousPrepared == "1") {
totalMark += 1
} else if (it.quantity == "0") {
totalMark += 1
}
} else if (type == CONTROLADOR || type == PRECHECKER) {
if (it.isControlled == "1" || it.isControlled == "2")
totalMark += 1
}
}
binding.mainToolbar.toolbarTitle.text =
collection.collectionFk
if (sales != null) binding.mainToolbar.toolbarSubtitle.text =
"" + totalMark + "/" + sales.size
if (totalMark == sales.size) {
getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT)
}
}
}

View File

@ -18,6 +18,7 @@ fun CollectionVO.map(): CollectionVO {
it.agencyName = ticket.agencyName
it.isNew = it.isAdded == "1"
// sergio: OBLIGAR A ACTUALIZAR VERSIÓN PARA SUBIR DESPUÉS FICHEROS DEL BACK collection_getTickets al mismo tiempo")
//it.quantity = it.quantity.substring(0, it.quantity.indexOf("."))

View File

@ -3,19 +3,19 @@ package es.verdnatura.presentation.view.feature.controlador.fragment
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentControladorBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnCollectionSelectedListener
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import timber.log.Timber.d
import timber.log.Timber.i
/*
import kotlinx.android.synthetic.main.activity_main.*
@ -23,7 +23,8 @@ import kotlinx.android.synthetic.main.fragment_controlador.*
import kotlinx.android.synthetic.main.toolbar.*
*/
class ControladorFragment : BaseFragment<FragmentControladorBinding,ControladorViewModel>(ControladorViewModel::class) {
class ControladorFragment :
BaseFragment<FragmentControladorBinding, ControladorViewModel>(ControladorViewModel::class) {
private var user = ""
private var password = ""
@ -50,7 +51,6 @@ class ControladorFragment : BaseFragment<FragmentControladorBinding,ControladorV
customDialog = CustomDialog(requireContext())
binding.mainToolbar.toolbarTitle.text = getString(R.string.controlticket)
setEvents()
//requireActivity().main_bottom_navigation.visibility = View.VISIBLE
(activity as MainActivity).hideBottomNavigation(View.VISIBLE)
super.init()
}
@ -65,8 +65,8 @@ class ControladorFragment : BaseFragment<FragmentControladorBinding,ControladorV
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK, 60).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
type = ConstAndValues.CONTROLADOR
@ -74,7 +74,6 @@ class ControladorFragment : BaseFragment<FragmentControladorBinding,ControladorV
}
private fun setEvents() {
binding.mainToolbar.backButton.setOnClickListener {
requireActivity().onBackPressed()
}
@ -82,18 +81,28 @@ class ControladorFragment : BaseFragment<FragmentControladorBinding,ControladorV
binding.scanInput.requestFocus()
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
d("Action id "+actionId)
// d("Action id "+actionId)
goBack = false
if (!binding.scanInput.text.isNullOrEmpty()) {
binding.splashProgress.visibility = View.VISIBLE
//sergio: para ver si ha marcado dos veces el mismo ticket
if (binding.scanInput.text!!.length > 13) {
var size = binding.scanInput.text!!.length
if (binding.scanInput.text!!.substring((size / 2), size).equals(binding.scanInput.text!!.substring( 0,size / 2))){
binding.scanInput.setText(binding.scanInput.text!!.substring(0, size / 2))
}
}
viewModel.collectionTicketGet(
usuario = user,
password = password,
sectorFk = sectorFk,
collectionFk = binding.scanInput.text.toString(),
type = type
,callFunction = "collection_getTickets")
type = type, callFunction = "collection_getTickets"
)
// viewModel.ticket_checkControlled(user,password,scan_input.text.toString())
}
binding.scanInput.setText("")
@ -109,7 +118,8 @@ class ControladorFragment : BaseFragment<FragmentControladorBinding,ControladorV
collectionTicketList.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = View.GONE
if (it.isError) {
customDialog.setTitle("Error").setDescription(it.errorMessage).setOkButton("Aceptar"){
customDialog.setTitle("Error").setDescription(it.errorMessage)
.setOkButton("Aceptar") {
customDialog.dismiss()
}.show()
} else {
@ -129,6 +139,4 @@ class ControladorFragment : BaseFragment<FragmentControladorBinding,ControladorV
}
}

View File

@ -1,6 +1,7 @@
package es.verdnatura.presentation.view.feature.controlador.fragment
import android.content.Context
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import es.verdnatura.domain.GetSacadorControladorUserCase
@ -38,8 +39,13 @@ class ControladorViewModel(context: Context) : BaseViewModel() {
response: Response<CollectionVO>
) {
if (response.body() != null){
_collectionTicketList.value = response.body()?.let { it.map()
}
/* response.body()?.let {
Log.d("VERDNTURA::","el itempacking es "+it.tickets.get(0).itemPackingTypeFk)
}.also { }*/
}else{

View File

@ -10,6 +10,8 @@ import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentWebBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.view.component.CustomDialog
@ -96,8 +98,8 @@ class WebFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
type = ConstAndValues.PRECHECKER
super.onCreate(savedInstanceState)
}

View File

@ -12,6 +12,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentVehiclecontrolBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -234,8 +236,8 @@ class ControlVehiculoFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
userFk = prefs.getString(USERFK, "0").toString()
super.onCreate(savedInstanceState)
}

View File

@ -6,6 +6,8 @@ import android.view.View.*
import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentVehiclecontrolUserBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.loadUrl
import es.verdnatura.presentation.view.component.CustomDialog
@ -56,7 +58,7 @@ class ControlVehiculoUsuarioFragment(
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
token = prefs.getString(TOKEN, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
android_id = getANDROIDID()
if (userFk.equals(vUserFK)) {
@ -87,8 +89,8 @@ class ControlVehiculoUsuarioFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
userFk = prefs.getString(USERFK, "0").toString()
super.onCreate(savedInstanceState)
}

View File

@ -11,6 +11,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentItemdayofsaleCardBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnOptionsSelectedListener
@ -118,7 +119,7 @@ class DayOfSaleFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
binding.splashProgress.visibility = View.VISIBLE
viewModel.itemShelving_getSaleDate(user, password,vShelvingFK,"itemShelving_getSaleDate")

View File

@ -10,6 +10,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentFaltasBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnFaltasNichoClickListener
import es.verdnatura.presentation.common.OnFaltasReviewClickListener
@ -55,8 +56,8 @@ class FaltasFragment : BaseFragment<FragmentFaltasBinding, FaltasViewModel>(Falt
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,60).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
viewModel.getFaltas(user,password,warehouseFk)
super.onCreate(savedInstanceState)
}

View File

@ -20,6 +20,8 @@ import es.verdnatura.R
import es.verdnatura.R.color.verdnatura_pumpkin_orange
import es.verdnatura.R.color.verdnatura_white
import es.verdnatura.databinding.FragmentHistoricoBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnOptionsSelectedListener
@ -61,8 +63,8 @@ class HistoricoArticuloFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
(activity as MainActivity).hideBottomNavigation(View.GONE)

View File

@ -7,6 +7,7 @@ package es.verdnatura.presentation.view.feature.historicoshelving.fragment
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentItemshelvinglogBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
@ -89,7 +90,7 @@ class itemShelvingLogFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
binding.splashProgress.visibility = View.VISIBLE
viewModel.itemShelvingLog_get(user, password,vShelvingFK,"itemShelvingLog_get")

View File

@ -7,6 +7,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentShelvinglogBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.view.component.CustomDialog
@ -93,7 +94,7 @@ class shelvingLogFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
binding.splashProgress.visibility = View.VISIBLE
viewModel.shelvingLog_get(user, password,vShelvingFK,"shelvingLog_get")

View File

@ -7,6 +7,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentHistoricovehiculoBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.view.component.CustomDialog
@ -49,8 +51,8 @@ class HistoricoVehiculoFragment (
user = prefs.getString(USER,"").toString()
userFk=prefs.getString(USERFK,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
(activity as MainActivity).hideBottomNavigation(View.GONE)

View File

@ -3,6 +3,7 @@ package es.verdnatura.presentation.view.feature.main.activity
//import kotlinx.android.synthetic.main.activity_main.*
import android.content.SharedPreferences
import android.media.MediaPlayer
import android.util.Log.d
import android.view.Menu
import android.widget.Toast
import androidx.core.content.ContextCompat
@ -25,6 +26,7 @@ import es.verdnatura.presentation.view.feature.buscaritem.fragment.BuscarItemFra
import es.verdnatura.presentation.view.feature.calidad.fragment.BuyersFragment
import es.verdnatura.presentation.view.feature.calidad.fragment.QaualityFragment
import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragment
import es.verdnatura.presentation.view.feature.collection.fragment.CollectionShowTicketFragment
import es.verdnatura.presentation.view.feature.controlador.fragment.ControladorFragment
import es.verdnatura.presentation.view.feature.controlador.fragment.WebFragment
import es.verdnatura.presentation.view.feature.controlvehiculo.fragment.ControlVehiculoFragment
@ -41,14 +43,17 @@ import es.verdnatura.presentation.view.feature.paletizador.fragment.*
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO
import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO
import es.verdnatura.presentation.view.feature.parking.fragment.ParkingFragment
import es.verdnatura.presentation.view.feature.parking.fragment.ParkingSaleFragment
import es.verdnatura.presentation.view.feature.pasillero.fragment.PasilleroFragment
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import es.verdnatura.presentation.view.feature.precontrol.PreControladorFragment
import es.verdnatura.presentation.view.feature.precontrol.ShowTicketFragment
import es.verdnatura.presentation.view.feature.presacador.fragment.PreSacadorFragment
import es.verdnatura.presentation.view.feature.qr.QrFragment
import es.verdnatura.presentation.view.feature.reposicion.fragment.ReposicionFragment
import es.verdnatura.presentation.view.feature.sacador.fragment.SacadorFragment
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
import es.verdnatura.presentation.view.feature.shelvingparking.fragment.ShelvingParkingFragment
import es.verdnatura.presentation.view.feature.smarttag.register.RegisterSmartTagsFragment
import es.verdnatura.presentation.view.feature.smarttag.sacador.fragment.AssociateSmartTagsFragment
@ -99,7 +104,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
}
}
private fun haveSector(): Boolean {
@ -333,7 +337,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
}
"Ver Ticket" -> {
addFragmentOnTop(PreControladorFragment.newInstance())
addFragmentOnTop(ShowTicketFragment.newInstance())
}
"Historial del vehículo" -> {
addFragmentOnTop(ControlVehiculoFragment.newInstance(HistoricoVehiculoFragment.TAG))
@ -354,12 +358,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
"Parking" -> {
addFragmentOnTop(ParkingFragment.newInstance())
}
"Buscar item" -> {
addFragmentOnTop(BuscarItemFragment.newInstance(entryPoint))
}
// "Buscar item full" -> {
// addFragmentOnTop(BuscarItemAllFragment.newInstance(entryPoint))
// }
"Historico" -> {
addFragmentOnTop(HistoricoArticuloFragment.newInstance(entryPoint))
@ -424,6 +427,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
}
"Histórico Shelving" -> {
addFragmentOnTop(itemShelvingLogFragment.newInstance("Histórico Shelving"))
d("VERDNATURA::", "es el historico ")
}
"Log Shelving" -> {
addFragmentOnTop(shelvingLogFragment.newInstance("Log Shelving"))
@ -486,10 +490,20 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
}
fun onParkingSaleSelected(sales: SaleVO) {
addFragmentOnTop(ParkingSaleFragment.newInstance(SaleVO = sales))
}
override fun onCollectionSelected(collection: CollectionVO, type: String) {
// fm.popBackStack()
addFragmentOnTop(CollectionFragment.newInstance(collection, type))
if (type.equals("SHOWTICKET")) {
addFragmentOnTop(CollectionShowTicketFragment.newInstance(collection, type))
} else {
addFragmentOnTop(CollectionFragment.newInstance(collection, type))
}
}
override fun onBuyerSelected(userFk: String) {
@ -529,18 +543,18 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
addFragmentOnTop(ExpeditionStateFragment.newInstance("main"))
}
fun hideBottomNavigation(visible: Int) {
binding.mainBottomNavigation.visibility = visible
}
fun messageWithSound(message:String,isSuccess:Boolean){
fun messageWithSound(message: String, isError: Boolean) {
if (isSuccess){
if (!isError) {
mpok?.start()
}
else{
mperror?.start()
message.toast(this, Toast.LENGTH_SHORT)
} else {
mperror?.start()
customDialog.setTitle("Error").setDescription(message)
.setOkButton("Aceptar") {
customDialog.dismiss()

View File

@ -12,6 +12,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentExpeditionPalletDetailBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
@ -63,8 +65,8 @@ class ExpeditionPalletDetailFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
SectorDescription=prefs.getString(SECTORDESCRIP,"Sin Sector").toString()

View File

@ -14,6 +14,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentExpeditionPalletBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
@ -72,8 +73,8 @@ class ExpeditionPalletFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,60).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
mperror = MediaPlayer.create((activity as MainActivity),R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity),R.raw.ok)
super.onCreate(savedInstanceState)

View File

@ -14,6 +14,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentExpeditionScanBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -68,8 +70,8 @@ class ExpeditionScanFragment (
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
mperror = MediaPlayer.create((activity as MainActivity),R.raw.error)
super.onCreate(savedInstanceState)

View File

@ -18,6 +18,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentItemexpeditionstateCardBinding
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnItemExpeditionStateRowClickListener
import es.verdnatura.presentation.view.component.CustomDialog
@ -95,7 +96,7 @@ class ExpeditionStateFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
// this.itemFk = itemFk
binding.splashProgress.visibility = View.VISIBLE
viewModel.expedition_getStateJSON(expeditionFk, user, password,"expedition_getState")

View File

@ -12,6 +12,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentExpeditionTruckListBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnOptionsSelectedListener
@ -54,8 +56,8 @@ class ExpeditionTruckListFragment : BaseFragment<FragmentExpeditionTruckListBin
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
super.onCreate(savedInstanceState)
}

View File

@ -11,6 +11,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentParkingBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
import es.verdnatura.presentation.common.hideKeyboard
@ -149,8 +151,8 @@ class ParkingFragment : BaseFragment<FragmentParkingBinding,ParkingViewModel>(Pa
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
mperror = MediaPlayer.create((activity as MainActivity),R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity),R.raw.ok)
super.onCreate(savedInstanceState)

View File

@ -0,0 +1,43 @@
/*package es.verdnatura.presentation.view.feature.parking.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import es.verdnatura.databinding.ItemBarcodeRowBinding
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
/*
class ParkingAdapter (
private val items: List<BarcodeVO>,
private val onBarcodeRowClickListener: OnBarcodeRowClickListener
): RecyclerView.Adapter<ParkingAdapter.ItemHolder> () {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
return ItemHolder(
ItemBarcodeRowBinding.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 {
onBarcodeRowClickListener.onBarcodeRowClickListener(items[position])
}
}
inner class ItemHolder(
val binding: ItemBarcodeRowBinding
) : RecyclerView.ViewHolder(binding.root){
fun bind(item: BarcodeVO) {
binding.apply {
this.item = item
}
}
}
}
*/

View File

@ -0,0 +1,167 @@
package es.verdnatura.presentation.view.feature.parking.fragment
/*import kotlinx.android.synthetic.main.fragment_parking.*
import kotlinx.android.synthetic.main.toolbar.**/
import android.content.SharedPreferences
import android.media.MediaPlayer
import android.os.Bundle
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentParkingBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
import es.verdnatura.presentation.common.hideKeyboard
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
import es.verdnatura.presentation.view.feature.parking.adapter.ParkingAdapter
class ParkingSaleFragment : BaseFragment<FragmentParkingBinding,ParkingSaleViewModel>(ParkingSaleViewModel::class) {
private var user = ""
private var password = ""
private var sectorFk = ""
private var warehouseFk = ""
private lateinit var customDialog: CustomDialog
private var scanerList:ArrayList<BarcodeVO> = ArrayList()
private var adapter : ParkingAdapter? = null
private var numParking : Int = 0
var mperror: MediaPlayer? = null
var mpok: MediaPlayer? = null
override fun getLayoutId(): Int = R.layout.fragment_parking
companion object {
fun newInstance(SaleVO: Any?) = ParkingFragment()
}
override fun init() {
setEvents()
binding.mainToolbar.toolbarTitle.text = getString(R.string.Parking)
//sergio: después de las últimas actualizaciones se queda activo. Se cambia opción visibilidad.
//viewModel.hideProgressLoading()
binding.splashProgress.visibility=View.GONE
setList()
customDialog = CustomDialog(requireContext())
super.init()
}
private fun setEvents(){
binding.scanInput.requestFocus()
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
if (!binding.scanInput.text.isNullOrEmpty()) {
checkScan(binding.scanInput.text.toString())
}
binding.scanInput.setText("")
requireActivity().hideKeyboard()
return@setOnEditorActionListener true
}
false
}
binding.mainToolbar.backButton.setOnClickListener {
requireActivity().onBackPressed()
}
}
override fun observeViewModel() {
with(viewModel){
response.observe(viewLifecycleOwner, Observer {
if (it.isError){
mperror?.start()
// binding.splashProgress.visibility = View.GONE
customDialog.setTitle("Error").setDescription(it.errorMessage).setOkButton("Cerrar"){
customDialog.dismiss()
}.show()
}else{
numParking -= 1
if (numParking <= 0) {
// binding.splashProgress.visibility = View.GONE
//viewModel.hideProgressLoading()
mpok?.start()
setList()
}
}
})
isLoading.observe(viewLifecycleOwner, Observer {
if (it){
binding.splashProgress.visibility = View.VISIBLE
}else{
binding.splashProgress.visibility = View.GONE
}
})
isLoadingProgress.observe(viewLifecycleOwner, {
binding.splashProgress.visibility = it
})
}
}
private fun setList(){
scanerList = ArrayList()
adapter = ParkingAdapter(scanerList,object: OnBarcodeRowClickListener{
override fun onBarcodeRowClickListener(item: BarcodeVO) {
scanerList.removeAt(scanerList.indexOf(item))
adapter?.notifyDataSetChanged()
}
})
val lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.fragmentParkingScanList.adapter = adapter
binding.fragmentParkingScanList.layoutManager = lm
}
private fun checkScan(txtScan:String){
var isParking:Boolean = false
if (txtScan.trim().length == 4 && isLetter(txtScan.substring(txtScan.length - 1)) || txtScan.contains("-")){
isParking = true
}
if (isParking){
numParking = scanerList.size
scanerList.forEach {
// binding.splashProgress.visibility = View.VSIIBLE
viewModel.parking(
usuario = user,
password = password,
parking = txtScan,
scanItem = it.code!!,callFunction = "shelvingPark"
)
}
}else{
scanerList.add(BarcodeVO(code = txtScan))
adapter?.notifyDataSetChanged()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
mperror = MediaPlayer.create((activity as MainActivity),R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity),R.raw.ok)
super.onCreate(savedInstanceState)
}
@Throws(NumberFormatException::class)
fun isLetter(text: String): Boolean {
return text.matches("[a-zA-Z ]+".toRegex())
}
}

View File

@ -0,0 +1,98 @@
package es.verdnatura.presentation.view.feature.parking.fragment
import android.content.Context
import android.view.View.GONE
import android.view.View.VISIBLE
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import es.verdnatura.domain.GetUbicadorUserCase
import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.base.getMessageError
import es.verdnatura.presentation.base.getMessageFromAllResponse
import es.verdnatura.presentation.common.ResponseItemVO
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class ParkingSaleViewModel(context: Context) : BaseViewModel() {
private val getUbicadorUserCase: GetUbicadorUserCase = GetUbicadorUserCase(context)
private val _response by lazy { MutableLiveData<ResponseItemVO>() }
val response: LiveData<ResponseItemVO>
get() = _response
private val _isLoading by lazy { MutableLiveData<Boolean>() }
val isLoading: LiveData<Boolean> = _isLoading
private val _isLoadingProgress by lazy { MutableLiveData<Int>() }
val isLoadingProgress: LiveData<Int> = _isLoadingProgress
private val _responseParkingAdd by lazy { MutableLiveData<ResponseItemVO>() }
val responseParkingAdd: LiveData<ResponseItemVO>
get() = _responseParkingAdd
private fun showProgressLoading() {
_isLoading.value = true
}
fun hideProgressLoading() {
_isLoading.value = false
}
fun ProgressLoading(visibility:Int) {
_isLoadingProgress.value = visibility
}
fun parking(usuario: String,password: String,scanItem: String,parking:String,callFunction:String){
ProgressLoading(VISIBLE)
getUbicadorUserCase.shelvingPark(usuario,password,scanItem,parking).enqueue(object :
Callback<String> {
override fun onFailure(call: Call<String>, t: Throwable) {
_response.value = ResponseItemVO(isError = true,errorMessage = getMessageFromAllResponse(callFunction,t.message!!))
}
override fun onResponse(call: Call<String>, response: Response<String>) {
ProgressLoading(GONE)
if (response.body() == null){
_response.value = ResponseItemVO(isError = true,errorMessage = getMessageFromAllResponse(callFunction,response.message()))
}else{
if (response.body() == "Finish")
_response.value = ResponseItemVO(isError = false,response = response.body()!!)
else
_response.value = ResponseItemVO(isError = true,errorMessage = getMessageFromAllResponse(callFunction,response.message()))
}
}
})
}
fun saleParking_add(usuario: String, password: String, sales:List<String>,parking: String,callFunction:String)
{
getUbicadorUserCase.saleParking_add(usuario, password, sales, parking)
.enqueue(object : Callback<String>
{
override fun onFailure(call: Call<String>, t: Throwable)
{
_responseParkingAdd.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(callFunction,t.message!!)
)
}
override fun onResponse(call: Call<String>, response: Response<String>)
{
if (response.body() == null)
{
_responseParkingAdd.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(callFunction,response.message())
)
} else
{
_responseParkingAdd.value =
ResponseItemVO(isError = false, response = response.body()!!)
}
}
})
}
}

View File

@ -30,12 +30,12 @@ class PasilleroViewModel(context: Context) : BaseViewModel() {
*/
_pasillerositem.add(
/* _pasillerositem.add(
PasillerosItemVO(7,
R.drawable.ic_streetview_black_24dp,
"Pre Control",R.string.precontrolprevious)
)
*/
//sergio para que aparezca el nuevo menu

View File

@ -3,13 +3,14 @@ package es.verdnatura.presentation.view.feature.precontrol
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentControladorBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnCollectionSelectedListener
import es.verdnatura.presentation.view.component.CustomDialog
@ -18,7 +19,7 @@ import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
/*import kotlinx.android.synthetic.main.fragment_controlador.*
import kotlinx.android.synthetic.main.toolbar.**/
class PreControladorFragment: BaseFragment<FragmentControladorBinding,PreControladorViewModel>(PreControladorViewModel::class) {
class PreControladorFragment: BaseFragment<FragmentControladorBinding,ShowTicketViewModel>(ShowTicketViewModel::class) {
private var user = ""
@ -46,7 +47,7 @@ class PreControladorFragment: BaseFragment<FragmentControladorBinding,PreControl
binding.splashProgress.visibility = View.GONE
customDialog = CustomDialog(requireContext())
binding.mainToolbar.toolbarTitle.text = getString(R.string.verticket)
binding.mainToolbar.toolbarTitle.text = getString(R.string.precontrolprevious)
setEvents()
super.init()
}
@ -60,8 +61,8 @@ class PreControladorFragment: BaseFragment<FragmentControladorBinding,PreControl
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
type=ConstAndValues.PRECHECKER
super.onCreate(savedInstanceState)
}
@ -74,7 +75,7 @@ class PreControladorFragment: BaseFragment<FragmentControladorBinding,PreControl
binding.scanInput.requestFocus()
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
goBack=false;
if (!binding.scanInput.text.isNullOrEmpty()) {
binding.splashProgress.visibility = View.VISIBLE

View File

@ -6,16 +6,21 @@ import android.graphics.drawable.Drawable
import android.media.MediaPlayer
import android.os.Bundle
import android.util.Log
import android.util.Log.d
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.crashlytics.internal.common.CommonUtils.isNullOrEmpty
import es.verdnatura.R
import es.verdnatura.databinding.FragmentPreSacadorBinding
import es.verdnatura.domain.ConstAndValues.PRESACADOR
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -31,7 +36,9 @@ import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import es.verdnatura.presentation.view.feature.presacador.adapter.PreSacadorAdapter
import es.verdnatura.presentation.view.feature.presacador.model.PreSacadorItemVO
import es.verdnatura.presentation.view.feature.sacador.model.PlacementSupplyListVO
import es.verdnatura.presentation.view.feature.sacador.model.PlacementVO
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
/*import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_pre_sacador.*
import kotlinx.android.synthetic.main.fragment_pre_sacador.binding.fragmentSacadorCollections
@ -39,7 +46,8 @@ import kotlinx.android.synthetic.main.fragment_pre_sacador.binding.splashProgres
import kotlinx.android.synthetic.main.fragment_sacador.*
import kotlinx.android.synthetic.main.toolbar.**/
class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorViewModel>(PreSacadorViewModel::class) {
class PreSacadorFragment :
BaseFragment<FragmentPreSacadorBinding, PreSacadorViewModel>(PreSacadorViewModel::class) {
private var user = ""
private var password = ""
private var sectorFk = ""
@ -48,6 +56,7 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
var mperror: MediaPlayer? = null
var mpok: MediaPlayer? = null
private var sales: ArrayList<PreSacadorItemVO> = ArrayList()
private lateinit var customDialog: CustomDialog
private lateinit var customDialogList: CustomDialogList
private var saleAdapter: PreSacadorAdapter? = null
@ -62,10 +71,13 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
private var goBack2: Boolean = false
private var listPlacementSupply: ArrayList<BarcodeVO> = ArrayList()
private var placementSupplyAdapter: BarcodeAdapter? = null
private lateinit var customDialogInputParking: CustomDialogInput
private lateinit var customDialogInput: CustomDialogInput
private lateinit var customDialogThreeButtons: CustomDialogThreeButtons
private var token = ""
private var ticketFk = ""
private var originalScanned = ""
//sergio: se añada para leer el articulo leido que era el buyFk
private var originalItemScan: String = ""
@ -78,9 +90,9 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
sectorFk = prefs.getInt(SECTORFK, 37).toString()
token = prefs.getString(TOKEN, "").toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
mperror = MediaPlayer.create((activity as MainActivity), R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok)
SectorDescription = prefs.getString(SECTORDESCRIP, "Sin Sector").toString()
@ -92,6 +104,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
customDialog = CustomDialog(requireContext())
customDialogList = CustomDialogList(requireContext())
customDialogInput = CustomDialogInput(requireContext())
customDialogInputParking = CustomDialogInput(requireContext())
customDialogThreeButtons = CustomDialogThreeButtons(requireContext())
//requireActivity().main_bottom_navigation.visibility = View.GONE
binding.splashProgress.visibility = View.GONE
@ -115,11 +129,21 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
// originalScanned=binding.scanInput.text
if (binding.scanInput.text.contains("-")) {
//es parking
parkingTicket(binding.scanInput.text.toString())
pasillerosItemClickListener?.onPasillerosItemClickListener(
PasillerosItemVO(
title = "Parking"
), "")
// parkingTicket(binding.scanInput.text.toString())
} else {
if (binding.scanInput.text.length > 6){
//if (binding.scanInput.text.length > 6){
// miramos si el primer digito es un numero de esta manera sabemos que no es una matrícula que sería el findsale
if (binding.scanInput.text.first().isDigit()) {
//es ticket
ticketFk = binding.scanInput.text.toString()
searchTicket(binding.scanInput.text.toString())
@ -170,11 +194,25 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
}
})
responseParkingAdd.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = GONE
if (it.isError) {
customDialog.setTitle("Error").setDescription(it.errorMessage)
.setOkButton("Aceptar") {
customDialog.dismiss()
}.show()
} else {
if (mpok != null) mpok!!.start()
"Sale/s aparcada/s".toast(requireContext())
}
})
responseCode.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = View.GONE
if (!goBack2) {
if (it.isError) {
customDialog.setTitle("Error").setDescription(it.errorMessage).setKoButton("Cerrar"){
customDialog.setTitle("Error").setDescription(it.errorMessage)
.setKoButton("Cerrar") {
scanRequest()
customDialog.dismiss()
}.show()
@ -206,6 +244,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
Log.i(TAG, "Escaneamos ticket en previa")
ticket = ticketFk
binding.splashProgress.visibility = View.VISIBLE
d("VERDNATURA::", "ticket:" + ticket)
viewModel.ticketToPrePrepare(
usuario = user,
password = password,
@ -215,20 +255,59 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
}
private fun createSaleList(salesList: List<PreSacadorItemVO>) {
binding.splashProgress.visibility = View.GONE
binding.splashProgress.visibility = GONE
if (salesList.isNullOrEmpty()) {
customDialog.setTitle("Pre Sacador").setDescription("No hemos podido obtener movimientos para el ticket escaneado").setKoButton("Cancelar"){
customDialog.setTitle("Pre Sacador")
.setDescription("No hemos podido obtener movimientos para el ticket escaneado")
.setKoButton("Cancelar") {
customDialog.dismiss()
}.show()
} else {
binding.mainToolbar.toolbarTitle.text = ticket
sales = ArrayList()
salesList.forEach {
sales.add(it)
}
//sales.sortedByDescending{ it.carros.get(0).order }
/* for (s in sales){
Log.d("VERDNATURA::","item"+ s.itemFk +" pickingorder" + s.carros.get(0).pickingOrder)
}*/
//val sortedSales = sales.sortedByDescending { it.carros[0].pickingOrder }
//A provar el dilluns
// var sortedList=sales.sortedWith(compareBy<PreSacadorItemVO,Int?>(nullsLast(),{it.carros.get(0).pickingOrder}))
for (s in sales){
if (s.carros.isNullOrEmpty()){
}else{
s.pickingOrder=s.carros.get(0).pickingOrder
d("VERDNATURA::","item sin ordenar:"+ s.itemFk + " priority:"+s.carros.get(0).pickingOrder)
d("VERDNATURA::","item sin ordenar:"+ s.itemFk + " parking :"+s.carros.get(0).parking)
}
}
// var sortedSales=sales.sortedWith(nullsLast(compareByDescending { it.carros.get(0).priority }))
var sortedSales=sales.sortedBy{ it.pickingOrder }
/*for (s in sortedSales){
d("VERDNATURA::","item ordenado:"+ s.itemFk + " picking "+ s.pickingOrder)
}*/
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
saleAdapter = PreSacadorAdapter(sales,pasillerosItemClickListener!!,object: OnQuantityClickListener{
saleAdapter = PreSacadorAdapter(
sortedSales,
pasillerosItemClickListener!!,
object : OnQuantityClickListener {
override fun onQuantityClick(sale: SaleVO) {
sales.forEachIndexed { index, saleVO ->
if (saleVO.idMovimiento == sale.saleFk) {
@ -237,7 +316,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
}
}
},object :
},
object :
OnSaleClickListener {
override fun onSaleClick(sale: SaleVO) {
sales.forEachIndexed { index, saleVO ->
@ -265,7 +345,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
}
private fun setScrollListener(lm: LinearLayoutManager) {
binding.fragmentSacadorCollections.addOnScrollListener(object : RecyclerView.OnScrollListener(){
binding.fragmentSacadorCollections.addOnScrollListener(object :
RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
storedBackPosition = lm.findFirstVisibleItemPosition()
super.onScrolled(recyclerView, dx, dy)
@ -299,12 +380,14 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
var index = 0
var isBreak = false
var isOk = false
d("VERDNATURA::", "Entramos a buscar")
for (saleVO in sales) {
d("VERDNATURA::", "El item buscado es " + saleVO.itemFk)
if (saleVO.quantity != saleVO.picked) {
//1- Por carro
var shelvingIndex = 0
for (placementVO in saleVO.carros) {
d("VERDNATURA::", "La matric " + placementVO.shelving)
if (txtscan.uppercase() == placementVO.shelving.uppercase()) {
if (mpok != null) mpok!!.start()
isOk = true
@ -393,7 +476,9 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
private fun unMarkLine(position: Int) {
if (sales[position].quantity == sales[position].picked) {
customDialog.setTitle("Desmarcar linea").setDescription("Vas a desmarcar la linea: "+sales[position].itemFk+ " ¿Estás seguro?").setOkButton("Desmarcar"){
customDialog.setTitle("Desmarcar linea")
.setDescription("Vas a desmarcar la linea: " + sales[position].itemFk + " ¿Estás seguro?")
.setOkButton("Desmarcar") {
sales[position].picked = 0
saleAdapter!!.notifyDataSetChanged()
setListPosition(position)
@ -412,7 +497,6 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
}
}
//SHELVINGS
@ -423,7 +507,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
var quantityGet = "0"
try {
quantityGet = (sales[position].saldo - sales[position].picked).toString()
}catch (e:Exception){}
} catch (e: Exception) {
}
viewModel.itemPlacementSupplyAiming(
usuario = user,
password = password,
@ -456,7 +541,6 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
customDialogList.setTitle("$shelving($item) $total del $longName").setOkButton("Coger") {
if (customDialogList.getValueTwo().isNotEmpty()) {
@ -485,14 +569,18 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
scanRequest()
hideKeyboards()
customDialogList.dismiss()
}.setHintValue("Cantidad que coges:").setValue(total).setHintValueTwo("Escanea item").setValueTwo("").show()
}.setHintValue("Cantidad que coges:").setValue(total).setHintValueTwo("Escanea item")
.setValueTwo("").show()
customDialogList.getEditTextTwo().post(Runnable {
customDialogList.getEditTextTwo().requestFocusFromTouch()
val lManager: InputMethodManager =
requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
lManager.hideSoftInputFromWindow(customDialogList.getEditTextTwo().windowToken, InputMethodManager.SHOW_FORCED)
lManager.hideSoftInputFromWindow(
customDialogList.getEditTextTwo().windowToken,
InputMethodManager.SHOW_FORCED
)
})
customDialogList.getEditTextTwo().setOnEditorActionListener { v, actionId, event ->
@ -528,7 +616,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
false
}
placementSupplyAdapter = BarcodeAdapter(listPlacementSupply,object: OnBarcodeRowClickListener {
placementSupplyAdapter =
BarcodeAdapter(listPlacementSupply, object : OnBarcodeRowClickListener {
override fun onBarcodeRowClickListener(item: BarcodeVO) {
placementSupplyListVO.list.forEach {
if (it.proposal == item.code) {
@ -543,7 +632,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
customDialogList.getRecyclerView().adapter = placementSupplyAdapter
customDialogList.getRecyclerView().layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
customDialogList.getRecyclerView().layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
}
@ -552,7 +642,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
try {
val shelvingVisible = sales[storedPosition].carros[storedShelvingPosition].stockTotal
sales[storedPosition].carros[storedShelvingPosition].stockTotal = (shelvingVisible.toInt() - customDialogList.getValue().toInt()).toString()
sales[storedPosition].carros[storedShelvingPosition].stockTotal =
(shelvingVisible.toInt() - customDialogList.getValue().toInt()).toString()
viewModel.itemShelvingSaleSupplyAdd(
usuario = user,
@ -562,12 +653,15 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
quantity = customDialogList.getValue(), callFunction = "itemShelvingSaleSupplyAdd"
)
}catch (e:Exception){}
} catch (e: Exception) {
}
//2- MODIFICAR EL PICKED DEL SALE
try {
sales[storedPosition].picked = sales[storedPosition].picked + customDialogList.getValue().toInt()
}catch (e:Exception){}
sales[storedPosition].picked =
sales[storedPosition].picked + customDialogList.getValue().toInt()
} catch (e: Exception) {
}
//3- MARCAR LINEA
markLine(storedPosition)
@ -580,9 +674,76 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
return saleToCheck.itemFk == valueToCheck
}
/* private fun showScannerParking(ticket: String) {
customDialogInputParking.setTitle("Parking").setDescription("Escanea el parking")
.setOkButton("Aceptar") {
if (!customDialogInputParking.getValue().isNullOrEmpty()) {
//findSale(customDialogInput.getValue(),index)
parkingTicket(ticket, customDialogInputParking.getValue())
}
customDialogInputParking.setValue("")
scanRequest()
customDialogInputParking.dismiss()
hideKeyboards()
}.setKoButton("Cancelar") {
customDialogInputParking.dismiss()
}.setValue("").show()
customDialogInputParking.getEditText().requestFocus()
customDialogInputParking.getEditText().setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
if (!customDialogInputParking.getValue().isNullOrEmpty()) {
parkingTicket(ticket, customDialogInputParking.getValue())
}
customDialogInputParking.setValue("")
scanRequest()
customDialogInputParking.dismiss()
hideKeyboards()
return@setOnEditorActionListener true
}
false
}
}*/
/*private fun showScannerTicket() {
customDialogInput.setTitle("Ticket a aparcar").setDescription("Escanea el ticket a aparcar")
.setOkButton("Aceptar") {
if (!customDialogInput.getValue().isNullOrEmpty()) {
showScannerParking(customDialogInput.getValue())
}
customDialogInput.setValue("")
scanRequest()
customDialogInput.dismiss()
hideKeyboards()
}.setKoButton("Cancelar") {
customDialogInput.dismiss()
}.setValue("").show()
customDialogInput.getEditText().requestFocus()
customDialogInput.getEditText().setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
if (!customDialogInput.getValue().isNullOrEmpty()) {
// findSale(customDialogInput.getValue(),index)
showScannerParking(customDialogInput.getValue())
}
customDialogInput.setValue("")
scanRequest()
customDialogInput.dismiss()
hideKeyboards()
return@setOnEditorActionListener true
}
false
}
}*/
private fun showScanner(index: Int, sale: PreSacadorItemVO) {
customDialogInput.setTitle(""+sale.itemFk).setDescription("Escanea el carro para el item seleccionado").setOkButton("Aceptar"){
customDialogInput.setTitle("" + sale.itemFk)
.setDescription("Escanea el carro para el item seleccionado").setOkButton("Aceptar") {
if (!customDialogInput.getValue().isNullOrEmpty()) {
findSale(customDialogInput.getValue(), index)
}
@ -612,14 +773,16 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
//OPTIONS
private fun print() {
viewModel.collectionStickerPrint(
/* viewModel.collectionStickerPrint(
usuario = user,
password = password,
collectionFk = ticket,
sectorFk = sectorFk,"collectionSticker_print"
)
////Log.i("VERDNATURA:","La collection es $ticket, sectorFk $sectorFk, user $user i pass $password")
(getString(R.string.Imprimiendo) + " por " + SectorDescription).toast(requireContext())
(getString(R.string.Imprimiendo) + " por " + SectorDescription).toast(requireContext())*/
}
//OTROS
@ -627,28 +790,40 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
binding.mainToolbar.toolbarSubtitle.visibility = View.VISIBLE
val listIcons: ArrayList<Drawable> = ArrayList()
val iconPrint : Drawable = resources.getDrawable(R.drawable.ic_print_black_24dp,resources.newTheme())
val iconParking : Drawable = resources.getDrawable(R.drawable.ic_local_parking_black_24dp,resources.newTheme())
val iconEraser: Drawable = resources.getDrawable(R.drawable.eraser, resources.newTheme())
val iconParking: Drawable =
resources.getDrawable(R.drawable.ic_local_parking_black_24dp, resources.newTheme())
//sergio para hacer el presacador como sacador
//val iconAdd : Drawable = resources.getDrawable(R.drawable.ic_add_black_24dp,resources.newTheme())
//val iconTransferir : Drawable = resources.getDrawable(R.drawable.ic_swap_horiz_black_24dp,resources.newTheme())
listIcons.add(iconPrint)
// listIcons.add(iconEraser)
listIcons.add(iconParking)
//listIcons.add(iconAdd)
//listIcons.add(iconTransferir)
binding.mainToolbar.toolbarIcons.adapter = ToolBarAdapter(listIcons,object: OnOptionsSelectedListener {
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapter(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
if (item == iconPrint){
print()
if (item == iconEraser) {
// saleTracking_update()
} else if (item == iconParking) {
pasillerosItemClickListener?.onPasillerosItemClickListener(PasillerosItemVO(title = "Parking"),"")
// showScannerTicket()
pasillerosItemClickListener?.onPasillerosItemClickListener(
PasillerosItemVO(
title = "Parking"
), ""
)
}
}
})
binding.mainToolbar.toolbarIcons.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
binding.mainToolbar.toolbarIcons.layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
}
private fun reviewSales() {
}
private fun scanRequest() {
@ -662,19 +837,36 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
requireActivity().hideKeyboard()
}
private fun parkingTicket(parking:String){
viewModel.parking(
/* private fun parkingTicket(ticket: String, parking: String) {
var saleParkingList: MutableList<String> = arrayListOf()
if (!sales.isNullOrEmpty())
sales.forEach {
Log.d("VERNATURA::", "el id es " + it.id + " y el idmovimiento" + it.idMovimiento)
if (it.id.equals(ticket)) {
if ((it.picked == it.quantity)) {
saleParkingList.add(it.idMovimiento)
}
}
}
if (!saleParkingList.isNullOrEmpty()) {
binding.splashProgress.visibility = VISIBLE
viewModel.saleParking_add(
usuario = user,
password = password,
ticketFk = ticket,
parking = parking,"shelvingPark"
sales = saleParkingList,
parking = parking,
"saleParking_add"
)
////Log.i("VERDNATURA:","El usuario $user pass $password ticket $ticketFk y parking $parking")
if (mpok != null) mpok!!.start()
"Ticket aparcado".toast(requireContext())
} else {
"No se han encontrado líneas de venta a aparcar para ese ticket".toast(requireContext())
}
}*/
companion object {
fun newInstance() = PreSacadorFragment()
}
@ -688,7 +880,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
}
private fun showErrorMessage(text: String) {
customDialog.setTitle("Error al marcar la linea").setDescription(text).setKoButton("Cerrar"){
customDialog.setTitle("Error al marcar la linea").setDescription(text)
.setKoButton("Cerrar") {
customDialog.dismiss()
}.show()
}
@ -748,7 +941,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
var totalQuantity: Int = 0
try {
totalQuantity = sales[position].saldo.toInt() - quantity.toInt()
}catch (e:Exception){}
} catch (e: Exception) {
}
viewModel.saleMove(
usuario = user,
password = password,
@ -770,9 +964,16 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
//enviar mensaje a salix
val ticket = "[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message = "Se ha enviado a Split el articulo "+sales[position].itemFk+" del ticket "+ticket
viewModel.sendChekingPresence(token = token,workerId = sales[position].trabajador,message = message, "sendChekingPresence")
val ticket =
"[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message =
"Se ha enviado a Split el articulo " + sales[position].itemFk + " del ticket " + ticket
viewModel.sendChekingPresence(
token = token,
workerId = sales[position].trabajador,
message = message,
"sendChekingPresence"
)
}
@ -781,7 +982,8 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
var totalQuantity: Int = 0
try {
totalQuantity = sales[position].saldo.toInt() - quantity.toInt()
}catch (e:Exception){}
} catch (e: Exception) {
}
viewModel.collectionMissingTrash(
usuario = user,
password = password,
@ -804,16 +1006,24 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
//enviar mensaje a salix
val ticket = "[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message = "Se ha enviado a Faltas la cantidad de "+ totalQuantity +" del articulo "+sales[position].itemFk+" ticket "+ticket
viewModel.sendChekingPresence(token = token,workerId = sales[position].trabajador,message = message,"sendChekingPresence")
val ticket =
"[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message =
"Se ha enviado a Faltas la cantidad de " + totalQuantity + " del articulo " + sales[position].itemFk + " ticket " + ticket
viewModel.sendChekingPresence(
token = token,
workerId = sales[position].trabajador,
message = message,
"sendChekingPresence"
)
}
private fun missing(position: Int, quantity: String) {
var totalQuantity: Int = 0
try {
totalQuantity = sales[position].saldo.toInt() - quantity.toInt()
}catch (e:Exception){}
} catch (e: Exception) {
}
viewModel.collectionMissingTrash(
usuario = user,
password = password,
@ -838,16 +1048,24 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
//enviar mensaje a salix
val ticket = "[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message = "Se ha enviado a Basura "+ totalQuantity +" del articulo "+sales[position].itemFk+" ticket "+ticket
viewModel.sendChekingPresence(token = token,workerId = sales[position].trabajador,message = message,"sendChekingPresence")
val ticket =
"[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message =
"Se ha enviado a Basura " + totalQuantity + " del articulo " + sales[position].itemFk + " ticket " + ticket
viewModel.sendChekingPresence(
token = token,
workerId = sales[position].trabajador,
message = message,
"sendChekingPresence"
)
}
private fun reject(position: Int, quantity: String) {
var totalQuantity: Int = 0
try {
totalQuantity = sales[position].saldo.toInt() - quantity.toInt()
}catch (e:Exception){}
} catch (e: Exception) {
}
viewModel.collectionMissingTrash(
usuario = user,
password = password,
@ -859,9 +1077,16 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
)
//enviar mensaje a salix
val ticket = "[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message = "Se ha modificado la cantidad original "+sales[position].saldo+" del artículo "+sales[position].itemFk+" a nueva cantidad: "+ quantity +" del ticket "+ticket
viewModel.sendChekingPresence(token = token,workerId = sales[position].trabajador,message = message,"sendChekingPresence")
val ticket =
"[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message =
"Se ha modificado la cantidad original " + sales[position].saldo + " del artículo " + sales[position].itemFk + " a nueva cantidad: " + quantity + " del ticket " + ticket
viewModel.sendChekingPresence(
token = token,
workerId = sales[position].trabajador,
message = message,
"sendChekingPresence"
)
try {
sales[position].saldo = quantity.toInt()
@ -874,7 +1099,6 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
markLine(position)
}
private fun increaseQuantity(position: Int, quantity: String) {
@ -888,20 +1112,27 @@ class PreSacadorFragment : BaseFragment<FragmentPreSacadorBinding,PreSacadorView
try {
//enviar mensaje a salix
val ticket = "[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message = "Se ha modificado la cantidad original "+sales[position].saldo+" del artículo "+sales[position].itemFk+" a nueva cantidad: "+ quantity +" del ticket "+ticket
viewModel.sendChekingPresence(token = token,workerId = sales[position].trabajador,message = message,"sendChekingPresence")
val ticket =
"[" + ticketFk + "](https://salix.verdnatura.es/#!/ticket/" + ticketFk + "/summary)"
val message =
"Se ha modificado la cantidad original " + sales[position].saldo + " del artículo " + sales[position].itemFk + " a nueva cantidad: " + quantity + " del ticket " + ticket
viewModel.sendChekingPresence(
token = token,
workerId = sales[position].trabajador,
message = message,
"sendChekingPresence"
)
try {
sales[position].saldo = quantity.toInt()
} catch (e: Exception) {
sales[position].saldo = 0
}
}catch (e:Exception){}
} catch (e: Exception) {
}
saleAdapter?.notifyDataSetChanged()
}
}

View File

@ -2,6 +2,7 @@ package es.verdnatura.presentation.view.feature.presacador.fragment
import android.content.Context
import android.util.Log
import android.util.Log.d
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import es.verdnatura.domain.GetLoginUserCase
@ -25,6 +26,7 @@ class PreSacadorViewModel(context: Context) : BaseViewModel()
private val getPreSacadorUseCase: GetPreSacadorUseCase = GetPreSacadorUseCase(context)
private val getSacadorControladorUserCase: GetSacadorControladorUserCase =
GetSacadorControladorUserCase(context)
private val getUbicadorUserCase: GetUbicadorUserCase = GetUbicadorUserCase(context)
private val getLoginUserCase: GetLoginUserCase = GetLoginUserCase(context)
@ -36,6 +38,11 @@ class PreSacadorViewModel(context: Context) : BaseViewModel()
val response: LiveData<ResponseItemVO>
get() = _response
private val _responseParkingAdd by lazy { MutableLiveData<ResponseItemVO>() }
val responseParkingAdd: LiveData<ResponseItemVO>
get() = _responseParkingAdd
private val _placementSuppleyList by lazy { MutableLiveData<PlacementSupplyListVO>() }
val placementSuppleyList: LiveData<PlacementSupplyListVO>
get() = _placementSuppleyList
@ -60,6 +67,7 @@ class PreSacadorViewModel(context: Context) : BaseViewModel()
{
override fun onFailure(call: Call<List<PreSacadorItemVO>>, t: Throwable)
{
d("VERDNATURA::","ha fallado")
_salesList.value = listOf()
}
@ -70,9 +78,11 @@ class PreSacadorViewModel(context: Context) : BaseViewModel()
{
if (response.body() != null)
{
d("VERDNATURA::","entra con lineas")
_salesList.value = response.body()?.let { it }
} else
{
d("VERDNATURA::","ES NULO")
_salesList.value = listOf()
}
}
@ -147,6 +157,37 @@ class PreSacadorViewModel(context: Context) : BaseViewModel()
})
}
fun saleParking_add(usuario: String, password: String, sales:List<String>,parking: String,callFunction:String)
{
getUbicadorUserCase.saleParking_add(usuario, password, sales, parking)
.enqueue(object : Callback<String>
{
override fun onFailure(call: Call<String>, t: Throwable)
{
_responseParkingAdd.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(callFunction,t.message!!)
)
}
override fun onResponse(call: Call<String>, response: Response<String>)
{
if (response.body() == null)
{
_responseParkingAdd.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(callFunction,response.message())
)
} else
{
_responseParkingAdd.value =
ResponseItemVO(isError = false, response = response.body()!!)
}
}
})
}
fun itemPlacementSupplyAiming(
usuario: String,
password: String,

View File

@ -13,7 +13,9 @@ class PreSacadorItemVO (
var picked : Int = 45,
var idMovimiento : String = "",
var trabajador : String = "",
var carros : List<PlacementVO> = listOf()
var carros : List<PlacementVO> = listOf(),
var priority:Int =0,
var pickingOrder:Int =0
)

View File

@ -10,6 +10,8 @@ import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentQrBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
@ -67,8 +69,8 @@ class QrFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
type = ConstAndValues.PRECHECKER
super.onCreate(savedInstanceState)
}

View File

@ -12,6 +12,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.ReposicionFragmentBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -94,8 +96,8 @@ class ReposicionFragment : BaseFragment<ReposicionFragmentBinding, ReposicionVie
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
mperror = MediaPlayer.create((activity as MainActivity),R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity),R.raw.ok)

View File

@ -10,6 +10,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentSacadorBinding
import es.verdnatura.domain.ConstAndValues.SACADOR
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnCollectionSelectedListener
import es.verdnatura.presentation.common.OnOptionsSelectedListener
@ -58,8 +60,8 @@ class SacadorFragment :
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
wagons = prefs.getInt(WAGON, 2).toString()
//sergio:listener para collectionnew
/* setFragmentResultListener("requestKey") { key, bundle ->

View File

@ -9,7 +9,8 @@ class CollectionVO(
var created: String = "",
var tickets: List<TicketVO> = listOf(),
var isError: Boolean = false,
var errorMessage: String = ""
var errorMessage: String = "",
var itemPackingTypeFk:String=""
)
class TicketVO(
@ -57,7 +58,10 @@ class SaleVO(
var packingType: String = "",
var cel1: String = "",
var cel2: String = "",
var cel3: String = ""
var cel3: String = "",
var saleGroupFk: String = "",
var packingShelve:String=""
)
class PlacementVO(
@ -76,7 +80,8 @@ class PlacementVO(
var isPreviousPrepared: String = "",
var itemShelvingSaleFk: String = "",
var ticketFk: String = "",
var id: String = ""
var id: String = "",
var pickingOrder:Int=0
)
class PlacementSupplyVO(

View File

@ -8,6 +8,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentShelvingParkingBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.view.component.CustomDialog
@ -44,8 +46,8 @@ class ShelvingParkingFragment : BaseFragment<FragmentShelvingParkingBinding, She
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
(activity as MainActivity).hideBottomNavigation(View.GONE)

View File

@ -0,0 +1,127 @@
package es.verdnatura.presentation.view.feature.precontrol
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentControladorBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnCollectionSelectedListener
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
/*import kotlinx.android.synthetic.main.fragment_controlador.*
import kotlinx.android.synthetic.main.toolbar.**/
class ShowTicketFragment: BaseFragment<FragmentControladorBinding,ShowTicketViewModel>(ShowTicketViewModel::class) {
private var user = ""
private var password = ""
private var sectorFk = ""
private var warehouseFk = ""
private var goBack:Boolean = false
private var onCollectionSelectedListener : OnCollectionSelectedListener? = null
override fun getLayoutId(): Int = R.layout.fragment_controlador
private lateinit var customDialog: CustomDialog
private var type = ""
companion object {
fun newInstance() = ShowTicketFragment()
}
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is OnCollectionSelectedListener) onCollectionSelectedListener = context
}
override fun init() {
binding.splashProgress.visibility = View.GONE
customDialog = CustomDialog(requireContext())
binding.mainToolbar.toolbarTitle.text = getString(R.string.verticket)
setEvents()
super.init()
}
override fun onPause() {
goBack = true
super.onPause()
}
override fun onCreate(savedInstanceState: Bundle?) {
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
type=ConstAndValues.VERTICKET
super.onCreate(savedInstanceState)
}
private fun setEvents(){
binding.mainToolbar.backButton.setOnClickListener {
requireActivity().onBackPressed()
}
binding.scanInput.requestFocus()
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
goBack=false;
if (!binding.scanInput.text.isNullOrEmpty()) {
binding.splashProgress.visibility = View.VISIBLE
viewModel.collectionTicketGet(
usuario = user,
password = password,
sectorFk = sectorFk,
collectionFk = binding.scanInput.text.toString(),
type = type,
callFunction = "collection_getTickets"
)
}
binding.scanInput.setText("")
(activity as MainActivity).hideKeyboard(binding.scanInput)
return@setOnEditorActionListener true
}
false
}
}
override fun observeViewModel() {
with(viewModel){
collectionTicketList.observe(viewLifecycleOwner, Observer {
binding.splashProgress.visibility = View.GONE
if (it.isError){
customDialog.setTitle("Error").setDescription(it.errorMessage).setOkButton("Aceptar"){
customDialog.dismiss()
}.show()
}else{
if (!goBack)navigateToCollectionList(it)
goBack = false
}
})
}
}
private fun navigateToCollectionList(collection: CollectionVO){
onCollectionSelectedListener?.onCollectionSelected(collection, ConstAndValues.VERTICKET)
}
}

View File

@ -0,0 +1,47 @@
package es.verdnatura.presentation.view.feature.precontrol
import android.content.Context
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.domain.GetPreControladorUserCase
import es.verdnatura.presentation.base.getMessageFromAllResponse
import es.verdnatura.presentation.common.ResponseItemVO
import es.verdnatura.presentation.view.feature.collection.mapper.map
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class ShowTicketViewModel(context: Context) : BaseViewModel() {
private val _collectionTicketList by lazy { MutableLiveData<CollectionVO>() }
private val getPreControladorUserCase: GetPreControladorUserCase = GetPreControladorUserCase(context)
val collectionTicketList: LiveData<CollectionVO>
get() = _collectionTicketList
private val _responseTicket by lazy { MutableLiveData<ResponseItemVO>() }
val responseTicket: LiveData<ResponseItemVO>
get() = _responseTicket
fun collectionTicketGet(usuario:String,password:String,collectionFk:String,sectorFk:String,type:String,callFunction:String){
getPreControladorUserCase.collectionTicketGet(usuario,password,collectionFk,sectorFk,"0",type).enqueue(object :
Callback<CollectionVO> {
override fun onFailure(call: Call<CollectionVO>, t: Throwable) {
_collectionTicketList.value = CollectionVO(isError = true,errorMessage =getMessageFromAllResponse(callFunction,t.message!!))
}
override fun onResponse(
call: Call<CollectionVO>,
response: Response<CollectionVO>
) {
if (response.body() != null){
_collectionTicketList.value = response.body()?.let { it.map() }
}else{
_collectionTicketList.value = CollectionVO(isError = true,errorMessage = getMessageFromAllResponse(callFunction,response.message()))
}
}
})
}
}

View File

@ -12,6 +12,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentSacadorAssociatesmarttagBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -167,8 +169,8 @@ class RegisterSmartTagsFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
userFk = prefs.getString(USERFK, "0").toString()
super.onCreate(savedInstanceState)

View File

@ -14,6 +14,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentVehiclecontrolBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
@ -164,8 +166,8 @@ class AssociateSmartTagsFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
user = prefs.getString(USER, "").toString()
password = prefs.getString(PASSWORD, "").toString()
sectorFk = prefs.getInt(SECTORFK, 1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, 1).toString()
sectorFk = prefs.getInt(SECTORFK, SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK, WAREHOUSEFKDEFAULT).toString()
userFk = prefs.getString(USERFK, "0").toString()
super.onCreate(savedInstanceState)

View File

@ -7,6 +7,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentAutomaticAddItemBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnAutomaticItemClickListener
import es.verdnatura.presentation.view.component.CustomDialog
@ -46,8 +48,8 @@ class AutomaticAddItemFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
customDialogUbicador = CustomDialogUbicador(requireContext())

View File

@ -13,6 +13,8 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentUbicadorBinding
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
import es.verdnatura.domain.notNull
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
@ -72,8 +74,8 @@ class UbicadorFragment(
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER,0)
user = prefs.getString(USER,"").toString()
password = prefs.getString(PASSWORD,"").toString()
sectorFk = prefs.getInt(SECTORFK,1).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,1).toString()
sectorFk = prefs.getInt(SECTORFK,SECTORFKDEFAULT).toString()
warehouseFk = prefs.getInt(WAREHOUSEFK,WAREHOUSEFKDEFAULT).toString()
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
customDialogUbicador = CustomDialogUbicador(requireContext())
@ -196,7 +198,7 @@ class UbicadorFragment(
}
binding.editPrioridad.setOnClickListener {
binding.editImg.setOnClickListener {
customDialogInput.setTitle("Cambiar matrícula").setValue("").setOkButton("Guardar"){
viewModel.shelvingChange(user,password,shelvingFk,customDialogInput.getValue(),"shelvingChange")
shelvingFk = customDialogInput.getValue()

View File

@ -0,0 +1,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@android:color/black" />
<stroke android:width="1dip"
android:color="@color/verdnatura_warm_grey"/>
</shape>

View File

@ -0,0 +1,8 @@
<!-- drawable/eraser.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#FFF" android:pathData="M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z" />
</vector>

View File

@ -83,6 +83,15 @@
android:gravity="right"
android:visibility="gone"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Carro"
android:textSize="@dimen/body2"
android:textColor="@color/verdnatura_white"
android:layout_weight="2"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -121,7 +121,8 @@
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintTop_toTopOf="parent"
>
<View
android:id="@+id/item_article_row_semaforo_pre"
@ -146,6 +147,8 @@
</LinearLayout>
<!--CONTENIDO=================================================-->
<!--app:layout_constraintEnd_toStartOf="@+id/item_article_quantity_picked"-->
<TextView
android:id="@+id/item_article_itemFk"
android:layout_width="0dp"
@ -157,11 +160,41 @@
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h6"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/item_article_quantity_picked"
app:layout_constraintStart_toEndOf="@+id/linearLayout3"
app:layout_constraintTop_toTopOf="parent"
android:maxLines="1"/>
<TextView
android:id="@+id/item_packing_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginEnd="@dimen/layout_margin_min"
android:paddingTop="2dp"
android:text="En balda:"
tool:text="En balda:"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h7"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/item_packing_itemFk"
app:layout_constraintStart_toEndOf="@+id/item_article_itemFk"
app:layout_constraintTop_toTopOf="parent"
android:maxLines="1"/>
<TextView
android:id="@+id/item_packing_itemFk"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="1dp"
android:layout_marginEnd="@dimen/layout_margin_min"
android:text="@{sale.packingShelve}"
tool:text="Number"
android:paddingTop="2dp"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h7"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/item_article_quantity_picked"
app:layout_constraintStart_toEndOf="@+id/item_packing_text"
app:layout_constraintTop_toTopOf="parent"
android:maxLines="1"/>
<TextView
android:id="@+id/item_article_quantity_picked"
android:layout_width="wrap_content"
@ -190,14 +223,15 @@
android:id="@+id/item_article_quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:layout_marginEnd="@dimen/layout_margin_1"
android:text="@{sale.quantity}"
tool:text="10"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h6"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/item_article_quantity_line1"
@ -219,7 +253,7 @@
android:id="@+id/item_article_cel1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:layout_marginEnd="@dimen/layout_margin_1"
android:text="@{sale.cel1}"
tool:text="cel1"
android:textColor="@color/verdnatura_white"
@ -252,7 +286,7 @@
android:id="@+id/item_article_cel2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:layout_marginEnd="@dimen/layout_margin_1"
android:text="@{sale.cel2}"
tool:text="cel2"
android:textColor="@color/verdnatura_white"
@ -268,7 +302,7 @@
android:id="@+id/item_article_quantity_line3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/layout_margin_min"
android:layout_marginStart="@dimen/layout_margin_1"
android:ellipsize="end"
android:maxLines="1"
android:text="@{sale.line3}"
@ -284,7 +318,7 @@
android:id="@+id/item_article_cel3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:layout_marginEnd="@dimen/layout_margin_1"
android:text="@{sale.cel3}"
tool:text="cel3"
android:textColor="@color/verdnatura_white"
@ -293,7 +327,25 @@
app:layout_constraintEnd_toEndOf="@+id/item_article_quantity_line3"
app:layout_constraintTop_toTopOf="@+id/item_article_quantity_line3" />
<LinearLayout
android:id="@+id/linearLayoutColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
>
<View
android:id="@+id/item_ticketColor"
android:layout_width="5dp"
android:layout_height="@dimen/ticketColor_height"
android:background="@drawable/border"
android:layout_marginBottom="1dp"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout

View File

@ -49,7 +49,7 @@
android:layout_weight="1"
android:gravity="center"/>
<TextView
android:visibility="gone"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{item.shelvingFk}"

View File

@ -84,6 +84,10 @@
<dimen name="semaforo_width">20dp</dimen>
<dimen name="semaforo_height">30dp</dimen>
<!-- Pintar ticket -->
<dimen name="ticketColor_height">90dp</dimen>
<dimen name="ticketColor_width">10dp</dimen>
</resources>