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"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" /> <bytecodeTargetLevel target="21" />
</component> </component>
</project> </project>

View File

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

View File

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

View File

@ -280,7 +280,7 @@
<option name="myDefaultNotNull" value="androidx.annotation.NonNull" /> <option name="myDefaultNotNull" value="androidx.annotation.NonNull" />
<option name="myNullables"> <option name="myNullables">
<value> <value>
<list size="15"> <list size="16">
<item index="0" class="java.lang.String" itemvalue="com.android.annotations.Nullable" /> <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="1" class="java.lang.String" itemvalue="org.jspecify.nullness.Nullable" />
<item index="2" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" /> <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="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="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="14" class="java.lang.String" itemvalue="android.annotation.Nullable" />
<item index="15" class="java.lang.String" itemvalue="org.jspecify.annotations.Nullable" />
</list> </list>
</value> </value>
</option> </option>
<option name="myNotNulls"> <option name="myNotNulls">
<value> <value>
<list size="14"> <list size="15">
<item index="0" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" /> <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="1" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
<item index="2" class="java.lang.String" itemvalue="jakarta.annotation.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="11" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="12" class="java.lang.String" itemvalue="org.eclipse.jdt.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="13" class="java.lang.String" itemvalue="android.annotation.NonNull" />
<item index="14" class="java.lang.String" itemvalue="org.jspecify.annotations.NonNull" />
</list> </list>
</value> </value>
</option> </option>
</component> </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" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -60,6 +60,11 @@
<theme>@style/AppTheme</theme> <theme>@style/AppTheme</theme>
</config> </config>
</layout> </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"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_sign.xml">
<config> <config>
<theme>@style/AppTheme</theme> <theme>@style/AppTheme</theme>
@ -406,6 +411,16 @@
<theme>@style/AppTheme</theme> <theme>@style/AppTheme</theme>
</config> </config>
</layout> </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"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_workermistake_row.xml">
<config> <config>
<theme>@style/AppTheme</theme> <theme>@style/AppTheme</theme>
@ -478,40 +493,12 @@
</select> </select>
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refs #8022 kotlin versionCatalog"> <list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refs#6845 userInterface">
<change afterPath="$PROJECT_DIR$/app/general/release/baselineProfiles/0/app-general-release.dm" afterDir="false" /> <change afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/component_searchable_dialog_alert.xml" afterDir="false" /> <change afterPath="$PROJECT_DIR$/changeLog.sh" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" 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$/.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" />
<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/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/ubicador/model/ItemUbicadorVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/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" />
</list> </list>
<list id="7b98f93d-6980-4bf1-8e61-c7afd10e56f2" name="Change_category" comment="Change_category" /> <list id="7b98f93d-6980-4bf1-8e61-c7afd10e56f2" name="Change_category" comment="Change_category" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -526,7 +513,7 @@
<component name="CodeInsightWorkspaceSettings"> <component name="CodeInsightWorkspaceSettings">
<option name="optimizeImportsOnTheFly" value="true" /> <option name="optimizeImportsOnTheFly" value="true" />
</component> </component>
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[21114523025303]" /> <component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[DeviceId(pluginId=LocalEmulator, isTemplate=false, identifier=path=C:\Users\sergiodt\.android\avd\Pixel_7a_API_30.avd)]" />
<component name="ExportToHTMLSettings"> <component name="ExportToHTMLSettings">
<option name="OPEN_IN_BROWSER" value="true" /> <option name="OPEN_IN_BROWSER" value="true" />
<option name="OUTPUT_DIRECTORY" value="C:\Program Files\Android\Android Studio\inspections" /> <option name="OUTPUT_DIRECTORY" value="C:\Program Files\Android\Android Studio\inspections" />
@ -616,7 +603,7 @@
</option> </option>
<option name="RECENT_BRANCH_BY_REPOSITORY"> <option name="RECENT_BRANCH_BY_REPOSITORY">
<map> <map>
<entry key="$PROJECT_DIR$" value="dev_collectionFragmentChecker" /> <entry key="$PROJECT_DIR$" value="dev_6078" />
</map> </map>
</option> </option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
@ -706,12 +693,12 @@
&quot;cidr.known.project.marker&quot;: &quot;true&quot;, &quot;cidr.known.project.marker&quot;: &quot;true&quot;,
&quot;com.developerphil.adbidea.selecteddevices&quot;: &quot;G65TY9DQN7X4BIE6&quot;, &quot;com.developerphil.adbidea.selecteddevices&quot;: &quot;G65TY9DQN7X4BIE6&quot;,
&quot;com.google.services.firebase.aqiPopupShown&quot;: &quot;true&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;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
&quot;kotlin-language-version-configured&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_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;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;Project&quot;, &quot;project.structure.last.edited&quot;: &quot;Modules&quot;,
&quot;project.structure.proportion&quot;: &quot;0.17&quot;, &quot;project.structure.proportion&quot;: &quot;0.17&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;, &quot;project.structure.side.proportion&quot;: &quot;0.2&quot;,
&quot;rearrange.code.on.save&quot;: &quot;true&quot;, &quot;rearrange.code.on.save&quot;: &quot;true&quot;,
@ -728,9 +715,6 @@
&quot;select * from expeditionPending;&quot;, &quot;select * from expeditionPending;&quot;,
&quot;select * from expedition where id = 7753995;\n\n&quot;, &quot;select * from expedition where id = 7753995;\n\n&quot;,
&quot;\nselect * from expedition where id = 7753995;&quot; &quot;\nselect * from expedition where id = 7753995;&quot;
],
&quot;kotlin-gradle-user-dirs&quot;: [
&quot;C:\\Users\\sergiodt\\.gradle&quot;
] ]
} }
}</component> }</component>
@ -741,8 +725,8 @@
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS"> <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\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\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\java\es\verdnatura\domain" />
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\xml" /> <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" /> <recent name="es.verdnatura.presentation.view.feature.historicoshelving.fragment" />
</key> </key>
<key name="CopyKotlinDeclarationDialog.RECENTS_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.adapters" />
<recent name="es.verdnatura.presentation.view.feature.delivery.fragments" /> <recent name="es.verdnatura.presentation.view.feature.delivery.fragments" />
<recent name="es.verdnatura.domain.userCases" /> <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>
<key name="CopyClassDialog.RECENTS_KEY"> <key name="CopyClassDialog.RECENTS_KEY">
<recent name="es.verdnatura.presentation.view.feature.delivery.activity" /> <recent name="es.verdnatura.presentation.view.feature.delivery.activity" />
@ -798,9 +782,10 @@
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" /> <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" /> <option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" /> <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="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" 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="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" /> <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" /> <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
@ -909,6 +894,9 @@
</configuration> </configuration>
<recent_temporary> <recent_temporary>
<list> <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" />
<item itemvalue="Gradle.vn-warehouseManager [clean]" /> <item itemvalue="Gradle.vn-warehouseManager [clean]" />
</list> </list>
@ -1277,7 +1265,7 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1709725795643</updated> <updated>1709725795643</updated>
</task> </task>
<option name="localTasksCounter" value="363" /> <option name="localTasksCounter" value="373" />
<servers /> <servers />
</component> </component>
<component name="Vcs.Log.History.Properties"> <component name="Vcs.Log.History.Properties">
@ -1355,7 +1343,6 @@
<entry key="MAIN"> <entry key="MAIN">
<value> <value>
<State> <State>
<option name="BEK_SORT_TYPE" value="1" />
<option name="COLUMN_ID_WIDTH"> <option name="COLUMN_ID_WIDTH">
<map> <map>
<entry key="Table.Default.Author.ColumnIdWidth" value="115" /> <entry key="Table.Default.Author.ColumnIdWidth" value="115" />
@ -1371,8 +1358,21 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="text">
<value>
<list>
<option value="itemShelving" />
</list>
</value>
</entry>
</map> </map>
</option> </option>
<option name="GRAPH_OPTIONS">
<list>
<option value="Base" />
<option value="Standard" />
</list>
</option>
</State> </State>
</value> </value>
</entry> </entry>
@ -1405,8 +1405,6 @@
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<MESSAGE value="feat reservas #refs 6861" />
<MESSAGE value="feat issues refs #7636" />
<MESSAGE value="feat getAddress #refs 7622" /> <MESSAGE value="feat getAddress #refs 7622" />
<MESSAGE value="feat claimObservation refs #7541" /> <MESSAGE value="feat claimObservation refs #7541" />
<MESSAGE value="feat reservas refs #6861" /> <MESSAGE value="feat reservas refs #6861" />
@ -1415,9 +1413,7 @@
<MESSAGE value="feat: boxPickingPrepared refs #7855" /> <MESSAGE value="feat: boxPickingPrepared refs #7855" />
<MESSAGE value="feat: refactorResponse PasillerosItem refs #7827" /> <MESSAGE value="feat: refactorResponse PasillerosItem refs #7827" />
<MESSAGE value="version 24.40" /> <MESSAGE value="version 24.40" />
<MESSAGE value="feat: refs #7922 scanOrder" />
<MESSAGE value="feat: refs #8020 controlVehiculos" /> <MESSAGE value="feat: refs #8020 controlVehiculos" />
<MESSAGE value="feat: refs #5443 collectionFragmentChecker" />
<MESSAGE value="feat: refs #6861 reservas" /> <MESSAGE value="feat: refs #6861 reservas" />
<MESSAGE value="feat: refs #8175 crashlyticsAndUpdate" /> <MESSAGE value="feat: refs #8175 crashlyticsAndUpdate" />
<MESSAGE value="feat: refs #7266 printItem" /> <MESSAGE value="feat: refs #7266 printItem" />
@ -1428,9 +1424,13 @@
<MESSAGE value="feat: refs #8176 refactorSearchDialog" /> <MESSAGE value="feat: refs #8176 refactorSearchDialog" />
<MESSAGE value="feat: refs #8182 zoneClickable" /> <MESSAGE value="feat: refs #8182 zoneClickable" />
<MESSAGE value="feat: refs#8213 reservas" /> <MESSAGE value="feat: refs#8213 reservas" />
<MESSAGE value="feat: refs#6845 userInterface" />
<MESSAGE value="feat: refs #8022 kotlin versionCatalog" /> <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>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <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" applicationId = "es.verdnatura"
minSdk = 26 minSdk = 26
targetSdk = 33 // se deja con target si no Play Protect la bloquea targetSdk = 33 // se deja con target si no Play Protect la bloquea
versionCode = 358 versionCode = 374
versionName = "24.46" versionName = "24.51"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }
@ -30,6 +30,10 @@ android {
getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" 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 general = "package_name": "es.verdnatura"
//package de la app beta = "package_name": "es.verdnatura.sfusion" //package de la app beta = "package_name": "es.verdnatura.sfusion"
@ -75,8 +79,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_17 sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_21
} }
/* composeOptions { /* composeOptions {
kotlinCompilerExtensionVersion = "1.5.15" kotlinCompilerExtensionVersion = "1.5.15"

View File

@ -114,7 +114,7 @@ interface RoutesDao {
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertLoaded(routeLoaded: RouteLoaded) suspend fun insertLoaded(routeLoaded: RouteLoaded)
@Query("DELETE FROM routes WHERE created != :today") @Query("DELETE FROM routes WHERE dated != :today")
suspend fun deleteLoaded(today: String) suspend fun deleteLoaded(today: String)
} }

View File

@ -24,6 +24,7 @@ object ConstAndValues {
const val USER = "user" const val USER = "user"
const val PASSWORD = "password" const val PASSWORD = "password"
const val TOKEN = "token" const val TOKEN = "token"
const val TOKENMULTIMEDIA = "tokenMultimedia"
const val TTL = "ttl" const val TTL = "ttl"
const val TOKENCREATED = "tokenCreated" const val TOKENCREATED = "tokenCreated"
const val SECTORDESCRIP = "sectordescrip" const val SECTORDESCRIP = "sectordescrip"
@ -44,6 +45,7 @@ object ConstAndValues {
const val ENTRYOBSERVATIONORIGINAL = "ENTRYOBSERVATIONORIGINAL" const val ENTRYOBSERVATIONORIGINAL = "ENTRYOBSERVATIONORIGINAL"
const val ITEMPACKING = "itemPackingType" const val ITEMPACKING = "itemPackingType"
const val ITEMPACKINGFK = "itemPackingTypeFk" const val ITEMPACKINGFK = "itemPackingTypeFk"
const val ITEMPACKINGTYPEFILTER = "itemPackingTypeFilter"
const val BUYER = "buyernickname" const val BUYER = "buyernickname"
const val BUYERID = "buyerid" const val BUYERID = "buyerid"
const val WAGON = "wagon" 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.ItemPackingType
import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal
import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO 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.calidad.model.BuyerVO
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
import es.verdnatura.presentation.view.feature.collection.SalixSaleQuantity 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.DataUserSalix
import es.verdnatura.presentation.view.feature.login.model.LoginDevice 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.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.NameWorker
import es.verdnatura.presentation.view.feature.login.model.OperatorAdd 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.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.ItemBuy
import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelvingNewer 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.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.DepartmentMistake
import es.verdnatura.presentation.view.feature.workermistake.model.ExpeditionMistakeSalix import es.verdnatura.presentation.view.feature.workermistake.model.ExpeditionMistakeSalix
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
@ -144,8 +147,8 @@ interface SalixService {
@Query("filter") filter: String @Query("filter") filter: String
): Call<List<AddressLoses>> ): Call<List<AddressLoses>>
@POST("Applications/buy_getUltimate/execute-func") @POST("Applications/buy_getLastWithoutInventory/execute-func")
fun buyUltimate( fun buyGetLastWithoutInventory(
@Query("params") params: Any, @Query("schema") schema: String = "vn" @Query("params") params: Any, @Query("schema") schema: String = "vn"
): Call<Long> ): Call<Long>
@ -154,6 +157,11 @@ interface SalixService {
@Query("filter") filter: String @Query("filter") filter: String
): Call<List<BuyerVO>> ): Call<List<BuyerVO>>
@GET("itemTypes")
fun getBuyersByItemPackingType(
@Query("filter") filter: String
): Call<List<Buyer>>
@GET("Tickets/myLastModified") @GET("Tickets/myLastModified")
fun myLastModified( fun myLastModified(
@Query("filter") filter: String @Query("filter") filter: String
@ -527,6 +535,20 @@ interface SalixService {
@Query("shelvingFk") shelvingFkIn: Any, @Query("parking") parking: Any? = null @Query("shelvingFk") shelvingFkIn: Any, @Query("parking") parking: Any? = null
): Call<List<ItemShelvingNewer>> ): 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") @POST("Applications/sectorCollectionSaleGroup_add/execute-proc")
fun sectorCollectionSaleGroupAdd( fun sectorCollectionSaleGroupAdd(
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn" @Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
@ -706,10 +728,20 @@ interface SalixService {
@Query("params") params: Any, @Query("params") params: Any,
): Call<List<ItemUbicador>> ): Call<List<ItemUbicador>>
@GET("Shelvings") @GET("Shelvings/findOne")
fun itemShelvingGet( fun shelvingGet(
@Query("filter") filter: Any, @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") @POST("Applications/expedition_scan/execute-proc")
fun expeditionScan( fun expeditionScan(
@ -992,6 +1024,10 @@ interface SalixService {
fun getAccessTokenConfigs( fun getAccessTokenConfigs(
): Call<List<AccessConfigSalix>> ): Call<List<AccessConfigSalix>>
@GET("VnUsers/ShareToken")
fun getMultimediaToken(
): Call<MultimediaTokenResponse>
@POST("vnusers/renewToken") @POST("vnusers/renewToken")
fun renewToken( fun renewToken(
): Call<RenewToken> ): Call<RenewToken>
@ -1087,6 +1123,11 @@ interface SalixService {
@Query("filter") filter: String @Query("filter") filter: String
): Call<Any> ): Call<Any>
@GET("States/findOne")
fun getStateId(
@Query("filter") filter: String
): Call<JsonObject>
@POST("WorkerMistakes") @POST("WorkerMistakes")
fun workerMistakesAdd( fun workerMistakesAdd(
@Body workerMistake: WorkerMistakeSalix @Body workerMistake: WorkerMistakeSalix

View File

@ -15,6 +15,6 @@ class GetItemPrintItemUseCase(private val salixService: SalixService) {
} }
fun executeBuyUltimate(params: Any): Call<Long> { 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.text.InputType
import android.view.View import android.view.View
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.domain.toast
import es.verdnatura.presentation.view.component.CustomDialogList import es.verdnatura.presentation.view.component.CustomDialogList
class PrinterDialogManager(private val context: Context) { class PrinterDialogManager(private val context: Context) {
fun showPrintDialog( fun showPrintDialog(
item: Long, item: Long, itemName: String, onPrintClick: (Long, String, Int?, Int) -> Unit
itemName: String,
onPrintClick: (Long, String, Int?, Int) -> Unit
) { ) {
val customDialogList = CustomDialogList(context) val customDialogList = CustomDialogList(context)
customDialogList.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER) 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)) customDialogList.setTitle(context.getString(R.string.itemName, item, itemName))
.setOkButton(context.getString(R.string.printQr)) { .setOkButton(context.getString(R.string.printQr)) {
handlePrintClick(item, customDialogList, onPrintClick, "qr") handlePrintClick(item, customDialogList, onPrintClick, "qr")
}
.setOkTwoButton(context.getString(R.string.printBarcode)) {
handlePrintClick(item, customDialogList, onPrintClick, "barcode")
}
.setKoButton(context.getString(R.string.cancel)) {
customDialogList.dismiss() customDialogList.dismiss()
} }.setOkTwoButton(context.getString(R.string.printBarcode)) {
.setHintValueThree(context.getString(R.string.labelNumber)) handlePrintClick(item, customDialogList, onPrintClick, "barcode")
.setHintValue(context.getString(R.string.optionalPacking)) customDialogList.dismiss()
.setTextThree(View.VISIBLE)
}.setKoButton(context.getString(R.string.cancel)) {
customDialogList.dismiss()
}.setHintValueThree(context.getString(R.string.labelNumber))
.setHintValue(context.getString(R.string.optionalPacking)).setTextThree(View.VISIBLE)
.show() .show()
customDialogList.getFocusThree() customDialogList.getFocusThree()
} }
@ -41,6 +38,7 @@ class PrinterDialogManager(private val context: Context) {
onPrintClick: (Long, String, Int?, Int) -> Unit, onPrintClick: (Long, String, Int?, Int) -> Unit,
labelType: String labelType: String
) { ) {
try {
onPrintClick( onPrintClick(
item, item,
labelType, labelType,
@ -51,6 +49,10 @@ class PrinterDialogManager(private val context: Context) {
) 1 else customDialogList.getValueOptional().toInt() ) 1 else customDialogList.getValueOptional().toInt()
) )
customDialogList.dismiss() 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.Sale
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
import es.verdnatura.presentation.view.feature.smarttag.model.SmartTag 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.ItemUbicador
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
@ -167,6 +168,10 @@ interface OnVisibleClickListenerNew {
fun onVisibleClickListener(item: ItemUbicador) fun onVisibleClickListener(item: ItemUbicador)
} }
interface OnVisibleClickListener6869 {
fun onVisibleClickListener(item: ItemShelving)
}
interface OnVisibleInventoryClickListener { interface OnVisibleInventoryClickListener {
fun onVisibleInventoryClickListener(item: ItemInventoryParking) fun onVisibleInventoryClickListener(item: ItemInventoryParking)
} }
@ -179,6 +184,10 @@ interface OnMoreClickListenerNew {
fun onMoreClickListener(item: ItemUbicador) fun onMoreClickListener(item: ItemUbicador)
} }
interface OnMoreClickListener6869 {
fun onMoreClickListener(item: ItemShelving)
}
interface OnTruckClickListener { interface OnTruckClickListener {
fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String) fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String)
} }

View File

@ -121,7 +121,8 @@ class AjustesFragment :
binding.searchableRecyclerView.setAdapter(adapter, listNames) binding.searchableRecyclerView.setAdapter(adapter, listNames)
binding.searchableRecyclerView.visibility = View.VISIBLE 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() { private fun setToolBar() {

View File

@ -3,6 +3,7 @@ package es.verdnatura.presentation.view.feature.articulo.fragment
import android.content.Intent import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.text.InputType import android.text.InputType
import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.View.GONE import android.view.View.GONE
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
@ -12,6 +13,7 @@ import com.google.gson.Gson
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.databinding.FragmentItemCardBinding import es.verdnatura.databinding.FragmentItemCardBinding
import es.verdnatura.domain.ConstAndValues.PRINTERFK import es.verdnatura.domain.ConstAndValues.PRINTERFK
import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
import es.verdnatura.domain.notNull import es.verdnatura.domain.notNull
import es.verdnatura.domain.toast 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.ItemCardVO
import es.verdnatura.presentation.view.feature.articulo.model.ItemPackingType import es.verdnatura.presentation.view.feature.articulo.model.ItemPackingType
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import org.json.JSONObject
class ItemCardFragment( class ItemCardFragment(
var itemFk: String = "" var itemFk: String = ""
@ -56,7 +59,7 @@ class ItemCardFragment(
private var quantityToDiscard = 0 private var quantityToDiscard = 0
private var itemInfoG: ItemCardVO? = null private var itemInfoG: ItemCardVO? = null
private var positionToReturnY = 0 private var positionToReturnY = 0
private var originalScan: String? = null private var originalScan: Long? = null
private var buyToPrint: Long? = null private var buyToPrint: Long? = null
companion object { companion object {
@ -108,12 +111,12 @@ class ItemCardFragment(
iconHistory.tooltipText = getTooltip(R.drawable.ic_history_black_24dp) iconHistory.tooltipText = getTooltip(R.drawable.ic_history_black_24dp)
iconSalix.tooltipText = getTooltip(R.drawable.ic_logo_salix) iconSalix.tooltipText = getTooltip(R.drawable.ic_logo_salix)
// Tarea 7266 // 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(iconSalix)
listIcons.add(iconReload) listIcons.add(iconReload)
listIcons.add(iconHistory) listIcons.add(iconHistory)
// listIcons.add(iconPrint) listIcons.add(iconPrint)
binding.mainToolbar.toolbarIcons.adapter = binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener { ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
@ -128,7 +131,7 @@ class ItemCardFragment(
val printerDialogManager = PrinterDialogManager(requireContext()) val printerDialogManager = PrinterDialogManager(requireContext())
printerDialogManager.showPrintDialog( printerDialogManager.showPrintDialog(
itemInfoG!!.id.toLong(), buyToPrint ?: itemInfoG!!.id.toLong(),
itemInfoG?.longName ?: "" itemInfoG?.longName ?: ""
) { id, labelType, copies, packing -> ) { id, labelType, copies, packing ->
printItem(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?) { private fun printItem(id: Long, labelType: String, packing: Int?, copies: Int?) {
try { try {
viewModel.printItem( viewModel.printItem(
reportName = "LabelBuy", reportName = "LabelBuy",
printerFk = mobileApplication.dataStoreApp.readDataStoreKey<Int>( printerFk = mobileApplication.dataStoreApp.readDataStoreKey<Int>(
@ -191,7 +193,12 @@ class ItemCardFragment(
), ),
userFk = mobileApplication.userId!!, userFk = mobileApplication.userId!!,
priority = "normal", 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) { } catch (ex: Exception) {
ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true) ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
@ -200,8 +207,39 @@ class ItemCardFragment(
hideKeyboard() 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.requestFocus()
binding.editItemFk.setOnEditorActionListener { _, actionId, _ -> binding.editItemFk.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) { if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
@ -209,9 +247,9 @@ class ItemCardFragment(
try { try {
originalScan = itemScanValue( originalScan = itemScanValue(
binding.editItemFk.text.toString(), arrayOf("buy"), "more" binding.editItemFk.text.toString(), arrayOf("buy"), "more"
).toString() ).toString().toLong()
getItemCard( getItemCard(
originalScan!! originalScan!!.toString()
) )
} catch (ex: Exception) { } catch (ex: Exception) {
ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true) ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
@ -259,19 +297,17 @@ class ItemCardFragment(
binding.itemcardLayout.visibility = View.VISIBLE binding.itemcardLayout.visibility = View.VISIBLE
setItemCard(it) setItemCard(it)
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
/* Tarea 7266 // Tarea 7266
if (originalScan == null || it.id == originalScan!!.toInt()) { if (originalScan == null || it.id == originalScan!!.toInt()) {
viewModel.buyUltimate( viewModel.buyGetLastWithoutInventory(
itemFk = it.id, itemFk = it.id,
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey( warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
WAREHOUSEFK WAREHOUSEFK
), )
dated = LocalDate.now()
.format(DateTimeFormatter.ofPattern("yyyy-dd-MM"))
) )
} else { } else {
buyToPrint = originalScan!!.toLong() buyToPrint = originalScan!!.toLong()
}*/ }
} else { } else {
binding.itemcardLayout.visibility = GONE binding.itemcardLayout.visibility = GONE
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemCard) binding.mainToolbar.toolbarTitle.text = getString(R.string.itemCard)

