Merge branch 'dev' into testBeta

This commit is contained in:
Sergio De la torre 2024-12-29 08:29:25 +01:00
commit 83d1361085
69 changed files with 3108 additions and 594 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
<bytecodeTargetLevel target="21" />
</component>
</project>

View File

@ -4,7 +4,7 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="$PROJECT_DIR$/../../../../gradle/gradle-7.5" />
<option name="gradleJvm" value="jbr-17" />

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="2.0.10" />
<option name="version" value="2.0.20" />
</component>
</project>

View File

@ -280,7 +280,7 @@
<option name="myDefaultNotNull" value="androidx.annotation.NonNull" />
<option name="myNullables">
<value>
<list size="15">
<list size="16">
<item index="0" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="org.jspecify.nullness.Nullable" />
<item index="2" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
@ -296,12 +296,13 @@
<item index="12" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
<item index="13" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
<item index="14" class="java.lang.String" itemvalue="android.annotation.Nullable" />
<item index="15" class="java.lang.String" itemvalue="org.jspecify.annotations.Nullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="14">
<list size="15">
<item index="0" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
<item index="1" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
<item index="2" class="java.lang.String" itemvalue="jakarta.annotation.Nonnull" />
@ -316,11 +317,12 @@
<item index="11" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="12" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.NonNull" />
<item index="13" class="java.lang.String" itemvalue="android.annotation.NonNull" />
<item index="14" class="java.lang.String" itemvalue="org.jspecify.annotations.NonNull" />
</list>
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View File

@ -60,6 +60,11 @@
<theme>@style/AppTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_restaurant_view.xml">
<config>
<theme>@style/AppTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_sign.xml">
<config>
<theme>@style/AppTheme</theme>
@ -406,6 +411,16 @@
<theme>@style/AppTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_ubication_row_6869.xml">
<config>
<theme>@style/AppTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_ubication_row_new.xml">
<config>
<theme>@style/AppTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_workermistake_row.xml">
<config>
<theme>@style/AppTheme</theme>
@ -478,40 +493,12 @@
</select>
</component>
<component name="ChangeListManager">
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refs #8022 kotlin versionCatalog">
<change afterPath="$PROJECT_DIR$/app/general/release/baselineProfiles/0/app-general-release.dm" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/component_searchable_dialog_alert.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/kotlinc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/kotlinc.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/general/release/baselineProfiles/1/app-general-release.dm" beforeDir="false" afterPath="$PROJECT_DIR$/app/general/release/baselineProfiles/1/app-general-release.dm" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/proguard-rules.pro" beforeDir="false" afterPath="$PROJECT_DIR$/app/proguard-rules.pro" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/MobileApplication.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/MobileApplication.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/presentation/base/BaseActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/base/BaseActivity.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/common/GeneralAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/common/GeneralAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardFragment.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/CollectionFragmentPickerNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerNew.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/controlador/fragment/ControladorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/controlador/fragment/ControladorFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/LogExpeditionFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/LogExpeditionFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.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/inventario/fragment/InventaryParkingFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryParkingFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt" afterDir="false" />
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refs#6845 userInterface">
<change afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/changeLog.sh" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/build.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle.kts" 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/paletizador/adapter/ExpeditionPalletAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/adapter/ExpeditionPalletAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionDeleteFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionDeleteFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPreparedStateFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPreparedStateFragment.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/sacador/fragment/SacadorFragmentNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragmentNew.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/UbicadorViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorViewModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" 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" />
</list>
<list id="7b98f93d-6980-4bf1-8e61-c7afd10e56f2" name="Change_category" comment="Change_category" />
<option name="SHOW_DIALOG" value="false" />
@ -526,7 +513,7 @@
<component name="CodeInsightWorkspaceSettings">
<option name="optimizeImportsOnTheFly" value="true" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[21114523025303]" />
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[DeviceId(pluginId=LocalEmulator, isTemplate=false, identifier=path=C:\Users\sergiodt\.android\avd\Pixel_7a_API_30.avd)]" />
<component name="ExportToHTMLSettings">
<option name="OPEN_IN_BROWSER" value="true" />
<option name="OUTPUT_DIRECTORY" value="C:\Program Files\Android\Android Studio\inspections" />
@ -616,7 +603,7 @@
</option>
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="dev_collectionFragmentChecker" />
<entry key="$PROJECT_DIR$" value="dev_6078" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
@ -706,12 +693,12 @@
&quot;cidr.known.project.marker&quot;: &quot;true&quot;,
&quot;com.developerphil.adbidea.selecteddevices&quot;: &quot;G65TY9DQN7X4BIE6&quot;,
&quot;com.google.services.firebase.aqiPopupShown&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;dev__6078&quot;,
&quot;git-widget-placeholder&quot;: &quot;dev&quot;,
&quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;last_directory_selection&quot;: &quot;C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable&quot;,
&quot;last_opened_file_path&quot;: &quot;C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app&quot;,
&quot;project.structure.last.edited&quot;: &quot;Project&quot;,
&quot;last_opened_file_path&quot;: &quot;C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout&quot;,
&quot;project.structure.last.edited&quot;: &quot;Modules&quot;,
&quot;project.structure.proportion&quot;: &quot;0.17&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;,
&quot;rearrange.code.on.save&quot;: &quot;true&quot;,
@ -728,9 +715,6 @@
&quot;select * from expeditionPending;&quot;,
&quot;select * from expedition where id = 7753995;\n\n&quot;,
&quot;\nselect * from expedition where id = 7753995;&quot;
],
&quot;kotlin-gradle-user-dirs&quot;: [
&quot;C:\\Users\\sergiodt\\.gradle&quot;
]
}
}</component>
@ -741,8 +725,8 @@
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app" />
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\layout" />
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app" />
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\drawable" />
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\java\es\verdnatura\domain" />
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\xml" />
@ -762,11 +746,11 @@
<recent name="es.verdnatura.presentation.view.feature.historicoshelving.fragment" />
</key>
<key name="CopyKotlinDeclarationDialog.RECENTS_KEY">
<recent name="es.verdnatura.presentation.view.feature.ubicador.adapter" />
<recent name="es.verdnatura.presentation.view.feature.ubicador.fragment" />
<recent name="es.verdnatura.presentation.view.feature.delivery.adapters" />
<recent name="es.verdnatura.presentation.view.feature.delivery.fragments" />
<recent name="es.verdnatura.domain.userCases" />
<recent name="es.verdnatura.presentation.view.feature.paletizador.fragment" />
<recent name="es.verdnatura.presentation.view.feature.parking.fragment" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="es.verdnatura.presentation.view.feature.delivery.activity" />
@ -798,9 +782,10 @@
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="RESTORE_ENABLED" value="false" />
<option name="RESTORE_FILE" value="" />
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
@ -909,6 +894,9 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="Gradle.vn-warehouseManager [clean]" />
<item itemvalue="Gradle.vn-warehouseManager" />
<item itemvalue="Gradle.vn-warehouseManager [clean]" />
<item itemvalue="Gradle.vn-warehouseManager" />
<item itemvalue="Gradle.vn-warehouseManager [clean]" />
</list>
@ -1277,7 +1265,7 @@
<option name="project" value="LOCAL" />
<updated>1709725795643</updated>
</task>
<option name="localTasksCounter" value="363" />
<option name="localTasksCounter" value="373" />
<servers />
</component>
<component name="Vcs.Log.History.Properties">
@ -1355,7 +1343,6 @@
<entry key="MAIN">
<value>
<State>
<option name="BEK_SORT_TYPE" value="1" />
<option name="COLUMN_ID_WIDTH">
<map>
<entry key="Table.Default.Author.ColumnIdWidth" value="115" />
@ -1371,8 +1358,21 @@
</list>
</value>
</entry>
<entry key="text">
<value>
<list>
<option value="itemShelving" />
</list>
</value>
</entry>
</map>
</option>
<option name="GRAPH_OPTIONS">
<list>
<option value="Base" />
<option value="Standard" />
</list>
</option>
</State>
</value>
</entry>
@ -1405,8 +1405,6 @@
</component>
<component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<MESSAGE value="feat reservas #refs 6861" />
<MESSAGE value="feat issues refs #7636" />
<MESSAGE value="feat getAddress #refs 7622" />
<MESSAGE value="feat claimObservation refs #7541" />
<MESSAGE value="feat reservas refs #6861" />
@ -1415,9 +1413,7 @@
<MESSAGE value="feat: boxPickingPrepared refs #7855" />
<MESSAGE value="feat: refactorResponse PasillerosItem refs #7827" />
<MESSAGE value="version 24.40" />
<MESSAGE value="feat: refs #7922 scanOrder" />
<MESSAGE value="feat: refs #8020 controlVehiculos" />
<MESSAGE value="feat: refs #5443 collectionFragmentChecker" />
<MESSAGE value="feat: refs #6861 reservas" />
<MESSAGE value="feat: refs #8175 crashlyticsAndUpdate" />
<MESSAGE value="feat: refs #7266 printItem" />
@ -1428,9 +1424,13 @@
<MESSAGE value="feat: refs #8176 refactorSearchDialog" />
<MESSAGE value="feat: refs #8182 zoneClickable" />
<MESSAGE value="feat: refs#8213 reservas" />
<MESSAGE value="feat: refs#6845 userInterface" />
<MESSAGE value="feat: refs #8022 kotlin versionCatalog" />
<option name="LAST_COMMIT_MESSAGE" value="feat: refs #8022 kotlin versionCatalog" />
<MESSAGE value="feat: refs #8085 restaurantActivity" />
<MESSAGE value="feat: refs #5443 collectionFragmentChecker" />
<MESSAGE value="feat: refs #7922 scanOrder" />
<MESSAGE value="feat: refs #7920 itemShelvingGet" />
<MESSAGE value="feat: refs#6845 userInterface" />
<option name="LAST_COMMIT_MESSAGE" value="feat: refs#6845 userInterface" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>

