refs #2346 call Model Operator
This commit is contained in:
parent
6661a3dfdc
commit
fb2dd94da7
|
@ -22,6 +22,7 @@ import es.verdnatura.databinding.ToolbarFragmentBinding
|
|||
import es.verdnatura.db.DeliveryDatabase
|
||||
import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT
|
||||
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT
|
||||
import es.verdnatura.presentation.view.feature.login.model.OperatorSalix
|
||||
import es.verdnatura.presentation.view.feature.login.model.WorkForms
|
||||
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
|
||||
import org.json.JSONObject
|
||||
|
@ -234,6 +235,7 @@ abstract class BaseFragment<T : ViewDataBinding, V : BaseViewModel>(viewModelCla
|
|||
R.drawable.ic_sort->getString(R.string.sortRouteSalix)
|
||||
R.drawable.ic_sign_ticket->getString(R.string.signed)
|
||||
R.drawable.ic_send-> getString(R.string.sendDriverRoute)
|
||||
R.drawable.ic_remove_checks-> getString(R.string.deleteChecked)
|
||||
else -> {
|
||||
""
|
||||
}
|
||||
|
@ -568,6 +570,28 @@ abstract class BaseFragment<T : ViewDataBinding, V : BaseViewModel>(viewModelCla
|
|||
|
||||
}
|
||||
|
||||
fun saveDataOperator(operator: OperatorSalix) {
|
||||
if (operator.sector == null) {
|
||||
removeSector()
|
||||
} else {
|
||||
saveDataInt(SECTORFK, operator.sector.id)
|
||||
saveData(SECTORDESCRIP, operator.sector.description)
|
||||
saveDataInt(WAREHOUSEFK, operator.sector.warehouseFk)
|
||||
}
|
||||
if (operator.printer == null) {
|
||||
removePrinter()
|
||||
} else {
|
||||
saveDataInt(PRINTERFK, operator.printer.id)
|
||||
saveData(PRINTERNAME, operator.printer.name)
|
||||
}
|
||||
if (operator.train != null) {
|
||||
saveData(TRAINNAME, operator.train.name)
|
||||
}
|
||||
saveDataInt(NUMBEROFWAGONS, operator.numberOfWagons)
|
||||
|
||||
}
|
||||
|
||||
|
||||
fun saveDataLong(name: String, value: Long) {
|
||||
|
||||
val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0)
|
||||
|
|
|
@ -10,6 +10,7 @@ import android.view.View
|
|||
import android.view.View.VISIBLE
|
||||
import androidx.appcompat.widget.TooltipCompat.setTooltipText
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import es.verdnatura.MobileApplication
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.databinding.FragmentAjustesBinding
|
||||
import es.verdnatura.domain.notNull
|
||||
|
@ -24,6 +25,7 @@ import es.verdnatura.presentation.view.feature.ajustes.model.Printers
|
|||
import es.verdnatura.presentation.view.feature.ajustes.model.SectorItemVO
|
||||
import es.verdnatura.presentation.view.feature.ajustes.model.Train
|
||||
import es.verdnatura.presentation.view.feature.articulo.model.ItemPackingType
|
||||
import es.verdnatura.presentation.view.feature.login.fragment.LoginViewModel
|
||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||
|
||||
class AjustesFragment :
|
||||
|
@ -39,6 +41,7 @@ class AjustesFragment :
|
|||
private var isWorkerAllowed: Boolean = false
|
||||
private var itemPackingList: List<ItemPackingType> = listOf()
|
||||
private var messagePrinter: String? = null
|
||||
private lateinit var loginViewModel : LoginViewModel
|
||||
|
||||
//añadido
|
||||
private var wagonList: List<String> = listOf()
|
||||
|
@ -90,11 +93,11 @@ class AjustesFragment :
|
|||
customDialogInput.setTitle(getString(R.string.serialNumberDescrip))
|
||||
.setDescription(getString(R.string.serialNumber))
|
||||
.setOkButton(getString(R.string.save)) {
|
||||
saveData("SERIALNUMBER",customDialogInput.getValue())
|
||||
saveData("SERIALNUMBER", customDialogInput.getValue())
|
||||
binding.serialNumber.text = customDialogInput.getValue()
|
||||
ma.hideKeyboard()
|
||||
customDialogInput.dismiss()
|
||||
}.setKoButton(getString(R.string.cancel)){
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
customDialogInput.dismiss()
|
||||
}
|
||||
.show()
|
||||
|
@ -156,32 +159,6 @@ class AjustesFragment :
|
|||
}
|
||||
})
|
||||
|
||||
operatorGetNumberOfWagons.observe(viewLifecycleOwner) {
|
||||
binding.splashProgress.visibility = View.GONE
|
||||
|
||||
if (it.isError) {
|
||||
ma.messageWithSound(it.errorMessage, it.isError, true)
|
||||
|
||||
} else {
|
||||
saveDataInt(NUMBEROFWAGONS, it.response!!)
|
||||
|
||||
}
|
||||
setSettings(isWorkerAllowed)
|
||||
}
|
||||
|
||||
operatorGetTrainResponse.observe(viewLifecycleOwner) {
|
||||
binding.splashProgress.visibility = View.GONE
|
||||
|
||||
if (it.isError) {
|
||||
ma.messageWithSound(it.errorMessage, it.isError, true)
|
||||
|
||||
} else {
|
||||
saveData(TRAINNAME, it.response)
|
||||
|
||||
}
|
||||
setSettings(isWorkerAllowed)
|
||||
}
|
||||
|
||||
operatorGetItemPackingType.observe(viewLifecycleOwner) {
|
||||
binding.splashProgress.visibility = View.GONE
|
||||
|
||||
|
@ -194,19 +171,30 @@ class AjustesFragment :
|
|||
setSettings(isWorkerAllowed)
|
||||
}
|
||||
|
||||
|
||||
workerAllowedResponse.observe(viewLifecycleOwner) {
|
||||
binding.splashProgress.visibility = View.GONE
|
||||
viewModel.operator_getNumberOfWagons()
|
||||
viewModel.operator_getTrain()
|
||||
viewModel.operator_getItemPackingType()
|
||||
|
||||
if (it.isError) {
|
||||
ma.messageWithSound(it.errorMessage, it.isError, true)
|
||||
|
||||
} else {
|
||||
isWorkerAllowed = it.response.toBoolean()
|
||||
loginViewModel= LoginViewModel(context as MobileApplication)
|
||||
loginViewModel.operator_getDataSalix(mobileApplication.userId!!)
|
||||
loginViewModel.workerOperator.observe(this@AjustesFragment) { it ->
|
||||
|
||||
if (!it.isError) {
|
||||
saveDataOperator(it)
|
||||
}else{
|
||||
ma.messageWithSound(it.errorMessage, it.isError, true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
setSettings(isWorkerAllowed)
|
||||
|
||||
}
|
||||
|
||||
actionUpdate.observe(viewLifecycleOwner) {
|
||||
|
@ -413,7 +401,12 @@ class AjustesFragment :
|
|||
editor.apply()
|
||||
|
||||
viewModel.ajustesitem.get(2).selected = it.name
|
||||
viewModel.worker_updateOperatorSalix("printer",mobileApplication.userId!!,getDataInt(SECTORFK),it.id!!)
|
||||
viewModel.worker_updateOperatorSalix(
|
||||
"printer",
|
||||
mobileApplication.userId!!,
|
||||
getDataInt(SECTORFK),
|
||||
it.id!!
|
||||
)
|
||||
ajustesAdapter!!.notifyDataSetChanged()
|
||||
ajustesAdapter
|
||||
|
||||
|
@ -481,7 +474,12 @@ class AjustesFragment :
|
|||
viewModel.ajustesitem.get(0).warehouse = it.warehouseFk
|
||||
viewModel.ajustesitem.get(0).selected = it.description
|
||||
|
||||
viewModel.worker_updateOperatorSalix("sector",mobileApplication.userId!!,it.id,null)
|
||||
viewModel.worker_updateOperatorSalix(
|
||||
"sector",
|
||||
mobileApplication.userId!!,
|
||||
it.id,
|
||||
null
|
||||
)
|
||||
|
||||
ajustesAdapter!!.notifyDataSetChanged()
|
||||
|
||||
|
|
|
@ -121,7 +121,7 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
//saveData("SERIALNUMBER", file.readText())
|
||||
mobileApplication.serialNumber = file.readText()
|
||||
} catch (ex: Exception) {
|
||||
d("VERDNATURA:",getString(R.string.errorFile))
|
||||
d("VERDNATURA:", getString(R.string.errorFile))
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -329,8 +329,6 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
getInfoVersionNameApp(),
|
||||
getData(ANDROID_ID)
|
||||
)
|
||||
viewModel.worker_getSector()
|
||||
viewModel.worker_getPrinter()
|
||||
|
||||
if (binding.switchRemember.isChecked) {
|
||||
saveRemember(true)
|
||||
|
@ -359,16 +357,21 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
|
||||
}
|
||||
|
||||
workerId.observe(viewLifecycleOwner) {
|
||||
/* workerId.observe(viewLifecycleOwner) {
|
||||
if (!it.isError) {
|
||||
saveUserFkPref(it.Id.toString())
|
||||
}
|
||||
}
|
||||
}*/
|
||||
//Tarea 5870
|
||||
workerOperator.observe(viewLifecycleOwner) {
|
||||
if (!it.isError) {
|
||||
|
||||
}else{
|
||||
if (it.isError) {
|
||||
customDialog.setTitle(getString(R.string.info))
|
||||
.setDescription(it.errorMessage)
|
||||
.setOkButton(getString(R.string.close)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
} else {
|
||||
saveDataOperator(it)
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -385,10 +388,10 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
viewModel.device_checkLogin(
|
||||
getData(ANDROID_ID)
|
||||
)
|
||||
viewModel.operator_getNumberOfWagons()
|
||||
// viewModel.operator_getNumberOfWagons()
|
||||
}
|
||||
|
||||
operatorGetNumberOfWagons.observe(viewLifecycleOwner) {
|
||||
/* operatorGetNumberOfWagons.observe(viewLifecycleOwner) {
|
||||
|
||||
if (!it.isError) {
|
||||
saveDataInt(NUMBEROFWAGONS, it.response!!)
|
||||
|
@ -400,7 +403,7 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
devicelogresponse.observe(viewLifecycleOwner) {
|
||||
|
||||
|
@ -416,7 +419,7 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
}
|
||||
}
|
||||
|
||||
workergetSector.observe(viewLifecycleOwner) {
|
||||
/* workergetSector.observe(viewLifecycleOwner) {
|
||||
//binding.splashProgress.visibility = View.GONE
|
||||
|
||||
|
||||
|
@ -430,8 +433,8 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
loadWorkerPrintList.observe(viewLifecycleOwner, Observer { event ->
|
||||
*/
|
||||
/* loadWorkerPrintList.observe(viewLifecycleOwner, Observer { event ->
|
||||
|
||||
event.getContentIfNotHandled().notNull {
|
||||
|
||||
|
@ -449,10 +452,10 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
}
|
||||
}
|
||||
|
||||
})
|
||||
})*/
|
||||
|
||||
|
||||
loginsalixitem.observe(viewLifecycleOwner) {
|
||||
loginSalixItem.observe(viewLifecycleOwner) {
|
||||
|
||||
if (it.isError) {
|
||||
binding.splashProgress.visibility = View.GONE
|
||||
|
@ -488,7 +491,7 @@ class LoginFragment(var imageUri: Uri?) :
|
|||
|
||||
//Tarea 5613
|
||||
viewModel.getAccessTokenConfigs()
|
||||
viewModel.operator_add()
|
||||
//viewModel.operator_add()
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,31 +12,24 @@ import es.verdnatura.presentation.base.BaseViewModel
|
|||
import es.verdnatura.presentation.base.getMessageFromAllResponse
|
||||
import es.verdnatura.presentation.base.nameofFunction
|
||||
import es.verdnatura.presentation.common.Event
|
||||
import es.verdnatura.presentation.common.ResponseItemNumber
|
||||
import es.verdnatura.presentation.common.ResponseItemVO
|
||||
import es.verdnatura.presentation.view.feature.ajustes.model.Printers
|
||||
import es.verdnatura.presentation.view.feature.ajustes.model.SectorItemVO
|
||||
import es.verdnatura.presentation.view.feature.ajustes.model.WorkerPrintersList
|
||||
import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.DeviceLogSalix
|
||||
import es.verdnatura.presentation.view.feature.login.model.DataUserSalix
|
||||
import es.verdnatura.presentation.view.feature.login.model.LoginDevice
|
||||
import es.verdnatura.presentation.view.feature.login.model.LoginSalixVO
|
||||
import es.verdnatura.presentation.view.feature.login.model.OperatorList
|
||||
import es.verdnatura.presentation.view.feature.login.model.OperatorSalix
|
||||
import es.verdnatura.presentation.view.feature.login.model.RenewToken
|
||||
import es.verdnatura.presentation.view.feature.login.model.accessConfigSalix
|
||||
import es.verdnatura.presentation.view.feature.login.model.accessConfigSalixList
|
||||
import es.verdnatura.presentation.view.feature.login.model.versionApp
|
||||
import es.verdnatura.presentation.view.feature.login.model.workerId
|
||||
import es.verdnatura.presentation.view.feature.paletizador.model.itemsExpeditionDynamics
|
||||
import retrofit2.Response
|
||||
import java.util.Date
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
||||
private val _loginsalixitem by lazy { MutableLiveData<LoginSalixVO>() }
|
||||
val loginsalixitem: LiveData<LoginSalixVO>
|
||||
get() = _loginsalixitem
|
||||
private val _loginSalixItem by lazy { MutableLiveData<LoginSalixVO>() }
|
||||
val loginSalixItem: LiveData<LoginSalixVO>
|
||||
get() = _loginSalixItem
|
||||
|
||||
|
||||
private val _devicelogresponse by lazy { MutableLiveData<ResponseItemVO>() }
|
||||
|
@ -55,27 +48,6 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
val logindevice: LiveData<LoginDevice>
|
||||
get() = _logindevice
|
||||
|
||||
private val _workerId by lazy { MutableLiveData<workerId>() }
|
||||
val workerId: LiveData<workerId>
|
||||
get() = _workerId
|
||||
|
||||
|
||||
private val _workergetSector by lazy { MutableLiveData<SectorItemVO>() }
|
||||
val workergetSector: LiveData<SectorItemVO>
|
||||
get() = _workergetSector
|
||||
|
||||
private val _workergetPrinter by lazy { MutableLiveData<Printers>() }
|
||||
val workergetPrinter: LiveData<Printers>
|
||||
get() = _workergetPrinter
|
||||
|
||||
private val _operatorGetNumberOfWagons by lazy { MutableLiveData<ResponseItemNumber>() }
|
||||
val operatorGetNumberOfWagons: LiveData<ResponseItemNumber>
|
||||
get() = _operatorGetNumberOfWagons
|
||||
|
||||
|
||||
private val _workerPrintList by lazy { MutableLiveData<WorkerPrintersList>() }
|
||||
private val _workerOperatorList by lazy { MutableLiveData<OperatorList>() }
|
||||
|
||||
private val _workerOperator by lazy { MutableLiveData<OperatorSalix>() }
|
||||
val workerOperator: LiveData<OperatorSalix>
|
||||
get() = _workerOperator
|
||||
|
@ -86,8 +58,6 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
val renewTokenResponse: LiveData<RenewToken>
|
||||
get() = _renewTokenResponse
|
||||
|
||||
val loadWorkerPrintList = Transformations.map(_workerPrintList) { Event(it) }
|
||||
val loadOperatorList = Transformations.map(_workerOperatorList) { Event(it) }
|
||||
val loadAccessConfigSalixList = Transformations.map(_accessConfigSalixList) { Event(it) }
|
||||
|
||||
fun loginSalix(user: String, password: String) {
|
||||
|
@ -122,7 +92,7 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
|
||||
}
|
||||
|
||||
_loginsalixitem.value = loginSalixVO
|
||||
_loginSalixItem.value = loginSalixVO
|
||||
}
|
||||
|
||||
override fun onError(t: Throwable) {
|
||||
|
@ -137,7 +107,7 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
t.message!!
|
||||
)
|
||||
)
|
||||
_loginsalixitem.value = loginSalixVO
|
||||
_loginSalixItem.value = loginSalixVO
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -193,8 +163,8 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
) {
|
||||
salix.getCurrentUserData().enqueue(object : SilexCallback<DataUserSalix>(context) {
|
||||
override fun onSuccess(response: Response<DataUserSalix>) {
|
||||
app.userName = response.body()?.let { it.nickname }
|
||||
app.userId = response.body()?.let { it.id }
|
||||
app.userName = response.body()?.nickname
|
||||
app.userId = response.body()?.id
|
||||
deviceLog_addSalix(
|
||||
app = appName,
|
||||
versionApp = versionApp,
|
||||
|
@ -203,7 +173,7 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
serialnumber = serialnumber
|
||||
)
|
||||
//Tarea 5870
|
||||
//operator_getDataSalix(app.userId!!)
|
||||
operator_getDataSalix(app.userId!!)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -302,59 +272,6 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
return list
|
||||
}
|
||||
|
||||
fun worker_getSector() {
|
||||
|
||||
silex.worker_getSector().enqueue(object : SilexCallback<SectorItemVO>(context) {
|
||||
override fun onError(t: Throwable) {
|
||||
_workergetSector.value = SectorItemVO(
|
||||
0,
|
||||
"",
|
||||
0,
|
||||
isError = true,
|
||||
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onSuccess(response: Response<SectorItemVO>) {
|
||||
_workergetSector.value = response.body()?.let {
|
||||
SectorItemVO(
|
||||
it.id,
|
||||
it.description,
|
||||
it.warehouseFk,
|
||||
isError = false
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
fun operator_getNumberOfWagons() {
|
||||
|
||||
silex.operator_getNumberOfWagons()
|
||||
.enqueue(object : SilexCallback<Any>(context) {
|
||||
override fun onError(t: Throwable) {
|
||||
_operatorGetNumberOfWagons.value = ResponseItemNumber(
|
||||
null,
|
||||
isError = true,
|
||||
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onSuccess(response: Response<Any>) {
|
||||
_operatorGetNumberOfWagons.value =
|
||||
ResponseItemNumber(
|
||||
if (response.body() is Number) {
|
||||
((response.body() as Double).roundToInt())
|
||||
} else {
|
||||
0
|
||||
}, isError = false
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun operator_add() {
|
||||
//Tarea 5134 no se puede modificar directamente con un upsertWith, hay que modificar front. Y si al hacer login en Salix hacer el insertIgnore en -> operator_add, back de Salix sabe
|
||||
//si es de app?
|
||||
|
@ -373,60 +290,12 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
})
|
||||
}
|
||||
|
||||
fun worker_getPrinter() {
|
||||
|
||||
silex.worker_getPrinter()
|
||||
.enqueue(object : SilexCallback<List<Printers>>(context) {
|
||||
override fun onError(t: Throwable) {
|
||||
val listError: ArrayList<Printers> = ArrayList()
|
||||
listError.add(
|
||||
Printers(
|
||||
0, "",
|
||||
isError = true,
|
||||
errorMessage = getMessageFromAllResponse(
|
||||
nameofFunction(this),
|
||||
t.message!!
|
||||
)
|
||||
)
|
||||
)
|
||||
_workerPrintList.value = WorkerPrintersList(listError)
|
||||
|
||||
}
|
||||
|
||||
override fun onSuccess(response: Response<List<Printers>>) {
|
||||
if (response.body() != null) {
|
||||
_workerPrintList.value = response.body()?.let {
|
||||
WorkerPrintersList(it)
|
||||
}
|
||||
|
||||
} else {
|
||||
val listError: ArrayList<Printers> = ArrayList()
|
||||
listError.add(
|
||||
Printers(
|
||||
0, "",
|
||||
isError = true,
|
||||
errorMessage = getMessageFromAllResponse(
|
||||
nameofFunction(this),
|
||||
response.message()
|
||||
)
|
||||
)
|
||||
)
|
||||
_workerPrintList.value = WorkerPrintersList(listError)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
//Tarea 5870
|
||||
fun operator_getDataSalix(
|
||||
workerId: Int
|
||||
) {
|
||||
val filter =
|
||||
"""{"fields":["itemPackingTypeFk","numberOfWagons","sectorFk","trainFk","labelerFk"],"include":[{"relation":"sector","scope":{"fields":["description","warehouseFk"]}}]}"""
|
||||
"""{"fields":["itemPackingTypeFk","numberOfWagons","sectorFk","trainFk","labelerFk"],"include":[{"relation":"sector","scope":{"fields":["description","warehouseFk"]}},{"relation":"printer","scope":{"fields":["name"]}},{"relation":"train","scope":{"fields":["name"]}}]}"""
|
||||
salix.operator_getData(id = workerId, filter)
|
||||
.enqueue(object : SilexCallback<OperatorSalix>(context) {
|
||||
override fun onError(t: Throwable) {
|
||||
|
|
|
@ -42,15 +42,15 @@ class SalixGrupo(
|
|||
class OperatorSalix(
|
||||
val sector: Sector? = null,
|
||||
val train: Train? = null,
|
||||
val labeller: Printer? = null,
|
||||
val printer: Printer? = null,
|
||||
val numberOfWagons: Int = 0,
|
||||
var itemPackingTypeFk: String? = null,
|
||||
val isError: Boolean = false,
|
||||
var errorMessage: String = ""
|
||||
)
|
||||
data class Sector (val id:Int, val description:String,val warehouseFk:Int)
|
||||
data class Printer(val id:Int, val name:String)
|
||||
data class Train(val name:String)
|
||||
data class Sector(val id: Int, val description: String, val warehouseFk: Int)
|
||||
data class Printer(val id: Int, val name: String)
|
||||
data class Train(val id: Int, val name: String)
|
||||
|
||||
|
||||
class accessConfigSalix(
|
||||
|
|
Loading…
Reference in New Issue