version 23.18.3Beta solucionado fallo ubicador. Añadido bbdd

This commit is contained in:
Sergio De la torre 2023-05-12 12:38:59 +02:00
parent 0bf19d0da0
commit 1583304c80
13 changed files with 265 additions and 85 deletions

View File

@ -83,46 +83,19 @@
</select> </select>
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="version 23.18.2Beta - Solucionado doble pitido, fusionada pantalla sacador, filtro a ubicador, quitado baldas."> <list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="version 23.18.3Beta solucionado fallo ubicador. Añadido bbdd">
<change afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/adapters/ExpeditionLoadUnloadAdapter.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/db/database.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/LoadUnloadFragment.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DatabaseViewModel.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_confirm.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_expedition_loadunload_delivery.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_expedition_loadunload_row.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/raw/errorrepeat.mp3" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/beta/release/output-metadata.json" beforeDir="false" afterPath="$PROJECT_DIR$/app/beta/release/output-metadata.json" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/beta/release/output-metadata.json" beforeDir="false" afterPath="$PROJECT_DIR$/app/beta/release/output-metadata.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/RestClient.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/RestClient.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/LoadUnloadFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/LoadUnloadFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixService.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixService.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixServiceMessages.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/category/ChangeCategoryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/category/ChangeCategoryFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPicker.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPicker.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPreChecker.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPreChecker.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/EndSacadorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/EndSacadorFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/showticket/ShowTicketFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/showticket/ShowTicketFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/showticket/ShowTicketViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/showticket/ShowTicketViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragment.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_expedition_loadunload_delivery.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_expedition_loadunload_delivery.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/item_escaner_row.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_escaner_row.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/navigation/nav_graph.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/navigation/nav_graph.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/values-es/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values-es/strings.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/values-es/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values-es/strings.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/values/dimens.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/dimens.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -134,7 +107,7 @@
<component name="CodeInsightWorkspaceSettings"> <component name="CodeInsightWorkspaceSettings">
<option name="optimizeImportsOnTheFly" value="true" /> <option name="optimizeImportsOnTheFly" value="true" />
</component> </component>
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[21114523025303]" /> <component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[C:\Users\sergiodt\.android\avd\Pixel_2_API_24.avd]" />
<component name="ExportToHTMLSettings"> <component name="ExportToHTMLSettings">
<option name="OPEN_IN_BROWSER" value="true" /> <option name="OPEN_IN_BROWSER" value="true" />
<option name="OUTPUT_DIRECTORY" value="C:\Program Files\Android\Android Studio\inspections" /> <option name="OUTPUT_DIRECTORY" value="C:\Program Files\Android\Android Studio\inspections" />
@ -268,33 +241,38 @@
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
<option name="showMembers" value="true" /> <option name="showMembers" value="true" />
</component> </component>
<component name="PropertiesComponent">{ <component name="PropertiesComponent"><![CDATA[{
&quot;keyToString&quot;: { "keyToString": {
&quot;ApkExportedModule&quot;: &quot;Gestor_Almacén.app&quot;, "ApkExportedModule": "Gestor_Almacén.app",
&quot;ExportApk.ApkPathForGestor_Almacén.app&quot;: &quot;C:\\Users\\sergiodt\\AndroidStudioProjects\\vn-warehouseManager\\app&quot;, "ExportApk.ApkPathForGestor_Almacén.app": "C:\\Users\\sergiodt\\AndroidStudioProjects\\vn-warehouseManager\\app",
&quot;PROJECT_TRUSTED_KEY&quot;: &quot;true&quot;, "PROJECT_TRUSTED_KEY": "true",
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;, "RunOnceActivity.OpenProjectViewOnStart": "true",
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;, "RunOnceActivity.ShowReadmeOnStart": "true",
&quot;RunOnceActivity.cidr.known.project.marker&quot;: &quot;true&quot;, "RunOnceActivity.cidr.known.project.marker": "true",
&quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;, "SHARE_PROJECT_CONFIGURATION_FILES": "true",
&quot;ScreenRecorder.SavePath&quot;: &quot;C:\\Users\\sergiodt\\device-2023-03-17-114045.mp4&quot;, "ScreenRecorder.SavePath": "C:\\Users\\sergiodt\\device-2023-03-17-114045.mp4",
&quot;android-custom-viewC:/Users/sergiodt/.gradle/caches/modules-2/files-2.1/androidx.recyclerview/recyclerview/1.2.1/f0f93e67af3f7417bdd560d5142f6dec4fe629c3/recyclerview-1.2.1-sources.jar!/androidx/recyclerview/widget/RecyclerView.java_SELECTED&quot;: &quot;RecyclerView&quot;, "android-custom-viewC:/Users/sergiodt/.gradle/caches/modules-2/files-2.1/androidx.recyclerview/recyclerview/1.2.1/f0f93e67af3f7417bdd560d5142f6dec4fe629c3/recyclerview-1.2.1-sources.jar!/androidx/recyclerview/widget/RecyclerView.java_SELECTED": "RecyclerView",
&quot;cidr.known.project.marker&quot;: &quot;true&quot;, "cidr.known.project.marker": "true",
&quot;com.developerphil.adbidea.selecteddevices&quot;: &quot;21114523025303&quot;, "com.developerphil.adbidea.selecteddevices": "21114523025303",
&quot;com.google.services.firebase.aqiPopupShown&quot;: &quot;true&quot;, "com.google.services.firebase.aqiPopupShown": "true",
&quot;last_opened_file_path&quot;: &quot;C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout&quot;, "last_opened_file_path": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout",
&quot;project.structure.last.edited&quot;: &quot;Modules&quot;, "project.structure.last.edited": "Modules",
&quot;project.structure.proportion&quot;: &quot;0.17&quot;, "project.structure.proportion": "0.17",
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;, "project.structure.side.proportion": "0.2",
&quot;run.code.analysis.last.selected.profile&quot;: &quot;pProject Default&quot;, "run.code.analysis.last.selected.profile": "pProject Default",
&quot;settings.editor.selected.configurable&quot;: &quot;reference.settingsdialog.project.gradle&quot; "settings.editor.selected.configurable": "reference.settingsdialog.project.gradle"
}, },
&quot;keyToStringList&quot;: { "keyToStringList": {
&quot;ExportApk.BuildVariants&quot;: [ "ExportApk.BuildVariants": [
&quot;betaRelease&quot; "generalRelease"
],
"com.android.tools.idea.sqlite.queryhistory": [
"select * from expediciones;",
"select * from expediciones",
"select * from expedicion"
] ]
} }
}</component> }]]></component>
<component name="PsdUISettings"> <component name="PsdUISettings">
<option name="MODULE_TAB" value="Default Config" /> <option name="MODULE_TAB" value="Default Config" />
<option name="LAST_EDITED_SIGNING_CONFIG" value="debug" /> <option name="LAST_EDITED_SIGNING_CONFIG" value="debug" />
@ -881,7 +859,6 @@
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<MESSAGE value="Quitar procedimiento refs #4661" />
<MESSAGE value="Reclycler extra y agrupacion previa" /> <MESSAGE value="Reclycler extra y agrupacion previa" />
<MESSAGE value="refs #5117 Autoconsumo" /> <MESSAGE value="refs #5117 Autoconsumo" />
<MESSAGE value="refs #4683 Autoconsumo" /> <MESSAGE value="refs #4683 Autoconsumo" />
@ -906,7 +883,8 @@
<MESSAGE value="refs #5430" /> <MESSAGE value="refs #5430" />
<MESSAGE value="refs #5442" /> <MESSAGE value="refs #5442" />
<MESSAGE value="version 23.18.2Beta - Solucionado doble pitido, fusionada pantalla sacador, filtro a ubicador, quitado baldas." /> <MESSAGE value="version 23.18.2Beta - Solucionado doble pitido, fusionada pantalla sacador, filtro a ubicador, quitado baldas." />
<option name="LAST_COMMIT_MESSAGE" value="version 23.18.2Beta - Solucionado doble pitido, fusionada pantalla sacador, filtro a ubicador, quitado baldas." /> <MESSAGE value="version 23.18.3Beta solucionado fallo ubicador. Añadido bbdd" />
<option name="LAST_COMMIT_MESSAGE" value="version 23.18.3Beta solucionado fallo ubicador. Añadido bbdd" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<pin-to-top-manager> <pin-to-top-manager>