31
CHANGELOG.md Normal file
View File

@ -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 🛠️

View File

@ -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"

View File

@ -114,7 +114,7 @@ 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)
}

View File

@ -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"

View File

@ -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<List<AddressLoses>>
@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<Long>
@ -154,6 +157,11 @@ interface SalixService {
@Query("filter") filter: String
): Call<List<BuyerVO>>
@GET("itemTypes")
fun getBuyersByItemPackingType(
@Query("filter") filter: String
): Call<List<Buyer>>
@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<List<ItemShelvingNewer>>
@GET("ItemShelvings/getListItemNewer")
fun getListItemNewerNew(
@Query("shelvingFk") shelvingFkIn: Any,
@Query("parking") parking: Any? = null,
@Query("itemFk") itemFk: Any? = null
): Call<List<ItemShelvingNewer>>
@GET("ItemShelvings/getItemsByReviewOrder")
fun getItemsByReviewOrder(
@Query("shelving") shelvingFkIn: Any,
@Query("parking") parking: Any? = null,
@Query("itemFk") itemFk: Any? = null
): Call<List<ItemShelvingNewer>>
@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<List<ItemUbicador>>
@GET("Shelvings")
fun itemShelvingGet(
@GET("Shelvings/findOne")
fun shelvingGet(
@Query("filter") filter: Any,
): Call<List<ItemUbicador>>
): Call<ShelvingItem>
@GET("ImageConfigs/findOne")
fun getImageConfig(
@Query("filter") filter: String = """{"fields":["url"]}"""
): Call<JsonObject>
@GET("Shelvings/findOne")
fun shelvingGetFromCode(
@Query("filter") filter: Any,
): Call<ItemUbicador>
@POST("Applications/expedition_scan/execute-proc")
fun expeditionScan(
@ -992,6 +1024,10 @@ interface SalixService {
fun getAccessTokenConfigs(
): Call<List<AccessConfigSalix>>
@GET("VnUsers/ShareToken")
fun getMultimediaToken(
): Call<MultimediaTokenResponse>
@POST("vnusers/renewToken")
fun renewToken(
): Call<RenewToken>
@ -1087,6 +1123,11 @@ interface SalixService {
@Query("filter") filter: String
): Call<Any>
@GET("States/findOne")
fun getStateId(
@Query("filter") filter: String
): Call<JsonObject>
@POST("WorkerMistakes")
fun workerMistakesAdd(
@Body workerMistake: WorkerMistakeSalix

View File

@ -15,6 +15,6 @@ class GetItemPrintItemUseCase(private val salixService: SalixService) {
}
fun executeBuyUltimate(params: Any): Call<Long> {
return salixService.buyUltimate(params)
return salixService.buyGetLastWithoutInventory(params)
}
}

View File

@ -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,6 +38,7 @@ class PrinterDialogManager(private val context: Context) {
onPrintClick: (Long, String, Int?, Int) -> Unit,
labelType: String
) {
try {
onPrintClick(
item,
labelType,
@ -51,6 +49,10 @@ class PrinterDialogManager(private val context: Context) {
) 1 else customDialogList.getValueOptional().toInt()
)
customDialogList.dismiss()
} catch (ex: Exception) {
context.getString(R.string.errorInput).toast(context)
}
}
}

View File

@ -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)
}

View File

