diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index b589d56e..b86273d9 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 418e80de..8b495d66 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d32fcd14..24a6a185 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -60,6 +60,11 @@
@style/AppTheme
+
+
+ @style/AppTheme
+
+
@style/AppTheme
@@ -406,6 +411,16 @@
@style/AppTheme
+
+
+ @style/AppTheme
+
+
+
+
+ @style/AppTheme
+
+
@style/AppTheme
@@ -478,40 +493,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
@@ -526,7 +513,7 @@
-
+
@@ -616,7 +603,7 @@
@@ -706,12 +693,12 @@
"cidr.known.project.marker": "true",
"com.developerphil.adbidea.selecteddevices": "G65TY9DQN7X4BIE6",
"com.google.services.firebase.aqiPopupShown": "true",
- "git-widget-placeholder": "dev__6078",
+ "git-widget-placeholder": "dev",
"ignore.virus.scanning.warn.message": "true",
"kotlin-language-version-configured": "true",
"last_directory_selection": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable",
- "last_opened_file_path": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app",
- "project.structure.last.edited": "Project",
+ "last_opened_file_path": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout",
+ "project.structure.last.edited": "Modules",
"project.structure.proportion": "0.17",
"project.structure.side.proportion": "0.2",
"rearrange.code.on.save": "true",
@@ -728,9 +715,6 @@
"select * from expeditionPending;",
"select * from expedition where id = 7753995;\n\n",
"\nselect * from expedition where id = 7753995;"
- ],
- "kotlin-gradle-user-dirs": [
- "C:\\Users\\sergiodt\\.gradle"
]
}
}
@@ -741,8 +725,8 @@
-
+
@@ -762,11 +746,11 @@
+
+
-
-
@@ -798,9 +782,10 @@
+
+
-
@@ -909,6 +894,9 @@
+
+
+
@@ -1277,7 +1265,7 @@
1709725795643
-
+
@@ -1355,7 +1343,6 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1405,8 +1405,6 @@
-
-
@@ -1415,9 +1413,7 @@
-
-
@@ -1428,9 +1424,13 @@
-
-
+
+
+
+
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..de9e44ca
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,31 @@
+# Version XX.XX - XXXX-XX-XX
+
+### Added 🆕
+
+- feat: refs #5443 collectionFragmentChecker by:Sergio De la torre
+- feat: refs#6845 userInterface by:Sergio De la torre
+- feat: refs #6845 userIterface by:Sergio De la torre
+- feat: refs #6861 reservas by:Sergio De la torre
+- feat: refs #6869 itemShelvings (warehouse/dev_6078, warehouse/dev, dev_6078) by:Sergio De la
+ torre
+- feat: refs #7266 printItem by:Sergio De la torre
+- feat: refs #7922 scanOrder by:Sergio De la torre
+- feat: refs #8020 controlVehiculos by:Sergio De la torre
+- feat: refs #8022 kotlin versionCatalog by:Sergio De la torre
+- feat: refs #8082 ticketPickup by:Sergio De la torre
+- feat: refs #8099 addSalarySupplement by:Sergio De la torre
+- feat: refs #8150 moveExpedition by:Sergio De la torre
+- feat: refs #8150 moveExpeditions by:Sergio De la torre
+- feat: refs #8175 crashlyticsAndUpdate by:Sergio De la torre
+- feat: refs #8175 refactorCode by:Sergio De la torre
+- feat: refs #8176 refactorSearchDialog by:Sergio De la torre
+- feat: refs #8182 zoneClickable by:Sergio De la torre
+- feat: refs#8213 reservas by:Sergio De la torre
+
+### Changed 📦
+
+- feat: refs #8175 refactorCode by:Sergio De la torre
+- feat: refs #8176 refactorSearchDialog by:Sergio De la torre
+
+### Fixed 🛠️
+
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 97becf18..19d7372c 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -15,8 +15,8 @@ android {
applicationId = "es.verdnatura"
minSdk = 26
targetSdk = 33 // se deja con target si no Play Protect la bloquea
- versionCode = 358
- versionName = "24.46"
+ versionCode = 374
+ versionName = "24.51"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@@ -30,6 +30,10 @@ android {
getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
)
}
+ getByName("debug") {
+ isMinifyEnabled = false
+
+ }
}
//package de la app general = "package_name": "es.verdnatura"
//package de la app beta = "package_name": "es.verdnatura.sfusion"
@@ -75,8 +79,8 @@ android {
}
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
+ sourceCompatibility = JavaVersion.VERSION_21
+ targetCompatibility = JavaVersion.VERSION_21
}
/* composeOptions {
kotlinCompilerExtensionVersion = "1.5.15"
@@ -84,9 +88,9 @@ android {
/* kotlin {
jvmToolchain(17)
}
- kotlinOptions {
- jvmTarget = "17"
- }*/
+ kotlinOptions {
+ jvmTarget = "17"
+ }*/
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
diff --git a/app/general/release/baselineProfiles/0/app-general-release.dm b/app/general/release/baselineProfiles/0/app-general-release.dm
new file mode 100644
index 00000000..a622bdba
Binary files /dev/null and b/app/general/release/baselineProfiles/0/app-general-release.dm differ
diff --git a/app/src/main/java/es/verdnatura/db/database.kt b/app/src/main/java/es/verdnatura/db/database.kt
index 54fc4f0b..a67b2cb1 100644
--- a/app/src/main/java/es/verdnatura/db/database.kt
+++ b/app/src/main/java/es/verdnatura/db/database.kt
@@ -113,8 +113,8 @@ interface RoutesDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertLoaded(routeLoaded: RouteLoaded)
-
- @Query("DELETE FROM routes WHERE created != :today")
+
+ @Query("DELETE FROM routes WHERE dated != :today")
suspend fun deleteLoaded(today: String)
}
diff --git a/app/src/main/java/es/verdnatura/domain/ConstAndValues.kt b/app/src/main/java/es/verdnatura/domain/ConstAndValues.kt
index 7f38a4be..fb90d19d 100644
--- a/app/src/main/java/es/verdnatura/domain/ConstAndValues.kt
+++ b/app/src/main/java/es/verdnatura/domain/ConstAndValues.kt
@@ -24,6 +24,7 @@ object ConstAndValues {
const val USER = "user"
const val PASSWORD = "password"
const val TOKEN = "token"
+ const val TOKENMULTIMEDIA = "tokenMultimedia"
const val TTL = "ttl"
const val TOKENCREATED = "tokenCreated"
const val SECTORDESCRIP = "sectordescrip"
@@ -44,6 +45,7 @@ object ConstAndValues {
const val ENTRYOBSERVATIONORIGINAL = "ENTRYOBSERVATIONORIGINAL"
const val ITEMPACKING = "itemPackingType"
const val ITEMPACKINGFK = "itemPackingTypeFk"
+ const val ITEMPACKINGTYPEFILTER = "itemPackingTypeFilter"
const val BUYER = "buyernickname"
const val BUYERID = "buyerid"
const val WAGON = "wagon"
diff --git a/app/src/main/java/es/verdnatura/domain/SalixService.kt b/app/src/main/java/es/verdnatura/domain/SalixService.kt
index dda92e6d..8a11c6bc 100644
--- a/app/src/main/java/es/verdnatura/domain/SalixService.kt
+++ b/app/src/main/java/es/verdnatura/domain/SalixService.kt
@@ -17,6 +17,7 @@ import es.verdnatura.presentation.view.feature.articulo.model.ItemDetails
import es.verdnatura.presentation.view.feature.articulo.model.ItemPackingType
import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal
import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO
+import es.verdnatura.presentation.view.feature.calidad.model.Buyer
import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
import es.verdnatura.presentation.view.feature.collection.SalixSaleQuantity
@@ -44,6 +45,7 @@ import es.verdnatura.presentation.view.feature.login.model.AccessConfigSalix
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.MultimediaTokenResponse
import es.verdnatura.presentation.view.feature.login.model.NameWorker
import es.verdnatura.presentation.view.feature.login.model.OperatorAdd
import es.verdnatura.presentation.view.feature.login.model.OperatorSalix
@@ -74,6 +76,7 @@ import es.verdnatura.presentation.view.feature.sacador.model.TicketStateSalix
import es.verdnatura.presentation.view.feature.ubicador.model.ItemBuy
import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelvingNewer
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
+import es.verdnatura.presentation.view.feature.ubicador.model.ShelvingItem
import es.verdnatura.presentation.view.feature.workermistake.model.DepartmentMistake
import es.verdnatura.presentation.view.feature.workermistake.model.ExpeditionMistakeSalix
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
@@ -144,8 +147,8 @@ interface SalixService {
@Query("filter") filter: String
): Call>
- @POST("Applications/buy_getUltimate/execute-func")
- fun buyUltimate(
+ @POST("Applications/buy_getLastWithoutInventory/execute-func")
+ fun buyGetLastWithoutInventory(
@Query("params") params: Any, @Query("schema") schema: String = "vn"
): Call
@@ -154,6 +157,11 @@ interface SalixService {
@Query("filter") filter: String
): Call>
+ @GET("itemTypes")
+ fun getBuyersByItemPackingType(
+ @Query("filter") filter: String
+ ): Call>
+
@GET("Tickets/myLastModified")
fun myLastModified(
@Query("filter") filter: String
@@ -527,6 +535,20 @@ interface SalixService {
@Query("shelvingFk") shelvingFkIn: Any, @Query("parking") parking: Any? = null
): Call>
+ @GET("ItemShelvings/getListItemNewer")
+ fun getListItemNewerNew(
+ @Query("shelvingFk") shelvingFkIn: Any,
+ @Query("parking") parking: Any? = null,
+ @Query("itemFk") itemFk: Any? = null
+ ): Call>
+
+ @GET("ItemShelvings/getItemsByReviewOrder")
+ fun getItemsByReviewOrder(
+ @Query("shelving") shelvingFkIn: Any,
+ @Query("parking") parking: Any? = null,
+ @Query("itemFk") itemFk: Any? = null
+ ): Call>
+
@POST("Applications/sectorCollectionSaleGroup_add/execute-proc")
fun sectorCollectionSaleGroupAdd(
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
@@ -706,10 +728,20 @@ interface SalixService {
@Query("params") params: Any,
): Call>
- @GET("Shelvings")
- fun itemShelvingGet(
+ @GET("Shelvings/findOne")
+ fun shelvingGet(
@Query("filter") filter: Any,
- ): Call>
+ ): Call
+
+ @GET("ImageConfigs/findOne")
+ fun getImageConfig(
+ @Query("filter") filter: String = """{"fields":["url"]}"""
+ ): Call
+
+ @GET("Shelvings/findOne")
+ fun shelvingGetFromCode(
+ @Query("filter") filter: Any,
+ ): Call
@POST("Applications/expedition_scan/execute-proc")
fun expeditionScan(
@@ -992,6 +1024,10 @@ interface SalixService {
fun getAccessTokenConfigs(
): Call>
+ @GET("VnUsers/ShareToken")
+ fun getMultimediaToken(
+ ): Call
+
@POST("vnusers/renewToken")
fun renewToken(
): Call
@@ -1087,6 +1123,11 @@ interface SalixService {
@Query("filter") filter: String
): Call
+ @GET("States/findOne")
+ fun getStateId(
+ @Query("filter") filter: String
+ ): Call
+
@POST("WorkerMistakes")
fun workerMistakesAdd(
@Body workerMistake: WorkerMistakeSalix
diff --git a/app/src/main/java/es/verdnatura/domain/userCases/UserCases.kt b/app/src/main/java/es/verdnatura/domain/userCases/UserCases.kt
index 8215f29c..ef29c45a 100644
--- a/app/src/main/java/es/verdnatura/domain/userCases/UserCases.kt
+++ b/app/src/main/java/es/verdnatura/domain/userCases/UserCases.kt
@@ -15,6 +15,6 @@ class GetItemPrintItemUseCase(private val salixService: SalixService) {
}
fun executeBuyUltimate(params: Any): Call {
- return salixService.buyUltimate(params)
+ return salixService.buyGetLastWithoutInventory(params)
}
}
diff --git a/app/src/main/java/es/verdnatura/presentation/common/PrinterDialogManager.kt b/app/src/main/java/es/verdnatura/presentation/common/PrinterDialogManager.kt
index 03049540..84b6f52b 100644
--- a/app/src/main/java/es/verdnatura/presentation/common/PrinterDialogManager.kt
+++ b/app/src/main/java/es/verdnatura/presentation/common/PrinterDialogManager.kt
@@ -5,13 +5,12 @@ import android.content.Context
import android.text.InputType
import android.view.View
import es.verdnatura.R
+import es.verdnatura.domain.toast
import es.verdnatura.presentation.view.component.CustomDialogList
class PrinterDialogManager(private val context: Context) {
fun showPrintDialog(
- item: Long,
- itemName: String,
- onPrintClick: (Long, String, Int?, Int) -> Unit
+ item: Long, itemName: String, onPrintClick: (Long, String, Int?, Int) -> Unit
) {
val customDialogList = CustomDialogList(context)
customDialogList.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER)
@@ -20,17 +19,15 @@ class PrinterDialogManager(private val context: Context) {
customDialogList.setTitle(context.getString(R.string.itemName, item, itemName))
.setOkButton(context.getString(R.string.printQr)) {
handlePrintClick(item, customDialogList, onPrintClick, "qr")
- }
- .setOkTwoButton(context.getString(R.string.printBarcode)) {
- handlePrintClick(item, customDialogList, onPrintClick, "barcode")
-
- }
- .setKoButton(context.getString(R.string.cancel)) {
customDialogList.dismiss()
- }
- .setHintValueThree(context.getString(R.string.labelNumber))
- .setHintValue(context.getString(R.string.optionalPacking))
- .setTextThree(View.VISIBLE)
+ }.setOkTwoButton(context.getString(R.string.printBarcode)) {
+ handlePrintClick(item, customDialogList, onPrintClick, "barcode")
+ customDialogList.dismiss()
+
+ }.setKoButton(context.getString(R.string.cancel)) {
+ customDialogList.dismiss()
+ }.setHintValueThree(context.getString(R.string.labelNumber))
+ .setHintValue(context.getString(R.string.optionalPacking)).setTextThree(View.VISIBLE)
.show()
customDialogList.getFocusThree()
}
@@ -41,16 +38,21 @@ class PrinterDialogManager(private val context: Context) {
onPrintClick: (Long, String, Int?, Int) -> Unit,
labelType: String
) {
- onPrintClick(
- item,
- labelType,
- if (customDialogList.getValue().isEmpty()) null else customDialogList.getValue()
- .toInt(),
- if (customDialogList.getValueOptional()
- .isEmpty()
- ) 1 else customDialogList.getValueOptional().toInt()
- )
- customDialogList.dismiss()
+ try {
+ onPrintClick(
+ item,
+ labelType,
+ if (customDialogList.getValue().isEmpty()) null else customDialogList.getValue()
+ .toInt(),
+ if (customDialogList.getValueOptional()
+ .isEmpty()
+ ) 1 else customDialogList.getValueOptional().toInt()
+ )
+ customDialogList.dismiss()
+ } catch (ex: Exception) {
+ context.getString(R.string.errorInput).toast(context)
+ }
+
}
}
diff --git a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt
index facac1e2..ef715c22 100644
--- a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt
+++ b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt
@@ -31,6 +31,7 @@ import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.sacador.model.Sale
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
import es.verdnatura.presentation.view.feature.smarttag.model.SmartTag
+import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelving
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
@@ -167,6 +168,10 @@ interface OnVisibleClickListenerNew {
fun onVisibleClickListener(item: ItemUbicador)
}
+interface OnVisibleClickListener6869 {
+ fun onVisibleClickListener(item: ItemShelving)
+}
+
interface OnVisibleInventoryClickListener {
fun onVisibleInventoryClickListener(item: ItemInventoryParking)
}
@@ -179,6 +184,10 @@ interface OnMoreClickListenerNew {
fun onMoreClickListener(item: ItemUbicador)
}
+interface OnMoreClickListener6869 {
+ fun onMoreClickListener(item: ItemShelving)
+}
+
interface OnTruckClickListener {
fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String)
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt
index 5787f391..37ae9e4f 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt
@@ -121,7 +121,8 @@ class AjustesFragment :
binding.searchableRecyclerView.setAdapter(adapter, listNames)
binding.searchableRecyclerView.visibility = View.VISIBLE
- binding.searchableRecyclerView.setSearchHintWithoutFocus(getString(R.string.sectorSearch))
+ binding.searchableRecyclerView.setSearchHint(getString(R.string.sectorSearch))
+ ma.hideKeyboard(binding.searchableRecyclerView)
}
private fun setToolBar() {
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardFragment.kt
index b3b03808..7509fb19 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardFragment.kt
@@ -3,6 +3,7 @@ package es.verdnatura.presentation.view.feature.articulo.fragment
import android.content.Intent
import android.graphics.drawable.Drawable
import android.text.InputType
+import android.view.MotionEvent
import android.view.View
import android.view.View.GONE
import android.view.inputmethod.EditorInfo
@@ -12,6 +13,7 @@ import com.google.gson.Gson
import es.verdnatura.R
import es.verdnatura.databinding.FragmentItemCardBinding
import es.verdnatura.domain.ConstAndValues.PRINTERFK
+import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
import es.verdnatura.domain.notNull
import es.verdnatura.domain.toast
@@ -37,6 +39,7 @@ import es.verdnatura.presentation.view.feature.articulo.model.ItemCardRowVO
import es.verdnatura.presentation.view.feature.articulo.model.ItemCardVO
import es.verdnatura.presentation.view.feature.articulo.model.ItemPackingType
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
+import org.json.JSONObject
class ItemCardFragment(
var itemFk: String = ""
@@ -56,7 +59,7 @@ class ItemCardFragment(
private var quantityToDiscard = 0
private var itemInfoG: ItemCardVO? = null
private var positionToReturnY = 0
- private var originalScan: String? = null
+ private var originalScan: Long? = null
private var buyToPrint: Long? = null
companion object {
@@ -108,12 +111,12 @@ class ItemCardFragment(
iconHistory.tooltipText = getTooltip(R.drawable.ic_history_black_24dp)
iconSalix.tooltipText = getTooltip(R.drawable.ic_logo_salix)
// Tarea 7266
- // iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp)
+ iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp)
listIcons.add(iconSalix)
listIcons.add(iconReload)
listIcons.add(iconHistory)
- // listIcons.add(iconPrint)
+ listIcons.add(iconPrint)
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
@@ -128,7 +131,7 @@ class ItemCardFragment(
val printerDialogManager = PrinterDialogManager(requireContext())
printerDialogManager.showPrintDialog(
- itemInfoG!!.id.toLong(),
+ buyToPrint ?: itemInfoG!!.id.toLong(),
itemInfoG?.longName ?: ""
) { id, labelType, copies, packing ->
printItem(id, labelType, copies, packing)
@@ -183,7 +186,6 @@ class ItemCardFragment(
private fun printItem(id: Long, labelType: String, packing: Int?, copies: Int?) {
try {
-
viewModel.printItem(
reportName = "LabelBuy",
printerFk = mobileApplication.dataStoreApp.readDataStoreKey(
@@ -191,7 +193,12 @@ class ItemCardFragment(
),
userFk = mobileApplication.userId!!,
priority = "normal",
- params = """{'copies':$copies,'id':$id,'labelType':'$labelType','packing':$packing}"""
+ params = JSONObject().apply {
+ put("copies", copies)
+ put("id", id)
+ put("labelType", labelType)
+ put("packing", packing)
+ }.toString().replace("\"", "\\\"")
)
} catch (ex: Exception) {
ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
@@ -200,8 +207,39 @@ class ItemCardFragment(
hideKeyboard()
}
- private fun setEvents() {
+ private fun openWebViewer(param: String) {
+ //variableWeb = if (itemScan is Number) "var-itemFk=$param" else "var-shelvingCode=$param"
+ ma.onPasillerosItemClickListener(
+ PasillerosItemVO(
+ title = R.string.titleWebViewer,
+ ),
+
+ Gson().toJson(
+ mutableMapOf(
+ "entryPoint" to param,
+ "web" to "https://grafana.verdnatura.es/d/ce4b8ymvex4owa?var-itemFk=$param&var-vnToken=${
+ mobileApplication.dataStoreApp.readDataStoreKey(
+ TOKENMULTIMEDIA
+ )
+ }"
+ )
+ ), param = ""
+ )
+
+ }
+
+ private fun setEvents() {
+ binding.editItemFk.setOnTouchListener { v, event ->
+ if (event.action == MotionEvent.ACTION_UP) {
+ val drawableRight = binding.editItemFk.compoundDrawables[2]
+ if (drawableRight != null && event.x >= v.width - drawableRight.bounds.width()) {
+ openWebViewer(itemInfoG?.id?.toString() ?: "")
+ return@setOnTouchListener true
+ }
+ }
+ false
+ }
binding.editItemFk.requestFocus()
binding.editItemFk.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
@@ -209,9 +247,9 @@ class ItemCardFragment(
try {
originalScan = itemScanValue(
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
- ).toString()
+ ).toString().toLong()
getItemCard(
- originalScan!!
+ originalScan!!.toString()
)
} catch (ex: Exception) {
ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
@@ -259,19 +297,17 @@ class ItemCardFragment(
binding.itemcardLayout.visibility = View.VISIBLE
setItemCard(it)
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
- /* Tarea 7266
+ // Tarea 7266
if (originalScan == null || it.id == originalScan!!.toInt()) {
- viewModel.buyUltimate(
- itemFk = it.id,
- warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
- WAREHOUSEFK
- ),
- dated = LocalDate.now()
- .format(DateTimeFormatter.ofPattern("yyyy-dd-MM"))
- )
- } else {
- buyToPrint = originalScan!!.toLong()
- }*/
+ viewModel.buyGetLastWithoutInventory(
+ itemFk = it.id,
+ warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
+ WAREHOUSEFK
+ )
+ )
+ } else {
+ buyToPrint = originalScan!!.toLong()
+ }
} else {
binding.itemcardLayout.visibility = GONE
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemCard)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardViewModel.kt
index 630199d4..55789b6e 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardViewModel.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardViewModel.kt
@@ -239,10 +239,15 @@ class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
})
}
- fun buyUltimate(
- itemFk: Int, warehouseFk: Int, dated: String
+ fun buyGetLastWithoutInventory(
+ itemFk: Int, warehouseFk: Int,
) {
- salix.buyUltimate(params = arrayListOf(itemFk, warehouseFk, dated).formatWithQuotes())
+ salix.buyGetLastWithoutInventory(
+ params = arrayListOf(
+ itemFk,
+ warehouseFk
+ ).formatWithQuotes()
+ )
.enqueue(object : SalixCallback(context) {
override fun onSuccess(response: Response) {
_buyUltimateResponse.value = response.body()
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/calidad/model/BuyerVO.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/calidad/model/BuyerVO.kt
index 74a6e87e..4de382e7 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/calidad/model/BuyerVO.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/calidad/model/BuyerVO.kt
@@ -27,3 +27,21 @@ class ItemBuyerVO(
class ItemBuyerListVO(
var list: List = listOf()
)
+
+data class BuyerList(
+ var list: List = listOf()
+)
+
+data class Buyer(
+ val itemPackingTypeFk: String,
+ val worker: Worker
+)
+
+data class Worker(
+ val user: User
+)
+
+data class User(
+ val id: Int,
+ val nickname: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt
index 61f19df0..bf0f30e6 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt
@@ -311,9 +311,22 @@ class SaleAdapterNew(
if (sale.isPicked == 1) {
if (type == PREPARED) {
contentLayout.setBackgroundColor(
- getColor(
- context!!, R.color.verdnatura_orange_salix
- )
+
+ if (sale.saleGroupFk == null) {
+ getColor(
+ context!!, R.color.verdnatura_orange_salix
+ )
+ } else {
+ if (sale.stateCode != null && sale.stateCode == "PREPARED") {
+ getColor(
+ context!!, R.color.verdnatura_orange_salix
+ )
+ } else {
+ getColor(
+ context!!, R.color.verdnatura_dark_sky_blue
+ )
+ }
+ }
)
} else {
contentLayout.setBackgroundColor(
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionCheckerViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionCheckerViewModel.kt
index 77ad2c28..6ffa715b 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionCheckerViewModel.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionCheckerViewModel.kt
@@ -53,6 +53,10 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context)
val responseTicketState: LiveData = _responseTicketState
val loadTicketState: LiveData> = _responseTicketState.map { Event(it) }
+ private val _responseTicketSetState by lazy { MutableLiveData() }
+ val responseTicketSetState: LiveData = _responseTicketSetState
+ val loadTicketSetState: LiveData> = _responseTicketSetState.map { Event(it) }
+
private val _responseTicketIsPickup by lazy { MutableLiveData() }
val responseTicketIsPickup: LiveData = _responseTicketIsPickup
val loadTicketIsPickup: LiveData> = _responseTicketIsPickup.map { Event(it) }
@@ -70,9 +74,9 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context)
val responseNew: LiveData = _responseNew
val loadAddNew: LiveData> = _responseNew.map { Event(it) }
- private val _responseIncQuantity by lazy { MutableLiveData() }
- val responseIncQuantity: LiveData = _responseIncQuantity
- val loadIncQuantity: LiveData> = _responseIncQuantity.map { Event(it) }
+ private val _responseIncQuantity by lazy { MutableLiveData() }
+ val responseIncQuantity: LiveData = _responseIncQuantity
+ val loadIncQuantity: LiveData> = _responseIncQuantity.map { Event(it) }
private val _responseParking by lazy { MutableLiveData() }
val responseParking: LiveData = _responseParking
@@ -217,7 +221,7 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context)
salix.ticketStateTodaySetState(arrayListOf(ticketFk, state).formatWithQuotes())
.enqueue(object : SalixCallback(context) {
override fun onSuccess(response: Response) {
- _responseTicketState.value = TicketState()
+ _responseTicketSetState.value = TicketState(code = state, ticketFk = ticketFk)
super.onSuccess(response)
}
})
@@ -232,7 +236,7 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context)
override fun onSuccess(response: Response) {
super.onSuccess(response)
- _responseIncQuantity.value = true
+ _responseIncQuantity.value = saleFk
}
})
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentChecker.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentChecker.kt
index 587e8b19..6549f434 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentChecker.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentChecker.kt
@@ -107,6 +107,7 @@ class CollectionFragmentChecker(
override fun onResume() {
super.onResume()
scanRequest()
+ viewModel.setPausedState(false)
}
override fun init() {
@@ -172,19 +173,18 @@ class CollectionFragmentChecker(
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
- if (collection.tickets.isNotEmpty())
- when (item) {
- iconViewCollection.drawable -> getCollection()
- iconPrint.drawable -> print()
- iconAdd.drawable -> addItem()
- iconWorker.drawable -> showUser()
- iconUpdate.drawable -> updateScreen()
- iconParking.drawable -> pasillerosItemClickListener?.onPasillerosItemClickListener(
- PasillerosItemVO(
- title = R.string.Parking
- ), ""
- )
- }
+ if (collection.tickets.isNotEmpty()) when (item) {
+ iconViewCollection.drawable -> getCollection()
+ iconPrint.drawable -> print()
+ iconAdd.drawable -> addItem()
+ iconWorker.drawable -> showUser()
+ iconUpdate.drawable -> updateScreen()
+ iconParking.drawable -> pasillerosItemClickListener?.onPasillerosItemClickListener(
+ PasillerosItemVO(
+ title = R.string.Parking
+ ), ""
+ )
+ }
}
})
@@ -237,8 +237,6 @@ class CollectionFragmentChecker(
}
private fun takeActionPrevia(customDialogList: CustomDialogList) {
- println("previaaaa ${customDialogList.getValue()}")
-
ma.hideKeyboard(customDialogList.getEditText())
try {
val saleGroupScanned = itemScanValue(
@@ -383,13 +381,11 @@ class CollectionFragmentChecker(
customDialogWarning.setTitle(getString(R.string.ticketPickup))
customDialogWarning.setDescription(
getString(
- R.string.ticketPickupDescr,
- binding.mainToolbar.toolbarTitle.text
+ R.string.ticketPickupDescr, binding.mainToolbar.toolbarTitle.text
)
- )
- .setOkButton(getString(R.string.aware)) {
- customDialogWarning.dismiss()
- }
+ ).setOkButton(getString(R.string.aware)) {
+ customDialogWarning.dismiss()
+ }
customDialogWarning.show()
}
@@ -399,13 +395,20 @@ class CollectionFragmentChecker(
event.getContentIfNotHandled().notNull {
context.showToastCenterWithBackground(
getString(
- R.string.parkingIn,
- ticketScanTxt
+ R.string.parkingIn, ticketScanTxt
)
)
}
}
+ loadTicketSetState.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ "${it.ticketFk}: ${if (it.code == "CHECKED") "Revisado" else "Revisando"}".toast(
+ requireContext()
+ )
+ }
+ }
+
loadPrint.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey(
@@ -469,7 +472,7 @@ class CollectionFragmentChecker(
loadIncQuantity.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
- incresaseSuccesful()
+ incresaseSuccesful(it)
}
}
@@ -566,15 +569,23 @@ class CollectionFragmentChecker(
compareBy({ it.isControlled }, { it.picked })
)*/
- saleAdapter = SaleAdapter(
- myGroupList as MutableList,
+ saleAdapter = SaleAdapter(myGroupList as MutableList,
pasillerosItemClickListener!!,
object : OnQuantityClickListener {
override fun onQuantityClick(sale: SaleVO) {
myGroupList.forEachIndexed { index, saleVO ->
- if (saleVO.saleFk == sale.saleFk) {
- showQuantityDialog(index)
+
+ if (saleVO.isParent) {
+ saleVO.sonSales.forEachIndexed { indexSon, saleV0 ->
+ if (saleV0.saleFk == sale.saleFk) {
+ showQuantityDialogBySale(saleV0.saleFk)
+ }
+ }
+ } else {
+ if (saleVO.saleFk == sale.saleFk) {
+ showQuantityDialog(index)
+ }
}
}
@@ -638,8 +649,7 @@ class CollectionFragmentChecker(
}
}
- }
- )
+ })
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.fragmentSacadorCollections.adapter = saleAdapter
@@ -827,7 +837,8 @@ class CollectionFragmentChecker(
/* lm!!.scrollToPositionWithOffset(myPosition, 0)
} else {*/
lm!!.scrollToPositionWithOffset(
- if (myGroupList[myPosition].isControlled == "1") myPosition + 1 else myPosition,
+ //Se modifica posicion revisor
+ if (myGroupList[myPosition].isControlled == "1") myPosition else myPosition,
0
)
//}
@@ -992,16 +1003,26 @@ class CollectionFragmentChecker(
if (totalMark == sales.size) {
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
// saleAdapter!!.notifyDataSetChanged()
-
if (canChangeState) changeTicketState()
} else {
if (allTicketsChecked) {
- sales.forEach {
- if (it.isControlled == "0") {
+ /* sales.forEach {
+ if (it.isControlled == "0") {
+ viewModel.ticketStateTodaySetState(
+ ticketFk = it.ticketFk.toInt(), state = "ON_CHECKING"
+ )
+ }
+ }*/
+
+ val processedTickets = mutableSetOf()
+ sales.forEach { sale ->
+ val ticketFk = sale.ticketFk.toInt()
+ if (sale.isControlled == "0" && ticketFk !in processedTickets) {
viewModel.ticketStateTodaySetState(
- ticketFk = it.ticketFk.toInt(), state = "ON_CHECKING"
+ ticketFk = ticketFk, state = "ON_CHECKING"
)
+ processedTickets.add(ticketFk)
}
}
allTicketsChecked = false
@@ -1009,7 +1030,37 @@ class CollectionFragmentChecker(
}
}
+ private fun showQuantityDialogBySale(saleFk: Int) {
+
+ try {
+
+ customDialogThreeButtons.setDescription(getString(R.string.itemSaleQuantity))
+ .setValue("").setOkButtonAdd(getString(R.string.modify)) {
+ try {
+ increaseQuantityBySale(saleFk, customDialogThreeButtons.getValue().toInt())
+ scanRequest()
+ customDialogThreeButtons.dismiss()
+ } catch (ex: Exception) {
+ ma.messageWithSound(
+ message = getString(R.string.errorInputQuantity),
+ isPlayed = true,
+ isError = true,
+ isToasted = true
+ )
+ }
+
+ }.setKoButton(getString(R.string.cancel)) {
+ scanRequest()
+ customDialogThreeButtons.dismiss()
+ }.show()
+ customDialogThreeButtons.setFocusDialogValue()
+ } catch (ex: Exception) {
+ getString(R.string.errorInput).toast(requireContext())
+ }
+ }
+
private fun showQuantityDialog(position: Int) {
+
try {
customDialogThreeButtons.setDescription(getString(R.string.itemSaleQuantity))
@@ -1037,22 +1088,51 @@ class CollectionFragmentChecker(
}
}
- private fun incresaseSuccesful() {
- try {
- sales[positionIncreaseQuantity].quantity = quantityIncrease
+ private fun incresaseSuccesful(saleFk: Number) {
+ // updateScreen()
+ try {
+ // if (myGroupList[positionIncreaseQuantity].isParent) {
+ //updateScreen()
+ for ((parentIndex, listItem) in myGroupList.withIndex()) {
+
+ if (listItem.isParent) {
+ for ((childIndex, listItemSon) in listItem.sonSales.withIndex()) {
+ if (listItemSon.saleFk == saleFk) {
+ myGroupList[parentIndex].sonSales[childIndex].quantity =
+ quantityIncrease
+ saleAdapter?.notifyDataSetChanged()
+ break
+ }
+ }
+ } else {
+ if (myGroupList[parentIndex].saleFk == saleFk) myGroupList[parentIndex].quantity =
+ quantityIncrease
+ break
+ }
+ }/* } else {
+ myGroupList[positionIncreaseQuantity].quantity = quantityIncrease
+ saleAdapter?.notifyDataSetChanged()
+ }*/
} catch (e: Exception) {
e.message!!.toast(requireContext())
}
- saleAdapter?.notifyDataSetChanged()
- sales[positionIncreaseQuantity].originalQuantity = quantityIncrease
+
}
private fun increaseQuantity(position: Int, quantity: Int) {
positionIncreaseQuantity = position
quantityIncrease = quantity
viewModel.collectionIncreaseQuantitySalix(
- saleFk = sales[position].saleFk, quantity = quantity.toString()
+ saleFk = myGroupList[position].saleFk, quantity = quantity.toString()
+ )
+
+ }
+
+ private fun increaseQuantityBySale(saleFk: Int, quantity: Int) {
+ quantityIncrease = quantity
+ viewModel.collectionIncreaseQuantitySalix(
+ saleFk, quantity = quantity.toString()
)
}
@@ -1083,17 +1163,14 @@ class CollectionFragmentChecker(
}
if (isTicket) {
val labelDialogHelper = LabelDialogHelper(requireContext())
- labelDialogHelper.showLabelDialog(
- onItemSelected = { labelCount ->
- viewModel.collectionStickerPrint(
- collectionFk = collection.collectionFk,
- labelCount = labelCount
- )
- val printerName =
- mobileApplication.dataStoreApp.readDataStoreKey(PRINTERNAME)
- (getString(R.string.Imprimiendo) + printerName).toast(requireContext())
- }
- )
+ labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
+ viewModel.collectionStickerPrint(
+ collectionFk = collection.collectionFk, labelCount = labelCount
+ )
+ val printerName =
+ mobileApplication.dataStoreApp.readDataStoreKey(PRINTERNAME)
+ (getString(R.string.Imprimiendo) + printerName).toast(requireContext())
+ })
} else {
viewModel.collectionStickerPrint(
@@ -1162,7 +1239,7 @@ class CollectionFragmentChecker(
originalQuantity = null,
quantity = null,
rgb = null,
- saleFk = value[0].saleFk,
+ saleFk = 0,
saleGroupFk = value[0].saleGroupFk,
isPreControlled = value[0].isPreControlled,
isPrepared = value[0].isPrepared,
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPicker.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPicker.kt
index 6704e57f..b5833f99 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPicker.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPicker.kt
@@ -297,7 +297,6 @@ class CollectionFragmentPicker(
SACADOR -> {
//jose antonio
myPosition = myGroupList.indexOfFirst { it.saleGroupFk == saleGroupScanned }
- println("previa $saleGroupScanned posicion $myPosition")
viewModel.saleTrackingAddPreparedSaleGroup(
saleGroupScanned.toInt()
)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt
index 779ff998..e8281925 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.kt
@@ -7,8 +7,10 @@ import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.text.InputType
+import android.util.Log.d
import android.view.KeyEvent
import android.view.View
+import android.view.View.VISIBLE
import android.view.WindowManager
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
@@ -71,6 +73,7 @@ import org.json.JSONObject
3-VERIFICAR COLECCIÓN
4-IMPRIMIR
5-EL SACADOR PUEDE MARCAR PREVIA, EL PRESACADOR NO.
+6-EL PRE marca los estados del saleGroup con OK PREVIOUS (26) y el SACADOR con PREPARED (14)
variables:
isVerifiedCollection
@@ -107,6 +110,7 @@ class CollectionFragmentPickerPreviousNew(
private lateinit var myGroupList: List
private var quantityReserveToCheckItemScan = 0
private var isVerifiedCollection = false
+ private var stateCodeId: Number? = null
companion object {
fun newInstance(
@@ -133,19 +137,18 @@ class CollectionFragmentPickerPreviousNew(
}
override fun init() {
- println("Sacando test")
customDialogList = CustomDialogList(requireContext())
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
customDialogThreeButtons = CustomDialogThreeButtons(requireContext())
customDialogThreeButtonsQuantity = CustomDialogThreeButtons(requireContext())
ma.hideBottomNavigation(View.GONE)
- println("type $type")
setEvents()
setToolBar()
viewModel.collectionTicketGetSalix(
collection.collectionFk, print = false
)
+ viewModel.getStateId(if (type == PREITEMPICKERTEST) "OK PREVIOUS" else "PREPARED")
super.init()
}
@@ -334,7 +337,6 @@ class CollectionFragmentPickerPreviousNew(
//lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0)
setTotalLines()
} else {
- println("updating")
updateScreen()
}
}
@@ -350,6 +352,20 @@ class CollectionFragmentPickerPreviousNew(
}
}
+ loadResponseStateId.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ stateCodeId = it
+ }
+ }
+ loadResponseReserveAddPrevOK.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ }
+ }
+ loadSetStateResponse.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ // updateScreen()
+ }
+ }
loadResponseCode.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
@@ -493,21 +509,20 @@ class CollectionFragmentPickerPreviousNew(
}
private fun showDeleteItemShelving(sale: Sale) {
- customDialog.setTitle(getString(R.string.deleteSale))
- .setDescription(
- getString(R.string.deleteSaleDescrip) + getString(
- R.string.sure
- )
- ).setOkButton(getString(R.string.delete)) {
+ customDialog.setTitle(getString(R.string.deleteSale)).setDescription(
+ getString(R.string.deleteSaleDescrip) + getString(
+ R.string.sure
+ )
+ ).setOkButton(getString(R.string.delete)) {
- viewModel.itemShelvingSaleDeleteIsAdded(sale.itemShelvingSaleFk)
- scanRequest()
- customDialog.dismiss()
+ viewModel.itemShelvingSaleDeleteIsAdded(sale.itemShelvingSaleFk)
+ scanRequest()
+ customDialog.dismiss()
- }.setKoButton(getString(R.string.cancel)) {
- scanRequest()
- customDialog.dismiss()
- }.show()
+ }.setKoButton(getString(R.string.cancel)) {
+ scanRequest()
+ customDialog.dismiss()
+ }.show()
}
@@ -539,11 +554,24 @@ class CollectionFragmentPickerPreviousNew(
//Se busca la matricula en las lineas
for (indice in myGroupList.indices) {
//como cuando es presacador no hay parent no entrará
- if (myGroupList[indice].isParent && myGroupList[indice].saleGroupFk == txtscan.toInt()) {
- isFoundSale = true
- storedPosition = indice
- viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt())
- break
+ try {
+ if (myGroupList[indice].isParent && myGroupList[indice].saleGroupFk == txtscan.toInt() || (type == PREPARED && myGroupList[indice].saleGroupFk == txtscan.toInt())) {
+ isFoundSale = true
+ storedPosition = indice
+ viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt())
+ setStateSaleGroup(txtscan.toInt())
+ myGroupList[indice].stateCode =
+ if (myGroupList[indice].stateCode == "PREPARED") {
+ "OK PREVIOUS"
+ } else {
+ "PREPARED"
+ }
+ saleAdapter!!.notifyDataSetChanged()
+ break
+
+ }
+ } catch (ex: Exception) {
+ d("Verdnatura", "not find")
}
if (myGroupList[indice].isPicked != 1 && myGroupList[indice].code != null && myGroupList[indice].code!!.uppercase() == txtscan.uppercase()) {
isFoundSale = true
@@ -562,6 +590,7 @@ class CollectionFragmentPickerPreviousNew(
for (indice in sales.indices) {
if (sales[indice].saleGroupFk != null && sales[indice].saleGroupFk == saleGroupScanned.toInt()) {
viewModel.itemShelvingSaleSetSaleGroup(saleGroupScanned.toInt())
+ setStateSaleGroup(saleGroupScanned.toInt())
storedPosition = indice
mpok!!.start()
return true
@@ -808,15 +837,13 @@ class CollectionFragmentPickerPreviousNew(
showQuestionUbicationEmpty(position, quantity)
}.setOkButtonTwo(getString(R.string.no)) {
scanRequest()
- customDialogThreeButtonsQuantity.dismiss()
- /* viewModel.itemShelvingSaleExists(
+ customDialogThreeButtonsQuantity.dismiss()/* viewModel.itemShelvingSaleExists(
myGroupList[position].itemShelvingSaleFk,
myGroupList[position].itemShelvingFk,
position,
quantity
)*/
- markLine(position, quantity, true)
- /* if (quantity == 0) {
+ markLine(position, quantity, true)/* if (quantity == 0) {
/* viewModel.itemShelvingGet(
myGroupList[position].itemShelvingFk,
@@ -925,8 +952,7 @@ class CollectionFragmentPickerPreviousNew(
ticketSelected,
saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get(
0
- )?.saleGroupFk
- ?: 0,
+ )?.saleGroupFk ?: 0,
sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey(
SECTORFK
)
@@ -952,6 +978,7 @@ class CollectionFragmentPickerPreviousNew(
R.string.addItemQuantity, sale.itemFk
)
)
+ customDialogThreeButtonsQuantity.setCustomDialogValue(VISIBLE)
customDialogThreeButtonsQuantity.setOkButtonAdd(text = getString(R.string.add)) {
ticketSelected = sale.ticketFk
if (customDialogThreeButtonsQuantity.getValue().isNotEmpty()) {
@@ -961,8 +988,7 @@ class CollectionFragmentPickerPreviousNew(
ticketSelected = sale.ticketFk,
saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get(
0
- )?.saleGroupFk
- ?: 0,
+ )?.saleGroupFk ?: 0,
sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey(
SECTORFK
)
@@ -1003,8 +1029,6 @@ class CollectionFragmentPickerPreviousNew(
}
private fun setTotalLines() {
- println("total Mark ${myGroupList.count { it.isPicked == 1 }}")
- println("total size ${myGroupList.size}")
val totalMark = myGroupList.count { it.isPicked == 1 }
binding.mainToolbar.toolbarTitle.text =
if (collection.collectionFk != 0) collection.collectionFk.toString() else ""
@@ -1019,17 +1043,34 @@ class CollectionFragmentPickerPreviousNew(
ticketFk = it.toInt(), state = "PREPARED"
)
}
+ //setStateSaleGroup()
}
PREITEMPICKERTEST -> {
- //viewModel.saleTrackingAddPrevOK(collection.collectionFk)
- viewModel.saleTrackingSectorCollectionAddPrevOK(collection.collectionFk)
+ viewModel.saleTrackingAddPrevOK(collection.collectionFk)
+ //viewModel.saleTrackingSectorCollectionAddPrevOK(collection.collectionFk)
+ val distinctSaleGroups = mutableSetOf()
+ myGroupList.forEach { sale ->
+ sale.saleGroupFk?.let {
+ distinctSaleGroups.add(it)
+ } ?: run {
+ println("No hay salegroup")
+ }
+ }
+ if (distinctSaleGroups.isNotEmpty())
+ distinctSaleGroups.forEach { saleGroup ->
+ setStateSaleGroup(saleGroup)
+ }
}
}
}
}
+ private fun setStateSaleGroup(saleGroup: Number) {
+ viewModel.saleGroupUpdateState(saleGroup, stateCodeId!!)
+ }
+
private fun showScanner(index: Int, sale: Sale) {
customDialogInput.getEditText().inputType = InputType.TYPE_CLASS_TEXT
customDialogInput.setTitle("" + sale.itemFk)
@@ -1157,10 +1198,9 @@ class CollectionFragmentPickerPreviousNew(
).toString()
)
- val foundTicketInCollection =
- collection.tickets.find {
- it.ticketFk == customDialogList.getValue().toInt()
- }
+ val foundTicketInCollection = collection.tickets.find {
+ it.ticketFk == customDialogList.getValue().toInt()
+ }
if (foundTicketInCollection != null) {
isVerifiedCollection = true
ma.hideKeyboard(customDialogList.getEditText())
@@ -1217,17 +1257,14 @@ class CollectionFragmentPickerPreviousNew(
}
if (isTicket) {
val labelDialogHelper = LabelDialogHelper(requireContext())
- labelDialogHelper.showLabelDialog(
- onItemSelected = { labelCount ->
- viewModel.collectionStickerPrint(
- collectionFk = collection.collectionFk,
- labelCount = labelCount
- )
- (getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey(
- PRINTERNAME
- )).toast(requireContext())
- }
- )
+ labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
+ viewModel.collectionStickerPrint(
+ collectionFk = collection.collectionFk, labelCount = labelCount
+ )
+ (getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey(
+ PRINTERNAME
+ )).toast(requireContext())
+ })
} else {
viewModel.collectionStickerPrint(
collectionFk = collection.collectionFk, null
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPreChecker.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPreChecker.kt
index 702e9bba..0fddfcbb 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPreChecker.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPreChecker.kt
@@ -161,7 +161,7 @@ class CollectionFragmentPreChecker(
collection.collectionFk,
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
print = "0",
- type
+ "PREVIOUS_CONTROL"
)
}
super.onCreate(savedInstanceState)
@@ -383,7 +383,7 @@ class CollectionFragmentPreChecker(
viewModel.getSales(
binding.scanInput.text.toString().toInt(),
print = "0",
- source = type
+ source = "PREVIOUS_CONTROL"
)
//findSale(binding.scanInput.text.toString())
@@ -419,7 +419,7 @@ class CollectionFragmentPreChecker(
viewModel.getSales(
binding.scanInput.toLong(),
print = "0",
- source = type
+ source = "PREVIOUS_CONTROL"
)
} catch (ex: Exception) {
ma.messageWithSound(
@@ -1743,7 +1743,7 @@ class CollectionFragmentPreChecker(
collection.collectionFk,
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
print = "0",
- type
+ type = "PREVIOUS_CONTROL"
)
} else {
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt
index cad89ad9..22670e40 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt
@@ -188,6 +188,10 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
get() = _responseIncQuantity
val loadIncQuantity: LiveData> = _responseIncQuantity.map { Event(it) }
+ private val _responseStateId by lazy { MutableLiveData() }
+ val responseStateId: LiveData = _responseStateId
+ val loadResponseStateId: LiveData> = _responseStateId.map { Event(it) }
+
private val _mistakeList by lazy { MutableLiveData() }
val mistakeList: LiveData
get() = _mistakeList
@@ -211,6 +215,16 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
val responseSaleAddPrevOK: LiveData
get() = _responseSaleAddPrevOK
+ private val _responseSaleReserveAddPrevOK by lazy { MutableLiveData() }
+ val responseSaleReserveAddPrevOK: LiveData = _responseSaleReserveAddPrevOK
+ val loadResponseReserveAddPrevOK: LiveData> =
+ _responseSaleReserveAddPrevOK.map { Event(it) }
+
+ private val _setStateResponse by lazy { MutableLiveData() }
+ val setStateResponse: LiveData = _setStateResponse
+ val loadSetStateResponse: LiveData> =
+ _setStateResponse.map { Event(it) }
+
fun getSales(
collectionFk: Number, print: String, source: String
@@ -491,6 +505,35 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
})
}
+ fun getStateId(stateCode: String) {
+
+ salix.getStateId(
+ filter = """{"where":{"code":"$stateCode"}, "fields":["id"]}""".trimMargin()
+ ).enqueue(object : SalixCallback(context) {
+ override fun onSuccess(response: Response) {
+ _responseStateId.value =
+ response.body()?.get("id").toString().toInt()
+
+ }
+
+ })
+ }
+
+ fun setStateSaleGroup(
+ saleGroups: List, stateCode: Int
+ ) {
+ salix.collectionAddWithReservation(
+ params = arrayListOf(
+ saleGroups, stateCode
+ )
+ ).enqueue(object : SalixCallback(context) {
+ override fun onSuccess(response: Response) {
+ // _responseCollectionAddItem.value = true
+ }
+
+ })
+ }
+
fun itemPlacementSupplyAiming(
shelvingFk: String, quantity: Int, itemFk: Int
) {
@@ -626,7 +669,7 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
}
fun itemShelvingSaleSetSaleGroup(
- saleGroupFk: Int
+ saleGroupFk: Int,
) {
salix.itemShelvingSaleSetSaleGroup(
arrayListOf(
@@ -642,6 +685,7 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
override fun onSuccess(response: Response) {
_responseItemShelvingSaleGroup.value = ResponseItemVO(isError = false)
+
}
})
}
@@ -767,6 +811,16 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
})
}
+ fun saleGroupUpdateState(saleGroup: Number, codeState: Number) {
+ salix.saleGroupUpdate(
+ id = saleGroup, hashMapOf("stateFk" to codeState)
+ ).enqueue(object : SalixCallback(context) {
+ override fun onSuccess(response: Response) {
+ _setStateResponse.value = true
+ }
+ })
+ }
+
fun collectionIncreaseQuantitySalix(
saleFk: Int, quantity: String
) {
@@ -797,7 +851,9 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
salix.saleMistakeAdd(
SaleMistakeSalix(
- userFk = (context as MobileApplication).userId!!, saleFk = saleFk, typeFk = typeFk
+ userFk = (context as MobileApplication).userId!!,
+ saleFk = saleFk,
+ typeFk = typeFk
)
).enqueue(object : SalixCallback(context) {
override fun onError(t: Throwable) {
@@ -988,22 +1044,11 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
) {
salix.saleTrackingSectorCollectionAddPrevOK(arrayListOf(sectorCollectionFk))
.enqueue(object : SalixCallback(context) {
- override fun onError(t: Throwable) {
- _responseSaleAddPrevOK.value = ResponseItemVO(
- isError = true, errorMessage = getMessageFromAllResponse(
- nameofFunction(this), t.message!!
- )
- )
-
- }
-
override fun onSuccess(response: Response) {
- _responseSaleAddPrevOK.value = ResponseItemVO(
- isError = false, errorMessage = "" + getMessageFromAllResponse(
- nameofFunction(this), response.message()
- )
- )
+
+ _responseSaleReserveAddPrevOK.value = true
}
+
})
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/RouteAdapter.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/RouteAdapter.kt
index 53522d35..1fa3b255 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/RouteAdapter.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/RouteAdapter.kt
@@ -31,9 +31,14 @@ class RouteAdapter(
var prevCreated = ""
for (route in list) {
- if (route.created.toString() != prevCreated) {
+ //tarea 7146
+ /* if (route.created.toString() != prevCreated) {
route.header = true
prevCreated = route.created.toString()
+ }*/
+ if (route.dated.toString() != prevCreated) {
+ route.header = true
+ prevCreated = route.dated.toString()
}
}
return list
@@ -90,7 +95,9 @@ class RouteAdapter(
if (item.header) {
headerRouteLayout.visibility = View.VISIBLE
- headerRoute.text = toDateString(item.created)
+ //tarea7146
+ headerRoute.text = toDateString(item.dated)
+ // headerRoute.text = toDateString(item.created)
} else {
headerRouteLayout.visibility = View.GONE
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.kt
index c8e18f24..d1385529 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.kt
@@ -289,7 +289,8 @@ class RoutesFragment(
viewModel.getDataFromExpedition(
routeId = routeId.toLong(),
expeditionId = expedition.code!!.toLong(),
- landed = routeItem!!.created.toString()
+ // landed = routeItem!!.created.toString()
+ landed = routeItem!!.dated.toString()
)
}
customDialogList.dismiss()
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt
index ca220953..a77964fb 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt
@@ -340,16 +340,8 @@ class SummaryFragment(
viewModel.getExpeditionFromRoute(routeSelected)
}
- println("address $addressFkSelected")
- println("address isScanning $isScanning")
-
if (addressFkSelected != item.addressFk && isScanning) {
- println("address isScanning $isScanning")
- println("address setSTATE $state")
- println("address address $addressFkSelected")
-
setExpeditionsState(myList, state, addressFkSelected)
-
}
addressFkSelected = item.addressFk
isScanning = false
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt
index 0abb0e6e..fa982b5b 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt
@@ -429,15 +429,15 @@ class TicketsFragment : BaseFragment(
override fun onItemButtonCMRRowClickListener(
item: Ticket
) {
-
ma.onPasillerosItemClickListener(
PasillerosItemVO(
title = R.string.titleWebViewer,
), entryPoint = Gson().toJson(
mutableMapOf(
- "entryPoint" to route.id, "web" to "${
+ "entryPoint" to route.id,
+ "web" to "${
mobileApplication.dataStoreApp.getServerSalix()
- }/api/Routes/${item.cmrFk}/cmr?access_token=${
+ }/api/Cmrs/${item.cmrFk}/print?access_token=${
mobileApplication.dataStoreApp.readDataStoreKey(
TOKEN
)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt
index b8a70f21..af1b91f5 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt
@@ -168,7 +168,7 @@ class RouteInfo(
@SerializedName(value = "driver", alternate = ["workerUserName"])
var driver: String?,
var hour: String?,
- @TypeConverters(MapTypeConverter::class) var created: Date,
+ @TypeConverters(MapTypeConverter::class) var dated: Date,
var m3: Double,
@SerializedName(value = "numberPlate", alternate = ["vehiclePlateNumber"])
var numberPlate: String?,
@@ -184,6 +184,6 @@ class RouteInfo(
var agencyModeFk: Int
) : Serializable {
override fun toString(): String {
- return "$driver$id$name$numberPlate$m3$created$hour$"
+ return "$driver$id$name$numberPlate$m3$$dated$hour$"
}
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt
index 4bdefe13..3e11175f 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt
@@ -6,8 +6,10 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.google.gson.Gson
import es.verdnatura.R
import es.verdnatura.databinding.FragmentShelvinglogBinding
+import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
+import es.verdnatura.presentation.common.itemScanValue
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.historicoshelvinglog.adapter.ShelvingLogAdapter
import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.LogType
@@ -23,6 +25,7 @@ class ShelvingLogFragment(
) {
private var adapter: ShelvingLogAdapter? = null
private var itemScan = ""
+ private var isitemFkScanned = false
companion object {
fun newInstance(entryPoint: String, logType: LogType) =
@@ -43,17 +46,33 @@ class ShelvingLogFragment(
}
- private fun setToolBar(title:String) {
+ private fun setToolBar(title: String) {
- if (logType == LogType.SHELVING) {
- binding.mainToolbar.toolbarTitle.text = title
+ when (logType) {
+ LogType.SHELVING -> {
+ binding.mainToolbar.toolbarTitle.text = title
+ }
- } else {
- binding.mainToolbar.toolbarTitle.text = title
- binding.scanInput.setHint(getString(R.string.scanParkingTxt))
+ LogType.PREVIOUS -> {
+ binding.mainToolbar.toolbarTitle.text = title
+ binding.scanInput.setHint(getString(R.string.scanParkingTxt))
+ }
+ LogType.ITEMSHELVING -> {
+ binding.mainToolbar.toolbarTitle.text = title
+ binding.scanInput.setHint("Escanea carro o item")
+ }
}
+ /* if (logType == LogType.SHELVING) {
+ binding.mainToolbar.toolbarTitle.text = title
+
+ } else {
+ binding.mainToolbar.toolbarTitle.text = title
+ binding.scanInput.setHint(getString(R.string.scanParkingTxt))
+
+ }*/
+
}
private fun setEvents() {
@@ -62,6 +81,11 @@ class ShelvingLogFragment(
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
if (binding.scanInput.text.toString().isNotEmpty()) {
+ binding.scanInput.setText(
+ itemScanValue(
+ binding.scanInput.text.toString(), arrayOf("buy"), "id"
+ ).toString()
+ )
when (logType) {
LogType.SHELVING -> {
viewModel.shelvings((binding.scanInput.text.toString()))
@@ -69,6 +93,9 @@ class ShelvingLogFragment(
}
LogType.PREVIOUS -> viewModel.getParkingId((binding.scanInput.text.toString()))
+ LogType.ITEMSHELVING -> {
+ viewModel.shelvings((binding.scanInput.text.toString()))
+ }
}
itemScan = binding.scanInput.text.toString()
}
@@ -95,11 +122,11 @@ class ShelvingLogFragment(
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
setToolBar(getString(R.string.shelvingLog) + ":" + itemScan)
if (it.list.isEmpty()) {
- customDialog.setTitle(getString(R.string.noResults))
- .setDescription(getString(R.string.noDataLabelScanned))
- .setOkButton(getString(R.string.close)) {
- customDialog.dismiss()
- }.show()
+ if (logType == LogType.SHELVING) {
+ showMessage()
+ } else {
+ viewModel.getIdFromCodeSalix(itemScan)
+ }
} else {
openWebViewer(it.list[0].id!!, "shelving")
}
@@ -113,24 +140,65 @@ class ShelvingLogFragment(
}
}
+ loadResponseCode.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ setToolBar(getString(R.string.item) + itemScan)
+ if (it == -1) showMessage() else {
+ isitemFkScanned = true
+ openWebViewer(it, "")
+ }
+
+ }
+ }
}
}
+ override fun onPause() {
+ isitemFkScanned = false
+ super.onPause()
+ }
+
+ private fun showMessage() {
+ customDialog.setTitle(getString(R.string.noResults))
+ .setDescription(getString(R.string.noDataLabelScanned))
+ .setOkButton(getString(R.string.close)) {
+ customDialog.dismiss()
+ }.show()
+ }
+
private fun openWebViewer(param: Int, web: String) {
+
+ //variableWeb = if (itemScan is Number) "var-itemFk=$param" else "var-shelvingCode=$param"
ma.onPasillerosItemClickListener(
PasillerosItemVO(
title = R.string.titleWebViewer,
),
- entryPoint = Gson().toJson(
- mutableMapOf(
- "entryPoint" to param,
- "web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
+ entryPoint = if (logType == LogType.ITEMSHELVING) {
+ Gson().toJson(
+ mutableMapOf(
+ "entryPoint" to param,
+ "web" to "https://grafana.verdnatura.es/d/ce4b8ymvex4owa?${
+ if (isitemFkScanned) "var-itemFk=$param&var-vnToken=${
+ mobileApplication.dataStoreApp.readDataStoreKey(
+ TOKENMULTIMEDIA
+ )
+ }"
+ else "var-shelvingCode=$itemScan"
+ }"
+ )
)
- )
+ } else {
+ Gson().toJson(
+ mutableMapOf(
+ "entryPoint" to param,
+ "web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
+ )
+ )
+ }
)
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogViewModel.kt
index 817e73c3..f7dee81f 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogViewModel.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogViewModel.kt
@@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.map
import com.google.gson.JsonObject
import es.verdnatura.domain.SalixCallback
+import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.ShelvingLogSalix
@@ -13,14 +14,18 @@ import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.Shelvi
import retrofit2.Response
class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) {
-
+ private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
private val _itemShelvingLogSalixList by lazy { MutableLiveData() }
val loadShelvingLogSalixList: LiveData> =
_itemShelvingLogSalixList.map { Event(it) }
private val _responseParkingId by lazy { MutableLiveData() }
val responseParkingId: LiveData = _responseParkingId
- val loadResponseParking: LiveData> =_responseParkingId.map { Event(it) }
+ val loadResponseParking: LiveData> = _responseParkingId.map { Event(it) }
+
+ private val _responseCode by lazy { MutableLiveData() }
+ val responseCode: LiveData = _responseCode
+ val loadResponseCode: LiveData> = _responseCode.map { Event(it) }
fun shelvings(vShelvingFK: String) {
salix.shelvingsGet("""{"where": {"code": "$vShelvingFK"}}""").enqueue(object :
@@ -41,13 +46,26 @@ class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) {
.enqueue(object :
SalixCallback>(context) {
override fun onSuccess(response: Response>) {
- _responseParkingId.value = response.body()?.firstOrNull()?.entrySet()?.firstOrNull()?.value?.toString()?.toIntOrNull()
+ _responseParkingId.value =
+ response.body()?.firstOrNull()?.entrySet()?.firstOrNull()?.value?.toString()
+ ?.toIntOrNull()
}
})
}
+
+ fun getIdFromCodeSalix(code: String) {
+ getItemFromBarcodeUseCase.execute(code)
+ .enqueue(object : SalixCallback(context) {
+
+ override fun onSuccess(response: Response) {
+ _responseCode.value = response.body() ?: -1
+
+ }
+ })
+ }
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/model/ShelvingLog.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/model/ShelvingLog.kt
index 50d4863c..8eb22de8 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/model/ShelvingLog.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/model/ShelvingLog.kt
@@ -40,8 +40,10 @@ data class DeviceLogSalix(
val versionApp: String,
val serialNumber: String?
)
+
enum class LogType {
SHELVING,
PREVIOUS,
+ ITEMSHELVING
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt
index f931fbb4..18bd7553 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt
@@ -89,7 +89,7 @@ class InventoryParkingAdapter(
onPasillerosItemClickListener.onPasillerosItemClickListener(
PasillerosItemVO(
title =
- R.string.itemSearch
+ R.string.itemSearch
), item.itemFk.toString()
)
}
@@ -126,21 +126,19 @@ class InventoryParkingAdapter(
itemShelving.setOnClickListener {
onPasillerosItemClickListener.onPasillerosItemClickListener(
PasillerosItemVO(
- title = R.string.titleUbicator)
- , item.shelvingFk
+ title = R.string.titleUbicator
+ ), item.shelvingFk
)
}
itemfkText.setOnClickListener {
onPasillerosItemClickListener.onPasillerosItemClickListener(
PasillerosItemVO(
- title = R.string.itemSearch)
- , item.itemFk.toString()
+ title = R.string.itemSearch
+ ), item.itemFk.toString()
)
}
if (item.isChecked != null) {
- println("item ${item.itemFk} checked ${item.isChecked} ")
-
when (item.isChecked!!.toInt()) {
in 1..Int.MAX_VALUE -> itemRowLayout.setBackgroundColor(
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt
index e0a78a80..ff1deb30 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt
@@ -11,6 +11,7 @@ import es.verdnatura.R
import es.verdnatura.databinding.FragmentInventaryBinding
import es.verdnatura.domain.ConstAndValues.BUYER
import es.verdnatura.domain.ConstAndValues.BUYERID
+import es.verdnatura.domain.ConstAndValues.ITEMPACKINGTYPEFILTER
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment
@@ -22,6 +23,7 @@ import es.verdnatura.presentation.view.commom.NameWithId
import es.verdnatura.presentation.view.commom.SearchableAdapter
import es.verdnatura.presentation.view.component.CustomDialogInput
import es.verdnatura.presentation.view.component.CustomDialogTwoButtons
+import es.verdnatura.presentation.view.feature.calidad.model.Buyer
import es.verdnatura.presentation.view.feature.inventario.adapter.InventoryAdapter
import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
@@ -41,6 +43,8 @@ class InventaryFragment :
private var firstVisiblePosition = 0
private lateinit var itemClicked: ItemInventaryVO
private var buyerId: Number = -1
+ private var filterItemType: String? = null
+ private var myListBuyers = listOf()
companion object {
fun newInstance() = InventaryFragment()
@@ -55,8 +59,12 @@ class InventaryFragment :
override fun init() {
- viewModel.itemShelvingBuyerGet()
+ // viewModel.itemShelvingBuyerGet()
+ viewModel.itemShelvingBuyerGetByItemPacking()
binding.filterBuyer.text = mobileApplication.dataStoreApp.readDataStoreKey((BUYER))
+ filterItemType =
+ mobileApplication.dataStoreApp.readDataStoreKey((ITEMPACKINGTYPEFILTER))
+ binding.filterItemType.setText(filterItemType!!.firstOrNull()?.toString() ?: "").toString()
buyerId = mobileApplication.dataStoreApp.readDataStoreKey((BUYERID))
if (buyerId != -1) {
viewModel.getInventory(
@@ -64,8 +72,26 @@ class InventaryFragment :
)
}
binding.filterBuyer.setOnClickListener {
+ val distinctPackingTypes = myListBuyers
+
+ .filter { filterItemType == getString(R.string.allText) || filterItemType == "" || it.itemPackingTypeFk == filterItemType }
+ .map {
+ NameWithId(
+ it.worker.user.id, it.worker.user.nickname
+ )
+ }
+ .distinct()
+ .sortedBy { it.name }
+ setSearchable(distinctPackingTypes as MutableList)
binding.searchableRecyclerView.visibility = View.VISIBLE
binding.searchableRecyclerView.setSearchHint(getString(R.string.BuyerSearch))
+ ma.hideKeyboard(binding.searchableRecyclerView)
+ }
+
+ binding.filterItemType.setOnClickListener {
+
+ binding.searchableRecyclerViewItemType.visibility = View.VISIBLE
+ binding.searchableRecyclerViewItemType.setSearchHint(getString(R.string.selectItemType))
}
customDialogInput = CustomDialogInput(requireContext())
@@ -106,6 +132,29 @@ class InventaryFragment :
}
+ private fun setSearchableItemPacking(listNames: MutableList) {
+ val adapter =
+ SearchableAdapter(
+ listElements = listNames,
+ context = requireContext()
+ ) { elementSelected ->
+
+ lifecycleScope.launch {
+ mobileApplication.dataStoreApp.editDataStoreKey(
+ ITEMPACKINGTYPEFILTER, elementSelected.name
+ )
+
+ }
+ binding.filterItemType.text = elementSelected.name.firstOrNull()?.toString() ?: ""
+ filterItemType = elementSelected.name
+ binding.searchableRecyclerViewItemType.visibility = View.GONE
+
+ }
+
+ binding.searchableRecyclerViewItemType.setAdapter(adapter, listNames)
+
+ }
+
private fun setToolBar() {
ma.hideBottomNavigation(View.GONE)
val listIcons: ArrayList = ArrayList()
@@ -184,6 +233,21 @@ class InventaryFragment :
override fun observeViewModel() {
with(viewModel) {
+
+ buyersByItemPackingList.observe(viewLifecycleOwner) { list ->
+ myListBuyers = list.list
+ val distinctPackingTypes =
+ list?.list?.map {
+ NameWithId(
+ 1, it.itemPackingTypeFk ?: getString(R.string.allText)
+ )
+ }
+ ?.distinct()
+ ?: emptyList()
+
+ setSearchableItemPacking(distinctPackingTypes as MutableList)
+ }
+
buyersList.observe(viewLifecycleOwner) { item ->
setSearchable(item.list.map {
NameWithId(
@@ -193,6 +257,7 @@ class InventaryFragment :
} as MutableList)
}
+
inventaryList.observe(viewLifecycleOwner) { it ->
listInventory = ArrayList()
listInventoryAux = ArrayList()
@@ -202,6 +267,8 @@ class InventaryFragment :
listInventoryAux.add(it)
}
}
+
+
adapter = InventoryAdapter(listInventory, object : OnInvetoryNichoClickListener {
override fun onInvetoryNichoClickListener(item: ItemInventaryVO) {
customDialog.setTitle(item.itemFk.toString() + "\n" + item.longName)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt
index 1294b65e..26b38b1e 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt
@@ -11,6 +11,8 @@ import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.common.ItemDiscardSalixShortage
+import es.verdnatura.presentation.view.feature.calidad.model.Buyer
+import es.verdnatura.presentation.view.feature.calidad.model.BuyerList
import es.verdnatura.presentation.view.feature.calidad.model.BuyerListVO
import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO
import es.verdnatura.presentation.view.feature.inventario.model.InventaryListVO
@@ -46,6 +48,10 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) {
val buyersList: LiveData
get() = _buyersList
+ private val _buyersByItemPackingList by lazy { MutableLiveData() }
+ val buyersByItemPackingList: LiveData
+ get() = _buyersByItemPackingList
+
private val _mistakeDepartmentList by lazy { MutableLiveData() }
val mistakeDepartmentList: LiveData
get() = _mistakeDepartmentList
@@ -80,6 +86,20 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) {
})
}
+ fun itemShelvingBuyerGetByItemPacking() {
+ salix.getBuyersByItemPackingType(
+ """{"fields":["itemPackingTypeFk","id","workerFk"],
+ |"include":{"relation":"worker","scope":{"fields":["id"],
+ |"include":{"relation":"user","scope":{"fields":["nickname"]}}}}}""".trimMargin()
+ )
+ .enqueue(object : SalixCallback>(context) {
+ override fun onSuccess(response: Response>) {
+ _buyersByItemPackingList.value = response.body()?.let { BuyerList(it) }
+ }
+
+ })
+ }
+
val loadInventaryList: LiveData> = _inventaryList.map { Event(it) }
fun getInventory(buyerFk: Number, warehouseFk: Int) {
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt
index 8e1d8961..f3f3491c 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt
@@ -22,6 +22,7 @@ import es.verdnatura.domain.ConstAndValues.RENEWINTERVAL
import es.verdnatura.domain.ConstAndValues.RENEWPERIOD
import es.verdnatura.domain.ConstAndValues.TOKEN
import es.verdnatura.domain.ConstAndValues.TOKENCREATED
+import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
import es.verdnatura.domain.ConstAndValues.TTL
import es.verdnatura.domain.ConstAndValues.USER
import es.verdnatura.domain.ConstAndValues.WORKFORMSELECTED
@@ -484,6 +485,15 @@ class LoginFragment() :
}
}
+ multimediaTokenResponse.observe(viewLifecycleOwner) {
+ runBlocking {
+ mobileApplication.dataStoreApp.editDataStoreKey(
+ TOKENMULTIMEDIA,
+ it.multimediaToken.id
+ )
+
+ }
+ }
loginSalixItem.observe(viewLifecycleOwner) {
@@ -514,6 +524,7 @@ class LoginFragment() :
app.userPassword = binding.edittextPassword.text.toString()
viewModel.getAccessTokenConfigs()
+ viewModel.getMultimedaToken()
}
}
loadAccessConfigSalixList.observe(viewLifecycleOwner) { event ->
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt
index 9892daf0..4f366a5c 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt
@@ -23,6 +23,7 @@ import es.verdnatura.presentation.view.feature.login.model.AccessConfigSalixList
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.MultimediaTokenResponse
import es.verdnatura.presentation.view.feature.login.model.OperatorAdd
import es.verdnatura.presentation.view.feature.login.model.OperatorSalix
import es.verdnatura.presentation.view.feature.login.model.RenewToken
@@ -58,13 +59,16 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
get() = _workerOperator
private val _accessConfigSalixList by lazy { MutableLiveData() }
-
private val _renewTokenResponse by lazy { MutableLiveData() }
val renewTokenResponse: LiveData
get() = _renewTokenResponse
val loadAccessConfigSalixList: LiveData> =
_accessConfigSalixList.map { Event(it) }
+ private val _multimediaTokenResponse by lazy { MutableLiveData() }
+ val multimediaTokenResponse: LiveData
+ get() = _multimediaTokenResponse
+
fun loginSalix(user: String, password: String) {
salix.login(LoginSalixVO(user, password))
.enqueue(object : SalixCallback(context) {
@@ -285,6 +289,21 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
})
}
+ fun getMultimedaToken(
+ ) {
+
+ salix.getMultimediaToken()
+ .enqueue(object : SalixCallback(context) {
+
+ override fun onSuccess(response: Response) {
+ _multimediaTokenResponse.value = response.body()?.let {
+ it
+ }
+ }
+
+ })
+ }
+
fun renewToken(
) {
salix.renewToken().enqueue(object : SalixCallback(context) {
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt
index fd0a2d2e..4daf004b 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt
@@ -115,4 +115,12 @@ class LoginDevice(
data class NameWorker(
val firstName: String, val lastName: String
+)
+
+data class MultimediaTokenResponse(
+ val multimediaToken: MultimediaToken
+)
+
+data class MultimediaToken(
+ val id: String,
)
\ No newline at end of file
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt
index 1b7b1b09..e2406613 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt
@@ -135,7 +135,7 @@ import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.ticket.fragment.TicketAdvanceFragment
import es.verdnatura.presentation.view.feature.ubicador.fragment.AutomaticAddItemFragment
-import es.verdnatura.presentation.view.feature.ubicador.fragment.UbicadorFragmentNew
+import es.verdnatura.presentation.view.feature.ubicador.fragment.UbicadorFragment6869
import es.verdnatura.presentation.view.feature.workermistake.fragment.PackingMistakeFragment
import es.verdnatura.presentation.view.feature.workermistake.fragment.WorkermistakeFragment
import kotlinx.coroutines.DelicateCoroutinesApi
@@ -543,9 +543,8 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL
getString(R.string.titleChecker) -> {
// Ya no se utiliza : addFragmentOnTop(ControladorFragment.newInstance())
-
// if (mobileApplication.userId == 19591) {
- println("Revisando nueva")
+
addFragmentOnTop(
CollectionFragmentChecker.newInstance(
CollectionVO(collectionFk = 0),
@@ -674,8 +673,13 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL
}
getString(R.string.titleUbicator) -> {
- addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint))
+ //addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint))
+ addFragmentOnTop(UbicadorFragment6869.newInstance(entryPoint))
}
+ //Tarea 6869
+ /* getString(R.string.ubicatorNew) -> {
+ addFragmentOnTop(UbicadorFragment6869.newInstance(entryPoint))
+ }*/
//Tarea 7855
getString(R.string.scanPreparedExpedition) -> {
@@ -755,7 +759,10 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL
getString(R.string.titleShelvingHistorical) -> {
addFragmentOnTop(ItemShelvingLogFragment.newInstance(itemTitle))
-
+ }
+ //Tarea 7920
+ getString(R.string.titleShelvingHistNew) -> {
+ addFragmentOnTop(ShelvingLogFragment.newInstance(itemTitle, LogType.ITEMSHELVING))
}
getString(R.string.titleLogShelving) -> {
@@ -823,7 +830,8 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL
}
getString(R.string.selfConsumption) -> {
- addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint, true))
+ // addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint, true))
+ addFragmentOnTop(UbicadorFragment6869.newInstance(entryPoint, true))
}
getString(R.string.titlePackingHolland) -> {
@@ -1052,7 +1060,6 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL
) {
when (type) {
PREITEMPICKERTEST -> {
- println("test presacador")
//addFragmentOnTop(EndSacadorFragment.newInstance(collection, type))
addFragmentOnTop(
SectorCollectionReserveFragment.newInstance(
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt
index fdaa6aea..02fd9978 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt
@@ -44,7 +44,6 @@ class ExpeditionPalletDetailFragment(
override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet_detail
override fun init() {
- println("ExpeditionPalletDetail")
customDialog = CustomDialog(requireContext())
binding.expeditionPalletDetailPallet.text =
buildString {
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt
index b77ec98f..1e3f6946 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt
@@ -59,7 +59,6 @@ class ExpeditionPalletFragment(
override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet
override fun onCreate(savedInstanceState: Bundle?) {
- println("ExpeditionPalletFragment")
mperror = MediaPlayer.create((activity as MainActivity), R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok)
super.onCreate(savedInstanceState)
@@ -214,8 +213,6 @@ class ExpeditionPalletFragment(
if (mperror != null) mperror!!.start()
}
-
-
}
customDialogList.setValue("")
ma.hideKeyboard(customDialogList.getEditText())
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt
index 1afd8045..2d389c0f 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt
@@ -71,7 +71,6 @@ class ExpeditionScanFragment(
}
override fun init() {
- println("ExpeditionScanFragment")
customDialog = CustomDialog(requireContext())
customDialogList = CustomDialogList(requireContext())
customDialogTwoButtons = CustomDialogTwoButtons(requireContext())
@@ -80,7 +79,11 @@ class ExpeditionScanFragment(
)
ma.hideBottomNavigation(View.GONE)
binding.mainToolbar.toolbarTitle.text =
- getString(R.string.expeditionInfo, itemExpeditionTruckVO?.eta.orEmpty(), itemExpeditionTruckVO?.description.orEmpty())
+ getString(
+ R.string.expeditionInfo,
+ itemExpeditionTruckVO?.eta.orEmpty(),
+ itemExpeditionTruckVO?.description.orEmpty()
+ )
setToolBar()
setEvents()
viewModel.expeditionScanList(
@@ -121,7 +124,6 @@ class ExpeditionScanFragment(
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
}
-
override fun observeViewModel() {
with(viewModel) {
loadExpeditionScanList.observe(viewLifecycleOwner) { event ->
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt
index 290bb800..4ca8bf67 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt
@@ -73,6 +73,15 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
)
)
+ /* if (userId == 19591)
+ _pasillerositem.add(
+ PasillerosItemVO(
+ R.drawable.ic_dashboard_black_24dp,
+ R.string.ubicatorNew,
+ R.string.titleUbicatorDescrip
+
+ )
+ )*/
//tarea 7855
_pasillerositem.add(
@@ -514,13 +523,13 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
)
)
//tarea 8099
- /* _pasillerositem.add(
- PasillerosItemVO(
- R.drawable.ic_salary_supplement,
- R.string.salarySupplementTitle,
- R.string.salarySupplementTitle
- )
- )*/
+ _pasillerositem.add(
+ PasillerosItemVO(
+ R.drawable.ic_salary_supplement,
+ R.string.salarySupplementTitle,
+ R.string.salarySupplementTitle
+ )
+ )
}
@@ -528,10 +537,19 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
_pasillerositem.add(
PasillerosItemVO(
R.drawable.revision_icon,
- R.string.titleShelvingHistorical,
- R.string.titleShelvingHistDescrip
+ R.string.titleShelvingHistNew,
+ R.string.titleShelvingHistNew
)
)
+
+ /* _pasillerositem.add(
+ PasillerosItemVO(
+ R.drawable.revision_icon,
+ R.string.titleShelvingHistorical,
+ R.string.titleShelvingHistDescrip
+ )
+ )*/
+
_pasillerositem.add(
PasillerosItemVO(
R.drawable.ic_history_orange,
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/precontrol/PreControladorFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/precontrol/PreControladorFragment.kt
index 1a2a988d..14cc19be 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/precontrol/PreControladorFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/precontrol/PreControladorFragment.kt
@@ -70,7 +70,7 @@ class PreControladorFragment :
"id"
).toString().toInt(),
print = false,
- source = type
+ source = if (type == "PRECHECKER") "PREVIOUS_CONTROL" else type
)
} catch (ex: Exception) {
getString(R.string.errorInput)
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/SectorCollectionReserveFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/SectorCollectionReserveFragment.kt
index 9c24830b..ec789975 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/SectorCollectionReserveFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/SectorCollectionReserveFragment.kt
@@ -60,19 +60,12 @@ class SectorCollectionReserveFragment(
}
override fun init() {
- println("hasToAdd $hasToAdd")
-
customDialogList = CustomDialogList(requireContext())
ma.hideBottomNavigation(View.GONE)
binding.mainToolbar.toolbarTitle.text = title
setEvents()
setToolBar()
-
- println("reserve collec $collectionFk")
- println("reserve collec onBack$onBack")
-
if (!onBack) {
- println("check parkings $collectionFk")
checkParkingsToPicker()
} else {
if (onBack) {
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/RestaurantActivity.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/RestaurantActivity.kt
index 3e95ea3e..1f4bd47a 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/RestaurantActivity.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/RestaurantActivity.kt
@@ -2,14 +2,12 @@ package es.verdnatura.presentation.view.feature.restaurant
import android.view.View
import android.widget.Button
-import com.google.gson.Gson
import com.google.zxing.BarcodeFormat
import com.journeyapps.barcodescanner.BarcodeEncoder
import es.verdnatura.R
import es.verdnatura.databinding.ActivityRestaurantViewBinding
import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseActivity
-import es.verdnatura.presentation.view.feature.restaurant.model.UserMenu
class RestaurantActivity : BaseActivity() {
@@ -33,16 +31,27 @@ class RestaurantActivity : BaseActivity() {
binding.imageQr.visibility = View.VISIBLE
binding.txtOption.visibility = View.VISIBLE
binding.txtOption.text = (view as Button).text.toString()
- val userMenu = UserMenu(
- user = mobileApplication.userId!!,
- menu_id = view.tag.toString().toInt(),
- menu = view.text.toString(),
- name = mobileApplication.userName!!
- )
+ /* val userMenu = UserMenu(
+ user = mobileApplication.userId!!,
+ menu_id = view.tag.toString().toInt(),
+ menu = view.text.toString(),
+ name = mobileApplication.userName!!
+ )*/
+
+ val userMenuJson = StringBuilder()
+ .append("{")
+ .append("\"user\":").append(mobileApplication.userId).append(",") // Sin comillas
+ .append("\"menu_id\":").append(view.tag.toString().toInt()).append(",") // Sin comillas
+ .append("\"menu\":\"").append(view.text).append("\",") // Con comillas porque es texto
+ .append("\"name\":\"").append(mobileApplication.userName)
+ .append("\"") // Con comillas porque es texto
+ .append("}")
+ .toString()
+
try {
val barcodeEncoder = BarcodeEncoder()
val bitmap = barcodeEncoder.encodeBitmap(
- Gson().toJson(userMenu),
+ userMenuJson,
BarcodeFormat.QR_CODE,
400,
400
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/model/UserMenu.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/model/UserMenu.kt
index 42157440..631babb9 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/model/UserMenu.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/restaurant/model/UserMenu.kt
@@ -1,8 +1,10 @@
package es.verdnatura.presentation.view.feature.restaurant.model
+import com.google.gson.annotations.SerializedName
+
data class UserMenu(
- val user: Int,
- val menu_id: Int,
- val menu: String,
- val name: String
+ @SerializedName("user") val user: Int,
+ @SerializedName("menu_id") val menu_id: Int,
+ @SerializedName("menu") val menu: String,
+ @SerializedName("name") val name: String
)
\ No newline at end of file
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/roadmap/fragment/StopMapListFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/roadmap/fragment/StopMapListFragment.kt
index 00c0f2ab..cfcc4a9a 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/roadmap/fragment/StopMapListFragment.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/roadmap/fragment/StopMapListFragment.kt
@@ -138,15 +138,6 @@ class StopMapListFragment(
with(viewModel) {
loadStopMapTruckList.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
- for (item in it.list) {
- println("llista")
- println("llista $item")
- println("llista addressFk ${item.addressFk}")
- println("llista id" + item.id)
- println("llista address" + item.address)
- println("llista client id" + item.address?.address?.client)
- println("llista mobile " + item.address?.address?.mobile)
- }
showRoadMapList(it)
}
}
@@ -189,8 +180,6 @@ class StopMapListFragment(
}
TruckAction.GOTOMAPS -> {
- println("locationMaps")
-
val uri =
"geo:0,0?q=" + item.address?.address?.nickname + " " + item.address?.address?.street + " " + item.address?.address?.city + " " + item.address?.address?.postalCode
val locationIntent = Intent(Intent.ACTION_VIEW, Uri.parse(uri))
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragmentNew.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragmentNew.kt
index 0017d060..325fca9c 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragmentNew.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragmentNew.kt
@@ -264,7 +264,6 @@ class SacadorFragmentNew(
}
"PREITEMPICKERTEST" -> {
- println("SacadorFragmentNew sectorCollectionGET")
// viewModel.sectorCollectionGet()
viewModel.sectorCollectionPartial()
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/model/TicketItemVO.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/model/TicketItemVO.kt
index 5a6cab61..2ed5f732 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/model/TicketItemVO.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/model/TicketItemVO.kt
@@ -68,7 +68,8 @@ data class Sale(
var isPicked: Int = 0,
var accumulatedQuantity: Int = 0,
var totalItemShelving: Int = 0,
- var currentItemShelving: Int = 0
+ var currentItemShelving: Int = 0,
+ var stateCode: String? = ""
)
@@ -112,8 +113,10 @@ class TicketSalix(
var agencyName: String = "",
var salesPersonFk: String = "",
var sales: List = listOf(),
- @SerializedName(value = "observations", alternate = ["observaciones"])
- var observations: String = "",
+ @SerializedName(
+ value = "observations",
+ alternate = ["observaciones"]
+ ) var observations: String = "",
)
@@ -177,8 +180,10 @@ class TicketVO(
var agencyName: String = "",
var salesPersonFk: String = "",
var sales: List = listOf(),
- @SerializedName(value = "observations", alternate = ["observaciones"])
- var observations: String = "",
+ @SerializedName(
+ value = "observations",
+ alternate = ["observaciones"]
+ ) var observations: String = "",
var isAdvanced: Int? = 0,
var parkingCode: String? = ""
@@ -279,8 +284,7 @@ class PlacementSupplyListVO(
)
class MistakeTypeVO(
- var id: Int,
- var description: String
+ var id: Int, var description: String
)
class MistakeTypeListVO(
@@ -292,16 +296,11 @@ class TicketStateList(
)
data class TicketStateSalix(
- val ticketFk: Int,
- val alertLevel: Int,
- val code: String,
- val stateFk: Int,
- val userFk: Int
+ val ticketFk: Int, val alertLevel: Int, val code: String, val stateFk: Int, val userFk: Int
) {
@RequiresApi(Build.VERSION_CODES.O)
var created: String = ""
- @RequiresApi(Build.VERSION_CODES.O)
- get() {
+ @RequiresApi(Build.VERSION_CODES.O) get() {
return field.isoToString()
}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/adapter/UbicadorAdapter6869.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/adapter/UbicadorAdapter6869.kt
new file mode 100644
index 00000000..cf11beae
--- /dev/null
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/adapter/UbicadorAdapter6869.kt
@@ -0,0 +1,131 @@
+package es.verdnatura.presentation.view.feature.ubicador.adapter
+
+import android.annotation.SuppressLint
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.core.content.ContextCompat
+import androidx.recyclerview.widget.RecyclerView
+import es.verdnatura.R
+import es.verdnatura.databinding.ItemUbicationRow6869Binding
+import es.verdnatura.presentation.common.OnMoreClickListener6869
+import es.verdnatura.presentation.common.OnPasillerosItemClickListener
+import es.verdnatura.presentation.common.OnVisibleClickListener6869
+import es.verdnatura.presentation.common.loadUrl
+import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
+import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelving
+
+class UbicadorAdapter6869(
+ private val items: List,
+ private val onPasillerosItemClickListener: OnPasillerosItemClickListener,
+ private val onVisibleClickListener: OnVisibleClickListener6869,
+ private val onMoreClickListener: OnMoreClickListener6869,
+ private val urlImage: String? = null
+) : RecyclerView.Adapter() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
+ return ItemHolder(
+ ItemUbicationRow6869Binding.inflate(LayoutInflater.from(parent.context), parent, false)
+ )
+ }
+
+ override fun getItemCount() = items.size
+
+ override fun onBindViewHolder(holder: ItemHolder, position: Int) {
+ holder.bind(items[position])
+ }
+
+ inner class ItemHolder(
+ val binding: ItemUbicationRow6869Binding
+ ) : RecyclerView.ViewHolder(binding.root) {
+ private val res = binding.root.context.resources
+
+ @SuppressLint("SetTextI18n")
+ fun bind(item: ItemShelving) {
+ binding.apply {
+ this.item = item
+ multiText.text = "${item.stickers}x${item.packing}"
+
+ if (urlImage != null) imgItem.loadUrl("http:$urlImage/catalog/200x200/${item.item.id}")
+ imgItem.setOnClickListener {
+ onPasillerosItemClickListener.onPasillerosItemClickListener(
+ PasillerosItemVO(
+ title =
+ R.string.itemSearch
+
+ ), item.item.id.toString()
+ )
+ }
+
+ layerVisible.setOnClickListener {
+ onVisibleClickListener.onVisibleClickListener(item)
+ }
+
+ if (item.visible == 0) {
+ visibleText.setTextColor(
+ ContextCompat.getColor(
+ visibleText.context,
+ R.color.verdnatura_brown_grey
+ )
+ )
+
+ } else {
+ visibleText.setTextColor(
+ ContextCompat.getColor(
+ visibleText.context,
+ R.color.verdnatura_pumpkin_orange
+ )
+ )
+ }
+
+ moreImg.setOnClickListener {
+ onMoreClickListener.onMoreClickListener(item)
+ }
+ namelayout.setOnClickListener {
+ onPasillerosItemClickListener.onPasillerosItemClickListener(
+ PasillerosItemVO(
+ title = R.string.itemSearch
+ ), item.item.id.toString()
+ )
+ }
+
+ if (item.isChecked != null) {
+
+ when (item.isChecked) {
+ 0 -> itemRowLayout.setBackgroundColor(
+ ContextCompat.getColor(
+ visibleText.context,
+ R.color.verdnatura_red_salix
+ )
+ )
+
+ in 1..Int.MAX_VALUE ->
+ if (item.visible == 0) {
+ itemRowLayout.setBackgroundColor(
+ ContextCompat.getColor(
+ visibleText.context,
+ R.color.verdnatura_dark_sky_blue
+ )
+ )
+ } else {
+ itemRowLayout.setBackgroundColor(
+ ContextCompat.getColor(
+ visibleText.context,
+ R.color.verdnatura_dark_green_verdnatura
+ )
+ )
+ }
+
+ }
+ } else {
+ itemRowLayout.setBackgroundColor(
+ ContextCompat.getColor(
+ visibleText.context,
+ R.color.verdnatura_black_5
+ )
+ )
+ }
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragment6869.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragment6869.kt
new file mode 100644
index 00000000..e6895a12
--- /dev/null
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragment6869.kt
@@ -0,0 +1,1312 @@
+package es.verdnatura.presentation.view.feature.ubicador.fragment
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.graphics.drawable.Drawable
+import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
+import android.text.InputType
+import android.text.TextWatcher
+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.widget.ImageView
+import android.widget.Toast
+import androidx.recyclerview.widget.LinearLayoutManager
+import es.verdnatura.R
+import es.verdnatura.databinding.FragmentUbicadorBinding
+import es.verdnatura.domain.ConstAndValues
+import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
+import es.verdnatura.domain.isShelving
+import es.verdnatura.domain.isoToString
+import es.verdnatura.domain.notNull
+import es.verdnatura.domain.toInt
+import es.verdnatura.domain.toast
+import es.verdnatura.presentation.base.BaseFragment
+import es.verdnatura.presentation.common.Action
+import es.verdnatura.presentation.common.OnBarcodeRowClickListener
+import es.verdnatura.presentation.common.OnMoreClickListener6869
+import es.verdnatura.presentation.common.OnOptionsSelectedListener
+import es.verdnatura.presentation.common.OnPasillerosItemClickListener
+import es.verdnatura.presentation.common.OnVisibleClickListener6869
+import es.verdnatura.presentation.common.PrinterDialogManager
+import es.verdnatura.presentation.common.ToolBarAdapterTooltip
+import es.verdnatura.presentation.common.hideKeyboard
+import es.verdnatura.presentation.common.itemScanValue
+import es.verdnatura.presentation.view.component.CustomDialog
+import es.verdnatura.presentation.view.component.CustomDialogInput
+import es.verdnatura.presentation.view.component.CustomDialogList
+import es.verdnatura.presentation.view.component.CustomDialogTwoButtons
+import es.verdnatura.presentation.view.component.CustomDialogUbicadorNew
+import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter
+import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
+import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
+import es.verdnatura.presentation.view.feature.ubicador.adapter.UbicadorAdapter6869
+import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelving
+import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
+import org.json.JSONObject
+import java.text.SimpleDateFormat
+import java.time.LocalDate
+import java.time.format.DateTimeFormatter
+import java.util.Locale
+import kotlin.math.ceil
+
+@Suppress("UNUSED_ANONYMOUS_PARAMETER")
+class UbicadorFragment6869 : BaseFragment(
+ UbicadorViewModel::class
+) {
+ private var shelvingFk: String = ""
+ private var isAutoSelf: Boolean = false
+ private var urlImage = ""
+ private var adapter: UbicadorAdapter6869? = null
+ private lateinit var customDialogInput: CustomDialogInput
+ private lateinit var customDialogUbicador: CustomDialogUbicadorNew
+ private lateinit var customDialogTwoButtons: CustomDialogTwoButtons
+ private var listItems: MutableList = mutableListOf()
+ private var listLocalItems: ArrayList = ArrayList()
+ private lateinit var customDialog: CustomDialog
+ private lateinit var customDialogOlder: CustomDialog
+ private var parking: String = ""
+ private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
+ private var isShelvinLogfromMainScreen = false
+ private var modeCheckUbication = false
+ private var itemScannedScreen: Long = 0
+ private var isBack = false
+ var listIcons: ArrayList = ArrayList()
+ private lateinit var textWatcher: TextWatcher
+ private var buyScanned: String = ""
+ private lateinit var customDialogList: CustomDialogList
+ private var listShelvings: ArrayList = ArrayList()
+ private var listShelvingsAdapter: BarcodeAdapter? = null
+ private var locateMultipleShelvings: Boolean = false
+
+ companion object {
+ private const val ARG_SHELVINGFK = "shelvingFk"
+ private const val ARG_ISAUTOSELF = "autoSelf"
+ fun newInstance(shelvingFk: String, isAutoSelf: Boolean = false) =
+ UbicadorFragment6869().apply {
+ arguments = Bundle().apply {
+ putString(ARG_SHELVINGFK, shelvingFk)
+ putBoolean(ARG_ISAUTOSELF, isAutoSelf)
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ shelvingFk = it.getString(ARG_SHELVINGFK).toString()
+ isAutoSelf = it.getBoolean(ARG_ISAUTOSELF)
+ }
+ }
+
+ /*fun newInstance(entryPoint: String, autoSelf: Boolean = false) =
+ UbicadorFragmentNew(entryPoint, autoSelf)
+ }*/
+
+ override fun getLayoutId(): Int = R.layout.fragment_ubicador
+ override fun onPause() {
+ super.onPause()
+ isBack = true
+ }
+
+ override fun onAttach(context: Context) {
+ if (context is OnPasillerosItemClickListener) pasillerosItemClickListener = context
+ super.onAttach(context)
+
+ }
+
+ override fun init() {
+
+ setDialogs()
+ setEvents()
+ setToolBar()
+ ma.hideBottomNavigation(GONE)
+ viewModel.getImageConfig()
+
+ if (shelvingFk.isNotEmpty()) {
+ isShelvinLogfromMainScreen = false
+ setIconsActions(true)
+ binding.mainToolbar.toolbarTitle.text = shelvingFk
+ viewModel.itemShelvingGet(shelvingFk)
+ binding.mainToolbar.switchButton.visibility = VISIBLE
+ } else {
+ isShelvinLogfromMainScreen = true
+ setIconsActions(false)
+ }
+ super.init()
+ }
+
+ private fun setIconsActions(showIcons: Boolean) {
+
+ binding.layoutIconsActions.visibility = if (showIcons) {
+ VISIBLE
+ } else {
+ GONE
+ }
+ setIcons(!showIcons)
+ }
+
+ private fun setDialogs() {
+ customDialogInput = CustomDialogInput(requireContext())
+ customDialog = CustomDialog(requireContext())
+ customDialogOlder = CustomDialog(requireContext())
+ customDialogTwoButtons = CustomDialogTwoButtons(requireContext())
+ }
+
+ private fun setToolBar() {
+ binding.mainToolbar.switchButton.visibility = GONE
+ binding.mainToolbar.toolbarTitle.text = if (!isAutoSelf) {
+ getString(R.string.locator)
+ } else {
+ getString(R.string.selfConsumption)
+ }
+ }
+
+ private fun setIcons(isInitMenu: Boolean = false) {
+
+ listIcons.clear()
+ val iconAdd = ImageView(context)
+ iconAdd.setImageResource(R.drawable.ic_add_black_24dp)
+ val iconAddMultiple = ImageView(context)
+ iconAddMultiple.setImageResource(R.drawable.ic_add_multiple)
+ val iconReload = ImageView(context)
+ iconReload.setImageResource(R.drawable.ic_autorenew_black_24dp)
+ val iconReset = ImageView(context)
+ iconReset.setImageResource(R.drawable.ic_remove_checks)
+
+ binding.mainToolbar.switchButton.setOnCheckedChangeListener { buttonView, isChecked ->
+ if (binding.mainToolbar.toolbarTitle.text == getString(R.string.titleUbicator)) {
+ getString(R.string.scanShelving).toast(requireContext())
+ binding.mainToolbar.switchButton.isChecked = false
+ } else {
+ modeCheckUbication = isChecked
+ binding.mainToolbar.switchButton.tooltipText =
+ if (isChecked) getString(R.string.activateModoChecking) else getString(R.string.allowCheckingMode)
+ binding.textinputlayoutMatricula.hint =
+ if (isChecked) getString(R.string.scanItem) else {
+ getString(R.string.scanPlate)
+
+ }
+ if (!isChecked) {
+ listIcons.removeAt(listIcons.size - 1)
+ binding.mainToolbar.toolbarIcons.adapter!!.notifyItemRemoved(listIcons.size)
+
+ } else {
+ listIcons.add(iconReset)
+ binding.mainToolbar.toolbarIcons.adapter!!.notifyItemInserted(listIcons.size - 1)
+
+ }
+ }
+ }
+
+
+ iconReload.tooltipText = getTooltip(R.drawable.ic_autorenew_black_24dp)
+ iconAdd.tooltipText =
+ if (isInitMenu) getString(R.string.addItemMultipleShelving) else getString(R.string.addItemShelving)
+ iconAddMultiple.tooltipText = getTooltip(R.drawable.ic_add_multiple)
+ iconReset.tooltipText = getTooltip(R.drawable.ic_remove_checks)
+
+ listIcons.add(iconAdd)
+
+ if (!isInitMenu) {
+ listIcons.add(iconReload)
+ } else {
+ listIcons.add(iconAddMultiple)
+ }
+ locateMultipleShelvings = isInitMenu
+
+ binding.mainToolbar.toolbarIcons.adapter =
+ ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
+ override fun onOptionsItemSelected(item: Drawable) {
+
+ when (item) {
+ iconAdd.drawable -> showAddItemNew(
+ isEditItem = false, null
+ )
+
+ iconAddMultiple.drawable -> {
+
+ ma.onPasillerosItemClickListener(
+ PasillerosItemVO(
+ title = R.string.addItemMultipleShelving,
+ ), entryPoint = getString(R.string.addItemMultipleShelving)
+ )
+ }
+
+ iconReload.drawable -> {
+ listItems.clear()
+ if (shelvingFk.isNotBlank()) {
+ binding.editPrioridad.setText("")
+ viewModel.itemShelvingGet(
+ shelvingFk
+ )
+ } else {
+ getString(R.string.scanShelving).toast(
+ requireActivity(), Toast.LENGTH_SHORT
+ )
+ }
+ }
+
+ iconReset.drawable -> {
+ if (shelvingFk.isNotBlank()) {
+ val customDialogReset = CustomDialog(requireContext())
+ customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip))
+ .setDescription(getString(R.string.checkItemShelving))
+ .setOkButton(getString(R.string.ok)) {
+ if (listItems.isNotEmpty())
+ viewModel.itemShelvingDeleteChecked(listItems[0].shelvingFk)
+ customDialogReset.dismiss()
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogReset.dismiss()
+
+ }.show()
+ } else {
+ ma.messageWithSound(
+ getString(R.string.scanPlate),
+ isError = true,
+ isPlayed = true,
+ isToasted = true
+ )
+ }
+ }
+ }
+ }
+
+ })
+ binding.mainToolbar.toolbarIcons.layoutManager =
+ LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
+ }
+
+ @SuppressLint("SetTextI18n")
+ private fun setEvents() {
+ binding.mainToolbar.backButton.setOnClickListener {
+ ma.onMyBackPressed()
+ }
+
+ setTooltips()
+ binding.editMatricula.requestFocus()
+ binding.editMatricula.setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
+ if (binding.editMatricula.text.toString().isNotEmpty()) {
+ setIconsActions(true)
+ if (!modeCheckUbication || (modeCheckUbication && (binding.editMatricula.text.toString()
+ .isShelving()) && !binding.editMatricula.text!![0].isDigit())
+ ) {
+ binding.mainToolbar.toolbarTitle.text =
+ binding.editMatricula.text.toString()
+ shelvingFk = binding.editMatricula.text.toString()
+ parking = ""
+ binding.editPrioridad.setText("")
+ isShelvinLogfromMainScreen = true
+ viewModel.itemShelvingGet(
+ binding.editMatricula.text.toString()
+ )
+ } else {
+ try {
+ buyScanned = itemScanValue(
+ binding.editMatricula.text.toString(), arrayOf("buy"), "more"
+ ).toString()
+ viewModel.getIdFromCode(
+ code = buyScanned
+ )
+ } catch (ex: Exception) {
+ ma.messageWithSound(
+ ex.message.toString(), isError = true, isPlayed = true
+ )
+ }
+
+ }
+ }
+ binding.mainToolbar.switchButton.visibility = VISIBLE
+
+ binding.editMatricula.setText("")
+ ma.hideKeyboard(binding.editMatricula)
+ return@setOnEditorActionListener true
+ }
+
+ return@setOnEditorActionListener false
+ }
+
+ binding.editPrioridad.setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
+ if (binding.editPrioridad.text.toString().isNotEmpty()) {
+ viewModel.shelvingPriorityUpdate(
+ binding.editPrioridad.toInt(), shelvingFk
+ )
+ isBack = false
+
+ }
+ ma.hideKeyboard(binding.editPrioridad)
+ }
+
+ binding.editMatricula.requestFocus()
+ return@setOnEditorActionListener false
+ }
+
+
+ binding.automaticImg.setOnClickListener {
+
+ if (shelvingFk.isNotBlank()) ma.onPasillerosItemClickListener(
+ PasillerosItemVO(title = R.string.titleAuto), entryPoint = shelvingFk
+ )
+ else getString(R.string.scanShelving).toast(
+ requireActivity(), Toast.LENGTH_SHORT
+ )
+ }
+
+ binding.parkingImg.setOnClickListener {
+ if (shelvingFk.isNotBlank()) {
+ customDialogInput.setTitle(getString(R.string.parkingShelving)).setValue("")
+ .setOkButton(
+ getString(
+ R.string.parking
+ )
+ ) {
+ customDialogActionParking()
+
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogInput.dismiss()
+ }.show()
+ } else {
+
+ getString(R.string.errorShelving).toast(
+ requireContext()
+ )
+ }
+ customDialogInput.getEditText().requestFocus()
+ ma.hideKeyboard(customDialogInput.getEditText())
+
+ customDialogInput.getEditText().setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
+ customDialogActionParking()
+
+ return@setOnEditorActionListener true
+ }
+ false
+ }
+
+ }
+
+ binding.editImg.setOnClickListener {
+ if (shelvingFk.isNotBlank()) {
+ customDialogInput = CustomDialogInput(requireContext())
+ customDialogInput.setTitle(getString(R.string.changeShelving)).setValue("")
+ .setOkButton(getString(R.string.save)) {
+ if (customDialogInput.getValue().isNotBlank()) {
+ customDialogActionChange()
+ } else {
+ getString(R.string.errorShelving).toast(
+ requireContext()
+ )
+ }
+ customDialogInput.dismiss()
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogInput.dismiss()
+ }.show()
+ } else {
+ getString(R.string.errorShelving).toast(
+ requireContext()
+ )
+ }
+ customDialogInput.getEditText().requestFocus()
+ ma.hideKeyboard(customDialogInput.getEditText())
+
+ customDialogInput.getEditText().setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
+ customDialogActionChange()
+ return@setOnEditorActionListener true
+ }
+ false
+ }
+
+ }
+
+ binding.deleteImg.setOnClickListener {
+ if (shelvingFk.isNotBlank()) {
+ val customDialogDelete = CustomDialog(requireContext())
+ customDialogDelete.setTitle(getString(R.string.empty))
+ .setDescription(getString(R.string.operationNoReturn))
+ .setOkButton(getString(R.string.empty)) {
+ if (listItems.isNotEmpty()) {
+ viewModel.clearShelvingList(
+ //Tarea 7920
+ listItems[0].shelvingFk.toString() ?: shelvingFk
+ )
+ }
+
+ listItems.forEach {
+ it.stickers = 0
+ it.visible = 0
+ it.available = 0
+ }
+
+
+ if (adapter != null) {
+ adapter!!.notifyDataSetChanged()
+ }
+ customDialogDelete.dismiss()
+ }
+
+ customDialogDelete.setKoButton(getString(R.string.cancel)) {
+ customDialogDelete.dismiss()
+ }.show()
+ } else {
+ getString(R.string.errorShelving).toast(
+ requireContext()
+ )
+
+ }
+
+ }
+ }
+
+ private fun customDialogActionParking() {
+ parking = customDialogInput.getValue()
+ //tarea 6964
+ viewModel.getItemsByReviewOrder(
+ shelvingFk, customDialogInput.getValue(), itemFk = null, action = Action.PARKINEAR
+ )
+
+ customDialogInput.dismiss()
+ }
+
+ private fun customDialogActionChange() {
+
+ //Tarea 7920
+ /* if (listItems.isNotEmpty()) {
+ viewModel.shelvingChangeSalix(
+ shelvingFk, customDialogInput.getValue()
+ )
+ } else {*/
+ viewModel.getShelvingFkFromCode(
+ listItems[0].shelvingFk, customDialogInput.getValue()
+ )
+ // }
+ shelvingFk = customDialogInput.getValue()
+
+ customDialogInput.dismiss()
+ }
+
+ private fun checkUbications(itemScanned: Long) {
+ itemScannedScreen = itemScanned
+ val listInt: ArrayList = ArrayList()
+
+ if (listItems.none { it.item.id == itemScanned }) {
+ try {
+ listInt.add(buyScanned.toLong())
+ } catch (_: Exception) {
+ }
+
+ } else {
+ listItems.sortedBy { it.isChecked }.forEachIndexed { index, item ->
+ if (item.item.id == itemScanned) {
+ item.isChecked = 1
+ listInt.add(item.item.id)
+ ma.messageWithSound(
+ "", isError = false, isPlayed = true, titleWithError = "", false
+ )
+ }
+ }
+
+ }
+ if (listInt.isNotEmpty()) {
+ viewModel.itemShelvingAddList(
+ shelvingFk,
+ "" + listInt + "",
+ true,
+ mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
+ )
+ }
+
+ adapter!!.notifyDataSetChanged()
+ }
+
+ private fun setTooltips() {
+
+ binding.editImg.tooltipText = getTooltip(R.drawable.ic_mode_edit_black_24dp)
+ binding.deleteImg.tooltipText = getTooltip(R.drawable.ic_delete_forever_black_24dp)
+ binding.editPrioridad.tooltipText = getString(R.string.changePriority)
+ binding.parkingImg.tooltipText = getTooltip(R.drawable.ic_local_parking_black_24dp)
+ binding.automaticImg.tooltipText = getTooltip(R.drawable.ic_flash_auto_black_24dp)
+
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun observeViewModel() {
+
+ with(viewModel) {
+
+ loadShelvingGet.observe(viewLifecycleOwner) { event ->
+ listItems.clear()
+ event.getContentIfNotHandled().notNull {
+ if (isShelvinLogfromMainScreen) {
+ viewModel.shelvingLogAdd(shelvingFk)
+ }
+ listItems.addAll(it.itemShelving!!)
+ listItems.forEach { itemShelvings ->
+ if (itemShelvings.description.isNullOrEmpty()) {
+ itemShelvings.description = itemShelvings.item.longName
+ ?: "${itemShelvings.item.name ?: ""} ${itemShelvings.item.size ?: ""}"
+ }
+ itemShelvings.stickers =
+ ceil(((itemShelvings.visible).toDouble() / itemShelvings.packing.toDouble())).toInt()
+ }
+ val totalStickers = listItems.sumOf { item -> item.stickers!! }
+ parking = it.parking?.code ?: ""
+
+ binding.mainToolbar.toolbarTitle.text =
+ shelvingFk.uppercase() + getString(R.string.pUppercase) + parking + getString(
+ R.string.label
+ ) + totalStickers
+ if (listItems.isNotEmpty()) binding.editPrioridad.setText(it.priority.toString())
+
+ if (!binding.mainToolbar.switchButton.isChecked && listItems.isNotEmpty()) {
+ listItems = listItems.asReversed()
+ }
+
+ if (listItems.isNotEmpty()) {
+ binding.deleteImg.visibility = VISIBLE
+
+ } else {
+ binding.deleteImg.visibility = View.INVISIBLE
+ }
+ setAdapter(listItems)
+ setPosition()
+
+ }
+ }
+ loadAddList.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ viewModel.itemShelvingGet(shelvingFk)
+ }
+ }
+
+ //parking, isChecked, responseOlder, responseMake Add
+ responseUbicator.observe(viewLifecycleOwner) {
+
+ if (shelvingFk.isNotEmpty()) {
+ binding.mainToolbar.toolbarTitle.text = shelvingFk
+ viewModel.itemShelvingGet(
+ shelvingFk
+ )
+
+ }
+ }
+ responseLogAdd.observe(viewLifecycleOwner) {
+ isShelvinLogfromMainScreen = false
+ if (it == false) {
+ setIconsActions(false)
+ }
+ }
+ loadResponseCode.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ checkUbications(it.toLong())
+ }
+ }
+
+ loadImageConfig.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ urlImage = it
+ }
+ }
+
+ loadAddList.observe(viewLifecycleOwner) {
+
+ if (shelvingFk.isNotEmpty()) {
+ binding.mainToolbar.toolbarTitle.text = shelvingFk
+ viewModel.itemShelvingGet(
+ shelvingFk
+ )
+
+ }
+ }
+
+ loadGetParkingResponse.observe(viewLifecycleOwner) {
+
+ if (shelvingFk.isNotEmpty()) {
+ binding.mainToolbar.toolbarTitle.text = shelvingFk
+ viewModel.itemShelvingGet(
+ shelvingFk
+ )
+
+ }
+ }
+
+ loadShelvingListItemNewer.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+
+ if (it.list.isNotEmpty()) {
+
+ val oldList = it.list.filter { item ->
+ item.itemCreated!!.contains("old", ignoreCase = true)
+ }.map { item ->
+ val itemFk = item.itemFk
+ val shelvingFk = item.code
+ val created = item.created.isoToString(returnOnlyDate = true)
+ val parkingCode = item.parkingFk
+ val formattedCreated =
+ SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(
+ SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(
+ created
+ )!!
+ )
+ "$itemFk:${shelvingFk?.uppercase()}→${parkingCode}:(${formattedCreated}"
+ }
+ val newList = it.list.filter { item ->
+ item.itemCreated!!.contains("new", ignoreCase = true)
+ }.map { item ->
+ val itemFk = item.itemFk
+ val shelvingFk = item.code
+ val created = item.created.isoToString(returnOnlyDate = true)
+ val parkingCode = item.parkingFk
+ val formattedCreated =
+ SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(
+ SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(
+ created
+ )!!
+ )
+ "$itemFk:${shelvingFk?.uppercase()}→${parkingCode}:(${formattedCreated})"
+ }
+
+ val resultStringOld = oldList.joinToString(separator = "\n")
+ val resultStringNew = newList.joinToString(separator = "\n")
+
+ var finalOutput = ""
+ if (oldList.isNotEmpty()) {
+ finalOutput =
+ getString(R.string.ubicationItemNewer, resultStringOld)
+ }
+ if (newList.isNotEmpty()) {
+ finalOutput += getString(R.string.ubicationItemOlder, resultStringNew)
+ }
+ customDialogOlder.setTitle(getString(R.string.info))
+ .setDescription(
+ finalOutput
+ ).setOkButton(
+ getString(R.string.ok)
+ ) {
+ when (it.originalAction) {
+ Action.PARKINEAR -> viewModel.setParking(
+ it.originalShelvingFk, it.originalParking
+ )
+
+ Action.TRANSFERIR -> {
+ println("transfer item ${it.itemShelvingFk}")
+ println("transfer carro ${it.originalShelvingFk}")
+ viewModel.itemShelvingTransfer(
+ it.itemShelvingFk!!,
+ it.originalShelvingFk
+ )
+ }
+
+ null -> d("", "no action")
+ }
+
+
+ customDialogOlder.dismiss()
+
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogOlder.dismiss()
+ }.setCancelable(true)
+ customDialogOlder.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+
+ }
+ Handler(Looper.getMainLooper()).postDelayed({
+ customDialogOlder.show()
+ }, 1000)
+ }
+ }
+
+ loadResponseHasOlder.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+
+ customDialogOlder.setTitle(getString(R.string.info)).setDescription(
+ getString(
+ R.string.itemOlderInfo, responseHasOlder.value!!.action
+ )
+ ).setOkButton(
+ getString(R.string.ok)
+ ) {
+ when (responseHasOlder.value!!.action) {
+ Action.PARKINEAR -> viewModel.setParking(
+ responseHasOlder.value!!.shelvingFkIn, parking
+ )
+
+ Action.TRANSFERIR -> viewModel.itemShelvingTransfer(
+ responseHasOlder.value!!.itemFk!!,
+ responseHasOlder.value!!.shelvingFkOut!!
+ )
+ }
+ customDialogOlder.dismiss()
+
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogOlder.dismiss()
+ }.show()
+ }
+ }
+ loadBuyUltimateResponse.observe(viewLifecycleOwner) { event ->
+ event.getContentIfNotHandled().notNull {
+ ma.messageWithSound(
+ getString(R.string.errorPrintBuy), isError = true, isPlayed = true
+ )
+ }
+ }
+ }
+
+ }
+
+ private fun setPosition() {
+ if (modeCheckUbication) {
+ listItems.sortedBy { it.isChecked }.forEachIndexed { index, item ->
+ if (item.item.id == itemScannedScreen) {
+ binding.locationRecyclerview.scrollToPosition(
+ index
+ )
+ }
+ }
+
+ } else {
+ (binding.locationRecyclerview.layoutManager as LinearLayoutManager).scrollToPosition(
+ 0
+ )
+ }
+ }
+
+ private fun setAdapter(listItems: MutableList) {
+ listItems.sortWith { item1, item2 ->
+ val compareItem = item1.item.id.compareTo(item2.item.id)
+ if (compareItem == 0) {
+ item2.visible.compareTo(item1.visible) // Invertir el orden
+ } else {
+ compareItem
+ }
+ }
+ adapter = UbicadorAdapter6869(
+ listItems.sortedBy { it.isChecked },
+ onPasillerosItemClickListener = pasillerosItemClickListener!!,
+ onVisibleClickListener = object : OnVisibleClickListener6869 {
+ override fun onVisibleClickListener(item: ItemShelving) {
+
+ if (!isAutoSelf) {
+
+ if (item.isChecked == 0) {
+ viewModel.updateIsChecked(itemShelvingFk = item.id)
+ }
+
+ showAddItemNew(
+ itemUbicador = item, isEditItem = true
+ )
+ } else {
+
+ showAutoSelfConsumption(item)
+ }
+
+ }
+
+ },
+ onMoreClickListener = object : OnMoreClickListener6869 {
+
+ override fun onMoreClickListener(item: ItemShelving) {
+ showMoreOptions(item)
+ }
+
+ },
+ urlImage = urlImage
+ )
+
+ binding.locationRecyclerview.adapter = adapter
+ binding.locationRecyclerview.layoutManager = LinearLayoutManager(
+ requireContext(), LinearLayoutManager.VERTICAL, false
+ )
+ }
+
+ private fun showAutoSelfConsumption(item: ItemShelving) {
+
+ customDialogInput.setInputText(InputType.TYPE_CLASS_NUMBER)
+ customDialogInput.setTitle(getString(R.string.selfConsumption))
+ customDialogInput.setDescription(getString(R.string.quantityTake)).setValue("")
+ .setOkButton(getString(R.string.take)) {
+ try {
+ if (customDialogInput.getValue().toInt() > 0) {
+ val quantity =
+ if (item.visible - customDialogInput.getValue().toInt() > 0) {
+ item.visible - customDialogInput.getValue().toInt()
+ } else {
+ 0
+ }
+ viewModel.itemShelvingSelfConsumption(
+ shelvingFk, item.item.id, quantity
+ )
+ } else {
+ throw Exception("")
+ }
+ } catch (err: Exception) {
+ (getString(R.string.errorQuantity).toast(requireContext()))
+ }
+ customDialogInput.dismiss()
+
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogInput.dismiss()
+ }.show()
+ customDialogInput.setFocusText()
+ }
+
+ private fun showAddItemNew(
+ isEditItem: Boolean,
+ itemUbicador: ItemShelving?,
+ ) {
+ customDialogUbicador = CustomDialogUbicadorNew(requireContext())
+
+
+ if (isEditItem) {
+ customDialogUbicador.setTitle(getString(R.string.editItem) + itemUbicador!!.item.id)
+ .setItemValue(itemUbicador.item.id.toString())
+ .setPackingValue(itemUbicador.packing.toString())
+ .setVisibleValue(itemUbicador.visible.toString())
+ //.setEtiquetaValue((itemUbicador.visible / (itemUbicador.packing ?: 0)).toString())
+ .setEtiquetaValue(itemUbicador.stickers.toString()).setUnits(
+ if (itemUbicador.stickers != null && itemUbicador.stickers != 0) {
+ (itemUbicador.visible % itemUbicador.stickers!!).toString()
+ } else {
+ "0"
+ }
+ ).setOkButton(getString(R.string.save)) {
+ setShowAddItemAction(itemUbicador)
+ }.setKoButton(getString(R.string.close)) {
+ customDialogUbicador.dismiss()
+ }.show()
+ } else {
+ customDialogUbicador.setTitle(getString(R.string.newItem))
+ .setOkButton(getString(R.string.save)) {
+ setShowAddItemAction(null)
+ }.setKoButton(getString(R.string.close)) {
+ customDialogUbicador.dismiss()
+ }.show()
+ }
+
+ customDialogUbicador.getEditItem().setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
+
+ if (customDialogUbicador.getItemValue().isNotEmpty()) {
+ try {
+
+ customDialogUbicador.setItemValue(
+ itemScanValue(
+ customDialogUbicador.getItemValue(), arrayOf("buy"), "more"
+ ).toString()
+ )
+
+ } catch (ex: Exception) {
+ ma.messageWithSound(
+ ex.message.toString(), isError = true, isPlayed = true
+ )
+ customDialogUbicador.setItemValue("")
+ }
+ }
+
+ return@setOnEditorActionListener true
+ }
+
+ customDialogUbicador.getPackingItem().requestFocus()
+ }
+
+ setWatcher()
+ customDialogUbicador.getEditItem().requestFocus()
+ ma.hideKeyboard(customDialogUbicador.getEditItem())
+
+ }
+
+ private fun setShowAddItemAction(itemUbicador: ItemShelving?) {
+ try {
+
+ if (customDialogUbicador.getItemValue()
+ .isEmpty() || customDialogUbicador.getPackingValue().isBlank()
+ ) {
+ getString(R.string.itemAndPackingMandatory).toast(context)
+ } else {
+ saveItemCall(customDialogUbicador, itemUbicador)
+ customDialogUbicador.dismiss()
+ }
+ } catch (ex: Exception) {
+ ex.message.toString().toast(requireContext())
+ }
+ }
+
+ private fun saveItemCall(
+ customDialogUbicador: CustomDialogUbicadorNew,
+ itemUbicador: ItemShelving?,
+ ) {
+
+ if (itemUbicador?.id == null) {
+ //item nuevo sin shelving
+ try {
+ if (locateMultipleShelvings) insertShelvingsForUbicator(
+ customDialogUbicador.getItemValue().toLong(),
+ customDialogUbicador.getVisibleValue().toInt(),
+ customDialogUbicador.getPackingValue().toIntOrNull()
+
+ ) else {
+
+ viewModel.itemShelvingAdd(
+ shelving = shelvingFk,
+ item = customDialogUbicador.getItemValue().toLong(),
+ quantity = customDialogUbicador.getVisibleValue().toInt(),
+ packing = customDialogUbicador.getPackingValue().toIntOrNull(),
+ warehouse = mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK),
+ grouping = null
+ )
+ }
+
+ } catch (ex: Exception) {
+ ma.messageWithSound(
+ getString(R.string.reviewData),
+ isError = true,
+ isPlayed = true,
+ isToasted = true
+ )
+ }
+ } else {
+ viewModel.itemShelvingMakeEdit(
+ customDialogUbicador.getVisibleValue().toIntOrNull()!!,
+ customDialogUbicador.getPackingValue().toInt(),
+ itemUbicador.id,
+ itemUbicador.grouping,
+ updateAvailable(
+ itemUbicador.available,
+ customDialogUbicador.getVisibleValue().toIntOrNull(),
+ itemUbicador.visible
+ )
+ )
+
+ }
+
+ }
+
+ private fun updateAvailable(newAvailable: Int?, newVisible: Int?, oldVisible: Int?): Int {
+ val available = newAvailable ?: 0
+ val visible = newVisible ?: 0
+ val old = oldVisible ?: 0
+ return maxOf(available + visible - old, 0)
+ }
+
+ private fun insertShelvingsForUbicator(barCode: Number, visible: Int, packing: Int?) {
+ if (listShelvings.isNotEmpty()) listShelvings.clear()
+ customDialogList = CustomDialogList(requireContext())
+ customDialogList.setTitle(
+ getString(R.string.shelvingsLocate)
+ )
+ customDialogList.setDescription(
+ getString(R.string.scanShelvingsLocate)
+ ).setOkButton(getString(R.string.locate)) {
+ listShelvings.forEach {
+ viewModel.itemShelvingAdd(
+ shelving = it.code!!,
+ item = barCode,
+ quantity = visible,
+ packing = packing,
+ warehouse = mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK),
+ grouping = null
+ )
+
+ }
+ customDialogList.dismiss()
+
+ }.setKoButton(getString(R.string.cancel)) {
+ ma.hideKeyboard(customDialogList.getEditText())
+ customDialogList.dismiss()
+
+ }.setValue("").show()
+
+ customDialogList.getEditText().requestFocus()
+ ma.hideKeyboard(customDialogList.getEditText())
+
+ customDialogList.getEditText().setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
+ if (customDialogList.getValue().isNotEmpty()) {
+
+ try {
+ customDialogList.setValue(
+ itemScanValue(
+ customDialogList.getValue(), arrayOf("saleGroup"), field = "id"
+ ).toString()
+ )
+ if (customDialogList.getValue().isShelving()) {
+ if (listShelvings.firstOrNull { it.code == customDialogList.getValue() } == null) {
+ listShelvings.add(BarcodeVO(code = customDialogList.getValue()))/*viewModel.sectorCollectionSaleGroupAdd(
+ customDialogList.getValue().toInt(), collectionFk
+ )*/
+ } else {
+ throw Exception(getString(R.string.errorRepeatedShelving))
+ }
+ } else {
+ throw Exception()
+ }
+
+ } catch (ex: Exception) {
+ ma.messageWithSound(
+ getString(R.string.errorInput),
+ isError = true,
+ isPlayed = true,
+ isToasted = true
+ )
+ listShelvings.removeAt(0)
+ }
+
+ listShelvingsAdapter!!.notifyItemChanged(0)
+ }
+ customDialogList.setValue("")
+ ma.hideKeyboard(customDialogList.getEditText())
+ return@setOnEditorActionListener true
+ }
+ false
+ }
+
+ listShelvingsAdapter = BarcodeAdapter(
+ listShelvings, object : OnBarcodeRowClickListener {
+ override fun onBarcodeRowClickListener(item: BarcodeVO) {
+
+ }
+ }, showDelete = false
+ )
+ customDialogList.getRecyclerView().adapter = listShelvingsAdapter
+
+ customDialogList.getRecyclerView().layoutManager =
+ LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
+
+ }
+
+ private fun setWatcher() {
+ customDialogUbicador.addTextWatcher(customDialogUbicador.getPackingItem()) { s ->
+
+ setValueVisible()
+ }
+
+ customDialogUbicador.addTextWatcher(customDialogUbicador.getEtiquetaItem()) { s ->
+
+ setValueVisible()
+ }
+
+ customDialogUbicador.addTextWatcher(customDialogUbicador.getUnitsItem()) { s ->
+
+ setValueVisible()
+ }
+
+ }
+
+ private fun setValueVisible() {
+ customDialogUbicador.setVisibleValue("")
+ customDialogUbicador.setVisibleValue(
+ (((customDialogUbicador.getEtiquetaValue().toIntOrNull()
+ ?: 0) * (customDialogUbicador.getPackingValue().toIntOrNull()
+ ?: 0)) + (customDialogUbicador.getUnitsValue().toIntOrNull() ?: 0)).toString()
+ )
+ }
+
+ private fun showMoreOptions(item: ItemShelving) {
+ customDialogTwoButtons.setTitle(item.item.id.toString())
+ .setDescription(getString(R.string.selectAction))
+ .setOkButton(getString(R.string.transfer)) {
+ customDialogInput.setTitle(getString(R.string.shelvingNew))
+ .setDescription(getString(R.string.selectDestiny) + item.item.id).setValue("")
+ .setOkButton(getString(R.string.transfer)) {
+ customDialogTransferAction(item)
+
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogInput.dismiss()
+ }.show()
+ customDialogInput.getEditText().requestFocus()
+ ma.hideKeyboard(customDialogInput.getEditText())
+ customDialogInput.getEditText().setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
+ customDialogTransferAction(item)
+ return@setOnEditorActionListener true
+ }
+ false
+ }
+ customDialogTwoButtons.dismiss()
+ }.setOkButtonTwo(getString(R.string.delete)) {
+ val customDialogConfirm = CustomDialog(requireContext())
+ customDialogConfirm.setTitle(getString(R.string.confirm)).setDescription(
+ if (!isAutoSelf) {
+ getString(R.string.itemDeleteConfirm) + item.item.id + "?"
+ } else {
+ getString(R.string.deleteQuantity) + item.item.id
+ }
+ ).setOkButton(getString(R.string.delete)) {
+ if (!isAutoSelf) {
+ listItems.remove(item)
+ adapter!!.notifyItemRemoved(listItems.indexOf(item))
+ viewModel.itemShelvingDelete(
+ item.id
+ )
+ customDialogTwoButtons.dismiss()
+ customDialogConfirm.dismiss()
+ } else {
+ viewModel.itemShelvingSelfConsumption(
+ shelvingFk, item.id, 0
+ )
+ customDialogConfirm.dismiss()
+ customDialogTwoButtons.dismiss()
+ }
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogConfirm.dismiss()
+ customDialogTwoButtons.dismiss()
+ }
+ customDialogConfirm.show()
+ }
+ //Tarea 7266
+ .setOkButtonThree(getString(R.string.print)) {
+ val printerDialogManager = PrinterDialogManager(requireContext())
+ printerDialogManager.showPrintDialog(
+ item.item.id,
+ item.description ?: ""
+ ) { id, labelType, packing, copies ->
+
+ if (item.buyFk == null) {
+ viewModel.buyUltimate(
+ itemFk = item.id,
+ warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
+ WAREHOUSEFK
+ ),
+ dated = LocalDate.now()
+ .format(
+ DateTimeFormatter.ofPattern("yyyy-dd-MM")
+ ),
+ reportName = "LabelBuy",
+ printerFk = mobileApplication.dataStoreApp.readDataStoreKey(
+ ConstAndValues.PRINTERFK
+ ),
+ userFk = mobileApplication.userId!!,
+ priority = "normal",
+ copies = copies,
+ labelType = labelType,
+ packing = packing
+ )
+ customDialogTwoButtons.dismiss()
+ } else {
+ printItem(
+ item.buyFk!!, labelType, packing, copies
+ )
+ customDialogTwoButtons.dismiss()
+ }
+ }
+ customDialogInput.getEditText().requestFocus()
+ }
+ //Tarea 7763
+ /*
+ .setOkButtonThree(getString(R.string.rename)) {
+ customDialogInput.setTitle(getString(R.string.itemNew))
+ .setDescription(getString(R.string.scanItem)).setValue("")
+ .setOkButton(getString(R.string.rename)) {
+
+ actionRename(item, customDialogInput.getValue())
+
+ }.setKoButton(getString(R.string.cancel)) {
+ customDialogInput.dismiss()
+ customDialogTwoButtons.dismiss()
+ }.show()
+ customDialogInput.getEditText().setOnEditorActionListener { _, actionId, _ ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
+
+ actionRename(item, customDialogInput.getValue())
+ return@setOnEditorActionListener true
+ }
+ false
+ }
+ customDialogInput.getEditText().requestFocus()
+ }
+ */
+ customDialogTwoButtons.setKoButton(getString(R.string.cancel)) {
+ customDialogTwoButtons.dismiss()
+ }
+
+ customDialogTwoButtons.show()
+ }
+
+ private fun printItem(id: Number?, labelType: String, packing: Int?, copies: Int?) {
+
+ try {
+ viewModel.printItem(
+ reportName = "LabelBuy",
+ printerFk = mobileApplication.dataStoreApp.readDataStoreKey(
+ ConstAndValues.PRINTERFK
+ ),
+ userFk = mobileApplication.userId!!,
+ priority = "normal",
+ params = JSONObject().apply {
+ put("copies", copies)
+ put("id", id)
+ put("labelType", labelType)
+ put("packing", packing)
+ }.toString().replace("\"", "\\\"")
+ )
+ } catch (ex: Exception) {
+ ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
+ }
+ hideKeyboard()
+ }
+
+ private fun actionRename(item: ItemUbicador, itemScan: String) {
+
+ if (itemScan.isNotEmpty()) {
+
+ renameItem(
+ item, itemScanValue(
+ itemScan, arrayOf("buy"), "id"
+ ).toString().toLong()
+ )
+ customDialogInput.dismiss()
+ customDialogTwoButtons.dismiss()
+ } else {
+ getString(R.string.scanItem).toast(requireContext())
+ }
+
+ }
+
+ private fun renameItem(item: ItemUbicador, barCode: Long) {
+ try {
+ viewModel.getInfoFromBuy(item.id, buyFk = barCode)
+ } catch (ex: Exception) {
+ ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
+
+ }
+
+ }
+
+ private fun customDialogTransferAction(item: ItemShelving) {
+ if (customDialogInput.getValue().isNotEmpty()) {
+ /*tearea 6964*/
+ // }
+ /* viewModel.hasItemOlder(
+ shelvingFk = shelvingFk,
+ parking = customDialogInput.getValue(),
+ itemFk = item.id,
+ action = Action.TRANSFERIR
+ )*/
+ viewModel.getParkingToTransfer(
+ shelvingFkTo = customDialogInput.getValue(),
+ itemShelvingFk = item.id,
+ itemFk = item.itemFk,
+ shelvingFkFrom = shelvingFk
+ )
+ println("transfer item ${item.id}")
+ println("transfer carro ${customDialogInput.getValue()}")
+ /* viewModel.itemShelvingTransfer(
+ item.id, customDialogInput.getValue()
+ )*/
+ listItems.remove(item)
+ adapter!!.notifyItemRemoved(listItems.indexOf(item))
+ //adapter!!.notifyDataSetChanged()
+ customDialogInput.dismiss()
+ } else {
+ getString(R.string.wagonIncorrect).toast(requireContext())
+
+ }
+ }
+}
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragmentNew.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragmentNew.kt
index 76bb8fa4..f96cc6e5 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragmentNew.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragmentNew.kt
@@ -28,6 +28,7 @@ import es.verdnatura.presentation.common.OnMoreClickListenerNew
import es.verdnatura.presentation.common.OnOptionsSelectedListener
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
import es.verdnatura.presentation.common.OnVisibleClickListenerNew
+import es.verdnatura.presentation.common.PrinterDialogManager
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
import es.verdnatura.presentation.common.hideKeyboard
import es.verdnatura.presentation.common.itemScanValue
@@ -41,6 +42,9 @@ import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import es.verdnatura.presentation.view.feature.ubicador.adapter.UbicadorAdapterNew
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
+import org.json.JSONObject
+import java.time.LocalDate
+import java.time.format.DateTimeFormatter
import kotlin.math.ceil
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
@@ -120,7 +124,7 @@ class UbicadorFragmentNew : BaseFragment showAddItemNew(
- isEditItem = false, null
- )
+ iconAdd.drawable -> {
+ showAddItemNew(
+ isEditItem = false, null
+ )
+ }
iconAddMultiple.drawable -> {
-
ma.onPasillerosItemClickListener(
PasillerosItemVO(
title = R.string.addItemMultipleShelving,
@@ -233,7 +238,7 @@ class UbicadorFragmentNew : BaseFragment {
-
+ listItems.clear()
if (shelvingFk.isNotBlank()) {
binding.editPrioridad.setText("")
viewModel.itemShelvingListNew(
@@ -252,7 +257,8 @@ class UbicadorFragmentNew : BaseFragment
event.getContentIfNotHandled().notNull {
@@ -665,9 +686,7 @@ class UbicadorFragmentNew : BaseFragment
event.getContentIfNotHandled().notNull {
ma.messageWithSound(
- getString(R.string.errorPrintBuy),
- isError = true,
- isPlayed = true
+ getString(R.string.errorPrintBuy), isError = true, isPlayed = true
)
}
}
@@ -780,8 +799,7 @@ class UbicadorFragmentNew : BaseFragment
+ //Tarea 7266
+ .setOkButtonThree(getString(R.string.print)) {
+ val printerDialogManager = PrinterDialogManager(requireContext())
+ printerDialogManager.showPrintDialog(
+ item.item,
+ item.description ?: ""
+ ) { id, labelType, packing, copies ->
- if (item.buyFk == null) {
- viewModel.buyUltimate(
- itemFk = item.id,
- warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
- WAREHOUSEFK
- ),
- dated = LocalDate.now()
- .format(
- DateTimeFormatter.ofPattern("yyyy-dd-MM")
- ),
- reportName = "LabelBuy",
- printerFk = mobileApplication.dataStoreApp.readDataStoreKey(
- ConstAndValues.PRINTERFK
- ),
- userFk = mobileApplication.userId!!,
- priority = "normal",
- copies = copies,
- labelType = labelType,
- packing = packing
- )
- customDialogTwoButtons.dismiss()
- } else {
- printItem(
- item.buyFk!!, labelType, packing, copies
- )
- customDialogTwoButtons.dismiss()
- }
- }
- customDialogInput.getEditText().requestFocus()
- }*/
+ if (item.buyFk == null) {
+ viewModel.buyUltimate(
+ itemFk = item.id,
+ warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
+ WAREHOUSEFK
+ ),
+ dated = LocalDate.now()
+ .format(
+ DateTimeFormatter.ofPattern("yyyy-dd-MM")
+ ),
+ reportName = "LabelBuy",
+ printerFk = mobileApplication.dataStoreApp.readDataStoreKey(
+ ConstAndValues.PRINTERFK
+ ),
+ userFk = mobileApplication.userId!!,
+ priority = "normal",
+ copies = copies,
+ labelType = labelType,
+ packing = packing
+ )
+ customDialogTwoButtons.dismiss()
+ } else {
+ printItem(
+ item.buyFk!!, labelType, packing, copies
+ )
+ customDialogTwoButtons.dismiss()
+ }
+ }
+ customDialogInput.getEditText().requestFocus()
+ }
//Tarea 7763
/*
.setOkButtonThree(getString(R.string.rename)) {
@@ -1150,7 +1168,12 @@ class UbicadorFragmentNew : BaseFragment> =
_shelvingListNew.map { Event(it) }
+ private val _shelvingGet by lazy { MutableLiveData() }
+ val loadShelvingGet: LiveData> =
+ _shelvingGet.map { Event(it) }
+
+ private val _imageConfig by lazy { MutableLiveData() }
+ val loadImageConfig: LiveData> =
+ _imageConfig.map { Event(it) }
+
private val _shelvingListItemNewer by lazy { MutableLiveData() }
val loadShelvingListItemNewer: LiveData> =
_shelvingListItemNewer.map { Event(it) }
@@ -69,6 +81,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
val buyUltimateResponse: LiveData = _buyUltimateResponse
val loadBuyUltimateResponse: LiveData> = _buyUltimateResponse.map { Event(it) }
+ private val _getParkingResponse by lazy { MutableLiveData() }
+ val getParkingResponse: LiveData = _getParkingResponse
+ val loadGetParkingResponse: LiveData> = _getParkingResponse.map { Event(it) }
+
fun itemShelvingListNew(
shelvingFk: String
) {
@@ -85,63 +101,44 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
//Tarea 6869
fun itemShelvingGet(
- shelvingFk: String
+ shelvingCode: String
) {
- salix.itemShelvingGet(
+ salix.shelvingGet(
filter = """{
- "fields":[
- "priority",
- "parkingFk",
- "code"
- ],
+ "fields":
+ ["priority","parkingFk","code","id"],
"include":[
- {
- "relation":"parking",
- "scope":{
- "fields":[
- "code"
- ]
- }
- },
- {
- "relation":"itemShelving",
- "scope":{
- "fields":[
- "id",
- "itemFk",
- "visible",
- "packing",
- "grouping",
- "isChecked",
- "available",
- "buyFk"
- ],
- "include":{
- "relation":"item",
- "scope":{
- "fields":[
- "name",
- "longName",
- "size"
- ]
- }
- }
- }
- }
- ],
- "where":{
- "code":"$shelvingFk"
- }
- }""".trim()
- )
- .enqueue(
- object : SalixCallback>(context) {
- override fun onSuccess(response: Response>) {
- _shelvingListNew.value = response.body()?.let { ItemUbicadorListNew(it) }
- }
+ {"relation":"parking",
+ "scope":{"fields":["code"]}},
+ {"relation":"itemShelving",
+ "scope":{"fields":["id","itemFk","visible","packing","grouping","isChecked","available","buyFk","shelvingFk"],
+ "include":
+ {"relation":"item",
+ "scope":{"fields":["name","longName","size"]}}}}],
+ "where":{"code":"$shelvingCode"}}""".trim()
+ ).enqueue(
+ object : SalixCallback(context) {
+ override fun onSuccess(response: Response) {
+ _shelvingGet.value = response.body()
+ }
- },
- )
+ },
+ )
+ }
+
+ fun getImageConfig(
+ ) {
+ salix.getImageConfig(
+ ).enqueue(
+ object : SalixCallback(context) {
+ override fun onSuccess(response: Response) {
+
+ _imageConfig.value =
+ response.body()!!.entrySet().first().value.asString
+ }
+
+ },
+ )
}
fun shelvingPriorityUpdate(
@@ -252,23 +249,36 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
fun hasItemOlder(
shelvingFk: String,
- parking: String,
+ parking: String?,
+ itemFk: Int?,
+ action: Action?,
+ itemShelvingFk: Number? = null
- ) {
- salix.getListItemNewer(shelvingFk, parking)
+ ) {
+ salix.getListItemNewerNew(shelvingFk, parking, itemFk)
+ //salix.getListItemNewer(shelvingFk, parking)
.enqueue(object : SalixCallback>(context) {
override fun onSuccess(response: Response>) {
if (response.body()!!.isEmpty()) {
- setParking(shelvingFk, parking)
+ when (action) {
+ Action.PARKINEAR -> setParking(shelvingFk, parking!!)
+ Action.TRANSFERIR -> {
+ itemShelvingTransfer(itemShelvingFk!!, shelvingFk)
+ }
+
+ null -> setParking(shelvingFk, parking!!)
+ }
} else {
_shelvingListItemNewer.value =
response.body()?.let {
ItemShelvingNewerList(
it,
- originalParking = parking,
- originalShelvingFk = shelvingFk
+ originalShelvingFk = shelvingFk,
+ originalParking = parking!!,
+ originalItem = itemFk,
+ originalAction = action
)
}
}
@@ -278,6 +288,98 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
})
}
+ fun getItemsByReviewOrder(
+ shelving: String,
+ parking: String?,
+ itemFk: Number?,
+ action: Action?,
+ itemShelvingFk: Number? = null,
+ shelvingFkFrom: String? = null
+
+ ) {
+ salix.getItemsByReviewOrder(
+ if (action == Action.TRANSFERIR) shelvingFkFrom!! else shelving,
+ parking,
+ itemFk
+ )
+ .enqueue(object : SalixCallback>(context) {
+
+ override fun onSuccess(response: Response>) {
+ if (response.body()!!.isEmpty()) {
+ when (action) {
+ Action.PARKINEAR -> setParking(shelving, parking!!)
+ Action.TRANSFERIR -> {
+
+ itemShelvingTransfer(itemShelvingFk!!, shelving!!)
+ }
+
+ null -> d("", "No action")
+ }
+ } else {
+ _shelvingListItemNewer.value =
+ response.body()?.let {
+ ItemShelvingNewerList(
+ it,
+ originalShelvingFk = shelving,
+ originalParking = parking!!,
+ originalItem = itemFk,
+ originalAction = action,
+ itemShelvingFk = itemShelvingFk
+ )
+ }
+ }
+
+ }
+
+ })
+ }
+
+ fun getParkingToTransfer(
+ shelvingFkTo: String,
+ itemShelvingFk: Number,
+ itemFk: Number,
+ shelvingFkFrom: String? = null
+
+ ) {
+ salix.shelvingGet(
+ filter = """{
+ "fields": ["priority", "parkingFk", "code", "id"],
+ "include": [
+ {
+ "relation": "parking",
+ "scope": {
+ "fields": ["code"]
+ }
+ }
+ ],
+ "where": {
+ "code": "$shelvingFkTo"
+ }
+ }"""
+ ).enqueue(object : SalixCallback(context) {
+ override fun onSuccess(response: Response) {
+ val itemShelving = response.body()
+ if (itemShelving?.parking == null) {
+ itemShelvingTransfer(itemShelvingFk, shelvingFkTo)
+ } else {
+ getItemsByReviewOrder(
+ shelving = shelvingFkTo,
+ itemFk = itemFk,
+ parking = itemShelving.parking.code,
+ action = Action.TRANSFERIR,
+ itemShelvingFk = itemShelvingFk,
+ shelvingFkFrom = shelvingFkFrom!!
+ )
+ }
+ }
+
+ override fun onError(t: Throwable) {
+ _getParkingResponse.value = false
+ super.onError(t)
+ }
+ })
+ }
+
fun itemShelvingMerge(
vShelf: Int, shelvingFk: String
@@ -296,7 +398,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
}
fun itemShelvingDeleteChecked(
- vShelvingFk: String
+ vShelvingFk: Number
) {
salix.itemShelvingsUpdate(
@@ -340,7 +442,12 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
.enqueue(object : SalixCallback(context) {
override fun onSuccess(response: Response) {
- _responseLogAdd.value = response.message()
+ _responseLogAdd.value = true
+ }
+
+ override fun onError(t: Throwable) {
+ _responseLogAdd.value = false
+ super.onError(t)
}
})
@@ -399,7 +506,24 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
shelvingFkIn: String, shelvingFkOut: String
) {
+ salix.itemShelvingsUpdate(
+ where = JsonObject().apply {
+ addProperty("shelvingFk", shelvingFkIn)
+ },
+ hashMapOf("shelvingFk" to shelvingFkOut)
+ ).enqueue(object : SalixCallback(context) {
+ override fun onSuccess(response: Response) {
+ _responseUbicator.value = true
+ super.onSuccess(response)
+ }
+ })
+ }
+
+ //tarea 7920
+ fun shelvingChangeSalixNew(
+ shelvingFkIn: Number, shelvingFkOut: Number
+ ) {
salix.itemShelvingsUpdate(
where = JsonObject().apply { addProperty("shelvingFk", shelvingFkIn) },
hashMapOf("shelvingFk" to shelvingFkOut)
@@ -412,11 +536,32 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
})
}
- fun itemShelvingTransfer(
- itemFk: Int, shelvingFk: String
+ fun getShelvingFkFromCode(
+ shelvingFkIn: Number, codeOut: String
) {
- salix.itemShelvingTransfer(arrayListOf(itemFk, shelvingFk).formatWithQuotes())
+
+ salix.shelvingGetFromCode(
+ filter = """{"where":{"code":"$codeOut"}}"""
+ ).enqueue(object : SalixCallback(context) {
+
+ override fun onSuccess(response: Response) {
+ val myItemCode = response.body().let { it as ItemUbicador }
+
+ shelvingChangeSalixNew(
+ shelvingFkIn = shelvingFkIn,
+ myItemCode.id.toLong()
+ )
+
+ }
+ })
+ }
+
+ fun itemShelvingTransfer(
+ itemShelvingFk: Number, shelvingFk: String
+
+ ) {
+ salix.itemShelvingTransfer(arrayListOf(itemShelvingFk, shelvingFk).formatWithQuotes())
.enqueue(object : SalixCallback(context) {
override fun onSuccess(response: Response) {
_responseUbicator.value = true
@@ -436,7 +581,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
})
}
- fun itemShelvingSelfConsumption(shelvingFk: String, itemFk: Int, quantity: Int) {
+ fun itemShelvingSelfConsumption(shelvingFk: String, itemFk: Number, quantity: Int) {
salix.itemShelvingSelfConsumption(
arrayListOf(
shelvingFk, itemFk, quantity
@@ -508,7 +653,12 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
if (response.body() == null) _buyUltimateResponse.value = false
else {
val params =
- """{'copies':$copies,'id':${response.body()},'labelType':'$labelType','packing':$packing}"""
+ JSONObject().apply {
+ put("copies", copies)
+ put("id", response.body())
+ put("labelType", labelType)
+ put("packing", packing)
+ }.toString().replace("\"", "\\\"")
printItem(
reportName = reportName,
printerFk = printerFk,
diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt
index 0397b10e..a8053a3e 100644
--- a/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt
+++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt
@@ -1,5 +1,7 @@
package es.verdnatura.presentation.view.feature.ubicador.model
+import es.verdnatura.presentation.common.Action
+
class ItemUbicadorVO(
var item: Int,
var description: String = "",
@@ -17,7 +19,8 @@ class ItemUbicadorVO(
var checked: Boolean = false,
var isNew: Boolean = false,
var isChecked: Int? = null,
- var url: String = ""
+ var url: String = "",
+ var shelvingFk: Long? = null
)
class ItemUbicador(
@@ -33,7 +36,7 @@ class ItemUbicador(
var available: Int? = null,
var code: String? = "",
var created: String? = null,
- var shelvingFk: String? = null,
+ var shelvingFk: Long? = null,
var id: Int = 0,
var priority: Int = 0,
var isError: Boolean = false,
@@ -43,8 +46,9 @@ class ItemUbicador(
var isChecked: Int? = null,
var url: String = "",
var units: Int = 0,
- var buyFk: Long? = null
-)
+ var buyFk: Long? = null,
+
+ )
class ItemEscanerVO(
var item: Long
@@ -59,14 +63,22 @@ class ItemUbicadorListNew(
)
class ItemShelvingNewerList(
- var list: List = listOf(),
- var originalParking: String,
- var originalShelvingFk: String
+ val list: List = listOf(),
+ val originalParking: String,
+ val originalShelvingFk: String,
+ val originalItem: Number? = null,
+ val originalAction: Action?,
+ val itemShelvingFk: Number? = null
)
data class ItemShelvingNewer(
- var itemFk: Int,
- var shelvingFk: String,
+ val itemFk: Int,
+ val shelvingFk: String,
+ val created: String,
+ val parkingCode: String,
+ val itemCreated: String? = null,
+ val code: String? = null,
+ val parkingFk: String? = null
)
data class ItemBuy(
@@ -75,4 +87,41 @@ data class ItemBuy(
val grouping: Int?,
val packing: Int,
val packagingFk: String?
-)
\ No newline at end of file
+)
+
+data class ShelvingItem(
+ val id: Int,
+ val code: String,
+ val priority: Int,
+ val parkingFk: Int? = null,//para findOne directo a Shelving
+ val parking: Parking?,
+ val itemShelving: MutableList?
+)
+
+data class Parking(
+ val id: Int,
+ val code: String
+)
+
+data class ItemShelving(
+ val id: Int,
+ val shelvingFk: Int,
+ val itemFk: Int,
+ val grouping: Int?,
+ var isChecked: Int?,
+ val packing: Int,
+ var visible: Int,
+ var available: Int?,
+ val buyFk: Long?,
+ val item: Item,
+ var description: String? = null,
+ var stickers: Int? = null,
+ var url: String? = null
+)
+
+data class Item(
+ val id: Long,
+ val name: String?,
+ val size: Int?,
+ val longName: String?
+)
diff --git a/app/src/main/res/drawable/ic_grafana.xml b/app/src/main/res/drawable/ic_grafana.xml
new file mode 100644
index 00000000..3c2e35c3
--- /dev/null
+++ b/app/src/main/res/drawable/ic_grafana.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_restaurant_view.xml b/app/src/main/res/layout/activity_restaurant_view.xml
index dd031854..aa0cf146 100644
--- a/app/src/main/res/layout/activity_restaurant_view.xml
+++ b/app/src/main/res/layout/activity_restaurant_view.xml
@@ -76,11 +76,13 @@
android:onClick="generateQr"
android:tag="2"
android:text="@string/halfLunch"
+ android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/scan_input" />
+
+
+
+
+
+
+
+ android:padding="0dp">
diff --git a/app/src/main/res/layout/fragment_inventary.xml b/app/src/main/res/layout/fragment_inventary.xml
index eb70839b..a1eb6f00 100644
--- a/app/src/main/res/layout/fragment_inventary.xml
+++ b/app/src/main/res/layout/fragment_inventary.xml
@@ -43,11 +43,29 @@
android:textColorHint="#78909C"
tools:ignore="TextContrastCheck" />
+
+
+
+
-
+
-
+ android:orientation="vertical">
-
+ android:textColorHint="@color/verdnatura_white" />
+ android:orientation="horizontal"
+ android:padding="@dimen/layout_margin_min">
+
+ android:layout_weight="1.25"
+ android:orientation="vertical">
+
+
+ android:textStyle="bold" />
+
+
+
+ android:textStyle="bold" />
+
+ android:layout_weight="1.1"
+ android:orientation="vertical">
+
+
+ android:textStyle="bold" />
+
+
+
+ android:textStyle="bold" />
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+ android:clipToPadding="false"
+ tools:listitem="@layout/item_card_row" />
+
-
-
-
-
+
+ android:id="@+id/main_toolbar"
+ layout="@layout/toolbar_fragment"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_expedition_loadunload_row.xml b/app/src/main/res/layout/item_expedition_loadunload_row.xml
index 8fa9666b..9c9345b1 100644
--- a/app/src/main/res/layout/item_expedition_loadunload_row.xml
+++ b/app/src/main/res/layout/item_expedition_loadunload_row.xml
@@ -108,7 +108,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
- android:text="Orden:"
+ android:text="@string/register"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/delivery_body_2" />
diff --git a/app/src/main/res/layout/item_ubication_row_6869.xml b/app/src/main/res/layout/item_ubication_row_6869.xml
new file mode 100644
index 00000000..ae0d6582
--- /dev/null
+++ b/app/src/main/res/layout/item_ubication_row_6869.xml
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 55543043..4c5e2f4a 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -212,7 +212,7 @@
Cambia la prioridad de los items del carro. Cuanto más alta antes cogerán los sacadores.
Permite añadir items al carro de manera continuada. No uno a uno
Nuevo Item
- Editar item
+ Editar item:
Rellena campos obligatorios
Packing obligatorio
Selecciona una acción
@@ -358,7 +358,7 @@
Lector Qr
Desactivado buffer
Pre Control
- Histórico ítems del carro
+ Histórico ítems del carro Viejo
Histórico del carro
Elemento escaneado no encontrado
No existen pedidos para reponer
@@ -736,6 +736,7 @@
Imágenes adjuntas:
Añadir…
¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.
+ ¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.
Cantidad revisada a sumar/restar del total
Vas a modificar la cantidad a 0
Cantidad a revisar
@@ -755,7 +756,7 @@
Permite modificar los parkings seleccionados
Resetea los parkings seleccionados
Histórico : %1$s
- Pre Sacador TEST
+ Pre Sacador
Ticket sin trabajador asignado
Revisa datos insertados
Notas del ticket
@@ -779,7 +780,7 @@
%1$s %2$s
%1$s-%2$s
%1$d: %2$s
- Iítem: %1$s %2$s %3$d
+ Ítem: %1$s %2$s %3$d
%1$s-%2$s
%1$s %2$s
%1$s:%2$s
@@ -826,7 +827,7 @@
Seleccionar Hora
%1$s %2$d:%3$d
VER ÚLTIMA REVISIÓN %1$s→%2$s
- \nLista de ítems:\n
+ \nLista de artículos:\n
No se ha encontrado parking
Escanea parking
Revisar sacado por cajas
@@ -909,6 +910,14 @@
Escribe sector
Escribe proveedor
Escribe entrada
+ Merienda
+ Registro:
+ Histórico ítems del carro
+ Ubicador
+ Seleccionar tipo de ítem
+ Todos
+ \nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s
+ \nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 3f1afece..d8948307 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -358,7 +358,7 @@
Lector Qr
Desactivado buffer
Pre Control
- Histórico ítems del carro
+ Histórico ítems del carro Viejo
Histórico del carro
Elemento escaneado no encontrado
No existen pedidos para reponer
@@ -736,6 +736,7 @@
Imágenes adjuntas:
Añadir…
¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.
+ ¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.
Cantidad revisada a sumar/restar del total
Borrar entrada
Cantidad a revisar
@@ -755,7 +756,7 @@
Permite modificar los parkings seleccionados
Resetea los parkings seleccionados
Histórico : %1$s
- Pre Sacador TEST
+ Pre Sacador
Ticket sin trabajador asignado
Revisa datos insertados
Notas del ticket
@@ -826,7 +827,7 @@
Seleccionar Hora
%1$s %2$d:%3$d
VER ÚLTIMA REVISIÓN %1$s→%2$s
- \nLista de ítems:\n
+ \nLista de artículos:\n
No se ha encontrado parking
Escanea parking
Revisar sacado por cajas
@@ -909,5 +910,13 @@
Escribe sector
Escribe proveedor
Escribe entrada
+ Merienda
+ Registro:
+ Histórico ítems del carro
+ Ubicador
+ Seleccionar tipo de ítem
+ Todos
+ \nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s
+ \nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 8037db0c..1323bab0 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -358,7 +358,7 @@
Lector Qr
Desactivado buffer
Pre Control
- Histórico ítems del carro
+ Histórico ítems del carro Viejo
Histórico del carro
Elemento escaneado no encontrado
No existen pedidos para reponer
@@ -736,6 +736,7 @@
Imágenes adjuntas:
Añadir...
¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.
+ ¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.
Cantidad revisada a sumar/restar del total
Borrar entrada
Cantidad a revisar
@@ -755,7 +756,7 @@
Permite modificar los parkings seleccionados
Resetea los parkings seleccionados
Histórico : %1$s
- Pre Sacador TEST
+ Pre Sacador
Ticket sin trabajador asignado
Revisa datos insertados
Notas del ticket
@@ -826,7 +827,7 @@
Seleccionar Hora
%1$s %2$d:%3$d
VER ÚLTIMA REVISIÓN %1$s→%2$s
- \nLista de ítems:\n
+ \nLista de artículos:\n
No se ha encontrado parking
Escanea parking
Revisar sacado por cajas
@@ -909,5 +910,13 @@
Escribe sector
Escribe proveedor
Escribe entrada
+ Merienda
+ Registro:
+ Histórico ítems del carro
+ Ubicador
+ Seleccionar tipo de ítem
+ Todos
+ \nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s
+ \nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 469f5095..9ef3eb13 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -737,6 +737,7 @@
Imágenes adjuntas:
Añadir…
¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.
+ ¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.
Cantidad revisada a sumar/restar del total
Borrar entrada
Cantidad a revisar
@@ -756,7 +757,7 @@
Permite modificar los parkings seleccionados
Resetea los parkings seleccionados
Histórico : %1$s
- Pre Sacador TEST
+ Pre Sacador
Ticket sin trabajador asignado
Revisa datos insertados
Notas del ticket
@@ -828,7 +829,7 @@
Seleccionar Hora
%1$s %2$d:%3$d
VER ÚLTIMA REVISIÓN %1$s→%2$s
- \nLista de ítems:\n
+ \nLista de artículos:\n
No se ha encontrado parking
Escanea parking
Revisar sacado por cajas
@@ -912,5 +913,13 @@
Escribe sector
Escribe proveedor
Escribe entrada
+ Merienda
+ Registro:
+ Histórico ítems del carro
+ Ubicador
+ Seleccionar tipo de ítem
+ Todos
+ \nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s
+ \nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s
diff --git a/changeLog.sh b/changeLog.sh
new file mode 100644
index 00000000..994a8e02
--- /dev/null
+++ b/changeLog.sh
@@ -0,0 +1,34 @@
+features_types=(chore feat style)
+changes_types=(refactor perf)
+fix_types=(fix revert)
+file="CHANGELOG.md"
+file_tmp="temp_log.txt"
+file_current_tmp="temp_current_log.txt"
+
+setType(){
+ echo "### $1" >> $file_tmp
+ arr=("$@")
+ echo "" > $file_current_tmp
+ for i in "${arr[@]}"
+ do
+ git log --grep="$i" --oneline --no-merges --format="- %s %d by:%an" master..testBeta https://redmine.verdnatura.es/issues/5443>> $file_current_tmp
+ done
+ # remove duplicates
+ sort -o $file_current_tmp -u $file_current_tmp
+ cat $file_current_tmp >> $file_tmp
+ echo "" >> $file_tmp
+ # remove tmp current file
+ [ -e $file_current_tmp ] && rm $file_current_tmp
+}
+
+echo "# Version XX.XX - XXXX-XX-XX" >> $file_tmp
+echo "" >> $file_tmp
+
+setType "Added 🆕" "${features_types[@]}"
+setType "Changed 📦" "${changes_types[@]}"
+setType "Fixed 🛠️" "${fix_types[@]}"
+
+cat $file >> $file_tmp
+mv $file_tmp $file
+
+
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 3830ccbc..a7385a45 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -29,8 +29,8 @@ swiperefreshlayout = "1.1.0"
zxingAndroidEmbedded = "4.3.0"
googleDevtoolsKsp = "2.0.20-1.0.25"
#cambiar ide para subir version
-androidGradlePlugin = "8.3.2"
-kotlin = "2.0.10"
+androidGradlePlugin = "8.7.2"
+kotlin = "2.0.20"
googleServices = "4.4.2"
firebaseCrashlytics = "3.0.2"