View File

@ -11,8 +11,8 @@
"type": "SINGLE", "type": "SINGLE",
"filters": [], "filters": [],
"attributes": [], "attributes": [],
"versionCode": 183, "versionCode": 186,
"versionName": "23.18.2Beta", "versionName": "23.18.3Beta",
"outputFile": "app-beta-release.apk" "outputFile": "app-beta-release.apk"
} }
], ],

View File

@ -13,8 +13,8 @@ android {
applicationId "es.verdnatura" applicationId "es.verdnatura"
minSdkVersion 24 //21 minSdkVersion 24 //21
targetSdkVersion 33 targetSdkVersion 33
versionCode 184 versionCode 186
versionName = "23.18.2Beta" versionName = "23.18.3Beta"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -58,6 +58,8 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.firebase:firebase-crashlytics-ktx:18.2.9' implementation 'com.google.firebase:firebase-crashlytics-ktx:18.2.9'
implementation 'com.google.firebase:firebase-analytics-ktx:20.1.2' implementation 'com.google.firebase:firebase-analytics-ktx:20.1.2'
kapt "androidx.room:room-compiler:2.4.0"
implementation 'androidx.room:room-ktx:2.4.2'
debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar']) debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar'])
releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar']) releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar'])

View File

@ -0,0 +1,52 @@
package es.verdnatura.db
import android.content.Context
import androidx.room.*
// Clase que representa la base de datos
@Database(entities = [Expedicion::class], version = 1)
abstract class ExpedicionDatabase : RoomDatabase() {
abstract fun expedicionDao(): ExpedicionDao
companion object {
@Volatile
private var INSTANCE: ExpedicionDatabase? = null
fun getInstance(context: Context): ExpedicionDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
ExpedicionDatabase::class.java,
"expedicion_database"
)
.fallbackToDestructiveMigration()
.build()
INSTANCE = instance
instance
}
}
}
}
// Clase que representa la entidad Expedicion
@Entity(tableName = "expediciones")
data class Expedicion(
@PrimaryKey val id: Int,
val nombre: String,
val fecha: Long
)
// Interfaz que define los métodos de acceso a datos para Expedicion
@Dao
interface ExpedicionDao {
@Query("SELECT * FROM expediciones")
suspend fun getAll(): List<Expedicion>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(expedicion: Expedicion)
@Delete
fun delete(expedicion: Expedicion)
}