View File

@ -239,10 +239,15 @@ class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
}) })
} }
fun buyUltimate( fun buyGetLastWithoutInventory(
itemFk: Int, warehouseFk: Int, dated: String itemFk: Int, warehouseFk: Int,
) { ) {
salix.buyUltimate(params = arrayListOf(itemFk, warehouseFk, dated).formatWithQuotes()) salix.buyGetLastWithoutInventory(
params = arrayListOf(
itemFk,
warehouseFk
).formatWithQuotes()
)
.enqueue(object : SalixCallback<Long>(context) { .enqueue(object : SalixCallback<Long>(context) {
override fun onSuccess(response: Response<Long>) { override fun onSuccess(response: Response<Long>) {
_buyUltimateResponse.value = response.body() _buyUltimateResponse.value = response.body()

View File

@ -27,3 +27,21 @@ class ItemBuyerVO(
class ItemBuyerListVO( class ItemBuyerListVO(
var list: List<ItemBuyerVO> = listOf() 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 (sale.isPicked == 1) {
if (type == PREPARED) { if (type == PREPARED) {
contentLayout.setBackgroundColor( contentLayout.setBackgroundColor(
if (sale.saleGroupFk == null) {
getColor( getColor(
context!!, R.color.verdnatura_orange_salix 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 { } else {
contentLayout.setBackgroundColor( contentLayout.setBackgroundColor(

View File

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

View File

@ -107,6 +107,7 @@ class CollectionFragmentChecker(
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
scanRequest() scanRequest()
viewModel.setPausedState(false)
} }
override fun init() { override fun init() {
@ -172,8 +173,7 @@ class CollectionFragmentChecker(
binding.mainToolbar.toolbarIcons.adapter = binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener { ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) { override fun onOptionsItemSelected(item: Drawable) {
if (collection.tickets.isNotEmpty()) if (collection.tickets.isNotEmpty()) when (item) {
when (item) {
iconViewCollection.drawable -> getCollection() iconViewCollection.drawable -> getCollection()
iconPrint.drawable -> print() iconPrint.drawable -> print()
iconAdd.drawable -> addItem() iconAdd.drawable -> addItem()
@ -237,8 +237,6 @@ class CollectionFragmentChecker(
} }
private fun takeActionPrevia(customDialogList: CustomDialogList) { private fun takeActionPrevia(customDialogList: CustomDialogList) {
println("previaaaa ${customDialogList.getValue()}")
ma.hideKeyboard(customDialogList.getEditText()) ma.hideKeyboard(customDialogList.getEditText())
try { try {
val saleGroupScanned = itemScanValue( val saleGroupScanned = itemScanValue(
@ -383,11 +381,9 @@ class CollectionFragmentChecker(
customDialogWarning.setTitle(getString(R.string.ticketPickup)) customDialogWarning.setTitle(getString(R.string.ticketPickup))
customDialogWarning.setDescription( customDialogWarning.setDescription(
getString( getString(
R.string.ticketPickupDescr, R.string.ticketPickupDescr, binding.mainToolbar.toolbarTitle.text
binding.mainToolbar.toolbarTitle.text
) )
) ).setOkButton(getString(R.string.aware)) {
.setOkButton(getString(R.string.aware)) {
customDialogWarning.dismiss() customDialogWarning.dismiss()
} }
customDialogWarning.show() customDialogWarning.show()
@ -399,13 +395,20 @@ class CollectionFragmentChecker(
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
context.showToastCenterWithBackground( context.showToastCenterWithBackground(
getString( getString(
R.string.parkingIn, R.string.parkingIn, ticketScanTxt
ticketScanTxt
) )
) )
} }
} }
loadTicketSetState.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
"${it.ticketFk}: ${if (it.code == "CHECKED") "Revisado" else "Revisando"}".toast(
requireContext()
)
}
}
loadPrint.observe(viewLifecycleOwner) { event -> loadPrint.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>( (getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
@ -469,7 +472,7 @@ class CollectionFragmentChecker(
loadIncQuantity.observe(viewLifecycleOwner) { event -> loadIncQuantity.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
incresaseSuccesful() incresaseSuccesful(it)
} }
} }
@ -566,17 +569,25 @@ class CollectionFragmentChecker(
compareBy({ it.isControlled }, { it.picked }) compareBy({ it.isControlled }, { it.picked })
)*/ )*/
saleAdapter = SaleAdapter( saleAdapter = SaleAdapter(myGroupList as MutableList,
myGroupList as MutableList,
pasillerosItemClickListener!!, pasillerosItemClickListener!!,
object : OnQuantityClickListener { object : OnQuantityClickListener {
override fun onQuantityClick(sale: SaleVO) { override fun onQuantityClick(sale: SaleVO) {
myGroupList.forEachIndexed { index, 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) { if (saleVO.saleFk == sale.saleFk) {
showQuantityDialog(index) showQuantityDialog(index)
} }
} }
}
} }
}, },
@ -638,8 +649,7 @@ class CollectionFragmentChecker(
} }
} }
} })
)
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.fragmentSacadorCollections.adapter = saleAdapter binding.fragmentSacadorCollections.adapter = saleAdapter
@ -827,7 +837,8 @@ class CollectionFragmentChecker(
/* lm!!.scrollToPositionWithOffset(myPosition, 0) /* lm!!.scrollToPositionWithOffset(myPosition, 0)
} else {*/ } else {*/
lm!!.scrollToPositionWithOffset( lm!!.scrollToPositionWithOffset(
if (myGroupList[myPosition].isControlled == "1") myPosition + 1 else myPosition, //Se modifica posicion revisor
if (myGroupList[myPosition].isControlled == "1") myPosition else myPosition,
0 0
) )
//} //}
@ -992,24 +1003,64 @@ class CollectionFragmentChecker(
if (totalMark == sales.size) { if (totalMark == sales.size) {
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT) getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
// saleAdapter!!.notifyDataSetChanged() // saleAdapter!!.notifyDataSetChanged()
if (canChangeState) changeTicketState() if (canChangeState) changeTicketState()
} else { } else {
if (allTicketsChecked) { if (allTicketsChecked) {
sales.forEach { /* sales.forEach {
if (it.isControlled == "0") { if (it.isControlled == "0") {
viewModel.ticketStateTodaySetState( viewModel.ticketStateTodaySetState(
ticketFk = it.ticketFk.toInt(), state = "ON_CHECKING" 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 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) { private fun showQuantityDialog(position: Int) {
try { try {
customDialogThreeButtons.setDescription(getString(R.string.itemSaleQuantity)) customDialogThreeButtons.setDescription(getString(R.string.itemSaleQuantity))
@ -1037,22 +1088,51 @@ class CollectionFragmentChecker(
} }
} }
private fun incresaseSuccesful() { private fun incresaseSuccesful(saleFk: Number) {
try {
sales[positionIncreaseQuantity].quantity = quantityIncrease
// 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) { } catch (e: Exception) {
e.message!!.toast(requireContext()) e.message!!.toast(requireContext())
} }
saleAdapter?.notifyDataSetChanged()
sales[positionIncreaseQuantity].originalQuantity = quantityIncrease
} }
private fun increaseQuantity(position: Int, quantity: Int) { private fun increaseQuantity(position: Int, quantity: Int) {
positionIncreaseQuantity = position positionIncreaseQuantity = position
quantityIncrease = quantity quantityIncrease = quantity
viewModel.collectionIncreaseQuantitySalix( 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) { if (isTicket) {
val labelDialogHelper = LabelDialogHelper(requireContext()) val labelDialogHelper = LabelDialogHelper(requireContext())
labelDialogHelper.showLabelDialog( labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
onItemSelected = { labelCount ->
viewModel.collectionStickerPrint( viewModel.collectionStickerPrint(
collectionFk = collection.collectionFk, collectionFk = collection.collectionFk, labelCount = labelCount
labelCount = labelCount
) )
val printerName = val printerName =
mobileApplication.dataStoreApp.readDataStoreKey<String>(PRINTERNAME) mobileApplication.dataStoreApp.readDataStoreKey<String>(PRINTERNAME)
(getString(R.string.Imprimiendo) + printerName).toast(requireContext()) (getString(R.string.Imprimiendo) + printerName).toast(requireContext())
} })
)
} else { } else {
viewModel.collectionStickerPrint( viewModel.collectionStickerPrint(
@ -1162,7 +1239,7 @@ class CollectionFragmentChecker(
originalQuantity = null, originalQuantity = null,
quantity = null, quantity = null,
rgb = null, rgb = null,
saleFk = value[0].saleFk, saleFk = 0,
saleGroupFk = value[0].saleGroupFk, saleGroupFk = value[0].saleGroupFk,
isPreControlled = value[0].isPreControlled, isPreControlled = value[0].isPreControlled,
isPrepared = value[0].isPrepared, isPrepared = value[0].isPrepared,

View File

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

View File

@ -7,8 +7,10 @@ import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.text.InputType import android.text.InputType
import android.util.Log.d
import android.view.KeyEvent import android.view.KeyEvent
import android.view.View import android.view.View
import android.view.View.VISIBLE
import android.view.WindowManager import android.view.WindowManager
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
@ -71,6 +73,7 @@ import org.json.JSONObject
3-VERIFICAR COLECCIÓN 3-VERIFICAR COLECCIÓN
4-IMPRIMIR 4-IMPRIMIR
5-EL SACADOR PUEDE MARCAR PREVIA, EL PRESACADOR NO. 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: variables:
isVerifiedCollection isVerifiedCollection
@ -107,6 +110,7 @@ class CollectionFragmentPickerPreviousNew(
private lateinit var myGroupList: List<Sale> private lateinit var myGroupList: List<Sale>
private var quantityReserveToCheckItemScan = 0 private var quantityReserveToCheckItemScan = 0
private var isVerifiedCollection = false private var isVerifiedCollection = false
private var stateCodeId: Number? = null
companion object { companion object {
fun newInstance( fun newInstance(
@ -133,19 +137,18 @@ class CollectionFragmentPickerPreviousNew(
} }
override fun init() { override fun init() {
println("Sacando test")
customDialogList = CustomDialogList(requireContext()) customDialogList = CustomDialogList(requireContext())
customDialogInput = CustomDialogInput(requireContext()) customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext()) customDialog = CustomDialog(requireContext())
customDialogThreeButtons = CustomDialogThreeButtons(requireContext()) customDialogThreeButtons = CustomDialogThreeButtons(requireContext())
customDialogThreeButtonsQuantity = CustomDialogThreeButtons(requireContext()) customDialogThreeButtonsQuantity = CustomDialogThreeButtons(requireContext())
ma.hideBottomNavigation(View.GONE) ma.hideBottomNavigation(View.GONE)
println("type $type")
setEvents() setEvents()
setToolBar() setToolBar()
viewModel.collectionTicketGetSalix( viewModel.collectionTicketGetSalix(
collection.collectionFk, print = false collection.collectionFk, print = false
) )
viewModel.getStateId(if (type == PREITEMPICKERTEST) "OK PREVIOUS" else "PREPARED")
super.init() super.init()
} }
@ -334,7 +337,6 @@ class CollectionFragmentPickerPreviousNew(
//lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0) //lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0)
setTotalLines() setTotalLines()
} else { } else {
println("updating")
updateScreen() 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 -> loadResponseCode.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
@ -493,8 +509,7 @@ class CollectionFragmentPickerPreviousNew(
} }
private fun showDeleteItemShelving(sale: Sale) { private fun showDeleteItemShelving(sale: Sale) {
customDialog.setTitle(getString(R.string.deleteSale)) customDialog.setTitle(getString(R.string.deleteSale)).setDescription(
.setDescription(
getString(R.string.deleteSaleDescrip) + getString( getString(R.string.deleteSaleDescrip) + getString(
R.string.sure R.string.sure
) )
@ -539,11 +554,24 @@ class CollectionFragmentPickerPreviousNew(
//Se busca la matricula en las lineas //Se busca la matricula en las lineas
for (indice in myGroupList.indices) { for (indice in myGroupList.indices) {
//como cuando es presacador no hay parent no entrará //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 isFoundSale = true
storedPosition = indice storedPosition = indice
viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt()) viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt())
setStateSaleGroup(txtscan.toInt())
myGroupList[indice].stateCode =
if (myGroupList[indice].stateCode == "PREPARED") {
"OK PREVIOUS"
} else {
"PREPARED"
}
saleAdapter!!.notifyDataSetChanged()
break break
}
} catch (ex: Exception) {
d("Verdnatura", "not find")
} }
if (myGroupList[indice].isPicked != 1 && myGroupList[indice].code != null && myGroupList[indice].code!!.uppercase() == txtscan.uppercase()) { if (myGroupList[indice].isPicked != 1 && myGroupList[indice].code != null && myGroupList[indice].code!!.uppercase() == txtscan.uppercase()) {
isFoundSale = true isFoundSale = true
@ -562,6 +590,7 @@ class CollectionFragmentPickerPreviousNew(
for (indice in sales.indices) { for (indice in sales.indices) {
if (sales[indice].saleGroupFk != null && sales[indice].saleGroupFk == saleGroupScanned.toInt()) { if (sales[indice].saleGroupFk != null && sales[indice].saleGroupFk == saleGroupScanned.toInt()) {
viewModel.itemShelvingSaleSetSaleGroup(saleGroupScanned.toInt()) viewModel.itemShelvingSaleSetSaleGroup(saleGroupScanned.toInt())
setStateSaleGroup(saleGroupScanned.toInt())
storedPosition = indice storedPosition = indice
mpok!!.start() mpok!!.start()
return true return true
@ -808,15 +837,13 @@ class CollectionFragmentPickerPreviousNew(
showQuestionUbicationEmpty(position, quantity) showQuestionUbicationEmpty(position, quantity)
}.setOkButtonTwo(getString(R.string.no)) { }.setOkButtonTwo(getString(R.string.no)) {
scanRequest() scanRequest()
customDialogThreeButtonsQuantity.dismiss() customDialogThreeButtonsQuantity.dismiss()/* viewModel.itemShelvingSaleExists(
/* viewModel.itemShelvingSaleExists(
myGroupList[position].itemShelvingSaleFk, myGroupList[position].itemShelvingSaleFk,
myGroupList[position].itemShelvingFk, myGroupList[position].itemShelvingFk,
position, position,
quantity quantity
)*/ )*/
markLine(position, quantity, true) markLine(position, quantity, true)/* if (quantity == 0) {
/* if (quantity == 0) {
/* viewModel.itemShelvingGet( /* viewModel.itemShelvingGet(
myGroupList[position].itemShelvingFk, myGroupList[position].itemShelvingFk,
@ -925,8 +952,7 @@ class CollectionFragmentPickerPreviousNew(
ticketSelected, ticketSelected,
saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get( saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get(
0 0
)?.saleGroupFk )?.saleGroupFk ?: 0,
?: 0,
sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey<Int>( sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey<Int>(
SECTORFK SECTORFK
) )
@ -952,6 +978,7 @@ class CollectionFragmentPickerPreviousNew(
R.string.addItemQuantity, sale.itemFk R.string.addItemQuantity, sale.itemFk
) )
) )
customDialogThreeButtonsQuantity.setCustomDialogValue(VISIBLE)
customDialogThreeButtonsQuantity.setOkButtonAdd(text = getString(R.string.add)) { customDialogThreeButtonsQuantity.setOkButtonAdd(text = getString(R.string.add)) {
ticketSelected = sale.ticketFk ticketSelected = sale.ticketFk
if (customDialogThreeButtonsQuantity.getValue().isNotEmpty()) { if (customDialogThreeButtonsQuantity.getValue().isNotEmpty()) {
@ -961,8 +988,7 @@ class CollectionFragmentPickerPreviousNew(
ticketSelected = sale.ticketFk, ticketSelected = sale.ticketFk,
saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get( saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get(
0 0
)?.saleGroupFk )?.saleGroupFk ?: 0,
?: 0,
sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey<Int>( sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey<Int>(
SECTORFK SECTORFK
) )
@ -1003,8 +1029,6 @@ class CollectionFragmentPickerPreviousNew(
} }
private fun setTotalLines() { private fun setTotalLines() {
println("total Mark ${myGroupList.count { it.isPicked == 1 }}")
println("total size ${myGroupList.size}")
val totalMark = myGroupList.count { it.isPicked == 1 } val totalMark = myGroupList.count { it.isPicked == 1 }
binding.mainToolbar.toolbarTitle.text = binding.mainToolbar.toolbarTitle.text =
if (collection.collectionFk != 0) collection.collectionFk.toString() else "" if (collection.collectionFk != 0) collection.collectionFk.toString() else ""
@ -1019,17 +1043,34 @@ class CollectionFragmentPickerPreviousNew(
ticketFk = it.toInt(), state = "PREPARED" ticketFk = it.toInt(), state = "PREPARED"
) )
} }
//setStateSaleGroup()
} }
PREITEMPICKERTEST -> { PREITEMPICKERTEST -> {
//viewModel.saleTrackingAddPrevOK(collection.collectionFk) viewModel.saleTrackingAddPrevOK(collection.collectionFk)
viewModel.saleTrackingSectorCollectionAddPrevOK(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) { private fun showScanner(index: Int, sale: Sale) {
customDialogInput.getEditText().inputType = InputType.TYPE_CLASS_TEXT customDialogInput.getEditText().inputType = InputType.TYPE_CLASS_TEXT
customDialogInput.setTitle("" + sale.itemFk) customDialogInput.setTitle("" + sale.itemFk)
@ -1157,8 +1198,7 @@ class CollectionFragmentPickerPreviousNew(
).toString() ).toString()
) )
val foundTicketInCollection = val foundTicketInCollection = collection.tickets.find {
collection.tickets.find {
it.ticketFk == customDialogList.getValue().toInt() it.ticketFk == customDialogList.getValue().toInt()
} }
if (foundTicketInCollection != null) { if (foundTicketInCollection != null) {
@ -1217,17 +1257,14 @@ class CollectionFragmentPickerPreviousNew(
} }
if (isTicket) { if (isTicket) {
val labelDialogHelper = LabelDialogHelper(requireContext()) val labelDialogHelper = LabelDialogHelper(requireContext())
labelDialogHelper.showLabelDialog( labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
onItemSelected = { labelCount ->
viewModel.collectionStickerPrint( viewModel.collectionStickerPrint(
collectionFk = collection.collectionFk, collectionFk = collection.collectionFk, labelCount = labelCount
labelCount = labelCount
) )
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>( (getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
PRINTERNAME PRINTERNAME
)).toast(requireContext()) )).toast(requireContext())
} })
)
} else { } else {
viewModel.collectionStickerPrint( viewModel.collectionStickerPrint(
collectionFk = collection.collectionFk, null collectionFk = collection.collectionFk, null

View File

@ -161,7 +161,7 @@ class CollectionFragmentPreChecker(
collection.collectionFk, collection.collectionFk,
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
print = "0", print = "0",
type "PREVIOUS_CONTROL"
) )
} }
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -383,7 +383,7 @@ class CollectionFragmentPreChecker(
viewModel.getSales( viewModel.getSales(
binding.scanInput.text.toString().toInt(), binding.scanInput.text.toString().toInt(),
print = "0", print = "0",
source = type source = "PREVIOUS_CONTROL"
) )
//findSale(binding.scanInput.text.toString()) //findSale(binding.scanInput.text.toString())
@ -419,7 +419,7 @@ class CollectionFragmentPreChecker(
viewModel.getSales( viewModel.getSales(
binding.scanInput.toLong(), binding.scanInput.toLong(),
print = "0", print = "0",
source = type source = "PREVIOUS_CONTROL"
) )
} catch (ex: Exception) { } catch (ex: Exception) {
ma.messageWithSound( ma.messageWithSound(
@ -1743,7 +1743,7 @@ class CollectionFragmentPreChecker(
collection.collectionFk, collection.collectionFk,
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK), mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
print = "0", print = "0",
type type = "PREVIOUS_CONTROL"
) )
} else { } else {

View File

@ -188,6 +188,10 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
get() = _responseIncQuantity get() = _responseIncQuantity
val loadIncQuantity: LiveData<Event<ResponseItemVO>> = _responseIncQuantity.map { Event(it) } 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>() } private val _mistakeList by lazy { MutableLiveData<MistakeTypeListVO>() }
val mistakeList: LiveData<MistakeTypeListVO> val mistakeList: LiveData<MistakeTypeListVO>
get() = _mistakeList get() = _mistakeList
@ -211,6 +215,16 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
val responseSaleAddPrevOK: LiveData<ResponseItemVO> val responseSaleAddPrevOK: LiveData<ResponseItemVO>
get() = _responseSaleAddPrevOK 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( fun getSales(
collectionFk: Number, print: String, source: String 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( fun itemPlacementSupplyAiming(
shelvingFk: String, quantity: Int, itemFk: Int shelvingFk: String, quantity: Int, itemFk: Int
) { ) {
@ -626,7 +669,7 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
} }
fun itemShelvingSaleSetSaleGroup( fun itemShelvingSaleSetSaleGroup(
saleGroupFk: Int saleGroupFk: Int,
) { ) {
salix.itemShelvingSaleSetSaleGroup( salix.itemShelvingSaleSetSaleGroup(
arrayListOf( arrayListOf(
@ -642,6 +685,7 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
override fun onSuccess(response: Response<Unit>) { override fun onSuccess(response: Response<Unit>) {
_responseItemShelvingSaleGroup.value = ResponseItemVO(isError = false) _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( fun collectionIncreaseQuantitySalix(
saleFk: Int, quantity: String saleFk: Int, quantity: String
) { ) {
@ -797,7 +851,9 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
salix.saleMistakeAdd( salix.saleMistakeAdd(
SaleMistakeSalix( SaleMistakeSalix(
userFk = (context as MobileApplication).userId!!, saleFk = saleFk, typeFk = typeFk userFk = (context as MobileApplication).userId!!,
saleFk = saleFk,
typeFk = typeFk
) )
).enqueue(object : SalixCallback<Any>(context) { ).enqueue(object : SalixCallback<Any>(context) {
override fun onError(t: Throwable) { override fun onError(t: Throwable) {
@ -988,22 +1044,11 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
) { ) {
salix.saleTrackingSectorCollectionAddPrevOK(arrayListOf(sectorCollectionFk)) salix.saleTrackingSectorCollectionAddPrevOK(arrayListOf(sectorCollectionFk))
.enqueue(object : SalixCallback<Any>(context) { .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>) { override fun onSuccess(response: Response<Any>) {
_responseSaleAddPrevOK.value = ResponseItemVO(
isError = false, errorMessage = "" + getMessageFromAllResponse( _responseSaleReserveAddPrevOK.value = true
nameofFunction(this), response.message()
)
)
} }
}) })
} }

View File

@ -31,9 +31,14 @@ class RouteAdapter(
var prevCreated = "" var prevCreated = ""
for (route in list) { for (route in list) {
if (route.created.toString() != prevCreated) { //tarea 7146
/* if (route.created.toString() != prevCreated) {
route.header = true route.header = true
prevCreated = route.created.toString() prevCreated = route.created.toString()
}*/
if (route.dated.toString() != prevCreated) {
route.header = true
prevCreated = route.dated.toString()
} }
} }
return list return list
@ -90,7 +95,9 @@ class RouteAdapter(
if (item.header) { if (item.header) {
headerRouteLayout.visibility = View.VISIBLE headerRouteLayout.visibility = View.VISIBLE
headerRoute.text = toDateString(item.created) //tarea7146
headerRoute.text = toDateString(item.dated)
// headerRoute.text = toDateString(item.created)
} else { } else {
headerRouteLayout.visibility = View.GONE headerRouteLayout.visibility = View.GONE

View File

@ -289,7 +289,8 @@ class RoutesFragment(
viewModel.getDataFromExpedition( viewModel.getDataFromExpedition(
routeId = routeId.toLong(), routeId = routeId.toLong(),
expeditionId = expedition.code!!.toLong(), expeditionId = expedition.code!!.toLong(),
landed = routeItem!!.created.toString() // landed = routeItem!!.created.toString()
landed = routeItem!!.dated.toString()
) )
} }
customDialogList.dismiss() customDialogList.dismiss()

View File

@ -340,16 +340,8 @@ class SummaryFragment(
viewModel.getExpeditionFromRoute(routeSelected) viewModel.getExpeditionFromRoute(routeSelected)
} }
println("address $addressFkSelected")
println("address isScanning $isScanning")
if (addressFkSelected != item.addressFk && isScanning) { if (addressFkSelected != item.addressFk && isScanning) {
println("address isScanning $isScanning")
println("address setSTATE $state")
println("address address $addressFkSelected")
setExpeditionsState(myList, state, addressFkSelected) setExpeditionsState(myList, state, addressFkSelected)
} }
addressFkSelected = item.addressFk addressFkSelected = item.addressFk
isScanning = false isScanning = false

View File

@ -429,15 +429,15 @@ class TicketsFragment : BaseFragment<FragmentTicketsBinding, DeliveryViewModel>(
override fun onItemButtonCMRRowClickListener( override fun onItemButtonCMRRowClickListener(
item: Ticket item: Ticket
) { ) {
ma.onPasillerosItemClickListener( ma.onPasillerosItemClickListener(
PasillerosItemVO( PasillerosItemVO(
title = R.string.titleWebViewer, title = R.string.titleWebViewer,
), entryPoint = Gson().toJson( ), entryPoint = Gson().toJson(
mutableMapOf( mutableMapOf(
"entryPoint" to route.id, "web" to "${ "entryPoint" to route.id,
"web" to "${
mobileApplication.dataStoreApp.getServerSalix() mobileApplication.dataStoreApp.getServerSalix()
}/api/Routes/${item.cmrFk}/cmr?access_token=${ }/api/Cmrs/${item.cmrFk}/print?access_token=${
mobileApplication.dataStoreApp.readDataStoreKey<String>( mobileApplication.dataStoreApp.readDataStoreKey<String>(
TOKEN TOKEN
) )

View File

@ -168,7 +168,7 @@ class RouteInfo(
@SerializedName(value = "driver", alternate = ["workerUserName"]) @SerializedName(value = "driver", alternate = ["workerUserName"])
var driver: String?, var driver: String?,
var hour: String?, var hour: String?,
@TypeConverters(MapTypeConverter::class) var created: Date, @TypeConverters(MapTypeConverter::class) var dated: Date,
var m3: Double, var m3: Double,
@SerializedName(value = "numberPlate", alternate = ["vehiclePlateNumber"]) @SerializedName(value = "numberPlate", alternate = ["vehiclePlateNumber"])
var numberPlate: String?, var numberPlate: String?,
@ -184,6 +184,6 @@ class RouteInfo(
var agencyModeFk: Int var agencyModeFk: Int
) : Serializable { ) : Serializable {
override fun toString(): String { 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 com.google.gson.Gson
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.databinding.FragmentShelvinglogBinding import es.verdnatura.databinding.FragmentShelvinglogBinding
import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
import es.verdnatura.domain.notNull import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.itemScanValue
import es.verdnatura.presentation.view.component.CustomDialog import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.historicoshelvinglog.adapter.ShelvingLogAdapter import es.verdnatura.presentation.view.feature.historicoshelvinglog.adapter.ShelvingLogAdapter
import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.LogType import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.LogType
@ -23,6 +25,7 @@ class ShelvingLogFragment(
) { ) {
private var adapter: ShelvingLogAdapter? = null private var adapter: ShelvingLogAdapter? = null
private var itemScan = "" private var itemScan = ""
private var isitemFkScanned = false
companion object { companion object {
fun newInstance(entryPoint: String, logType: LogType) = fun newInstance(entryPoint: String, logType: LogType) =
@ -45,14 +48,30 @@ 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 binding.mainToolbar.toolbarTitle.text = title
} else { } else {
binding.mainToolbar.toolbarTitle.text = title binding.mainToolbar.toolbarTitle.text = title
binding.scanInput.setHint(getString(R.string.scanParkingTxt)) 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 (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
if (binding.scanInput.text.toString().isNotEmpty()) { if (binding.scanInput.text.toString().isNotEmpty()) {
binding.scanInput.setText(
itemScanValue(
binding.scanInput.text.toString(), arrayOf("buy"), "id"
).toString()
)
when (logType) { when (logType) {
LogType.SHELVING -> { LogType.SHELVING -> {
viewModel.shelvings((binding.scanInput.text.toString())) viewModel.shelvings((binding.scanInput.text.toString()))
@ -69,6 +93,9 @@ class ShelvingLogFragment(
} }
LogType.PREVIOUS -> viewModel.getParkingId((binding.scanInput.text.toString())) LogType.PREVIOUS -> viewModel.getParkingId((binding.scanInput.text.toString()))
LogType.ITEMSHELVING -> {
viewModel.shelvings((binding.scanInput.text.toString()))
}
} }
itemScan = binding.scanInput.text.toString() itemScan = binding.scanInput.text.toString()
} }
@ -95,11 +122,11 @@ class ShelvingLogFragment(
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
setToolBar(getString(R.string.shelvingLog) + ":" + itemScan) setToolBar(getString(R.string.shelvingLog) + ":" + itemScan)
if (it.list.isEmpty()) { if (it.list.isEmpty()) {
customDialog.setTitle(getString(R.string.noResults)) if (logType == LogType.SHELVING) {
.setDescription(getString(R.string.noDataLabelScanned)) showMessage()
.setOkButton(getString(R.string.close)) { } else {
customDialog.dismiss() viewModel.getIdFromCodeSalix(itemScan)
}.show() }
} else { } else {
openWebViewer(it.list[0].id!!, "shelving") 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) { private fun openWebViewer(param: Int, web: String) {
//variableWeb = if (itemScan is Number) "var-itemFk=$param" else "var-shelvingCode=$param"
ma.onPasillerosItemClickListener( ma.onPasillerosItemClickListener(
PasillerosItemVO( PasillerosItemVO(
title = R.string.titleWebViewer, 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( mutableMapOf(
"entryPoint" to param, "entryPoint" to param,
"web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log" "web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
) )
) )
}
) )

View File

@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.map import androidx.lifecycle.map
import com.google.gson.JsonObject import com.google.gson.JsonObject
import es.verdnatura.domain.SalixCallback import es.verdnatura.domain.SalixCallback
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
import es.verdnatura.presentation.base.BaseViewModel import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.common.Event import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.ShelvingLogSalix import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.ShelvingLogSalix
@ -13,7 +14,7 @@ import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.Shelvi
import retrofit2.Response import retrofit2.Response
class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) { class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) {
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
private val _itemShelvingLogSalixList by lazy { MutableLiveData<ShelvingLogSalixList>() } private val _itemShelvingLogSalixList by lazy { MutableLiveData<ShelvingLogSalixList>() }
val loadShelvingLogSalixList: LiveData<Event<ShelvingLogSalixList>> = val loadShelvingLogSalixList: LiveData<Event<ShelvingLogSalixList>> =
_itemShelvingLogSalixList.map { Event(it) } _itemShelvingLogSalixList.map { Event(it) }
@ -22,6 +23,10 @@ class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) {
val responseParkingId: LiveData<Int?> = _responseParkingId 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) { fun shelvings(vShelvingFK: String) {
salix.shelvingsGet("""{"where": {"code": "$vShelvingFK"}}""").enqueue(object : salix.shelvingsGet("""{"where": {"code": "$vShelvingFK"}}""").enqueue(object :
SalixCallback<List<ShelvingLogSalix>>(context) { SalixCallback<List<ShelvingLogSalix>>(context) {
@ -41,13 +46,26 @@ class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) {
.enqueue(object : .enqueue(object :
SalixCallback<List<JsonObject>>(context) { SalixCallback<List<JsonObject>>(context) {
override fun onSuccess(response: Response<List<JsonObject>>) { 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 versionApp: String,
val serialNumber: String? val serialNumber: String?
) )
enum class LogType { enum class LogType {
SHELVING, SHELVING,
PREVIOUS, PREVIOUS,
ITEMSHELVING
} }

View File

@ -126,21 +126,19 @@ class InventoryParkingAdapter(
itemShelving.setOnClickListener { itemShelving.setOnClickListener {
onPasillerosItemClickListener.onPasillerosItemClickListener( onPasillerosItemClickListener.onPasillerosItemClickListener(
PasillerosItemVO( PasillerosItemVO(
title = R.string.titleUbicator) title = R.string.titleUbicator
, item.shelvingFk ), item.shelvingFk
) )
} }
itemfkText.setOnClickListener { itemfkText.setOnClickListener {
onPasillerosItemClickListener.onPasillerosItemClickListener( onPasillerosItemClickListener.onPasillerosItemClickListener(
PasillerosItemVO( PasillerosItemVO(
title = R.string.itemSearch) title = R.string.itemSearch
, item.itemFk.toString() ), item.itemFk.toString()
) )
} }
if (item.isChecked != null) { if (item.isChecked != null) {
println("item ${item.itemFk} checked ${item.isChecked} ")
when (item.isChecked!!.toInt()) { when (item.isChecked!!.toInt()) {
in 1..Int.MAX_VALUE -> itemRowLayout.setBackgroundColor( 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.databinding.FragmentInventaryBinding
import es.verdnatura.domain.ConstAndValues.BUYER import es.verdnatura.domain.ConstAndValues.BUYER
import es.verdnatura.domain.ConstAndValues.BUYERID import es.verdnatura.domain.ConstAndValues.BUYERID
import es.verdnatura.domain.ConstAndValues.ITEMPACKINGTYPEFILTER
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
import es.verdnatura.domain.toast import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseFragment 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.commom.SearchableAdapter
import es.verdnatura.presentation.view.component.CustomDialogInput import es.verdnatura.presentation.view.component.CustomDialogInput
import es.verdnatura.presentation.view.component.CustomDialogTwoButtons 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.adapter.InventoryAdapter
import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
@ -41,6 +43,8 @@ class InventaryFragment :
private var firstVisiblePosition = 0 private var firstVisiblePosition = 0
private lateinit var itemClicked: ItemInventaryVO private lateinit var itemClicked: ItemInventaryVO
private var buyerId: Number = -1 private var buyerId: Number = -1
private var filterItemType: String? = null
private var myListBuyers = listOf<Buyer>()
companion object { companion object {
fun newInstance() = InventaryFragment() fun newInstance() = InventaryFragment()
@ -55,8 +59,12 @@ class InventaryFragment :
override fun init() { override fun init() {
viewModel.itemShelvingBuyerGet() // viewModel.itemShelvingBuyerGet()
viewModel.itemShelvingBuyerGetByItemPacking()
binding.filterBuyer.text = mobileApplication.dataStoreApp.readDataStoreKey<String>((BUYER)) 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)) buyerId = mobileApplication.dataStoreApp.readDataStoreKey<Int>((BUYERID))
if (buyerId != -1) { if (buyerId != -1) {
viewModel.getInventory( viewModel.getInventory(
@ -64,8 +72,26 @@ class InventaryFragment :
) )
} }
binding.filterBuyer.setOnClickListener { 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.visibility = View.VISIBLE
binding.searchableRecyclerView.setSearchHint(getString(R.string.BuyerSearch)) 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()) 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() { private fun setToolBar() {
ma.hideBottomNavigation(View.GONE) ma.hideBottomNavigation(View.GONE)
val listIcons: ArrayList<ImageView> = ArrayList() val listIcons: ArrayList<ImageView> = ArrayList()
@ -184,6 +233,21 @@ class InventaryFragment :
override fun observeViewModel() { override fun observeViewModel() {
with(viewModel) { 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 -> buyersList.observe(viewLifecycleOwner) { item ->
setSearchable(item.list.map { setSearchable(item.list.map {
NameWithId( NameWithId(
@ -193,6 +257,7 @@ class InventaryFragment :
} as MutableList<NameWithId>) } as MutableList<NameWithId>)
} }
inventaryList.observe(viewLifecycleOwner) { it -> inventaryList.observe(viewLifecycleOwner) { it ->
listInventory = ArrayList() listInventory = ArrayList()
listInventoryAux = ArrayList() listInventoryAux = ArrayList()
@ -202,6 +267,8 @@ class InventaryFragment :
listInventoryAux.add(it) listInventoryAux.add(it)
} }
} }
adapter = InventoryAdapter(listInventory, object : OnInvetoryNichoClickListener { adapter = InventoryAdapter(listInventory, object : OnInvetoryNichoClickListener {
override fun onInvetoryNichoClickListener(item: ItemInventaryVO) { override fun onInvetoryNichoClickListener(item: ItemInventaryVO) {
customDialog.setTitle(item.itemFk.toString() + "\n" + item.longName) 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.base.BaseViewModel
import es.verdnatura.presentation.common.Event import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.common.ItemDiscardSalixShortage 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.BuyerListVO
import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO
import es.verdnatura.presentation.view.feature.inventario.model.InventaryListVO import es.verdnatura.presentation.view.feature.inventario.model.InventaryListVO
@ -46,6 +48,10 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) {
val buyersList: LiveData<BuyerListVO> val buyersList: LiveData<BuyerListVO>
get() = _buyersList get() = _buyersList
private val _buyersByItemPackingList by lazy { MutableLiveData<BuyerList>() }
val buyersByItemPackingList: LiveData<BuyerList>
get() = _buyersByItemPackingList
private val _mistakeDepartmentList by lazy { MutableLiveData<DepartmentMistakeList>() } private val _mistakeDepartmentList by lazy { MutableLiveData<DepartmentMistakeList>() }
val mistakeDepartmentList: LiveData<DepartmentMistakeList> val mistakeDepartmentList: LiveData<DepartmentMistakeList>
get() = _mistakeDepartmentList 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) } val loadInventaryList: LiveData<Event<InventaryListVO>> = _inventaryList.map { Event(it) }
fun getInventory(buyerFk: Number, warehouseFk: Int) { 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.RENEWPERIOD
import es.verdnatura.domain.ConstAndValues.TOKEN import es.verdnatura.domain.ConstAndValues.TOKEN
import es.verdnatura.domain.ConstAndValues.TOKENCREATED import es.verdnatura.domain.ConstAndValues.TOKENCREATED
import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
import es.verdnatura.domain.ConstAndValues.TTL import es.verdnatura.domain.ConstAndValues.TTL
import es.verdnatura.domain.ConstAndValues.USER import es.verdnatura.domain.ConstAndValues.USER
import es.verdnatura.domain.ConstAndValues.WORKFORMSELECTED 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) { loginSalixItem.observe(viewLifecycleOwner) {
@ -514,6 +524,7 @@ class LoginFragment() :
app.userPassword = binding.edittextPassword.text.toString() app.userPassword = binding.edittextPassword.text.toString()
viewModel.getAccessTokenConfigs() viewModel.getAccessTokenConfigs()
viewModel.getMultimedaToken()
} }
} }
loadAccessConfigSalixList.observe(viewLifecycleOwner) { event -> 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.DataUserSalix
import es.verdnatura.presentation.view.feature.login.model.LoginDevice 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.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.OperatorAdd
import es.verdnatura.presentation.view.feature.login.model.OperatorSalix import es.verdnatura.presentation.view.feature.login.model.OperatorSalix
import es.verdnatura.presentation.view.feature.login.model.RenewToken import es.verdnatura.presentation.view.feature.login.model.RenewToken
@ -58,13 +59,16 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
get() = _workerOperator get() = _workerOperator
private val _accessConfigSalixList by lazy { MutableLiveData<AccessConfigSalixList>() } private val _accessConfigSalixList by lazy { MutableLiveData<AccessConfigSalixList>() }
private val _renewTokenResponse by lazy { MutableLiveData<RenewToken>() } private val _renewTokenResponse by lazy { MutableLiveData<RenewToken>() }
val renewTokenResponse: LiveData<RenewToken> val renewTokenResponse: LiveData<RenewToken>
get() = _renewTokenResponse get() = _renewTokenResponse
val loadAccessConfigSalixList: LiveData<Event<AccessConfigSalixList>> = val loadAccessConfigSalixList: LiveData<Event<AccessConfigSalixList>> =
_accessConfigSalixList.map { Event(it) } _accessConfigSalixList.map { Event(it) }
private val _multimediaTokenResponse by lazy { MutableLiveData<MultimediaTokenResponse>() }
val multimediaTokenResponse: LiveData<MultimediaTokenResponse>
get() = _multimediaTokenResponse
fun loginSalix(user: String, password: String) { fun loginSalix(user: String, password: String) {
salix.login(LoginSalixVO(user, password)) salix.login(LoginSalixVO(user, password))
.enqueue(object : SalixCallback<LoginSalixVO>(context) { .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( fun renewToken(
) { ) {
salix.renewToken().enqueue(object : SalixCallback<RenewToken>(context) { salix.renewToken().enqueue(object : SalixCallback<RenewToken>(context) {

View File

@ -116,3 +116,11 @@ class LoginDevice(
data class NameWorker( data class NameWorker(
val firstName: String, val lastName: String 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.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.ticket.fragment.TicketAdvanceFragment 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.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.PackingMistakeFragment
import es.verdnatura.presentation.view.feature.workermistake.fragment.WorkermistakeFragment import es.verdnatura.presentation.view.feature.workermistake.fragment.WorkermistakeFragment
import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.DelicateCoroutinesApi
@ -543,9 +543,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
getString(R.string.titleChecker) -> { getString(R.string.titleChecker) -> {
// Ya no se utiliza : addFragmentOnTop(ControladorFragment.newInstance()) // Ya no se utiliza : addFragmentOnTop(ControladorFragment.newInstance())
// if (mobileApplication.userId == 19591) { // if (mobileApplication.userId == 19591) {
println("Revisando nueva")
addFragmentOnTop( addFragmentOnTop(
CollectionFragmentChecker.newInstance( CollectionFragmentChecker.newInstance(
CollectionVO(collectionFk = 0), CollectionVO(collectionFk = 0),
@ -674,8 +673,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
} }
getString(R.string.titleUbicator) -> { 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 //Tarea 7855
getString(R.string.scanPreparedExpedition) -> { getString(R.string.scanPreparedExpedition) -> {
@ -755,7 +759,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
getString(R.string.titleShelvingHistorical) -> { getString(R.string.titleShelvingHistorical) -> {
addFragmentOnTop(ItemShelvingLogFragment.newInstance(itemTitle)) addFragmentOnTop(ItemShelvingLogFragment.newInstance(itemTitle))
}
//Tarea 7920
getString(R.string.titleShelvingHistNew) -> {
addFragmentOnTop(ShelvingLogFragment.newInstance(itemTitle, LogType.ITEMSHELVING))
} }
getString(R.string.titleLogShelving) -> { getString(R.string.titleLogShelving) -> {
@ -823,7 +830,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
} }
getString(R.string.selfConsumption) -> { getString(R.string.selfConsumption) -> {
addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint, true)) // addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint, true))
addFragmentOnTop(UbicadorFragment6869.newInstance(entryPoint, true))
} }
getString(R.string.titlePackingHolland) -> { getString(R.string.titlePackingHolland) -> {
@ -1052,7 +1060,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
) { ) {
when (type) { when (type) {
PREITEMPICKERTEST -> { PREITEMPICKERTEST -> {
println("test presacador")
//addFragmentOnTop(EndSacadorFragment.newInstance(collection, type)) //addFragmentOnTop(EndSacadorFragment.newInstance(collection, type))
addFragmentOnTop( addFragmentOnTop(
SectorCollectionReserveFragment.newInstance( SectorCollectionReserveFragment.newInstance(

View File

@ -44,7 +44,6 @@ class ExpeditionPalletDetailFragment(
override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet_detail override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet_detail
override fun init() { override fun init() {
println("ExpeditionPalletDetail")
customDialog = CustomDialog(requireContext()) customDialog = CustomDialog(requireContext())
binding.expeditionPalletDetailPallet.text = binding.expeditionPalletDetailPallet.text =
buildString { buildString {

View File

@ -59,7 +59,6 @@ class ExpeditionPalletFragment(
override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
println("ExpeditionPalletFragment")
mperror = MediaPlayer.create((activity as MainActivity), R.raw.error) mperror = MediaPlayer.create((activity as MainActivity), R.raw.error)
mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok) mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -214,8 +213,6 @@ class ExpeditionPalletFragment(
if (mperror != null) mperror!!.start() if (mperror != null) mperror!!.start()
} }
} }
customDialogList.setValue("") customDialogList.setValue("")
ma.hideKeyboard(customDialogList.getEditText()) ma.hideKeyboard(customDialogList.getEditText())

View File

@ -71,7 +71,6 @@ class ExpeditionScanFragment(
} }
override fun init() { override fun init() {
println("ExpeditionScanFragment")
customDialog = CustomDialog(requireContext()) customDialog = CustomDialog(requireContext())
customDialogList = CustomDialogList(requireContext()) customDialogList = CustomDialogList(requireContext())
customDialogTwoButtons = CustomDialogTwoButtons(requireContext()) customDialogTwoButtons = CustomDialogTwoButtons(requireContext())
@ -80,7 +79,11 @@ class ExpeditionScanFragment(
) )
ma.hideBottomNavigation(View.GONE) ma.hideBottomNavigation(View.GONE)
binding.mainToolbar.toolbarTitle.text = 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() setToolBar()
setEvents() setEvents()
viewModel.expeditionScanList( viewModel.expeditionScanList(
@ -121,7 +124,6 @@ class ExpeditionScanFragment(
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
} }
override fun observeViewModel() { override fun observeViewModel() {
with(viewModel) { with(viewModel) {
loadExpeditionScanList.observe(viewLifecycleOwner) { event -> 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 //tarea 7855
_pasillerositem.add( _pasillerositem.add(
@ -514,24 +523,33 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
) )
) )
//tarea 8099 //tarea 8099
/* _pasillerositem.add( _pasillerositem.add(
PasillerosItemVO( PasillerosItemVO(
R.drawable.ic_salary_supplement, R.drawable.ic_salary_supplement,
R.string.salarySupplementTitle, R.string.salarySupplementTitle,
R.string.salarySupplementTitle R.string.salarySupplementTitle
) )
)*/ )
} }
fun inititializeDefaultHistorical() { fun inititializeDefaultHistorical() {
_pasillerositem.add( _pasillerositem.add(
PasillerosItemVO(
R.drawable.revision_icon,
R.string.titleShelvingHistNew,
R.string.titleShelvingHistNew
)
)
/* _pasillerositem.add(
PasillerosItemVO( PasillerosItemVO(
R.drawable.revision_icon, R.drawable.revision_icon,
R.string.titleShelvingHistorical, R.string.titleShelvingHistorical,
R.string.titleShelvingHistDescrip R.string.titleShelvingHistDescrip
) )
) )*/
_pasillerositem.add( _pasillerositem.add(
PasillerosItemVO( PasillerosItemVO(
R.drawable.ic_history_orange, R.drawable.ic_history_orange,

View File

@ -70,7 +70,7 @@ class PreControladorFragment :
"id" "id"
).toString().toInt(), ).toString().toInt(),
print = false, print = false,
source = type source = if (type == "PRECHECKER") "PREVIOUS_CONTROL" else type
) )
} catch (ex: Exception) { } catch (ex: Exception) {
getString(R.string.errorInput) getString(R.string.errorInput)

View File

@ -60,19 +60,12 @@ class SectorCollectionReserveFragment(
} }
override fun init() { override fun init() {
println("hasToAdd $hasToAdd")
customDialogList = CustomDialogList(requireContext()) customDialogList = CustomDialogList(requireContext())
ma.hideBottomNavigation(View.GONE) ma.hideBottomNavigation(View.GONE)
binding.mainToolbar.toolbarTitle.text = title binding.mainToolbar.toolbarTitle.text = title
setEvents() setEvents()
setToolBar() setToolBar()
println("reserve collec $collectionFk")
println("reserve collec onBack$onBack")
if (!onBack) { if (!onBack) {
println("check parkings $collectionFk")
checkParkingsToPicker() checkParkingsToPicker()
} else { } else {
if (onBack) { if (onBack) {

View File

@ -2,14 +2,12 @@ package es.verdnatura.presentation.view.feature.restaurant
import android.view.View import android.view.View
import android.widget.Button import android.widget.Button
import com.google.gson.Gson
import com.google.zxing.BarcodeFormat import com.google.zxing.BarcodeFormat
import com.journeyapps.barcodescanner.BarcodeEncoder import com.journeyapps.barcodescanner.BarcodeEncoder
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.databinding.ActivityRestaurantViewBinding import es.verdnatura.databinding.ActivityRestaurantViewBinding
import es.verdnatura.domain.toast import es.verdnatura.domain.toast
import es.verdnatura.presentation.base.BaseActivity import es.verdnatura.presentation.base.BaseActivity
import es.verdnatura.presentation.view.feature.restaurant.model.UserMenu
class RestaurantActivity : BaseActivity<ActivityRestaurantViewBinding>() { class RestaurantActivity : BaseActivity<ActivityRestaurantViewBinding>() {
@ -33,16 +31,27 @@ class RestaurantActivity : BaseActivity<ActivityRestaurantViewBinding>() {
binding.imageQr.visibility = View.VISIBLE binding.imageQr.visibility = View.VISIBLE
binding.txtOption.visibility = View.VISIBLE binding.txtOption.visibility = View.VISIBLE
binding.txtOption.text = (view as Button).text.toString() binding.txtOption.text = (view as Button).text.toString()
val userMenu = UserMenu( /* val userMenu = UserMenu(
user = mobileApplication.userId!!, user = mobileApplication.userId!!,
menu_id = view.tag.toString().toInt(), menu_id = view.tag.toString().toInt(),
menu = view.text.toString(), menu = view.text.toString(),
name = mobileApplication.userName!! 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 { try {
val barcodeEncoder = BarcodeEncoder() val barcodeEncoder = BarcodeEncoder()
val bitmap = barcodeEncoder.encodeBitmap( val bitmap = barcodeEncoder.encodeBitmap(
Gson().toJson(userMenu), userMenuJson,
BarcodeFormat.QR_CODE, BarcodeFormat.QR_CODE,
400, 400,
400 400

View File

@ -1,8 +1,10 @@
package es.verdnatura.presentation.view.feature.restaurant.model package es.verdnatura.presentation.view.feature.restaurant.model
import com.google.gson.annotations.SerializedName
data class UserMenu( data class UserMenu(
val user: Int, @SerializedName("user") val user: Int,
val menu_id: Int, @SerializedName("menu_id") val menu_id: Int,
val menu: String, @SerializedName("menu") val menu: String,
val name: String @SerializedName("name") val name: String
) )

View File

@ -138,15 +138,6 @@ class StopMapListFragment(
with(viewModel) { with(viewModel) {
loadStopMapTruckList.observe(viewLifecycleOwner) { event -> loadStopMapTruckList.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { 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) showRoadMapList(it)
} }
} }
@ -189,8 +180,6 @@ class StopMapListFragment(
} }
TruckAction.GOTOMAPS -> { TruckAction.GOTOMAPS -> {
println("locationMaps")
val uri = val uri =
"geo:0,0?q=" + item.address?.address?.nickname + " " + item.address?.address?.street + " " + item.address?.address?.city + " " + item.address?.address?.postalCode "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)) val locationIntent = Intent(Intent.ACTION_VIEW, Uri.parse(uri))

View File

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

View File

@ -68,7 +68,8 @@ data class Sale(
var isPicked: Int = 0, var isPicked: Int = 0,
var accumulatedQuantity: Int = 0, var accumulatedQuantity: Int = 0,
var totalItemShelving: 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 agencyName: String = "",
var salesPersonFk: String = "", var salesPersonFk: String = "",
var sales: List<SaleVO> = listOf(), var sales: List<SaleVO> = listOf(),
@SerializedName(value = "observations", alternate = ["observaciones"]) @SerializedName(
var observations: String = "", value = "observations",
alternate = ["observaciones"]
) var observations: String = "",
) )
@ -177,8 +180,10 @@ class TicketVO(
var agencyName: String = "", var agencyName: String = "",
var salesPersonFk: String = "", var salesPersonFk: String = "",
var sales: List<SaleVO> = listOf(), var sales: List<SaleVO> = listOf(),
@SerializedName(value = "observations", alternate = ["observaciones"]) @SerializedName(
var observations: String = "", value = "observations",
alternate = ["observaciones"]
) var observations: String = "",
var isAdvanced: Int? = 0, var isAdvanced: Int? = 0,
var parkingCode: String? = "" var parkingCode: String? = ""
@ -279,8 +284,7 @@ class PlacementSupplyListVO(
) )
class MistakeTypeVO( class MistakeTypeVO(
var id: Int, var id: Int, var description: String
var description: String
) )
class MistakeTypeListVO( class MistakeTypeListVO(
@ -292,16 +296,11 @@ class TicketStateList(
) )
data class TicketStateSalix( data class TicketStateSalix(
val ticketFk: Int, val ticketFk: Int, val alertLevel: Int, val code: String, val stateFk: Int, val userFk: Int
val alertLevel: Int,
val code: String,
val stateFk: Int,
val userFk: Int
) { ) {
@RequiresApi(Build.VERSION_CODES.O) @RequiresApi(Build.VERSION_CODES.O)
var created: String = "" var created: String = ""
@RequiresApi(Build.VERSION_CODES.O) @RequiresApi(Build.VERSION_CODES.O) get() {
get() {
return field.isoToString() 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.OnOptionsSelectedListener
import es.verdnatura.presentation.common.OnPasillerosItemClickListener import es.verdnatura.presentation.common.OnPasillerosItemClickListener
import es.verdnatura.presentation.common.OnVisibleClickListenerNew import es.verdnatura.presentation.common.OnVisibleClickListenerNew
import es.verdnatura.presentation.common.PrinterDialogManager
import es.verdnatura.presentation.common.ToolBarAdapterTooltip import es.verdnatura.presentation.common.ToolBarAdapterTooltip
import es.verdnatura.presentation.common.hideKeyboard import es.verdnatura.presentation.common.hideKeyboard
import es.verdnatura.presentation.common.itemScanValue 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.pasillero.model.PasillerosItemVO
import es.verdnatura.presentation.view.feature.ubicador.adapter.UbicadorAdapterNew import es.verdnatura.presentation.view.feature.ubicador.adapter.UbicadorAdapterNew
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador 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 import kotlin.math.ceil
@Suppress("UNUSED_ANONYMOUS_PARAMETER") @Suppress("UNUSED_ANONYMOUS_PARAMETER")
@ -120,7 +124,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
if (shelvingFk.isNotEmpty()) { if (shelvingFk.isNotEmpty()) {
isShelvinLogfromMainScreen = false isShelvinLogfromMainScreen = false
setIconsActions(true) setIconsActions(true)
setIcons() //setIcons()
binding.mainToolbar.toolbarTitle.text = shelvingFk binding.mainToolbar.toolbarTitle.text = shelvingFk
viewModel.itemShelvingListNew(shelvingFk) viewModel.itemShelvingListNew(shelvingFk)
binding.mainToolbar.switchButton.visibility = VISIBLE binding.mainToolbar.switchButton.visibility = VISIBLE
@ -128,7 +132,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
isShelvinLogfromMainScreen = true isShelvinLogfromMainScreen = true
setIconsActions(false) setIconsActions(false)
//Tarea 7805 //Tarea 7805
setIcons(true) // setIcons(true)
} }
super.init() super.init()
} }
@ -140,7 +144,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
} else { } else {
GONE GONE
} }
setIcons(!showIcons)
} }
private fun setDialogs() { private fun setDialogs() {
@ -217,14 +221,15 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
binding.mainToolbar.toolbarIcons.adapter = binding.mainToolbar.toolbarIcons.adapter =
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener { ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
override fun onOptionsItemSelected(item: Drawable) { override fun onOptionsItemSelected(item: Drawable) {
listItems.clear()
when (item) { when (item) {
iconAdd.drawable -> showAddItemNew( iconAdd.drawable -> {
showAddItemNew(
isEditItem = false, null isEditItem = false, null
) )
}
iconAddMultiple.drawable -> { iconAddMultiple.drawable -> {
ma.onPasillerosItemClickListener( ma.onPasillerosItemClickListener(
PasillerosItemVO( PasillerosItemVO(
title = R.string.addItemMultipleShelving, title = R.string.addItemMultipleShelving,
@ -233,7 +238,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
} }
iconReload.drawable -> { iconReload.drawable -> {
listItems.clear()
if (shelvingFk.isNotBlank()) { if (shelvingFk.isNotBlank()) {
binding.editPrioridad.setText("") binding.editPrioridad.setText("")
viewModel.itemShelvingListNew( viewModel.itemShelvingListNew(
@ -252,7 +257,8 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip)) customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip))
.setDescription(getString(R.string.checkItemShelving)) .setDescription(getString(R.string.checkItemShelving))
.setOkButton(getString(R.string.ok)) { .setOkButton(getString(R.string.ok)) {
viewModel.itemShelvingDeleteChecked(shelvingFk) if (listItems.isNotEmpty())
viewModel.itemShelvingDeleteChecked(listItems[0].shelvingFk!!)
customDialogReset.dismiss() customDialogReset.dismiss()
}.setKoButton(getString(R.string.cancel)) { }.setKoButton(getString(R.string.cancel)) {
customDialogReset.dismiss() 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 (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
if (binding.editMatricula.text.toString().isNotEmpty()) { if (binding.editMatricula.text.toString().isNotEmpty()) {
setIconsActions(true) setIconsActions(true)
setIcons() //setIcons()
if (!modeCheckUbication || (modeCheckUbication && (binding.editMatricula.text.toString() if (!modeCheckUbication || (modeCheckUbication && (binding.editMatricula.text.toString()
.isShelving()) && !binding.editMatricula.text!![0].isDigit()) .isShelving()) && !binding.editMatricula.text!![0].isDigit())
) { ) {
@ -426,10 +432,13 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
customDialogDelete.setTitle(getString(R.string.empty)) customDialogDelete.setTitle(getString(R.string.empty))
.setDescription(getString(R.string.operationNoReturn)) .setDescription(getString(R.string.operationNoReturn))
.setOkButton(getString(R.string.empty)) { .setOkButton(getString(R.string.empty)) {
if (listItems.isNotEmpty()) {
viewModel.clearShelvingList( viewModel.clearShelvingList(
shelvingFk //Tarea 7920
listItems[0].shelvingFk?.toString() ?: shelvingFk
) )
}
listItems.forEach { listItems.forEach {
it.stickers = 0 it.stickers = 0
it.visible = 0 it.visible = 0
@ -460,16 +469,24 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
parking = customDialogInput.getValue() parking = customDialogInput.getValue()
//tarea 6964 //tarea 6964
viewModel.hasItemOlder( viewModel.hasItemOlder(
shelvingFk, customDialogInput.getValue(), shelvingFk, customDialogInput.getValue(), itemFk = null, action = null
) )
customDialogInput.dismiss() customDialogInput.dismiss()
} }
private fun customDialogActionChange() { private fun customDialogActionChange() {
//Tarea 7920
if (listItems.isNotEmpty() && listItems[0].shelvingFk == null) {
viewModel.shelvingChangeSalix( viewModel.shelvingChangeSalix(
shelvingFk, customDialogInput.getValue() shelvingFk, customDialogInput.getValue()
) )
} else {
viewModel.getShelvingFkFromCode(
listItems[0].shelvingFk!!, customDialogInput.getValue()
)
}
shelvingFk = customDialogInput.getValue() shelvingFk = customDialogInput.getValue()
customDialogInput.dismiss() customDialogInput.dismiss()
@ -585,6 +602,10 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
} }
responseLogAdd.observe(viewLifecycleOwner) { responseLogAdd.observe(viewLifecycleOwner) {
isShelvinLogfromMainScreen = false isShelvinLogfromMainScreen = false
if (it == false) {
setIconsActions(false)
//setIcons()
}
} }
loadResponseCode.observe(viewLifecycleOwner) { event -> loadResponseCode.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
@ -665,9 +686,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
loadBuyUltimateResponse.observe(viewLifecycleOwner) { event -> loadBuyUltimateResponse.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull { event.getContentIfNotHandled().notNull {
ma.messageWithSound( ma.messageWithSound(
getString(R.string.errorPrintBuy), getString(R.string.errorPrintBuy), isError = true, isPlayed = true
isError = true,
isPlayed = true
) )
} }
} }
@ -780,8 +799,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
.setPackingValue(itemUbicador.packing.toString()) .setPackingValue(itemUbicador.packing.toString())
.setVisibleValue(itemUbicador.visible.toString()) .setVisibleValue(itemUbicador.visible.toString())
//.setEtiquetaValue((itemUbicador.visible / (itemUbicador.packing ?: 0)).toString()) //.setEtiquetaValue((itemUbicador.visible / (itemUbicador.packing ?: 0)).toString())
.setEtiquetaValue(itemUbicador.stickers.toString()) .setEtiquetaValue(itemUbicador.stickers.toString()).setUnits(
.setUnits(
if (itemUbicador.stickers != 0) { if (itemUbicador.stickers != 0) {
(itemUbicador.visible % itemUbicador.stickers).toString() (itemUbicador.visible % itemUbicador.stickers).toString()
} else { } else {
@ -1072,7 +1090,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
customDialogConfirm.show() customDialogConfirm.show()
} }
//Tarea 7266 //Tarea 7266
/* .setOkButtonThree(getString(R.string.print)) { .setOkButtonThree(getString(R.string.print)) {
val printerDialogManager = PrinterDialogManager(requireContext()) val printerDialogManager = PrinterDialogManager(requireContext())
printerDialogManager.showPrintDialog( printerDialogManager.showPrintDialog(
item.item, item.item,
@ -1108,7 +1126,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
} }
} }
customDialogInput.getEditText().requestFocus() customDialogInput.getEditText().requestFocus()
}*/ }
//Tarea 7763 //Tarea 7763
/* /*
.setOkButtonThree(getString(R.string.rename)) { .setOkButtonThree(getString(R.string.rename)) {
@ -1150,7 +1168,12 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
), ),
userFk = mobileApplication.userId!!, userFk = mobileApplication.userId!!,
priority = "normal", 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) { } catch (ex: Exception) {
ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true) ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
@ -1186,8 +1209,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
} }
private fun customDialogTransferAction(item: ItemUbicador) { private fun customDialogTransferAction(item: ItemUbicador) {
if (customDialogInput.getValue().isNotEmpty()) { if (customDialogInput.getValue().isNotEmpty()) {/*tearea 6964*//*
/*tearea 6964*//*
viewModel.hasItemOlder( viewModel.hasItemOlder(
shelvingFkIn = shelvingFk, shelvingFkIn = shelvingFk,
shelvingFkOut = customDialogInput.getValue(), shelvingFkOut = customDialogInput.getValue(),

View File

@ -1,6 +1,7 @@
package es.verdnatura.presentation.view.feature.ubicador.fragment package es.verdnatura.presentation.view.feature.ubicador.fragment
import android.content.Context import android.content.Context
import android.util.Log.d
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.map import androidx.lifecycle.map
@ -11,6 +12,7 @@ import es.verdnatura.domain.formatWithQuotes
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
import es.verdnatura.domain.userCases.GetItemPrintItemUseCase import es.verdnatura.domain.userCases.GetItemPrintItemUseCase
import es.verdnatura.presentation.base.BaseViewModel import es.verdnatura.presentation.base.BaseViewModel
import es.verdnatura.presentation.common.Action
import es.verdnatura.presentation.common.Event import es.verdnatura.presentation.common.Event
import es.verdnatura.presentation.common.ItemShelvingSalix import es.verdnatura.presentation.common.ItemShelvingSalix
import es.verdnatura.presentation.common.ResponseHasOlder 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.ItemShelvingNewerList
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador 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.ItemUbicadorListNew
import es.verdnatura.presentation.view.feature.ubicador.model.ShelvingItem
import es.verdnatura.presentation.view.feature.workermistake.model.MakeMultiSalix import es.verdnatura.presentation.view.feature.workermistake.model.MakeMultiSalix
import org.json.JSONObject
import retrofit2.Call import retrofit2.Call
import retrofit2.Response import retrofit2.Response
@ -43,6 +47,14 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
val loadShelvingListNew: LiveData<Event<ItemUbicadorListNew>> = val loadShelvingListNew: LiveData<Event<ItemUbicadorListNew>> =
_shelvingListNew.map { Event(it) } _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>() } private val _shelvingListItemNewer by lazy { MutableLiveData<ItemShelvingNewerList>() }
val loadShelvingListItemNewer: LiveData<Event<ItemShelvingNewerList>> = val loadShelvingListItemNewer: LiveData<Event<ItemShelvingNewerList>> =
_shelvingListItemNewer.map { Event(it) } _shelvingListItemNewer.map { Event(it) }
@ -69,6 +81,10 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse
val loadBuyUltimateResponse: LiveData<Event<Boolean>> = _buyUltimateResponse.map { Event(it) } 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( fun itemShelvingListNew(
shelvingFk: String shelvingFk: String
) { ) {
@ -85,59 +101,40 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
//Tarea 6869 //Tarea 6869
fun itemShelvingGet( fun itemShelvingGet(
shelvingFk: String shelvingCode: String
) { ) {
salix.itemShelvingGet( salix.shelvingGet(
filter = """{ filter = """{
"fields":[ "fields":
"priority", ["priority","parkingFk","code","id"],
"parkingFk",
"code"
],
"include":[ "include":[
{ {"relation":"parking",
"relation":"parking", "scope":{"fields":["code"]}},
"scope":{ {"relation":"itemShelving",
"fields":[ "scope":{"fields":["id","itemFk","visible","packing","grouping","isChecked","available","buyFk","shelvingFk"],
"code" "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>>) { fun getImageConfig(
_shelvingListNew.value = response.body()?.let { ItemUbicadorListNew(it) } ) {
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( fun hasItemOlder(
shelvingFk: String, 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) { .enqueue(object : SalixCallback<List<ItemShelvingNewer>>(context) {
override fun onSuccess(response: Response<List<ItemShelvingNewer>>) { override fun onSuccess(response: Response<List<ItemShelvingNewer>>) {
if (response.body()!!.isEmpty()) { if (response.body()!!.isEmpty()) {
setParking(shelvingFk, parking) when (action) {
Action.PARKINEAR -> setParking(shelvingFk, parking!!)
Action.TRANSFERIR -> {
itemShelvingTransfer(itemShelvingFk!!, shelvingFk)
}
null -> setParking(shelvingFk, parking!!)
}
} else { } else {
_shelvingListItemNewer.value = _shelvingListItemNewer.value =
response.body()?.let { response.body()?.let {
ItemShelvingNewerList( ItemShelvingNewerList(
it, 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( fun itemShelvingMerge(
vShelf: Int, shelvingFk: String vShelf: Int, shelvingFk: String
@ -296,7 +398,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
} }
fun itemShelvingDeleteChecked( fun itemShelvingDeleteChecked(
vShelvingFk: String vShelvingFk: Number
) { ) {
salix.itemShelvingsUpdate( salix.itemShelvingsUpdate(
@ -340,7 +442,12 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
.enqueue(object : SalixCallback<Any>(context) { .enqueue(object : SalixCallback<Any>(context) {
override fun onSuccess(response: Response<Any>) { 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 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( salix.itemShelvingsUpdate(
where = JsonObject().apply { addProperty("shelvingFk", shelvingFkIn) }, where = JsonObject().apply { addProperty("shelvingFk", shelvingFkIn) },
hashMapOf("shelvingFk" to shelvingFkOut) hashMapOf("shelvingFk" to shelvingFkOut)
@ -412,11 +536,32 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
}) })
} }
fun itemShelvingTransfer( fun getShelvingFkFromCode(
itemFk: Int, shelvingFk: String 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) { .enqueue(object : SalixCallback<Any>(context) {
override fun onSuccess(response: Response<Any>) { override fun onSuccess(response: Response<Any>) {
_responseUbicator.value = true _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( salix.itemShelvingSelfConsumption(
arrayListOf( arrayListOf(
shelvingFk, itemFk, quantity shelvingFk, itemFk, quantity
@ -508,7 +653,12 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
if (response.body() == null) _buyUltimateResponse.value = false if (response.body() == null) _buyUltimateResponse.value = false
else { else {
val params = 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( printItem(
reportName = reportName, reportName = reportName,
printerFk = printerFk, printerFk = printerFk,

View File

@ -1,5 +1,7 @@
package es.verdnatura.presentation.view.feature.ubicador.model package es.verdnatura.presentation.view.feature.ubicador.model
import es.verdnatura.presentation.common.Action
class ItemUbicadorVO( class ItemUbicadorVO(
var item: Int, var item: Int,
var description: String = "", var description: String = "",
@ -17,7 +19,8 @@ class ItemUbicadorVO(
var checked: Boolean = false, var checked: Boolean = false,
var isNew: Boolean = false, var isNew: Boolean = false,
var isChecked: Int? = null, var isChecked: Int? = null,
var url: String = "" var url: String = "",
var shelvingFk: Long? = null
) )
class ItemUbicador( class ItemUbicador(
@ -33,7 +36,7 @@ class ItemUbicador(
var available: Int? = null, var available: Int? = null,
var code: String? = "", var code: String? = "",
var created: String? = null, var created: String? = null,
var shelvingFk: String? = null, var shelvingFk: Long? = null,
var id: Int = 0, var id: Int = 0,
var priority: Int = 0, var priority: Int = 0,
var isError: Boolean = false, var isError: Boolean = false,
@ -43,7 +46,8 @@ class ItemUbicador(
var isChecked: Int? = null, var isChecked: Int? = null,
var url: String = "", var url: String = "",
var units: Int = 0, var units: Int = 0,
var buyFk: Long? = null var buyFk: Long? = null,
) )
class ItemEscanerVO( class ItemEscanerVO(
@ -59,14 +63,22 @@ class ItemUbicadorListNew(
) )
class ItemShelvingNewerList( class ItemShelvingNewerList(
var list: List<ItemShelvingNewer> = listOf(), val list: List<ItemShelvingNewer> = listOf(),
var originalParking: String, val originalParking: String,
var originalShelvingFk: String val originalShelvingFk: String,
val originalItem: Number? = null,
val originalAction: Action?,
val itemShelvingFk: Number? = null
) )
data class ItemShelvingNewer( data class ItemShelvingNewer(
var itemFk: Int, val itemFk: Int,
var shelvingFk: String, val shelvingFk: String,
val created: String,
val parkingCode: String,
val itemCreated: String? = null,
val code: String? = null,
val parkingFk: String? = null
) )
data class ItemBuy( data class ItemBuy(
@ -76,3 +88,40 @@ data class ItemBuy(
val packing: Int, val packing: Int,
val packagingFk: String? 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:onClick="generateQr"
android:tag="2" android:tag="2"
android:text="@string/halfLunch" android:text="@string/halfLunch"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/scan_input" /> app:layout_constraintTop_toBottomOf="@id/scan_input" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -109,11 +111,33 @@
android:onClick="generateQr" android:onClick="generateQr"
android:tag="4" android:tag="4"
android:text="@string/halfMenu" android:text="@string/halfMenu"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/scan_input" /> app:layout_constraintTop_toBottomOf="@id/scan_input" />
</LinearLayout> </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>
<LinearLayout <LinearLayout

View File

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

View File

@ -43,11 +43,29 @@
android:textColorHint="#78909C" android:textColorHint="#78909C"
tools:ignore="TextContrastCheck" /> 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 <TextView
android:id="@+id/filter_buyer" android:id="@+id/filter_buyer"
style="@style/InputLineTextSearch" style="@style/InputLineTextSearch"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_weight="1" android:layout_weight="2"
android:backgroundTint="@android:color/white" android:backgroundTint="@android:color/white"
android:focusable="false" android:focusable="false"
android:hint="@string/buscarcomprador" android:hint="@string/buscarcomprador"
@ -124,6 +142,17 @@
app:layout_constraintTop_toBottomOf="@id/main_toolbar" app:layout_constraintTop_toBottomOf="@id/main_toolbar"
app:layout_constraintVertical_bias="0" /> 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 <include
android:id="@+id/main_toolbar" android:id="@+id/main_toolbar"
layout="@layout/toolbar_fragment" layout="@layout/toolbar_fragment"

View File

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

View File

@ -108,7 +108,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center" android:gravity="center"
android:text="Orden:" android:text="@string/register"
android:textColor="@color/verdnatura_white" android:textColor="@color/verdnatura_white"
android:textSize="@dimen/delivery_body_2" /> 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="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="allowAutomaticAddItem">Permite añadir items al carro de manera continuada. No uno a uno</string>
<string name="newItem">Nuevo Item</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="fillFields">Rellena campos obligatorios</string>
<string name="mandatoryPacking">Packing obligatorio</string> <string name="mandatoryPacking">Packing obligatorio</string>
<string name="selectAction">Selecciona una acción</string> <string name="selectAction">Selecciona una acción</string>
@ -358,7 +358,7 @@
<string name="titleQrReader">Lector Qr</string> <string name="titleQrReader">Lector Qr</string>
<string name="titleBufferOff">Desactivado buffer</string> <string name="titleBufferOff">Desactivado buffer</string>
<string name="titlePreControl">Pre Control</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="titleLogShelving">Histórico del carro</string>
<string name="itemScanetNotFound">Elemento escaneado no encontrado </string> <string name="itemScanetNotFound">Elemento escaneado no encontrado </string>
<string name="NotOrderReplacement">No existen pedidos para reponer</string> <string name="NotOrderReplacement">No existen pedidos para reponer</string>
@ -736,6 +736,7 @@
<string name="imageToSend">Imágenes adjuntas:</string> <string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir…</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="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="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Vas a modificar la cantidad a 0</string> <string name="deleteEntryReviewed">Vas a modificar la cantidad a 0</string>
<string name="quantityToReview">Cantidad a revisar</string> <string name="quantityToReview">Cantidad a revisar</string>
@ -755,7 +756,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string> <string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string> <string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</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="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string> <string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string> <string name="ticketNotes">Notas del ticket</string>
@ -779,7 +780,7 @@
<string name="titleLogExpedition">%1$s %2$s</string> <string name="titleLogExpedition">%1$s %2$s</string>
<string name="itemAddress">%1$s-%2$s</string> <string name="itemAddress">%1$s-%2$s</string>
<string name="itemDataText">%1$d: %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="itemCardTitle">%1$s-%2$s</string>
<string name="itemCardTag">%1$s %2$s</string> <string name="itemCardTag">%1$s %2$s</string>
<string name="doubleText">%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="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</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="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="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string> <string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string> <string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -909,6 +910,14 @@
<string name="sectorSearch">Escribe sector</string> <string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string> <string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</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> </resources>

View File

@ -358,7 +358,7 @@
<string name="titleQrReader">Lector Qr</string> <string name="titleQrReader">Lector Qr</string>
<string name="titleBufferOff">Desactivado buffer</string> <string name="titleBufferOff">Desactivado buffer</string>
<string name="titlePreControl">Pre Control</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="titleLogShelving">Histórico del carro</string>
<string name="itemScanetNotFound">Elemento escaneado no encontrado </string> <string name="itemScanetNotFound">Elemento escaneado no encontrado </string>
<string name="NotOrderReplacement">No existen pedidos para reponer</string> <string name="NotOrderReplacement">No existen pedidos para reponer</string>
@ -736,6 +736,7 @@
<string name="imageToSend">Imágenes adjuntas:</string> <string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir…</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="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="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string> <string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string> <string name="quantityToReview">Cantidad a revisar</string>
@ -755,7 +756,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string> <string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string> <string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</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="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string> <string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string> <string name="ticketNotes">Notas del ticket</string>
@ -826,7 +827,7 @@
<string name="selectHour">Seleccionar Hora</string> <string name="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</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="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="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string> <string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string> <string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -909,5 +910,13 @@
<string name="sectorSearch">Escribe sector</string> <string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string> <string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</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> </resources>

View File

@ -358,7 +358,7 @@
<string name="titleQrReader">Lector Qr</string> <string name="titleQrReader">Lector Qr</string>
<string name="titleBufferOff">Desactivado buffer</string> <string name="titleBufferOff">Desactivado buffer</string>
<string name="titlePreControl">Pre Control</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="titleLogShelving">Histórico del carro</string>
<string name="itemScanetNotFound">Elemento escaneado no encontrado </string> <string name="itemScanetNotFound">Elemento escaneado no encontrado </string>
<string name="NotOrderReplacement">No existen pedidos para reponer</string> <string name="NotOrderReplacement">No existen pedidos para reponer</string>
@ -736,6 +736,7 @@
<string name="imageToSend">Imágenes adjuntas:</string> <string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir...</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="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="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string> <string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string> <string name="quantityToReview">Cantidad a revisar</string>
@ -755,7 +756,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string> <string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string> <string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</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="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string> <string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string> <string name="ticketNotes">Notas del ticket</string>
@ -826,7 +827,7 @@
<string name="selectHour">Seleccionar Hora</string> <string name="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</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="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="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string> <string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string> <string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -909,5 +910,13 @@
<string name="sectorSearch">Escribe sector</string> <string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string> <string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</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> </resources>

View File

@ -737,6 +737,7 @@
<string name="imageToSend">Imágenes adjuntas:</string> <string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir…</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="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="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string> <string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string> <string name="quantityToReview">Cantidad a revisar</string>
@ -756,7 +757,7 @@
<string name="editParking">Permite modificar los parkings seleccionados</string> <string name="editParking">Permite modificar los parkings seleccionados</string>
<string name="resetParking">Resetea los parkings seleccionados</string> <string name="resetParking">Resetea los parkings seleccionados</string>
<string name="itemDiarySelected">Histórico : %1$s</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="ticketWithoutWorker">Ticket sin trabajador asignado</string>
<string name="reviewData">Revisa datos insertados</string> <string name="reviewData">Revisa datos insertados</string>
<string name="ticketNotes">Notas del ticket</string> <string name="ticketNotes">Notas del ticket</string>
@ -828,7 +829,7 @@
<string name="selectHour">Seleccionar Hora</string> <string name="selectHour">Seleccionar Hora</string>
<string name="dateTime">%1$s %2$d:%3$d</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="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="errorParking">No se ha encontrado parking</string>
<string name="scanParkingTxt">Escanea parking</string> <string name="scanParkingTxt">Escanea parking</string>
<string name="reviewBoxPicking">Revisar sacado por cajas</string> <string name="reviewBoxPicking">Revisar sacado por cajas</string>
@ -912,5 +913,13 @@
<string name="sectorSearch">Escribe sector</string> <string name="sectorSearch">Escribe sector</string>
<string name="supplierSearch">Escribe proveedor</string> <string name="supplierSearch">Escribe proveedor</string>
<string name="entrySearch">Escribe entrada</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> </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" zxingAndroidEmbedded = "4.3.0"
googleDevtoolsKsp = "2.0.20-1.0.25" googleDevtoolsKsp = "2.0.20-1.0.25"
#cambiar ide para subir version #cambiar ide para subir version
androidGradlePlugin = "8.3.2" androidGradlePlugin = "8.7.2"
kotlin = "2.0.10" kotlin = "2.0.20"
googleServices = "4.4.2" googleServices = "4.4.2"
firebaseCrashlytics = "3.0.2" firebaseCrashlytics = "3.0.2"