feat Ticketobservation refs #7541
This commit is contained in:
parent
3e37ca1c3d
commit
89a4cff1ed
|
@ -26,6 +26,7 @@ import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLog
|
|||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteDelivery
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.TicketObservation
|
||||
import es.verdnatura.presentation.view.feature.diadeventa.model.ItemShelvingSaleDate
|
||||
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO
|
||||
import es.verdnatura.presentation.view.feature.historicoshelving.model.ItemShelvingLog
|
||||
|
@ -231,6 +232,11 @@ interface SalixService {
|
|||
@Body params: Any
|
||||
): Call<Any>
|
||||
|
||||
@GET("TicketObservations")
|
||||
fun getTicketObservations(
|
||||
@Query("filter") filter: String,
|
||||
): Call<List<TicketObservation>>
|
||||
|
||||
@POST("TicketObservations/upsertWithWhere")
|
||||
fun updateNoteFromDropOff(
|
||||
@Query("where") where: Any? = null,
|
||||
|
|
|
@ -3,10 +3,14 @@ package es.verdnatura.presentation.view.feature.delivery.activity
|
|||
import android.Manifest
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.location.Location
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.gms.location.LocationResult
|
||||
import com.google.android.gms.location.LocationServices
|
||||
import com.google.gson.Gson
|
||||
|
@ -18,11 +22,18 @@ import es.verdnatura.domain.toast
|
|||
import es.verdnatura.presentation.base.BaseActivity
|
||||
import es.verdnatura.presentation.base.LocationUpdateCallback
|
||||
import es.verdnatura.presentation.base.database
|
||||
import es.verdnatura.presentation.common.GeneralAdapter
|
||||
import es.verdnatura.presentation.common.GeneralItem
|
||||
import es.verdnatura.presentation.common.OnGeneralItemRowClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
import es.verdnatura.presentation.common.SignListener
|
||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||
import es.verdnatura.presentation.view.component.CustomDialog
|
||||
import es.verdnatura.presentation.view.component.CustomDialogList
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.MyLocation
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.SignedTickets
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.TicketObservation
|
||||
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -44,9 +55,11 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
private lateinit var ticketsSet: HashSet<Long>
|
||||
private lateinit var clientTicket: ClientTicketSalix
|
||||
private lateinit var db: DeliveryDatabase
|
||||
private lateinit var deliveryViewModel: DeliveryViewModel
|
||||
private lateinit var listClaimTicketObservations : List<TicketObservation>
|
||||
|
||||
override fun init() {
|
||||
|
||||
deliveryViewModel = DeliveryViewModel(application as MobileApplication)
|
||||
when (intent.getStringExtra("objectSigned")) {
|
||||
|
||||
"ticket" -> {
|
||||
|
@ -58,28 +71,53 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
setEvents()
|
||||
(application as MobileApplication).setSignListener(this)
|
||||
db = database(this.applicationContext)
|
||||
|
||||
}
|
||||
|
||||
private fun setToolBar() {
|
||||
binding.mainToolbar.toolbarTitle.text = getString(R.string.sign)
|
||||
// binding.mainToolbar.toolbarIcons.visibility = View.GONE
|
||||
|
||||
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||
val iconObservation = ImageView(this)
|
||||
iconObservation.setImageResource(R.drawable.ic_claim_ui)
|
||||
iconObservation.tooltipText = "Muestra las observaciones de reclamaciones"
|
||||
listIcons.add(iconObservation)
|
||||
|
||||
|
||||
|
||||
binding.mainToolbar.toolbarIcons.adapter =
|
||||
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
||||
|
||||
override fun onOptionsItemSelected(item: Drawable) {
|
||||
when (item) {
|
||||
iconObservation.drawable -> {
|
||||
showNotes(listClaimTicketObservations)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
binding.mainToolbar.toolbarIcons.layoutManager =
|
||||
LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
|
||||
|
||||
}
|
||||
|
||||
private fun showDialogConfirm() {
|
||||
val customDialog = CustomDialog(this)
|
||||
customDialog.setTitle(getString(R.string.confirm))
|
||||
.setDescription(getString(R.string.sureSign))
|
||||
.setOkButton(getString(R.string.ok)) {
|
||||
.setDescription(getString(R.string.sureSign)).setOkButton(getString(R.string.ok)) {
|
||||
|
||||
reviewDistance()
|
||||
customDialog.dismiss()
|
||||
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
customDialog.dismiss()
|
||||
}
|
||||
.show()
|
||||
}.show()
|
||||
}
|
||||
|
||||
private fun reviewDistance() {
|
||||
|
@ -98,13 +136,11 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
if (locationCurrent.distanceTo(locationClient) > 100) {
|
||||
|
||||
val customDialogDistance = CustomDialog(this)
|
||||
customDialogDistance.setTitle(getString(R.string.confirm))
|
||||
.setDescription(
|
||||
customDialogDistance.setTitle(getString(R.string.confirm)).setDescription(
|
||||
getString(R.string.locationDiferent) + getString(R.string.distance) + locationCurrent.distanceTo(
|
||||
locationClient
|
||||
)
|
||||
)
|
||||
.setOkButton(getString(R.string.keep)) {
|
||||
).setOkButton(getString(R.string.keep)) {
|
||||
|
||||
uploadImage(MyLocation(locationClient.longitude, locationClient.latitude))
|
||||
customDialogDistance.dismiss()
|
||||
|
@ -112,8 +148,7 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
}.setKoButton(getString(R.string.modify)) {
|
||||
uploadImage(lastLocationCurrent)
|
||||
customDialogDistance.dismiss()
|
||||
}
|
||||
.show()
|
||||
}.show()
|
||||
} else {
|
||||
uploadImage(MyLocation(locationClient.longitude, locationClient.latitude))
|
||||
}
|
||||
|
@ -133,39 +168,80 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
|
||||
private fun setViews(clientTicketList: ClientTicketSalix) {
|
||||
|
||||
if (clientTicketList != null) {
|
||||
binding.nameAddress.text = clientTicketList.nickname
|
||||
ticketsSet = HashSet()
|
||||
var sum = 0
|
||||
for (exp in clientTicketList.tickets) {
|
||||
ticketsSet.add(exp.Id)
|
||||
sum += exp.Packages
|
||||
|
||||
binding.nameAddress.text = clientTicketList.nickname
|
||||
ticketsSet = HashSet()
|
||||
var sum = 0
|
||||
for (exp in clientTicketList.tickets) {
|
||||
ticketsSet.add(exp.Id)
|
||||
sum += exp.Packages
|
||||
}
|
||||
binding.idTickets.text = ticketsSet.toList().toString()
|
||||
binding.totalPackages.text = sum.toString()
|
||||
}
|
||||
//Tarea 7541
|
||||
|
||||
/* deliveryViewModel.getTicketObservations(ticketsSet.toList())
|
||||
deliveryViewModel.responseObservations.observe(this) {
|
||||
listClaimTicketObservations = it
|
||||
if (it.isNotEmpty()) {
|
||||
showNotes(it)
|
||||
setToolBar()
|
||||
}
|
||||
}*/
|
||||
binding.idTickets.text = ticketsSet.toList().toString()
|
||||
binding.totalPackages.text = sum.toString()
|
||||
|
||||
}
|
||||
|
||||
private fun showNotes(listClaimObservations: List<TicketObservation>) {
|
||||
val ticketNotes: MutableList<GeneralItem> = mutableListOf()
|
||||
//Tarea 6275
|
||||
for (item in listClaimObservations) {
|
||||
|
||||
ticketNotes.add(
|
||||
GeneralItem(
|
||||
text = "${item.ticketFk}:${item.description}", code = ""
|
||||
)
|
||||
)
|
||||
}
|
||||
val customDialogList = CustomDialogList(this)
|
||||
|
||||
customDialogList.setValueVisibility(View.GONE)
|
||||
customDialogList.setTitle(getString(R.string.notesClaim)).setKoButton(
|
||||
getString(
|
||||
R.string.accept
|
||||
)
|
||||
) {
|
||||
customDialogList.dismiss()
|
||||
}.hideDialog().show()
|
||||
|
||||
val listObservationsAdapter =
|
||||
GeneralAdapter(ticketNotes, object : OnGeneralItemRowClickListener {
|
||||
override fun OnGeneralItemRowClickListener(item: GeneralItem) {
|
||||
|
||||
customDialogList.dismiss()
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
customDialogList.getRecyclerView().adapter = listObservationsAdapter
|
||||
customDialogList.getRecyclerView().layoutManager =
|
||||
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
|
||||
|
||||
}
|
||||
|
||||
private fun uploadImage(location: MyLocation) {
|
||||
|
||||
val deliveryViewModel = DeliveryViewModel(application as MobileApplication)
|
||||
val drawing = binding.ink.bitmap
|
||||
val file = File(BitMapToString(drawing, tickets = ticketsSet.toList()))
|
||||
val file = File(bitMapToString(drawing, tickets = ticketsSet.toList()))
|
||||
val queryMap: MutableMap<String?, String?> = HashMap()
|
||||
queryMap["tickets"] = ticketsSet.toString()
|
||||
queryMap["location"] = Gson().toJson(location)
|
||||
queryMap["signedTime"] =
|
||||
SimpleDateFormat("yyyy-LL-dd HH:mm", Locale.getDefault()).format(
|
||||
Date()
|
||||
)
|
||||
queryMap["signedTime"] = SimpleDateFormat("yyyy-LL-dd HH:mm", Locale.getDefault()).format(
|
||||
Date()
|
||||
)
|
||||
|
||||
var mySign =
|
||||
SignedTickets(
|
||||
queryMap,
|
||||
baseContext.externalCacheDir.toString() + "/" + file.name
|
||||
)
|
||||
val mySign = SignedTickets(
|
||||
queryMap, baseContext.externalCacheDir.toString() + "/" + file.name
|
||||
)
|
||||
|
||||
deliveryViewModel.saveSign(
|
||||
mySign.fileName, mySign.queryMapList,
|
||||
|
@ -189,7 +265,7 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
}
|
||||
|
||||
@Throws(IOException::class)
|
||||
fun BitMapToString(bitmap: Bitmap, tickets: List<Long>): String {
|
||||
fun bitMapToString(bitmap: Bitmap, tickets: List<Long>): String {
|
||||
var fileNameSign = baseContext.externalCacheDir.toString() + "/sign"
|
||||
for (ticket in tickets) {
|
||||
fileNameSign += "_$ticket"
|
||||
|
@ -213,9 +289,7 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
|
||||
private fun setLocation() {
|
||||
ActivityCompat.requestPermissions(
|
||||
this,
|
||||
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
|
||||
111
|
||||
this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 111
|
||||
)
|
||||
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
|
||||
locationUpdateCallback = this
|
||||
|
@ -224,9 +298,7 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
}
|
||||
|
||||
override fun onRequestPermissionsResult(
|
||||
requestCode: Int,
|
||||
permissions: Array<out String>,
|
||||
grantResults: IntArray
|
||||
requestCode: Int, permissions: Array<out String>, grantResults: IntArray
|
||||
) {
|
||||
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
|
@ -243,7 +315,7 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
setMessage(getString(R.string.manuallyPermission))
|
||||
setPositiveButton(
|
||||
"Aceptar"
|
||||
) { dialog, which ->
|
||||
) { _, _ ->
|
||||
finish()
|
||||
}
|
||||
|
||||
|
@ -261,18 +333,16 @@ class SignedActivity : BaseActivity<ActivitySignBinding>(), LocationUpdateCallba
|
|||
setMessage(getString(R.string.advicePermission))
|
||||
setPositiveButton(
|
||||
getString(R.string.accept)
|
||||
) { dialog, which ->
|
||||
) { dialog, _ ->
|
||||
dialog.dismiss()
|
||||
ActivityCompat.requestPermissions(
|
||||
activity,
|
||||
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
|
||||
111
|
||||
activity, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 111
|
||||
)
|
||||
|
||||
}
|
||||
setNegativeButton(
|
||||
getString(R.string.cancel)
|
||||
) { dialog, which ->
|
||||
) { _, _ ->
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,8 +57,7 @@ data class Ticket(
|
|||
data class TicketObservation
|
||||
(
|
||||
var ticketFk: Long,
|
||||
var description: String,
|
||||
var observationTypeFk: Int
|
||||
var description: String
|
||||
)
|
||||
|
||||
@Entity(tableName = "signedPending")
|
||||
|
|
|
@ -23,6 +23,7 @@ import es.verdnatura.presentation.view.feature.delivery.model.RouteDeliveryList
|
|||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteList
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.Ticket
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.TicketObservation
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
|
@ -76,6 +77,8 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) {
|
|||
val responseNotes: LiveData<Boolean> = _responseNotes
|
||||
var loadNotes: LiveData<Event<Boolean>> = _responseNotes.map { Event(it) }
|
||||
|
||||
private val _responseObservations by lazy { MutableLiveData<List<TicketObservation>>() }
|
||||
val responseObservations: LiveData<List<TicketObservation>> = _responseObservations
|
||||
|
||||
private val _expeditionList by lazy { MutableLiveData<ExpeditionList>() }
|
||||
val expeditionList: LiveData<ExpeditionList> = _expeditionList
|
||||
|
@ -87,6 +90,20 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) {
|
|||
|
||||
private val _responseStateList by lazy { MutableLiveData<ResponseItemVO>() }
|
||||
val responseStateList: LiveData<ResponseItemVO> = _responseStateList
|
||||
fun getTicketObservations(
|
||||
listTickets: List<Long>
|
||||
|
||||
) {
|
||||
salix.getTicketObservations(
|
||||
filter = """{ "where": { "observationTypeFk": 11,"ticketFk": { "inq": $listTickets } },
|
||||
| "fields":["description", "ticketFk"]}""".trimMargin()
|
||||
).enqueue(object : SalixCallback<List<TicketObservation>>(context) {
|
||||
override fun onSuccess(response: Response<List<TicketObservation>>) {
|
||||
_responseObservations.value = response.body()
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun companyGetFiscaldata(
|
||||
userId: Int
|
||||
|
@ -302,8 +319,6 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) {
|
|||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun updateNotesFromDropOff(
|
||||
ticketFK: Long, description: String
|
||||
|
||||
|
|
|
@ -836,5 +836,6 @@
|
|||
<string name="errorInputQuantity">Error al introducir cantidad</string>
|
||||
<string name="txtName">%1$s %2$s</string>
|
||||
<string name="selectPrinterEmergency">La impresora seleccionada es solo para emergencias.¿Estás seguro?</string>
|
||||
<string name="notesClaim">Notas de reclamaciones</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -836,5 +836,6 @@
|
|||
<string name="errorInputQuantity">Error al introducir cantidad</string>
|
||||
<string name="txtName">%1$s %2$s</string>
|
||||
<string name="selectPrinterEmergency">La impresora seleccionada es solo para emergencias.¿Estás seguro?</string>
|
||||
<string name="notesClaim">Notas de reclamaciones</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -836,5 +836,6 @@
|
|||
<string name="errorInputQuantity">Error al introducir cantidad</string>
|
||||
<string name="txtName">%1$s %2$s</string>
|
||||
<string name="selectPrinterEmergency">La impresora seleccionada es solo para emergencias.¿Estás seguro?</string>
|
||||
<string name="notesClaim">Notas de reclamaciones</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -838,5 +838,6 @@
|
|||
<string name="errorInputQuantity">Error al introducir cantidad</string>
|
||||
<string name="txtName">%1$s %2$s</string>
|
||||
<string name="selectPrinterEmergency">La impresora seleccionada es solo para emergencias.¿Estás seguro?</string>
|
||||
<string name="notesClaim">Notas de reclamaciones</string>
|
||||
|
||||
</resources>
|
||||
|
|
Loading…
Reference in New Issue