View File

@ -9,17 +9,27 @@ import android.view.View
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.widget.ImageView import android.widget.ImageView
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.room.Room
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.databinding.FragmentExpeditionLoadunloadDeliveryBinding import es.verdnatura.databinding.FragmentExpeditionLoadunloadDeliveryBinding
import es.verdnatura.db.Expedicion
import es.verdnatura.db.ExpedicionDatabase
import es.verdnatura.domain.toast import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnOptionsSelectedListener import es.verdnatura.presentation.common.OnOptionsSelectedListener
import es.verdnatura.presentation.common.ToolBarAdapterTooltip import es.verdnatura.presentation.common.ToolBarAdapterTooltip
import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionLoadUnloadAdapter import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionLoadUnloadAdapter
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DatabaseViewModel
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class LoadUnloadFragment( class LoadUnloadFragment(
@ -32,6 +42,8 @@ class LoadUnloadFragment(
private var adapter: ExpeditionLoadUnloadAdapter? = null private var adapter: ExpeditionLoadUnloadAdapter? = null
private var originalItem: Int = 0 private var originalItem: Int = 0
private lateinit var myList: MutableList<ExpeditionInfoLoadUnload> private lateinit var myList: MutableList<ExpeditionInfoLoadUnload>
private var counterCalls = 0
private var counterResponse = 0
companion object { companion object {
@ -43,11 +55,48 @@ class LoadUnloadFragment(
@RequiresApi(Build.VERSION_CODES.O) @RequiresApi(Build.VERSION_CODES.O)
override fun init() { override fun init() {
setEvents() setEvents()
setToolBar() setToolBar()
binding.scanInput.requestFocus() binding.scanInput.requestFocus()
viewModel.getExpeditionFromRoute(159390) viewModel.getExpeditionFromRoute(159390)
super.init() super.init()
database()
}
private fun database() {
val db = Room.databaseBuilder(
requireContext().applicationContext,
ExpedicionDatabase::class.java, "expediciones.db"
).build()
// Para insertar una expedición en la base de datos, puedes hacer lo siguiente:
/* val expedicion = Expedicion(12345, "Mi expedición", System.currentTimeMillis())
db.expedicionDao().insert(expedicion)*/
// val myViewModel = ViewModelProvider(this).get(DatabaseViewModel::class.java)
lifecycleScope.launch {
val expedicionInsert = withContext(Dispatchers.IO) {
val expedicion = Expedicion(12345, "Mi expedición", System.currentTimeMillis())
db.expedicionDao().insert(expedicion)
var expediciones = db.expedicionDao().getAll()
for (e in expediciones){
println("la exp es "+e.nombre)
}
}
}
// Para obtener todas las expediciones de la base de datos, puedes hacer lo siguiente:
/* db.expedicionDao().getAll().observe(viewLifecycleOwner) { expediciones ->
// actualizar la vista con las expediciones
}
val expediciones = db.expedicionDao().getAll()
for (e in expediciones) {
println("El nombre de la exp es " + e.nombre)
}*/
} }
@RequiresApi(Build.VERSION_CODES.O) @RequiresApi(Build.VERSION_CODES.O)
@ -56,6 +105,13 @@ class LoadUnloadFragment(
binding.mainToolbar.toolbarTitle.visibility = View.VISIBLE binding.mainToolbar.toolbarTitle.visibility = View.VISIBLE
binding.mainToolbar.toolbarSubtitle.visibility = View.VISIBLE binding.mainToolbar.toolbarSubtitle.visibility = View.VISIBLE
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
binding.mainToolbar.switchButton.visibility = if (state != "DELIVERED") {
View.VISIBLE
} else {
View.GONE
}
binding.mainToolbar.toolbarTitle.text = title
val listIcons: ArrayList<ImageView> = ArrayList() val listIcons: ArrayList<ImageView> = ArrayList()
val iconConfirm = ImageView(context) val iconConfirm = ImageView(context)
iconConfirm.setImageResource(R.drawable.ic_confirm) iconConfirm.setImageResource(R.drawable.ic_confirm)
@ -89,7 +145,9 @@ class LoadUnloadFragment(
if (list.filter { it.code == state }.size == list.size) { if (list.filter { it.code == state }.size == list.size) {
binding.splashProgress.visibility = View.VISIBLE binding.splashProgress.visibility = View.VISIBLE
viewModel.expeditionState_add(list.filter { it.code == state }, state) viewModel.expeditionState_add(list.filter { it.code == state }, state)
counterCalls = 1
} else { } else {
val alertDialog = android.app.AlertDialog.Builder(requireContext()).create() val alertDialog = android.app.AlertDialog.Builder(requireContext()).create()
alertDialog.setTitle("Información") alertDialog.setTitle("Información")
@ -97,13 +155,14 @@ class LoadUnloadFragment(
alertDialog.setButton( alertDialog.setButton(
android.app.AlertDialog.BUTTON_NEUTRAL, "GUARDAR" android.app.AlertDialog.BUTTON_NEUTRAL, "GUARDAR"
) { dialog, which -> ) { dialog, which ->
counterCalls = 2
viewModel.expeditionState_add(list.filter { it.code == state }, state) viewModel.expeditionState_add(list.filter { it.code == state }, state)
viewModel.expeditionState_add(list.filter { it.code != state }, "LOST")
} }
alertDialog.setButton( alertDialog.setButton(
android.app.AlertDialog.BUTTON_POSITIVE, "ORDENAR" android.app.AlertDialog.BUTTON_POSITIVE, "ORDENAR"
) { dialog, which -> ) { dialog, which ->
adapter = ExpeditionLoadUnloadAdapter(list.sortedByDescending{it.code}) createList(list.sortedByDescending { it.code })
adapter!!.notifyDataSetChanged()
} }
alertDialog.show() alertDialog.show()
} }
@ -135,7 +194,14 @@ class LoadUnloadFragment(
private fun setEvents() { private fun setEvents() {
binding.mainToolbar.backButton.setOnClickListener { binding.mainToolbar.backButton.setOnClickListener {
requireActivity().onBackPressed() /* requireActivity().onBackPressed() */
val callback = object : OnBackPressedCallback(true /* enabled by default */) {
override fun handleOnBackPressed() {
println("volviendo antras")
}
}
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, callback)
} }
binding.scanInput.setOnEditorActionListener { _, actionId, _ -> binding.scanInput.setOnEditorActionListener { _, actionId, _ ->
@ -144,12 +210,25 @@ class LoadUnloadFragment(
try { try {
//viewModel.expeditionLoadUnload_get(binding.scanInput.toInt()) //viewModel.expeditionLoadUnload_get(binding.scanInput.toInt())
markExpedition(binding.scanInput.text.toString().toInt(), state) markExpedition(
binding.scanInput.text.toString().toInt(),
if (!binding.mainToolbar.switchButton.isChecked) {
state
} else {
"FOUND"
},
)
binding.mainToolbar.toolbarTitle.text = binding.mainToolbar.toolbarTitle.text =
getString(R.string.expedition) + binding.scanInput.text if (!binding.mainToolbar.switchButton.isChecked) {
getString(R.string.loading)
} else {
getString(R.string.unloading)
}
} catch (ex: Exception) { } catch (ex: Exception) {
"Error al escanear expedición".toast(context, Toast.LENGTH_SHORT) getString(R.string.errorExpedition).toast(context, Toast.LENGTH_SHORT)
} }
binding.scanInput.setText("") binding.scanInput.setText("")
} }
@ -166,7 +245,7 @@ class LoadUnloadFragment(
var found = false var found = false
if (myList.filter { it.id == expedNumber }.filter { it.code == state }.isNotEmpty()) { if (myList.filter { it.id == expedNumber }.filter { it.code == state }.isNotEmpty()) {
ma.messageWithSound("Expedición ya marcada", null, true) ma.messageWithSound(getString(R.string.expeditionMarked), null, true)
} else { } else {
for (exped in myList) { for (exped in myList) {
if (exped.id == expedNumber) { if (exped.id == expedNumber) {
@ -193,8 +272,6 @@ class LoadUnloadFragment(
expeditionInfoLoadUnloadList.observe(viewLifecycleOwner) { expeditionInfoLoadUnloadList.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE binding.splashProgress.visibility = View.GONE
createList(it.list) createList(it.list)
//setSwitchButon()
// viewModel.get_routesFromExpedition(originalItem)
} }
routeInfoList.observe(viewLifecycleOwner) { routeInfoList.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE binding.splashProgress.visibility = View.GONE
@ -203,7 +280,6 @@ class LoadUnloadFragment(
binding.mainToolbar.switchButton.visibility = View.VISIBLE binding.mainToolbar.switchButton.visibility = View.VISIBLE
} else { } else {
binding.scanInput.setText("") binding.scanInput.setText("")
// binding.routeLayout.visibility = View.GONE
binding.mainToolbar.toolbarIcons.visibility = View.GONE binding.mainToolbar.toolbarIcons.visibility = View.GONE
binding.mainToolbar.switchButton.visibility = View.GONE binding.mainToolbar.switchButton.visibility = View.GONE
} }
@ -211,7 +287,12 @@ class LoadUnloadFragment(
responseStateAdd.observe(viewLifecycleOwner) { responseStateAdd.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE binding.splashProgress.visibility = View.GONE
if (!it.isError) { if (!it.isError) {
viewModel.getExpeditionFromRoute(159390) counterResponse = counterResponse + 1
if (counterResponse == counterCalls) {
viewModel.getExpeditionFromRoute(159390)
counterResponse = 0
counterCalls = 0
}
} }
} }
@ -229,9 +310,10 @@ class LoadUnloadFragment(
binding.splashProgress.visibility = View.VISIBLE binding.splashProgress.visibility = View.VISIBLE
if (isChecked) { if (isChecked) {
// viewModel.expeditionState_add(arrayListOf(Expedition(originalItem)), "FOUND") binding.mainToolbar.toolbarTitle.text =
getString(R.string.loading)
} else { } else {
// viewModel.expeditionState_add(arrayListOf(Expedition(originalItem)), "LOST") getString(R.string.unloading)
} }
} }
@ -244,12 +326,25 @@ class LoadUnloadFragment(
binding.expeditionloadunloadRecyclerview.layoutManager = binding.expeditionloadunloadRecyclerview.layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.mainToolbar.toolbarSubtitle.text = binding.mainToolbar.toolbarSubtitle.text =
"${list.filter { it.code == state }.size}/${list.size}" getString(R.string.summaryCount, list.filter { it.code == state }.size, list.size)
setListPosition(list)
}
private fun setListPosition(list: MutableList<ExpeditionInfoLoadUnload>) {
for (i in list.indices) {
if (list[i].code != state) {
binding.expeditionloadunloadRecyclerview.scrollToPosition(i)
break
}
}
} }
private fun updateCount(list: MutableList<ExpeditionInfoLoadUnload>, state: String) { private fun updateCount(list: MutableList<ExpeditionInfoLoadUnload>, state: String) {
var countMarked = list.filter { it.code == state }.size val countMarked = list.filter { it.code == state }.size
binding.mainToolbar.toolbarSubtitle.text = "${countMarked}/${list.size}" getString(R.string.summaryCount, countMarked, list.size)
if (countMarked == list.size) {
setExpeditionsState(list, state)
}
adapter!!.notifyDataSetChanged() adapter!!.notifyDataSetChanged()
} }
} }

View File

@ -1,5 +1,7 @@
package es.verdnatura.presentation.view.feature.delivery.model package es.verdnatura.presentation.view.feature.delivery.model
import androidx.room.Entity
import androidx.room.PrimaryKey
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
class FreeLanceDeliveryInfoList( class FreeLanceDeliveryInfoList(
@ -46,12 +48,14 @@ class RouteDelivery(
) )
class Expedition( class
Expedition(
var id: Int var id: Int
) )
class ExpeditionList( class ExpeditionList(
var list: List<ExpeditionInfoLoadUnload> = listOf() var list: List<ExpeditionInfoLoadUnload> = listOf()
) )
class ExpeditionInfoLoadUnload( class ExpeditionInfoLoadUnload(
var id:Int, var id:Int,
var ticketFk:Int, var ticketFk:Int,

View File

@ -0,0 +1,36 @@
package es.verdnatura.presentation.view.feature.delivery.viewmodels
import android.content.Context
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import es.verdnatura.db.Expedicion
import es.verdnatura.db.ExpedicionDatabase
import es.verdnatura.presentation.base.BaseViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class DatabaseViewModel(val context: Context) : BaseViewModel(context) {
private val db = ExpedicionDatabase.getInstance(context)
val expediciones = MutableLiveData<List<Expedicion>>()
fun cargarExpediciones() {
viewModelScope.launch {
val expedicionesList = withContext(Dispatchers.IO) {
db.expedicionDao().getAll()
}
expediciones.postValue(expedicionesList)
}
}
}

View File

@ -112,6 +112,7 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) {
}) })
} }
fun get_routesFromExpedition( fun get_routesFromExpedition(
expedition: Int expedition: Int
) { ) {

View File

@ -489,8 +489,8 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
) )
) )
/*Tarea 4678 //Tarea 4678
_pasillerositem.add( /* _pasillerositem.add(
PasillerosItemVO( PasillerosItemVO(
6, 6,
R.drawable.ic_delivery_truck, R.drawable.ic_delivery_truck,

View File

@ -460,10 +460,10 @@ class UbicadorFragment(
it.list.forEach { item -> it.list.forEach { item ->
try { try {
contEtiquetas += item.stickers.toInt() contEtiquetas += item.stickers.toInt()
parking = item.code.uppercase()
} catch (e: Exception) { } catch (e: Exception) {
} }
parking = item.code.uppercase()
listItems.add(item) listItems.add(item)

View File

@ -11,8 +11,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText

View File

@ -565,5 +565,10 @@
<string name="titleUnLoadTruckInfo">Descargar furgoneta</string> <string name="titleUnLoadTruckInfo">Descargar furgoneta</string>
<string name="confirmDescription">Cofirma la carga/descarga de la furgoneta</string> <string name="confirmDescription">Cofirma la carga/descarga de la furgoneta</string>
<string name="itemChangePrice">Introduce el nuevo precio. Por defecto se propone el 50% del precio original.Item:</string> <string name="itemChangePrice">Introduce el nuevo precio. Por defecto se propone el 50% del precio original.Item:</string>
<string name="loading">Cargando</string>
<string name="unloading">Descargando</string>
<string name="expeditionMarked">Expedición ya marcada</string>
<string name="errorExpedition">Error al escanear expedición</string>
<string name="summaryCount">%d/%d</string>
</resources> </resources>

View File

@ -564,5 +564,10 @@
<string name="itemChangePrice">"Introduce price for the item : "</string> <string name="itemChangePrice">"Introduce price for the item : "</string>
<string name="managerWagon">The number of wagons can now only be changed by managers</string> <string name="managerWagon">The number of wagons can now only be changed by managers</string>
<string name="confirmDescription">Cofirm load/unload of the van</string> <string name="confirmDescription">Cofirm load/unload of the van</string>
<string name="loading">Loading</string>
<string name="unloading">Unloading</string>
<string name="expeditionMarked">Expedition marked</string>
<string name="errorExpedition">Error marking expedition</string>
<string name="summaryCount" translatable="false">%d/%d</string>
</resources> </resources>