@ -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() {

View File

@ -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<Int>(
@ -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<String>(
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(
viewModel.buyGetLastWithoutInventory(
itemFk = it.id,
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
WAREHOUSEFK
),
dated = LocalDate.now()
.format(DateTimeFormatter.ofPattern("yyyy-dd-MM"))
)
)
} else {
buyToPrint = originalScan!!.toLong()
}*/
}
} else {
binding.itemcardLayout.visibility = GONE
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemCard)

View File

@ -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<Long>(context) {
override fun onSuccess(response: Response<Long>) {
_buyUltimateResponse.value = response.body()

View File

@ -27,3 +27,21 @@ class ItemBuyerVO(
class ItemBuyerListVO(
var list: List<ItemBuyerVO> = listOf()
)
data class BuyerList(
var list: List<Buyer> = 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
)

View File

@ -311,9 +311,22 @@ class SaleAdapterNew(
if (sale.isPicked == 1) {
if (type == PREPARED) {
contentLayout.setBackgroundColor(
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(

View File

@ -53,6 +53,10 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context)
val responseTicketState: LiveData<TicketState> = _responseTicketState
val loadTicketState: LiveData<Event<TicketState>> = _responseTicketState.map { Event(it) }
private val _responseTicketSetState by lazy { MutableLiveData<TicketState>() }
val responseTicketSetState: LiveData<TicketState> = _responseTicketSetState
val loadTicketSetState: LiveData<Event<TicketState>> = _responseTicketSetState.map { Event(it) }
private val _responseTicketIsPickup by lazy { MutableLiveData<Boolean>() }
val responseTicketIsPickup: LiveData<Boolean> = _responseTicketIsPickup
val loadTicketIsPickup: LiveData<Event<Boolean>> = _responseTicketIsPickup.map { Event(it) }
@ -70,9 +74,9 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context)
val responseNew: LiveData<Boolean> = _responseNew
val loadAddNew: LiveData<Event<Boolean>> = _responseNew.map { Event(it) }
private val _responseIncQuantity by lazy { MutableLiveData<Boolean>() }
val responseIncQuantity: LiveData<Boolean> = _responseIncQuantity
val loadIncQuantity: LiveData<Event<Boolean>> = _responseIncQuantity.map { Event(it) }
private val _responseIncQuantity by lazy { MutableLiveData<Number>() }
val responseIncQuantity: LiveData<Number> = _responseIncQuantity
val loadIncQuantity: LiveData<Event<Number>> = _responseIncQuantity.map { Event(it) }
private val _responseParking by lazy { MutableLiveData<Boolean>() }
val responseParking: LiveData<Boolean> = _responseParking
@ -217,7 +221,7 @@ class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context)
salix.ticketStateTodaySetState(arrayListOf(ticketFk, state).formatWithQuotes())
.enqueue(object : SalixCallback<Unit>(context) {
override fun onSuccess(response: Response<Unit>) {
_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<Any>) {
super.onSuccess(response)
_responseIncQuantity.value = true
_responseIncQuantity.value = saleFk
}
})
}

View File

@ -107,6 +107,7 @@ class CollectionFragmentChecker(
override fun onResume() {
super.onResume()
scanRequest()
viewModel.setPausedState(false)
}
override fun init() {
@ -172,8 +173,7 @@ class CollectionFragmentChecker(
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
if (collection.tickets.isNotEmpty())
when (item) {
if (collection.tickets.isNotEmpty()) when (item) {
iconViewCollection.drawable -> getCollection()
iconPrint.drawable -> print()
iconAdd.drawable -> addItem()
@ -237,8 +237,6 @@ class CollectionFragmentChecker(
}
private fun takeActionPrevia(customDialogList: CustomDialogList) {
println("previaaaa ${customDialogList.getValue()}")
ma.hideKeyboard(customDialogList.getEditText())
try {
val saleGroupScanned = itemScanValue(
@ -383,11 +381,9 @@ 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)) {
).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<String>(
@ -469,7 +472,7 @@ class CollectionFragmentChecker(
loadIncQuantity.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
incresaseSuccesful()
incresaseSuccesful(it)
}
}
@ -566,17 +569,25 @@ 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.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,24 +1003,64 @@ 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 {
/* sales.forEach {
if (it.isControlled == "0") {
viewModel.ticketStateTodaySetState(
ticketFk = it.ticketFk.toInt(), state = "ON_CHECKING"
)
}
}*/
val processedTickets = mutableSetOf<Int>()
sales.forEach { sale ->
val ticketFk = sale.ticketFk.toInt()
if (sale.isControlled == "0" && ticketFk !in processedTickets) {
viewModel.ticketStateTodaySetState(
ticketFk = ticketFk, state = "ON_CHECKING"
)
processedTickets.add(ticketFk)
}
}
allTicketsChecked = false
}
}
}
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 ->
labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
viewModel.collectionStickerPrint(
collectionFk = collection.collectionFk,
labelCount = labelCount
collectionFk = collection.collectionFk, labelCount = labelCount
)
val printerName =
mobileApplication.dataStoreApp.readDataStoreKey<String>(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,

View File

@ -297,7 +297,6 @@ class CollectionFragmentPicker(
SACADOR -> {
//jose antonio
myPosition = myGroupList.indexOfFirst { it.saleGroupFk == saleGroupScanned }
println("previa $saleGroupScanned posicion $myPosition")
viewModel.saleTrackingAddPreparedSaleGroup(
saleGroupScanned.toInt()
)

View File

@ -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<Sale>
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,8 +509,7 @@ class CollectionFragmentPickerPreviousNew(
}
private fun showDeleteItemShelving(sale: Sale) {
customDialog.setTitle(getString(R.string.deleteSale))
.setDescription(
customDialog.setTitle(getString(R.string.deleteSale)).setDescription(
getString(R.string.deleteSaleDescrip) + getString(
R.string.sure
)
@ -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()) {
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<Int>(
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<Int>(
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<Int>()
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,8 +1198,7 @@ class CollectionFragmentPickerPreviousNew(
).toString()
)
val foundTicketInCollection =
collection.tickets.find {
val foundTicketInCollection = collection.tickets.find {
it.ticketFk == customDialogList.getValue().toInt()
}
if (foundTicketInCollection != null) {
@ -1217,17 +1257,14 @@ class CollectionFragmentPickerPreviousNew(
}
if (isTicket) {
val labelDialogHelper = LabelDialogHelper(requireContext())
labelDialogHelper.showLabelDialog(
onItemSelected = { labelCount ->
labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
viewModel.collectionStickerPrint(
collectionFk = collection.collectionFk,
labelCount = labelCount
collectionFk = collection.collectionFk, labelCount = labelCount
)
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
PRINTERNAME
)).toast(requireContext())
}
)
})
} else {
viewModel.collectionStickerPrint(
collectionFk = collection.collectionFk, null

View File

@ -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 {

View File

@ -188,6 +188,10 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
get() = _responseIncQuantity
val loadIncQuantity: LiveData<Event<ResponseItemVO>> = _responseIncQuantity.map { Event(it) }
private val _responseStateId by lazy { MutableLiveData<Number>() }
val responseStateId: LiveData<Number> = _responseStateId
val loadResponseStateId: LiveData<Event<Number>> = _responseStateId.map { Event(it) }
private val _mistakeList by lazy { MutableLiveData<MistakeTypeListVO>() }
val mistakeList: LiveData<MistakeTypeListVO>
get() = _mistakeList
@ -211,6 +215,16 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
val responseSaleAddPrevOK: LiveData<ResponseItemVO>
get() = _responseSaleAddPrevOK
private val _responseSaleReserveAddPrevOK by lazy { MutableLiveData<Boolean>() }
val responseSaleReserveAddPrevOK: LiveData<Boolean> = _responseSaleReserveAddPrevOK
val loadResponseReserveAddPrevOK: LiveData<Event<Boolean>> =
_responseSaleReserveAddPrevOK.map { Event(it) }
private val _setStateResponse by lazy { MutableLiveData<Boolean>() }
val setStateResponse: LiveData<Boolean> = _setStateResponse
val loadSetStateResponse: LiveData<Event<Boolean>> =
_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<JsonObject>(context) {
override fun onSuccess(response: Response<JsonObject>) {
_responseStateId.value =
response.body()?.get("id").toString().toInt()
}
})
}
fun setStateSaleGroup(
saleGroups: List<Number>, stateCode: Int
) {
salix.collectionAddWithReservation(
params = arrayListOf(
saleGroups, stateCode
)
).enqueue(object : SalixCallback<Any>(context) {
override fun onSuccess(response: Response<Any>) {
// _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<Unit>) {
_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<Any>(context) {
override fun onSuccess(response: Response<Any>) {
_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<Any>(context) {
override fun onError(t: Throwable) {
@ -988,22 +1044,11 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
) {
salix.saleTrackingSectorCollectionAddPrevOK(arrayListOf(sectorCollectionFk))
.enqueue(object : SalixCallback<Any>(context) {
override fun onError(t: Throwable) {
_responseSaleAddPrevOK.value = ResponseItemVO(
isError = true, errorMessage = getMessageFromAllResponse(
nameofFunction(this), t.message!!
)
)
}
override fun onSuccess(response: Response<Any>) {
_responseSaleAddPrevOK.value = ResponseItemVO(
isError = false, errorMessage = "" + getMessageFromAllResponse(
nameofFunction(this), response.message()
)
)
_responseSaleReserveAddPrevOK.value = true
}
})
}

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -429,15 +429,15 @@ class TicketsFragment : BaseFragment<FragmentTicketsBinding, DeliveryViewModel>(
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<String>(
TOKEN
)

View File

@ -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$"
}
}

View File

@ -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,16 +46,32 @@ class ShelvingLogFragment(
}
private fun setToolBar(title:String) {
private fun setToolBar(title: String) {
if (logType == LogType.SHELVING) {
when (logType) {
LogType.SHELVING -> {
binding.mainToolbar.toolbarTitle.text = title
}
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))
}
}*/
}
@ -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,21 +140,62 @@ 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(
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<String>(
TOKENMULTIMEDIA
)
}"
else "var-shelvingCode=$itemScan"
}"
)
)
} else {
Gson().toJson(
mutableMapOf(
"entryPoint" to param,
"web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
)
)
}
)

View File

@ -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<ShelvingLogSalixList>() }
val loadShelvingLogSalixList: LiveData<Event<ShelvingLogSalixList>> =
_itemShelvingLogSalixList.map { Event(it) }
private val _responseParkingId by lazy { MutableLiveData<Int?>() }
val responseParkingId: LiveData<Int?> = _responseParkingId
val loadResponseParking: LiveData<Event<Int?>> =_responseParkingId.map { Event(it) }
val loadResponseParking: LiveData<Event<Int?>> = _responseParkingId.map { Event(it) }
private val _responseCode by lazy { MutableLiveData<Int?>() }
val responseCode: LiveData<Int?> = _responseCode
val loadResponseCode: LiveData<Event<Int?>> = _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<List<JsonObject>>(context) {
override fun onSuccess(response: Response<List<JsonObject>>) {
_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<Int?>(context) {
override fun onSuccess(response: Response<Int?>) {
_responseCode.value = response.body() ?: -1
}
})
}
}

View File

@ -40,8 +40,10 @@ data class DeviceLogSalix(
val versionApp: String,
val serialNumber: String?
)
enum class LogType {
SHELVING,
PREVIOUS,
ITEMSHELVING
}

View File

@ -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(

View File

@ -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<Buyer>()
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<String>((BUYER))
filterItemType =
mobileApplication.dataStoreApp.readDataStoreKey<String>((ITEMPACKINGTYPEFILTER))
binding.filterItemType.setText(filterItemType!!.firstOrNull()?.toString() ?: "").toString()
buyerId = mobileApplication.dataStoreApp.readDataStoreKey<Int>((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<NameWithId>)
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<NameWithId>) {
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<ImageView> = 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<NameWithId>)
}
buyersList.observe(viewLifecycleOwner) { item ->
setSearchable(item.list.map {
NameWithId(
@ -193,6 +257,7 @@ class InventaryFragment :
} as MutableList<NameWithId>)
}
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)

View File

@ -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<BuyerListVO>
get() = _buyersList
private val _buyersByItemPackingList by lazy { MutableLiveData<BuyerList>() }
val buyersByItemPackingList: LiveData<BuyerList>
get() = _buyersByItemPackingList
private val _mistakeDepartmentList by lazy { MutableLiveData<DepartmentMistakeList>() }
val mistakeDepartmentList: LiveData<DepartmentMistakeList>
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<List<Buyer>>(context) {
override fun onSuccess(response: Response<List<Buyer>>) {
_buyersByItemPackingList.value = response.body()?.let { BuyerList(it) }
}
})
}
val loadInventaryList: LiveData<Event<InventaryListVO>> = _inventaryList.map { Event(it) }
fun getInventory(buyerFk: Number, warehouseFk: Int) {

View File

@ -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 ->

View File

@ -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<AccessConfigSalixList>() }
private val _renewTokenResponse by lazy { MutableLiveData<RenewToken>() }
val renewTokenResponse: LiveData<RenewToken>
get() = _renewTokenResponse
val loadAccessConfigSalixList: LiveData<Event<AccessConfigSalixList>> =
_accessConfigSalixList.map { Event(it) }
private val _multimediaTokenResponse by lazy { MutableLiveData<MultimediaTokenResponse>() }
val multimediaTokenResponse: LiveData<MultimediaTokenResponse>
get() = _multimediaTokenResponse
fun loginSalix(user: String, password: String) {
salix.login(LoginSalixVO(user, password))
.enqueue(object : SalixCallback<LoginSalixVO>(context) {
@ -285,6 +289,21 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
})
}
fun getMultimedaToken(
) {
salix.getMultimediaToken()
.enqueue(object : SalixCallback<MultimediaTokenResponse>(context) {
override fun onSuccess(response: Response<MultimediaTokenResponse>) {
_multimediaTokenResponse.value = response.body()?.let {
it
}
}
})
}
fun renewToken(
) {
salix.renewToken().enqueue(object : SalixCallback<RenewToken>(context) {

View File

@ -116,3 +116,11 @@ class LoginDevice(
data class NameWorker(
val firstName: String, val lastName: String
)
data class MultimediaTokenResponse(
val multimediaToken: MultimediaToken
)
data class MultimediaToken(
val id: String,
)

View File

@ -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<ActivityMainBinding>(), 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<ActivityMainBinding>(), 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<ActivityMainBinding>(), 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<ActivityMainBinding>(), 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<ActivityMainBinding>(), OnPasillerosItemClickL
) {
when (type) {
PREITEMPICKERTEST -> {
println("test presacador")
//addFragmentOnTop(EndSacadorFragment.newInstance(collection, type))
addFragmentOnTop(
SectorCollectionReserveFragment.newInstance(

View File

@ -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 {

View File

@ -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())

View File

@ -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 ->

View File

@ -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,24 +523,33 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
)
)
//tarea 8099
/* _pasillerositem.add(
_pasillerositem.add(
PasillerosItemVO(
R.drawable.ic_salary_supplement,
R.string.salarySupplementTitle,
R.string.salarySupplementTitle
)
)*/
)
}
fun inititializeDefaultHistorical() {
_pasillerositem.add(
PasillerosItemVO(
R.drawable.revision_icon,
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,

View File

@ -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)

View File

@ -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) {

View File

@ -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<ActivityRestaurantViewBinding>() {
@ -33,16 +31,27 @@ class RestaurantActivity : BaseActivity<ActivityRestaurantViewBinding>() {
binding.imageQr.visibility = View.VISIBLE
binding.txtOption.visibility = View.VISIBLE
binding.txtOption.text = (view as Button).text.toString()
val userMenu = UserMenu(
/* 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

View File

@ -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
)

View File

@ -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))

View File

@ -264,7 +264,6 @@ class SacadorFragmentNew(
}
"PREITEMPICKERTEST" -> {
println("SacadorFragmentNew sectorCollectionGET")
// viewModel.sectorCollectionGet()
viewModel.sectorCollectionPartial()
}

View File

@ -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<SaleVO> = 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<SaleVO> = 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()
}

View File

@ -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<ItemShelving>,
private val onPasillerosItemClickListener: OnPasillerosItemClickListener,
private val onVisibleClickListener: OnVisibleClickListener6869,
private val onMoreClickListener: OnMoreClickListener6869,
private val urlImage: String? = null
) : RecyclerView.Adapter<UbicadorAdapter6869.ItemHolder>() {
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
)
)
}
}
}
}
}

View File

@ -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<FragmentUbicadorBinding, UbicadorViewMo
if (shelvingFk.isNotEmpty()) {
isShelvinLogfromMainScreen = false
setIconsActions(true)
setIcons()
//setIcons()
binding.mainToolbar.toolbarTitle.text = shelvingFk
viewModel.itemShelvingListNew(shelvingFk)
binding.mainToolbar.switchButton.visibility = VISIBLE
@ -128,7 +132,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
isShelvinLogfromMainScreen = true
setIconsActions(false)
//Tarea 7805
setIcons(true)
// setIcons(true)
}
super.init()
}
@ -140,7 +144,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
} else {
GONE
}
setIcons(!showIcons)
}
private fun setDialogs() {
@ -217,14 +221,15 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) {
listItems.clear()
when (item) {
iconAdd.drawable -> showAddItemNew(
iconAdd.drawable -> {
showAddItemNew(
isEditItem = false, null
)
}
iconAddMultiple.drawable -> {
ma.onPasillerosItemClickListener(
PasillerosItemVO(
title = R.string.addItemMultipleShelving,
@ -233,7 +238,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
}
iconReload.drawable -> {
listItems.clear()
if (shelvingFk.isNotBlank()) {
binding.editPrioridad.setText("")
viewModel.itemShelvingListNew(
@ -252,7 +257,8 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip))
.setDescription(getString(R.string.checkItemShelving))
.setOkButton(getString(R.string.ok)) {
viewModel.itemShelvingDeleteChecked(shelvingFk)
if (listItems.isNotEmpty())
viewModel.itemShelvingDeleteChecked(listItems[0].shelvingFk!!)
customDialogReset.dismiss()
}.setKoButton(getString(R.string.cancel)) {
customDialogReset.dismiss()
@ -287,7 +293,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
if (binding.editMatricula.text.toString().isNotEmpty()) {
setIconsActions(true)
setIcons()
//setIcons()
if (!modeCheckUbication || (modeCheckUbication && (binding.editMatricula.text.toString()
.isShelving()) && !binding.editMatricula.text!![0].isDigit())
) {
@ -426,10 +432,13 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
customDialogDelete.setTitle(getString(R.string.empty))
.setDescription(getString(R.string.operationNoReturn))
.setOkButton(getString(R.string.empty)) {
if (listItems.isNotEmpty()) {
viewModel.clearShelvingList(
shelvingFk
//Tarea 7920
listItems[0].shelvingFk?.toString() ?: shelvingFk
)
}
listItems.forEach {
it.stickers = 0
it.visible = 0
@ -460,16 +469,24 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
parking = customDialogInput.getValue()
//tarea 6964
viewModel.hasItemOlder(
shelvingFk, customDialogInput.getValue(),
shelvingFk, customDialogInput.getValue(), itemFk = null, action = null
)
customDialogInput.dismiss()
}
private fun customDialogActionChange() {
//Tarea 7920
if (listItems.isNotEmpty() && listItems[0].shelvingFk == null) {
viewModel.shelvingChangeSalix(
shelvingFk, customDialogInput.getValue()
)
} else {
viewModel.getShelvingFkFromCode(
listItems[0].shelvingFk!!, customDialogInput.getValue()
)
}
shelvingFk = customDialogInput.getValue()
customDialogInput.dismiss()
@ -585,6 +602,10 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
}
responseLogAdd.observe(viewLifecycleOwner) {
isShelvinLogfromMainScreen = false
if (it == false) {
setIconsActions(false)
//setIcons()
}
}
loadResponseCode.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
@ -665,9 +686,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
loadBuyUltimateResponse.observe(viewLifecycleOwner) { event ->
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<FragmentUbicadorBinding, UbicadorViewMo
.setPackingValue(itemUbicador.packing.toString())
.setVisibleValue(itemUbicador.visible.toString())
//.setEtiquetaValue((itemUbicador.visible / (itemUbicador.packing ?: 0)).toString())
.setEtiquetaValue(itemUbicador.stickers.toString())
.setUnits(
.setEtiquetaValue(itemUbicador.stickers.toString()).setUnits(
if (itemUbicador.stickers != 0) {
(itemUbicador.visible % itemUbicador.stickers).toString()
} else {
@ -1072,7 +1090,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
customDialogConfirm.show()
}
//Tarea 7266
/* .setOkButtonThree(getString(R.string.print)) {
.setOkButtonThree(getString(R.string.print)) {
val printerDialogManager = PrinterDialogManager(requireContext())
printerDialogManager.showPrintDialog(
item.item,
@ -1108,7 +1126,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
}
}
customDialogInput.getEditText().requestFocus()
}*/
}
//Tarea 7763
/*
.setOkButtonThree(getString(R.string.rename)) {
@ -1150,7 +1168,12 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
),
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)
@ -1186,8 +1209,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
}
private fun customDialogTransferAction(item: ItemUbicador) {
if (customDialogInput.getValue().isNotEmpty()) {
/*tearea 6964*//*
if (customDialogInput.getValue().isNotEmpty()) {/*tearea 6964*//*
viewModel.hasItemOlder(
shelvingFkIn = shelvingFk,
shelvingFkOut = customDialogInput.getValue(),

View File

@ -1,6 +1,7 @@
package es.verdnatura.presentation.view.feature.ubicador.fragment
import android.content.Context
import android.util.Log.d
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.map
@ -11,6 +12,7 @@ import es.verdnatura.domain.formatWithQuotes
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
import es.verdnatura.domain.userCases.GetItemPrintItemUseCase
import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.common.Action
import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.common.ItemShelvingSalix
import es.verdnatura.presentation.common.ResponseHasOlder
@ -21,7 +23,9 @@ import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelvingNewer
import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelvingNewerList
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorListNew
import es.verdnatura.presentation.view.feature.ubicador.model.ShelvingItem
import es.verdnatura.presentation.view.feature.workermistake.model.MakeMultiSalix
import org.json.JSONObject
import retrofit2.Call
import retrofit2.Response
@ -43,6 +47,14 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
val loadShelvingListNew: LiveData<Event<ItemUbicadorListNew>> =
_shelvingListNew.map { Event(it) }
private val _shelvingGet by lazy { MutableLiveData<ShelvingItem>() }
val loadShelvingGet: LiveData<Event<ShelvingItem>> =
_shelvingGet.map { Event(it) }
private val _imageConfig by lazy { MutableLiveData<String>() }
val loadImageConfig: LiveData<Event<String>> =
_imageConfig.map { Event(it) }
private val _shelvingListItemNewer by lazy { MutableLiveData<ItemShelvingNewerList>() }
val loadShelvingListItemNewer: LiveData<Event<ItemShelvingNewerList>> =
_shelvingListItemNewer.map { Event(it) }
@ -69,6 +81,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse
val loadBuyUltimateResponse: LiveData<Event<Boolean>> = _buyUltimateResponse.map { Event(it) }
private val _getParkingResponse by lazy { MutableLiveData<Boolean>() }
val getParkingResponse: LiveData<Boolean> = _getParkingResponse
val loadGetParkingResponse: LiveData<Event<Boolean>> = _getParkingResponse.map { Event(it) }
fun itemShelvingListNew(
shelvingFk: String
) {
@ -85,59 +101,40 @@ 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":"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<ShelvingItem>(context) {
override fun onSuccess(response: Response<ShelvingItem>) {
_shelvingGet.value = response.body()
}
},
{
"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<List<ItemUbicador>>(context) {
override fun onSuccess(response: Response<List<ItemUbicador>>) {
_shelvingListNew.value = response.body()?.let { ItemUbicadorListNew(it) }
}
fun getImageConfig(
) {
salix.getImageConfig(
).enqueue(
object : SalixCallback<JsonObject>(context) {
override fun onSuccess(response: Response<JsonObject>) {
_imageConfig.value =
response.body()!!.entrySet().first().value.asString
}
},
@ -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<List<ItemShelvingNewer>>(context) {
override fun onSuccess(response: Response<List<ItemShelvingNewer>>) {
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<List<ItemShelvingNewer>>(context) {
override fun onSuccess(response: Response<List<ItemShelvingNewer>>) {
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<ShelvingItem>(context) {
override fun onSuccess(response: Response<ShelvingItem>) {
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<Any>(context) {
override fun onSuccess(response: Response<Any>) {
_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<Any>(context) {
override fun onSuccess(response: Response<Any>) {
_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<ItemUbicador>(context) {
override fun onSuccess(response: Response<ItemUbicador>) {
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<Any>(context) {
override fun onSuccess(response: Response<Any>) {
_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,

View File

@ -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<ItemShelvingNewer> = listOf(),
var originalParking: String,
var originalShelvingFk: String
val list: List<ItemShelvingNewer> = 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(
@ -76,3 +88,40 @@ data class ItemBuy(
val packing: Int,
val packagingFk: String?
)
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<ItemShelving>?
)
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?
)

File diff suppressed because one or more lines are too long

View File

@ -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" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -109,11 +111,33 @@
android:onClick="generateQr"
android:tag="4"
android:text="@string/halfMenu"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/scan_input" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/buttonMerienda"
style="@style/DefaultButton.DynamicButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_min"
android:onClick="generateQr"
android:tag="5"
android:text="@string/snack"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/scan_input" />
</LinearLayout>
</LinearLayout>
<LinearLayout

View File

@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
android:padding="0dp">
<androidx.appcompat.widget.SearchView
android:id="@+id/search_view"
@ -18,6 +18,6 @@
android:id="@+id/recycler_viewer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:paddingVertical="48dp"
android:visibility="visible" />
</LinearLayout>

View File

@ -43,11 +43,29 @@
android:textColorHint="#78909C"
tools:ignore="TextContrastCheck" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/filter_itemType"
style="@style/InputLineTextSearch"
android:layout_width="wrap_content"
android:layout_weight="2.5"
android:backgroundTint="@android:color/white"
android:focusable="false"
android:focusableInTouchMode="false"
android:hint="@string/packingType"
android:inputType="text"
android:lines="1"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/verdnatura_white"
android:textColorHint="#78909C"
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp"
tools:ignore="TextContrastCheck" />
<TextView
android:id="@+id/filter_buyer"
style="@style/InputLineTextSearch"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_weight="2"
android:backgroundTint="@android:color/white"
android:focusable="false"
android:hint="@string/buscarcomprador"
@ -124,6 +142,17 @@
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
app:layout_constraintVertical_bias="0" />
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
android:id="@+id/searchableRecyclerViewItemType"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/main_toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
app:layout_constraintVertical_bias="0" />
<include
android:id="@+id/main_toolbar"
layout="@layout/toolbar_fragment"

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
@ -20,20 +20,20 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
android:orientation="vertical">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_itemFk"
style="@style/ScanLineTextSearch"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:drawableEnd="@drawable/ic_grafana"
android:gravity="center"
android:hint="@string/Escaneaetiqueta"
android:inputType="text"
android:textColor="@color/verdnatura_white"
android:textColorHint="@color/verdnatura_white"
/>
android:textColorHint="@color/verdnatura_white" />
<LinearLayout
@ -46,34 +46,38 @@
android:id="@+id/itemcard_image"
android:layout_width="match_parent"
android:layout_height="@dimen/itemcard_image"
android:scaleType="centerCrop"
android:contentDescription="@string/selectImage"
android:scaleType="centerCrop"
android:src="@drawable/loadphoto" />
<!-- TAGS ======================================================================================================= -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_min"
android:baselineAligned="false"
android:layout_marginBottom="@dimen/layout_margin_min">
android:orientation="horizontal"
android:padding="@dimen/layout_margin_min">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1.25">
android:layout_weight="1.25"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:text="@string/Tamaño"
android:textColor="@color/verdnatura_brown_grey"
android:textSize="@dimen/body2"
android:textStyle="bold"
android:layout_marginEnd="@dimen/layout_margin_min"/>
android:textStyle="bold" />
<TextView
android:id="@+id/itemcard_tag1"
android:layout_width="wrap_content"
@ -83,18 +87,21 @@
android:textSize="@dimen/body2"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:text="@string/Longitud"
android:textColor="@color/verdnatura_brown_grey"
android:textSize="@dimen/body2"
android:textStyle="bold"
android:layout_marginEnd="@dimen/layout_margin_min"/>
android:textStyle="bold" />
<TextView
android:id="@+id/itemcard_tag2"
android:layout_width="wrap_content"
@ -110,20 +117,23 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1.1">
android:layout_weight="1.1"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:text="@string/Color"
android:textColor="@color/verdnatura_brown_grey"
android:textSize="@dimen/body2"
android:textStyle="bold"
android:layout_marginEnd="@dimen/layout_margin_min"/>
android:textStyle="bold" />
<TextView
android:id="@+id/itemcard_tag3"
android:layout_width="wrap_content"
@ -133,18 +143,21 @@
android:textSize="@dimen/body2"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:text="@string/Origen"
android:textColor="@color/verdnatura_brown_grey"
android:textSize="@dimen/body2"
android:textStyle="bold"
android:layout_marginEnd="@dimen/layout_margin_min"/>
android:textStyle="bold" />
<TextView
android:id="@+id/itemcard_tag4"
android:layout_width="wrap_content"
@ -152,7 +165,7 @@
android:text=""
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold"/>
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
@ -161,14 +174,16 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/layout_margin_min"
android:text="@string/buyer"
android:textColor="@color/verdnatura_brown_grey"
android:textSize="@dimen/body2"
android:textStyle="bold"
android:layout_marginEnd="@dimen/layout_margin_min"/>
android:textStyle="bold" />
<TextView
android:id="@+id/itemcard_buyer"
android:layout_width="wrap_content"
@ -208,4 +223,4 @@
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
</layout>

View File

@ -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" />

View File

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="item"
type="es.verdnatura.presentation.view.feature.ubicador.model.ItemShelving" />
</data>
<LinearLayout
android:id="@+id/itemLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/item_row_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/verdnatura_black_5"
android:baselineAligned="false"
android:orientation="horizontal"
android:paddingStart="@dimen/pasilleros_margin_main_menu"
android:paddingTop="@dimen/pasilleros_margin_main_menu"
android:paddingEnd="@dimen/pasilleros_margin_main_menu"
android:paddingBottom="@dimen/pasilleros_margin_main_menu">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/layout_margin_min"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<androidx.cardview.widget.CardView
android:layout_width="@dimen/item_image_width"
android:layout_height="@dimen/item_image_width"
android:layout_marginEnd="@dimen/layout_margin_1"
app:cardCornerRadius="100dp">
<ImageView
android:id="@+id/img_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/item" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:id="@+id/namelayout"
style="@style/LayoutClickable"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/itemfk_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@{String.valueOf(item.item.id)}"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h8"
android:textStyle="bold" />
<TextView
android:id="@+id/longname_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="1"
android:text="@{item.description}"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h8" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layer_visible"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:id="@+id/multi_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold"
tools:text="6 x 15" />
<TextView
android:id="@+id/visible_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@{String.valueOf(item.visible)}"
android:textColor="@color/verdnatura_pumpkin_orange"
android:textSize="@dimen/h6"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="@dimen/item_image_width_min"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/more_img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/options"
android:scaleType="center"
android:src="@drawable/ic_more_vert_black_24dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/verdnatura_black_9" />
</LinearLayout>
</layout>

View File

@ -212,7 +212,7 @@
<string name="changePriority">Cambia la prioridad de los items del carro. Cuanto más alta antes cogerán los sacadores.</string>
<string name="allowAutomaticAddItem">Permite añadir items al carro de manera continuada. No uno a uno</string>
<string name="newItem">Nuevo Item</string>
<string name="editItem">Editar item </string>
<string name="editItem">Editar item:</string>
<string name="fillFields">Rellena campos obligatorios</string>
<string name="mandatoryPacking">Packing obligatorio</string>
<string name="selectAction">Selecciona una acción</string>
@ -358,7 +358,7 @@
<string name="titleQrReader">Lector Qr</string>
<string name="titleBufferOff">Desactivado buffer</string>
<string name="titlePreControl">Pre Control</string>
<string name="titleShelvingHistorical">Histórico ítems del carro</string>
<string name="titleShelvingHistorical">Histórico ítems del carro Viejo</string>
<string name="titleLogShelving">Histórico del carro</string>
<string name="itemScanetNotFound">Elemento escaneado no encontrado </string>
<string name="NotOrderReplacement">No existen pedidos para reponer</string>
@ -736,6 +736,7 @@
<string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir…</string>
<string name="itemOlderInfo">¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.</string>
<string name="itemsOlderInfo">¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Vas a modificar la cantidad a 0</string>
<string name="quantityToReview">Cantidad a revisar</string>
@ -755,7 +756,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</string>
<string name="titlePrePickerTest">Pre Sacador TEST</string>
<string name="titlePrePickerTest">Pre Sacador</string>
<string name="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string>
@ -779,7 +780,7 @@
<string name="titleLogExpedition">%1$s %2$s</string>
<string name="itemAddress">%1$s-%2$s</string>
<string name="itemDataText">%1$d: %2$s</string>
<string name="itemsTotal">tem: %1$s %2$s %3$d</string>
<string name="itemsTotal">Ítem: %1$s %2$s %3$d</string>
<string name="itemCardTitle">%1$s-%2$s</string>
<string name="itemCardTag">%1$s %2$s</string>
<string name="doubleText">%1$s:%2$s</string>
@ -826,7 +827,7 @@
<string name="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</string>
<string name="lastChecking">VER ÚLTIMA REVISIÓN %1$s→%2$s</string>
<string name="listItems">\nLista de ítems:\n</string>
<string name="listItems">\nLista de artículos:\n</string>
<string name="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -909,6 +910,14 @@
<string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</string>
<string name="snack">Merienda</string>
<string name="register">Registro:</string>
<string name="titleShelvingHistNew">Histórico ítems del carro</string>
<string name="ubicatorNew">Ubicador</string>
<string name="selectItemType">Seleccionar tipo de ítem</string>
<string name="allText">Todos</string>
<string name="ubicationItemNewer">\nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s</string>
<string name="ubicationItemOlder">\nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s</string>
</resources>

View File

@ -358,7 +358,7 @@
<string name="titleQrReader">Lector Qr</string>
<string name="titleBufferOff">Desactivado buffer</string>
<string name="titlePreControl">Pre Control</string>
<string name="titleShelvingHistorical">Histórico ítems del carro</string>
<string name="titleShelvingHistorical">Histórico ítems del carro Viejo</string>
<string name="titleLogShelving">Histórico del carro</string>
<string name="itemScanetNotFound">Elemento escaneado no encontrado </string>
<string name="NotOrderReplacement">No existen pedidos para reponer</string>
@ -736,6 +736,7 @@
<string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir…</string>
<string name="itemOlderInfo">¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.</string>
<string name="itemsOlderInfo">¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string>
@ -755,7 +756,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</string>
<string name="titlePrePickerTest">Pre Sacador TEST</string>
<string name="titlePrePickerTest">Pre Sacador</string>
<string name="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string>
@ -826,7 +827,7 @@
<string name="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</string>
<string name="lastChecking">VER ÚLTIMA REVISIÓN %1$s→%2$s</string>
<string name="listItems">\nLista de ítems:\n</string>
<string name="listItems">\nLista de artículos:\n</string>
<string name="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -909,5 +910,13 @@
<string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</string>
<string name="snack">Merienda</string>
<string name="register">Registro:</string>
<string name="titleShelvingHistNew">Histórico ítems del carro</string>
<string name="ubicatorNew">Ubicador</string>
<string name="selectItemType">Seleccionar tipo de ítem</string>
<string name="allText">Todos</string>
<string name="ubicationItemNewer">\nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s</string>
<string name="ubicationItemOlder">\nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s</string>
</resources>

View File

@ -358,7 +358,7 @@
<string name="titleQrReader">Lector Qr</string>
<string name="titleBufferOff">Desactivado buffer</string>
<string name="titlePreControl">Pre Control</string>
<string name="titleShelvingHistorical">Histórico ítems del carro</string>
<string name="titleShelvingHistorical">Histórico ítems del carro Viejo</string>
<string name="titleLogShelving">Histórico del carro</string>
<string name="itemScanetNotFound">Elemento escaneado no encontrado </string>
<string name="NotOrderReplacement">No existen pedidos para reponer</string>
@ -736,6 +736,7 @@
<string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir...</string>
<string name="itemOlderInfo">¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.</string>
<string name="itemsOlderInfo">¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string>
@ -755,7 +756,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</string>
<string name="titlePrePickerTest">Pre Sacador TEST</string>
<string name="titlePrePickerTest">Pre Sacador</string>
<string name="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string>
@ -826,7 +827,7 @@
<string name="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</string>
<string name="lastChecking">VER ÚLTIMA REVISIÓN %1$s→%2$s</string>
<string name="listItems">\nLista de ítems:\n</string>
<string name="listItems">\nLista de artículos:\n</string>
<string name="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -909,5 +910,13 @@
<string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</string>
<string name="snack">Merienda</string>
<string name="register">Registro:</string>
<string name="titleShelvingHistNew">Histórico ítems del carro</string>
<string name="ubicatorNew">Ubicador</string>
<string name="selectItemType">Seleccionar tipo de ítem</string>
<string name="allText">Todos</string>
<string name="ubicationItemNewer">\nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s</string>
<string name="ubicationItemOlder">\nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s</string>
</resources>

View File

@ -737,6 +737,7 @@
<string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir…</string>
<string name="itemOlderInfo">¿Estás seguro que quieres %1$s? Tienes material más nuevo en la cámara.</string>
<string name="itemsOlderInfo">¿Estás seguro de %1$s? Tienes ubicado material más viejo detrás de donde vas a %1$s.</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string>
@ -756,7 +757,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</string>
<string name="titlePrePickerTest">Pre Sacador TEST</string>
<string name="titlePrePickerTest">Pre Sacador</string>
<string name="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string>
@ -828,7 +829,7 @@
<string name="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</string>
<string name="lastChecking">VER ÚLTIMA REVISIÓN %1$s→%2$s</string>
<string name="listItems">\nLista de ítems:\n</string>
<string name="listItems">\nLista de artículos:\n</string>
<string name="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -912,5 +913,13 @@
<string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</string>
<string name="snack">Merienda</string>
<string name="register">Registro:</string>
<string name="titleShelvingHistNew">Histórico ítems del carro</string>
<string name="ubicatorNew">Ubicador</string>
<string name="selectItemType">Seleccionar tipo de ítem</string>
<string name="allText">Todos</string>
<string name="ubicationItemNewer">\nTienes ubicado material más nuevo detrás de donde vas a PARKINEAR \n %1$s</string>
<string name="ubicationItemOlder">\nTienes ubicado material más viejo delante de donde vas a PARKINEAR \n %1$s</string>
</resources>

34
changeLog.sh Normal file
View File

@ -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

View File

@ -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"