commit
083317beb2
|
@ -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>
|
|
@ -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" />
|
||||||
|
|
|
@ -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.0" />
|
<option name="version" value="2.0.20" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -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">
|
||||||
|
|
|
@ -40,6 +40,16 @@
|
||||||
</config>
|
</config>
|
||||||
</shared>
|
</shared>
|
||||||
<layouts>
|
<layouts>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/drawable/ic_click.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/drawable/ic_logout.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -50,11 +60,21 @@
|
||||||
<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>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_dialog.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_edit_dialog.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_edit_dialog.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -75,11 +95,21 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_hour.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_list_dialog.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_list_dialog.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_three_dialog.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_two_dialog.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_custom_two_dialog.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -90,6 +120,16 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_searchable_dialog.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/component_searchable_dialog_alert.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_ajustes.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_ajustes.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -125,6 +165,11 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_expedition_loadunload_delivery.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_expedition_log_delivery.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_expedition_log_delivery.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -155,6 +200,11 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_inventary.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_item_card.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_item_card.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -170,6 +220,11 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_packaging.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_packaging_count.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_packaging_count.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -195,11 +250,21 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_route_config.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_sacador.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_sacador.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_salary_complement.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_stopmap_truck_list.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_stopmap_truck_list.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -220,6 +285,16 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_workermistake.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_ajustes_row.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_article_row_fragment.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_article_row_fragment.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -230,6 +305,11 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_expedition_loadunload_row.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_expedition_summary_row.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_expedition_summary_row.xml">
|
||||||
<config>
|
<config>
|
||||||
<state>Landscape</state>
|
<state>Landscape</state>
|
||||||
|
@ -286,6 +366,11 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_placement_row.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_roadmap_truck_row.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_roadmap_truck_row.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -296,6 +381,11 @@
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_salary_complement_row.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_shelvinglog_row.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_shelvinglog_row.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
|
@ -321,16 +411,46 @@
|
||||||
<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">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/sale_row_fragment.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/sale_row_fragment.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/searchable_dialog.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/toolbar_fragment.xml">
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/toolbar_fragment.xml">
|
||||||
<config>
|
<config>
|
||||||
<theme>@style/AppTheme</theme>
|
<theme>@style/AppTheme</theme>
|
||||||
</config>
|
</config>
|
||||||
</layout>
|
</layout>
|
||||||
|
<layout url="file://$PROJECT_DIR$/app/src/main/res/navigation/nav_graph.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
|
<layout url="file://$USER_HOME$/AppData/Local/Android/Sdk/platforms/android-35/data/res/layout/simple_list_item_1.xml">
|
||||||
|
<config>
|
||||||
|
<theme>@style/AppTheme</theme>
|
||||||
|
</config>
|
||||||
|
</layout>
|
||||||
</layouts>
|
</layouts>
|
||||||
</component>
|
</component>
|
||||||
<component name="AndroidLogFilters">
|
<component name="AndroidLogFilters">
|
||||||
|
@ -373,103 +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: refactorResponse PasillerosItem refs #7827">
|
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refs#6845 userInterface">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/changeLog.sh" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.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$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/di/viewModelModule.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/di/viewModelModule.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/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/common/UICallbacks.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/common/UtilFunctions.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/common/UtilFunctions.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/adapter/ItemProposalAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/adapter/ItemProposalAdapter.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/articulo/fragment/ItemCardViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/articulo/fragment/ItemCardViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/buffer/fragment/BufferLoadFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/buffer/fragment/BufferLoadFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/buffer/fragment/adapter/BufferAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/buffer/fragment/adapter/BufferAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/adapter/LocationAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/buscaritem/adapter/LocationAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/category/ChangeCategoryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/category/ChangeCategoryFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/category/ChangeCategoryViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/category/ChangeCategoryViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/claim/fragment/reubication/adapter/ReubicatorAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/claim/fragment/reubication/adapter/ReubicatorAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/claim/fragment/reubication/adapter/ReubicatorPlacementAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/claim/fragment/reubication/adapter/ReubicatorPlacementAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/claim/fragment/ubication/ClaimUbicationFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/claim/fragment/ubication/ClaimUbicationFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/PlacementAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/PlacementAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/adapter/SaleAdapterNew.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/CollectionFragmentPickerPreviousNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPickerPreviousNew.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/CollectionFragmentPreCheckerNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragmentPreCheckerNew.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/controlvehiculo/fragment/ControlVehiculoFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/controlvehiculo/fragment/ControlVehiculoFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/controlvehiculo/fragment/ControlVehiculoViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/controlvehiculo/fragment/ControlVehiculoViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/activity/SignedActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/activity/SignedActivity.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/fragments/SummaryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/diadeventa/adapter/DayOfSaleAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/diadeventa/adapter/DayOfSaleAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoarticulo/fragment/HistoricoArticuloFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoarticulo/fragment/HistoricoArticuloFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelving/adapter/ItemShelvingLogAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelving/adapter/ItemShelvingLogAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.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/packaging/adapter/ItemSupplierAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/adapter/ItemSupplierAdapter.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/packaging/adapter/ListImageAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/adapter/ListImageAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/ObservFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/ObservFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/PackagingCountFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/PackagingCountFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/SupplierFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/SupplierFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletViewModel.kt" beforeDir="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/paletizador/fragment/ExpeditionScanFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanSorterFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanSorterFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanSorterViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanSorterViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemExpeditionTruckVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemExpeditionTruckVO.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemPalletVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemPalletVO.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemScanVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemScanVO.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/parking/fragment/ParkingFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/parking/fragment/ParkingFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/parking/fragment/ParkingViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/parking/fragment/ParkingViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/photos/fragment/PhotosFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/photos/fragment/PhotosFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/precontrol/PreControladorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/precontrol/PreControladorFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/precontrol/PreControladorViewModel.kt" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/adapter/PreSacadorAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/adapter/PreSacadorAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/EndSacadorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/EndSacadorFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/SectorCollectionReserveFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/SectorCollectionReserveFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/qr/QrFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/qr/QrFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/roadmap/fragment/StopMapListFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/roadmap/fragment/StopMapListFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/showticket/ShowTicketFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/showticket/ShowTicketFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/model/TicketItemVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/model/TicketItemVO.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/adapter/UbicadorAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/adapter/UbicadorAdapter.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/adapter/UbicadorAdapterNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/adapter/UbicadorAdapterNew.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemViewModel.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragmentNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/UbicadorFragmentNew.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$/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/PackingMistakeFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/PackingMistakeFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/WorkermistakeFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/fragment/WorkermistakeFragment.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/model/mistakeWorkerType.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/workermistake/model/mistakeWorkerType.kt" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/res/values-es/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values-es/strings.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/res/values-fr/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values-fr/strings.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/res/values-pt/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values-pt/strings.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<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" />
|
||||||
|
@ -484,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" />
|
||||||
|
@ -574,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" />
|
<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$" />
|
||||||
|
@ -635,63 +664,60 @@
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
<option name="showMembers" value="true" />
|
<option name="showMembers" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"Android App.app.executor": "Run",
|
"Android App.app.executor": "Run",
|
||||||
"ApkExportedModule": "Gestor_Almacén.app",
|
"ApkExportedModule": "Gestor_Almacén.app",
|
||||||
"DEBUGGABLE_DEVICE": "zebra_technologies-tc21-21114523025303",
|
"DEBUGGABLE_DEVICE": "zebra_technologies-tc21-21114523025303",
|
||||||
"DEBUGGABLE_PROCESS": "es.verdnatura.sfusion",
|
"DEBUGGABLE_PROCESS": "es.verdnatura.sfusion",
|
||||||
"DEBUGGER_ID": "Auto",
|
"DEBUGGER_ID": "Auto",
|
||||||
"ExportApk.ApkPathForGestor_Almacén.app": "C:\\Users\\sergiodt\\AndroidStudioProjects\\vn-warehouseManager\\app",
|
"ExportApk.ApkPathForGestor_Almacén.app": "C:\\Users\\sergiodt\\AndroidStudioProjects\\vn-warehouseManager\\app",
|
||||||
"Gradle.vn-warehouseManager [clean].executor": "Run",
|
"Gradle.vn-warehouseManager [clean].executor": "Run",
|
||||||
"Gradle.vn-warehouseManager.executor": "Run",
|
"Gradle.vn-warehouseManager.executor": "Run",
|
||||||
"KotlinFunctionFindUsagesOptions.isSearchForTextOccurrences": "true",
|
"KotlinFunctionFindUsagesOptions.isSearchForTextOccurrences": "true",
|
||||||
"PROJECT_TRUSTED_KEY": "true",
|
"PROJECT_TRUSTED_KEY": "true",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.cidr.known.project.marker": "true",
|
"RunOnceActivity.cidr.known.project.marker": "true",
|
||||||
"RunOnceActivity.readMode.enableVisualFormatting": "true",
|
"RunOnceActivity.readMode.enableVisualFormatting": "true",
|
||||||
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||||
"SHOW_ALL_PROCESSES": "false",
|
"SHOW_ALL_PROCESSES": "false",
|
||||||
"ScreenRecorder.SavePath": "C:\\Users\\sergiodt",
|
"ScreenRecorder.SavePath": "C:\\Users\\sergiodt",
|
||||||
"android-custom-viewC:/Users/sergiodt/.gradle/caches/modules-2/files-2.1/androidx.recyclerview/recyclerview/1.2.1/f0f93e67af3f7417bdd560d5142f6dec4fe629c3/recyclerview-1.2.1-sources.jar!/androidx/recyclerview/widget/RecyclerView.java_SELECTED": "RecyclerView",
|
"android-custom-viewC:/Users/sergiodt/.gradle/caches/modules-2/files-2.1/androidx.recyclerview/recyclerview/1.2.1/f0f93e67af3f7417bdd560d5142f6dec4fe629c3/recyclerview-1.2.1-sources.jar!/androidx/recyclerview/widget/RecyclerView.java_SELECTED": "RecyclerView",
|
||||||
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-29/android/widget/TextView.java_SELECTED": "TextView",
|
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-29/android/widget/TextView.java_SELECTED": "TextView",
|
||||||
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-33/android/view/View.java_SELECTED": "View",
|
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-33/android/view/View.java_SELECTED": "View",
|
||||||
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-34/android/view/View.java_SELECTED": "View",
|
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-34/android/view/View.java_SELECTED": "View",
|
||||||
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-34/android/widget/CompoundButton.java_SELECTED": "CompoundButton",
|
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-34/android/widget/CompoundButton.java_SELECTED": "CompoundButton",
|
||||||
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-34/android/widget/TextView.java_SELECTED": "TextView",
|
"android-custom-viewC:/Users/sergiodt/AppData/Local/Android/Sdk/sources/android-34/android/widget/TextView.java_SELECTED": "TextView",
|
||||||
"cf.first.check.clang-format": "false",
|
"cf.first.check.clang-format": "false",
|
||||||
"cidr.known.project.marker": "true",
|
"cidr.known.project.marker": "true",
|
||||||
"com.developerphil.adbidea.selecteddevices": "G65TY9DQN7X4BIE6",
|
"com.developerphil.adbidea.selecteddevices": "G65TY9DQN7X4BIE6",
|
||||||
"com.google.services.firebase.aqiPopupShown": "true",
|
"com.google.services.firebase.aqiPopupShown": "true",
|
||||||
"git-widget-placeholder": "dev__6078",
|
"git-widget-placeholder": "dev",
|
||||||
"ignore.virus.scanning.warn.message": "true",
|
"ignore.virus.scanning.warn.message": "true",
|
||||||
"kotlin-language-version-configured": "true",
|
"kotlin-language-version-configured": "true",
|
||||||
"last_directory_selection": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable",
|
"last_directory_selection": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/drawable",
|
||||||
"last_opened_file_path": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout",
|
"last_opened_file_path": "C:/Users/sergiodt/AndroidStudioProjects/vn-warehouseManager/app/src/main/res/layout",
|
||||||
"project.structure.last.edited": "Modules",
|
"project.structure.last.edited": "Modules",
|
||||||
"project.structure.proportion": "0.17",
|
"project.structure.proportion": "0.17",
|
||||||
"project.structure.side.proportion": "0.2",
|
"project.structure.side.proportion": "0.2",
|
||||||
"rearrange.code.on.save": "true",
|
"rearrange.code.on.save": "true",
|
||||||
"run.code.analysis.last.selected.profile": "pProject Default",
|
"run.code.analysis.last.selected.profile": "pProject Default",
|
||||||
"settings.editor.selected.configurable": "actions.on.save"
|
"settings.editor.selected.configurable": "preferences.pluginManager"
|
||||||
},
|
},
|
||||||
"keyToStringList": {
|
"keyToStringList": {
|
||||||
"ExportApk.BuildVariants": [
|
"ExportApk.BuildVariants": [
|
||||||
"betaRelease"
|
"generalRelease"
|
||||||
],
|
],
|
||||||
"com.android.tools.idea.sqlite.queryhistory": [
|
"com.android.tools.idea.sqlite.queryhistory": [
|
||||||
"select * from expedition where routeFk=182933;",
|
"select * from expedition where routeFk=182933;",
|
||||||
"select * from expedition;",
|
"select * from expedition;",
|
||||||
"select * from expeditionPending;",
|
"select * from expeditionPending;",
|
||||||
"select * from expedition where id = 7753995;\n\n",
|
"select * from expedition where id = 7753995;\n\n",
|
||||||
"\nselect * from expedition where id = 7753995;"
|
"\nselect * from expedition where id = 7753995;"
|
||||||
],
|
|
||||||
"kotlin-gradle-user-dirs": [
|
|
||||||
"C:\\Users\\sergiodt\\.gradle"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="PsdUISettings">
|
<component name="PsdUISettings">
|
||||||
<option name="MODULE_TAB" value="Properties" />
|
<option name="MODULE_TAB" value="Properties" />
|
||||||
<option name="LAST_EDITED_SIGNING_CONFIG" value="debug" />
|
<option name="LAST_EDITED_SIGNING_CONFIG" value="debug" />
|
||||||
|
@ -700,17 +726,17 @@
|
||||||
<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\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" />
|
||||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\raw" />
|
|
||||||
</key>
|
</key>
|
||||||
<key name="MoveFile.RECENT_KEYS">
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
|
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\gradle" />
|
||||||
<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\userCases" />
|
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\java\es\verdnatura\domain\userCases" />
|
||||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\drawable-v24" />
|
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\drawable-v24" />
|
||||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\raw" />
|
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\raw" />
|
||||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\assets" />
|
|
||||||
</key>
|
</key>
|
||||||
<key name="MoveKotlinTopLevelDeclarationsDialog.RECENTS_KEY">
|
<key name="MoveKotlinTopLevelDeclarationsDialog.RECENTS_KEY">
|
||||||
<recent name="es.verdnatura.presentation.view.feature.claim.fragment.ubication" />
|
<recent name="es.verdnatura.presentation.view.feature.claim.fragment.ubication" />
|
||||||
|
@ -720,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.paletizador.fragment" />
|
<recent name="es.verdnatura.presentation.view.feature.ubicador.adapter" />
|
||||||
<recent name="es.verdnatura.presentation.view.feature.parking.fragment" />
|
<recent name="es.verdnatura.presentation.view.feature.ubicador.fragment" />
|
||||||
<recent name="es.verdnatura.presentation.view.feature.collection.fragment" />
|
<recent name="es.verdnatura.presentation.view.feature.delivery.adapters" />
|
||||||
<recent name="es.verdnatura.domain" />
|
<recent name="es.verdnatura.presentation.view.feature.delivery.fragments" />
|
||||||
<recent name="es.verdnatura.presentation.view.feature.truck.adapter" />
|
<recent name="es.verdnatura.domain.userCases" />
|
||||||
</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" />
|
||||||
|
@ -756,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="" />
|
||||||
|
@ -867,12 +894,22 @@
|
||||||
</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>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||||
|
<component name="StandaloneScriptsStorage">
|
||||||
|
<option name="files">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$/build.gradle.kts" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
<component name="SvnConfiguration">
|
<component name="SvnConfiguration">
|
||||||
<configuration>C:\Users\sergiodt\AppData\Roaming\Subversion</configuration>
|
<configuration>C:\Users\sergiodt\AppData\Roaming\Subversion</configuration>
|
||||||
</component>
|
</component>
|
||||||
|
@ -1228,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="338" />
|
<option name="localTasksCounter" value="373" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="Vcs.Log.History.Properties">
|
<component name="Vcs.Log.History.Properties">
|
||||||
|
@ -1306,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" />
|
||||||
|
@ -1322,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>
|
||||||
|
@ -1356,24 +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 refactor Ubicador #refs 6413" />
|
|
||||||
<MESSAGE value="feat notesDelivery #refs 6921" />
|
|
||||||
<MESSAGE value="feat lilium" />
|
|
||||||
<MESSAGE value="feat bugs" />
|
|
||||||
<MESSAGE value="feat ticketQr #refs 6602" />
|
|
||||||
<MESSAGE value="feat itemToBarCode refs #7614" />
|
|
||||||
<MESSAGE value="feat boxPicking #refs 7357" />
|
|
||||||
<MESSAGE value="feat itemShelvingLog #refs 7597" />
|
|
||||||
<MESSAGE value="feat roadMap #refs 7195" />
|
|
||||||
<MESSAGE value="feat inventory #refs 7023" />
|
|
||||||
<MESSAGE value="feat version24.28" />
|
|
||||||
<MESSAGE value="feat Ticketobservation refs #7541" />
|
|
||||||
<MESSAGE value="feat isF11Allowed refs #6435" />
|
|
||||||
<MESSAGE value="feat boxPickingCheck refs #7751" />
|
|
||||||
<MESSAGE value="feat barCode in ItemShelvingLog refs #7739" />
|
|
||||||
<MESSAGE value="feat Rename refs #7763" />
|
|
||||||
<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" />
|
||||||
|
@ -1381,32 +1412,50 @@
|
||||||
<MESSAGE value="feat itemGetBalance refs #6769" />
|
<MESSAGE value="feat itemGetBalance refs #6769" />
|
||||||
<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" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="feat: refactorResponse PasillerosItem refs #7827" />
|
<MESSAGE value="version 24.40" />
|
||||||
|
<MESSAGE value="feat: refs #8020 controlVehiculos" />
|
||||||
|
<MESSAGE value="feat: refs #6861 reservas" />
|
||||||
|
<MESSAGE value="feat: refs #8175 crashlyticsAndUpdate" />
|
||||||
|
<MESSAGE value="feat: refs #7266 printItem" />
|
||||||
|
<MESSAGE value="feat: refs #6845 userIterface" />
|
||||||
|
<MESSAGE value="feat: refs #8150 moveExpeditions" />
|
||||||
|
<MESSAGE value="feat: refs #8099 addSalarySupplement" />
|
||||||
|
<MESSAGE value="feat: refs #8082 ticketPickup" />
|
||||||
|
<MESSAGE value="feat: refs #8176 refactorSearchDialog" />
|
||||||
|
<MESSAGE value="feat: refs #8182 zoneClickable" />
|
||||||
|
<MESSAGE value="feat: refs#8213 reservas" />
|
||||||
|
<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>
|
||||||
<breakpoints>
|
<breakpoints>
|
||||||
<line-breakpoint enabled="true" type="kotlin-function">
|
<line-breakpoint enabled="true" type="kotlin-function">
|
||||||
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
||||||
<line>72</line>
|
<line>76</line>
|
||||||
<properties class="es.verdnatura.domain.SalixCallback" method="onError">
|
<properties class="es.verdnatura.domain.SalixCallback" method="errorSalixMessage">
|
||||||
<option name="WATCH_EXIT" value="false" />
|
<option name="WATCH_EXIT" value="false" />
|
||||||
</properties>
|
</properties>
|
||||||
<option name="timeStamp" value="11" />
|
<option name="timeStamp" value="11" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
<line-breakpoint enabled="true" type="kotlin-line">
|
<line-breakpoint enabled="true" type="kotlin-line">
|
||||||
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
||||||
<line>82</line>
|
<line>86</line>
|
||||||
<option name="timeStamp" value="12" />
|
<option name="timeStamp" value="12" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
<line-breakpoint enabled="true" type="kotlin-line">
|
<line-breakpoint enabled="true" type="kotlin-line">
|
||||||
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
||||||
<line>81</line>
|
<line>85</line>
|
||||||
<option name="timeStamp" value="13" />
|
<option name="timeStamp" value="13" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
<line-breakpoint enabled="true" type="kotlin-line">
|
<line-breakpoint enabled="true" type="kotlin-line">
|
||||||
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
||||||
<line>83</line>
|
<line>87</line>
|
||||||
<option name="timeStamp" value="14" />
|
<option name="timeStamp" value="14" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
</breakpoints>
|
</breakpoints>
|
||||||
|
|
|
@ -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 🛠️
|
||||||
|
|
|
@ -0,0 +1,147 @@
|
||||||
|
plugins {
|
||||||
|
id("com.android.application")
|
||||||
|
id("kotlin-android")
|
||||||
|
id("kotlin-kapt")
|
||||||
|
id("com.google.gms.google-services")
|
||||||
|
id("com.google.firebase.crashlytics")
|
||||||
|
id("com.google.devtools.ksp")
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "es.verdnatura"
|
||||||
|
compileSdk = 35
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId = "es.verdnatura"
|
||||||
|
minSdk = 26
|
||||||
|
targetSdk = 33 // se deja con target si no Play Protect la bloquea
|
||||||
|
versionCode = 374
|
||||||
|
versionName = "24.51"
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
getByName("release") {
|
||||||
|
//debuggable = false
|
||||||
|
//shrinkResources = true
|
||||||
|
//minifyEnabled = true
|
||||||
|
proguardFiles(
|
||||||
|
getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
getByName("debug") {
|
||||||
|
isMinifyEnabled = false
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//package de la app general = "package_name": "es.verdnatura"
|
||||||
|
//package de la app beta = "package_name": "es.verdnatura.sfusion"
|
||||||
|
|
||||||
|
applicationVariants.all { variant ->
|
||||||
|
variant.outputs.all { output ->
|
||||||
|
val flavorName = variant.productFlavors[0].name
|
||||||
|
val buildTypeName = variant.buildType.name
|
||||||
|
|
||||||
|
val apkName = when (flavorName) {
|
||||||
|
"beta" -> "vn-pickingBeta-${buildTypeName}.apk"
|
||||||
|
else -> "vn-picking-${buildTypeName}.apk"
|
||||||
|
}
|
||||||
|
output.outputFile.renameTo(File(output.outputFile.parentFile, apkName))
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
flavorDimensions += "version"
|
||||||
|
productFlavors {
|
||||||
|
create("beta") {
|
||||||
|
applicationIdSuffix = ".sfusion"
|
||||||
|
}
|
||||||
|
create("general") {}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildFeatures {
|
||||||
|
viewBinding = true
|
||||||
|
//compose = true
|
||||||
|
|
||||||
|
/*kotlinOptions {
|
||||||
|
jvmTarget = "1.8"
|
||||||
|
}
|
||||||
|
buildFeatures {
|
||||||
|
compose = true
|
||||||
|
}
|
||||||
|
|
||||||
|
composeOptions {
|
||||||
|
kotlinCompilerExtensionVersion = "1.4.3"
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
dataBinding = true
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_21
|
||||||
|
targetCompatibility = JavaVersion.VERSION_21
|
||||||
|
}
|
||||||
|
/* composeOptions {
|
||||||
|
kotlinCompilerExtensionVersion = "1.5.15"
|
||||||
|
}*/
|
||||||
|
/* kotlin {
|
||||||
|
jvmToolchain(17)
|
||||||
|
}
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = "17"
|
||||||
|
}*/
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
|
||||||
|
implementation(libs.firebase.crashlytics.ktx)
|
||||||
|
implementation(libs.firebase.analytics.ktx)
|
||||||
|
implementation(libs.play.services.location)
|
||||||
|
implementation(libs.navigation.fragment.ktx)
|
||||||
|
implementation(libs.androidx.navigation.ui.ktx)
|
||||||
|
implementation(libs.androidx.core.ktx)
|
||||||
|
implementation(libs.androidx.recyclerview)
|
||||||
|
implementation(libs.androidx.room.ktx)
|
||||||
|
kapt(libs.androidx.room.compiler)
|
||||||
|
implementation(libs.ink)
|
||||||
|
implementation(libs.kotlin.stdlib.jdk7)
|
||||||
|
implementation(libs.androidx.appcompat)
|
||||||
|
implementation(libs.androidx.core.ktx)
|
||||||
|
implementation(libs.androidx.constraintlayout)
|
||||||
|
implementation(libs.androidx.legacy.support.v4)
|
||||||
|
implementation(libs.androidx.lifecycle.extensions)
|
||||||
|
implementation(libs.material)
|
||||||
|
implementation(libs.retrofit)
|
||||||
|
implementation(libs.converter.gson)
|
||||||
|
implementation(libs.converter.scalars)
|
||||||
|
implementation(libs.lottie)
|
||||||
|
implementation(libs.androidx.swiperefreshlayout)
|
||||||
|
implementation(libs.androidx.fragment.ktx)
|
||||||
|
implementation(libs.androidx.lifecycle.viewmodel.ktx)
|
||||||
|
implementation(libs.androidx.lifecycle.livedata.ktx)
|
||||||
|
implementation(libs.androidx.legacy.support.v4)
|
||||||
|
implementation(libs.koin.core)
|
||||||
|
implementation(libs.koin.android)
|
||||||
|
implementation(libs.koin.androidx.scope)
|
||||||
|
implementation(libs.koin.androidx.viewmodel)
|
||||||
|
implementation(libs.glide)
|
||||||
|
implementation(libs.okhttp3.integration)
|
||||||
|
ksp(libs.glide.ksp)
|
||||||
|
implementation(libs.firebase.analytics)
|
||||||
|
implementation(libs.android.image.picker)
|
||||||
|
implementation(libs.androidx.datastore.preferences)
|
||||||
|
implementation(libs.androidx.datastore.core)
|
||||||
|
implementation(libs.zxing.android.embedded) { isTransitive = false }
|
||||||
|
implementation(libs.core)
|
||||||
|
|
||||||
|
// Compose
|
||||||
|
//implementation(libs.androidx.compose.bom)
|
||||||
|
/* implementation("androidx.compose.ui:ui")
|
||||||
|
implementation("androidx.compose.material:material")
|
||||||
|
implementation("androidx.compose.runtime:runtime")
|
||||||
|
implementation("androidx.activity:activity-compose:1.8.2")
|
||||||
|
implementation("androidx.compose.ui:ui-graphics")
|
||||||
|
implementation("androidx.compose.ui:ui-tooling-preview") */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
||||||
# Add project specific ProGuard rules here.
|
# Add project specific ProGuard rules here.
|
||||||
# You can control the set of applied configuration files using the
|
# You can control the set of applied configuration files using the
|
||||||
# proguardFiles setting in build.gradle.
|
# proguardFiles setting in build.gradle.kts.
|
||||||
#
|
#
|
||||||
# For more details, see
|
# For more details, see
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
|
@ -44,7 +44,6 @@ class MobileApplication : Application(), InteceptorListener {
|
||||||
signListener = listener
|
signListener = listener
|
||||||
}
|
}
|
||||||
|
|
||||||
// lateinit var silex: VerdnaturaService
|
|
||||||
lateinit var salix: SalixService
|
lateinit var salix: SalixService
|
||||||
var userId: Int? = null
|
var userId: Int? = null
|
||||||
var userName: String? = null
|
var userName: String? = null
|
||||||
|
|
|
@ -124,7 +124,7 @@ class DataStoreLocal(var mobileApplication: MobileApplication) {
|
||||||
SECTORFKDEFAULT
|
SECTORFKDEFAULT
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (operator.sector?.isOnReservationMode != null) {
|
if (operator.sector?.isOnReservationMode != null) {
|
||||||
editDataStoreKey(
|
editDataStoreKey(
|
||||||
SECTORISONRESERVATIONMODE,
|
SECTORISONRESERVATIONMODE,
|
||||||
|
@ -178,7 +178,10 @@ class DataStoreLocal(var mobileApplication: MobileApplication) {
|
||||||
editDataStoreKey(
|
editDataStoreKey(
|
||||||
RESERVATIONMODE, operator.isOnReservationMode
|
RESERVATIONMODE, operator.isOnReservationMode
|
||||||
)
|
)
|
||||||
|
editDataStoreKey(
|
||||||
|
ITEMPACKING,
|
||||||
|
operator.itemPackingTypeFk
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun isPreferenceExists(key: String): Boolean {
|
suspend fun isPreferenceExists(key: String): Boolean {
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
package es.verdnatura.db
|
package es.verdnatura.db
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.room.*
|
import androidx.room.Dao
|
||||||
|
import androidx.room.Database
|
||||||
|
import androidx.room.Delete
|
||||||
|
import androidx.room.Insert
|
||||||
|
import androidx.room.OnConflictStrategy
|
||||||
|
import androidx.room.Query
|
||||||
|
import androidx.room.Room
|
||||||
|
import androidx.room.RoomDatabase
|
||||||
|
import androidx.room.TypeConverter
|
||||||
|
import androidx.room.TypeConverters
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||||
|
@ -68,6 +77,9 @@ interface ExpedicionDao {
|
||||||
|
|
||||||
@Query("DELETE FROM expeditionPending WHERE code = :codeState")
|
@Query("DELETE FROM expeditionPending WHERE code = :codeState")
|
||||||
suspend fun getDeleteByState(codeState: String)
|
suspend fun getDeleteByState(codeState: String)
|
||||||
|
|
||||||
|
@Query("DELETE FROM expeditionPending")
|
||||||
|
suspend fun getDeleteAllState()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
|
@ -101,8 +113,8 @@ 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)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -2,11 +2,16 @@ package es.verdnatura.domain
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
import android.graphics.drawable.GradientDrawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.text.Html
|
import android.text.Html
|
||||||
|
import android.view.Gravity
|
||||||
|
import android.view.LayoutInflater
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
|
import es.verdnatura.R
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.time.ZonedDateTime
|
import java.time.ZonedDateTime
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
@ -14,7 +19,15 @@ import java.util.Date
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
fun List<Any?>.formatWithQuotes(): String {
|
fun List<Any?>.formatWithQuotes(): String {
|
||||||
return "[" + joinToString(", ") { if (it is String) "\"$it\"" else it.toString() } + "]"
|
return "[" + joinToString(", ") {
|
||||||
|
when {
|
||||||
|
it is String && (it.trim().startsWith("{") && it.trim()
|
||||||
|
.endsWith("}")) -> "\"$it\""
|
||||||
|
|
||||||
|
it is String -> "\"$it\""
|
||||||
|
else -> it.toString()
|
||||||
|
}
|
||||||
|
} + "]"
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
@RequiresApi(Build.VERSION_CODES.N)
|
||||||
|
@ -33,6 +46,28 @@ fun Any.toast(
|
||||||
return toast.apply { show() }
|
return toast.apply { show() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.showToastCenterWithBackground(textToShow: String) {
|
||||||
|
val inflater = LayoutInflater.from(this)
|
||||||
|
val layout = inflater.inflate(R.layout.ticket_toast_layout, null)
|
||||||
|
val text = layout.findViewById<TextView>(R.id.toast_text)
|
||||||
|
text.text = "$textToShow"
|
||||||
|
text.setTextColor(this.getColor(R.color.verdnatura_orange_salix))
|
||||||
|
text.textSize = 18f
|
||||||
|
|
||||||
|
val background = GradientDrawable().apply {
|
||||||
|
setColor(Color.parseColor("#000000"))
|
||||||
|
cornerRadius = 16f
|
||||||
|
}
|
||||||
|
layout.background = background
|
||||||
|
|
||||||
|
Toast(this).apply {
|
||||||
|
duration = Toast.LENGTH_LONG
|
||||||
|
view = layout
|
||||||
|
setGravity(Gravity.CENTER, 0, 0)
|
||||||
|
show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun <T : Any> T?.notNull(f: (it: T) -> Unit) {
|
fun <T : Any> T?.notNull(f: (it: T) -> Unit) {
|
||||||
if (this != null) f(this)
|
if (this != null) f(this)
|
||||||
}
|
}
|
||||||
|
@ -45,6 +80,7 @@ fun String.isParking(): Boolean {
|
||||||
val regex = Regex("^[^ ]+-[^ ]+$")
|
val regex = Regex("^[^ ]+-[^ ]+$")
|
||||||
return this.length > 4 && regex.matches(this)
|
return this.length > 4 && regex.matches(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun String.isShelving(): Boolean {
|
fun String.isShelving(): Boolean {
|
||||||
val regex = Regex("\\S{0,4}")
|
val regex = Regex("\\S{0,4}")
|
||||||
return regex.matches(this)
|
return regex.matches(this)
|
||||||
|
|
|
@ -5,6 +5,7 @@ import es.verdnatura.presentation.common.ExpeditionPrintOut
|
||||||
import es.verdnatura.presentation.common.ItemBarCodeSalix
|
import es.verdnatura.presentation.common.ItemBarCodeSalix
|
||||||
import es.verdnatura.presentation.common.ItemShelving
|
import es.verdnatura.presentation.common.ItemShelving
|
||||||
import es.verdnatura.presentation.common.PackingSiteSalix
|
import es.verdnatura.presentation.common.PackingSiteSalix
|
||||||
|
import es.verdnatura.presentation.common.PickupResponse
|
||||||
import es.verdnatura.presentation.common.SaleTrackingSalix
|
import es.verdnatura.presentation.common.SaleTrackingSalix
|
||||||
import es.verdnatura.presentation.common.TicketState
|
import es.verdnatura.presentation.common.TicketState
|
||||||
import es.verdnatura.presentation.view.feature.ajustes.model.Printers
|
import es.verdnatura.presentation.view.feature.ajustes.model.Printers
|
||||||
|
@ -16,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
|
||||||
|
@ -25,6 +27,10 @@ import es.verdnatura.presentation.view.feature.delivery.model.DeliveryInfo
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLog
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLog
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionWithTicket
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteAction
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplement
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplementAdd
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteDelivery
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteDelivery
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.TicketObservation
|
import es.verdnatura.presentation.view.feature.delivery.model.TicketObservation
|
||||||
|
@ -39,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
|
||||||
|
@ -69,7 +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.ItemUbicadorVO
|
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
|
||||||
|
@ -140,11 +147,21 @@ interface SalixService {
|
||||||
@Query("filter") filter: String
|
@Query("filter") filter: String
|
||||||
): Call<List<AddressLoses>>
|
): Call<List<AddressLoses>>
|
||||||
|
|
||||||
|
@POST("Applications/buy_getLastWithoutInventory/execute-func")
|
||||||
|
fun buyGetLastWithoutInventory(
|
||||||
|
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||||
|
): Call<Long>
|
||||||
|
|
||||||
@GET("Buyers")
|
@GET("Buyers")
|
||||||
fun getBuyers(
|
fun getBuyers(
|
||||||
@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
|
||||||
|
@ -181,10 +198,22 @@ interface SalixService {
|
||||||
fun getRoutes(
|
fun getRoutes(
|
||||||
): Call<MutableList<RouteInfo>>
|
): Call<MutableList<RouteInfo>>
|
||||||
|
|
||||||
@GET("Workers/findOne")
|
@POST("Expeditions/moveExpeditions")
|
||||||
|
fun moveExpeditions(
|
||||||
|
@Query("clientId") clientId: Number,
|
||||||
|
@Query("warehouseId") warehouseId: Number,
|
||||||
|
@Query("addressId") addressId: Number,
|
||||||
|
@Query("agencyModeId") agencyModeId: Number,
|
||||||
|
@Query("routeId") routeId: Number,
|
||||||
|
@Query("expeditionIds") expeditionIds: ArrayList<Number>,
|
||||||
|
@Query("landed") landed: String
|
||||||
|
|
||||||
|
): Call<Any>
|
||||||
|
|
||||||
|
@GET("Workers/Summary")
|
||||||
fun getNameWorker(
|
fun getNameWorker(
|
||||||
@Query("filter") filter: String
|
@Query("filter") filter: String
|
||||||
): Call<NameWorker>
|
): Call<List<NameWorker>>
|
||||||
|
|
||||||
@POST("Applications/{routine}/execute-proc")
|
@POST("Applications/{routine}/execute-proc")
|
||||||
fun executeProc(
|
fun executeProc(
|
||||||
|
@ -440,6 +469,12 @@ interface SalixService {
|
||||||
@Query("barcode") barcode: Number, @Query("warehouseFk") warehouseFk: Int
|
@Query("barcode") barcode: Number, @Query("warehouseFk") warehouseFk: Int
|
||||||
): Call<ItemCardVO>
|
): Call<ItemCardVO>
|
||||||
|
|
||||||
|
@POST("Applications/report_print/execute-proc")
|
||||||
|
fun printItem(
|
||||||
|
@Query("params") params: Any? = null,
|
||||||
|
@Query("schema") schema: String = "vn"
|
||||||
|
): Call<Unit>
|
||||||
|
|
||||||
@POST("Applications/itemPlacementSupplyAiming/execute-proc")
|
@POST("Applications/itemPlacementSupplyAiming/execute-proc")
|
||||||
fun itemPlacementSupplyAiming(
|
fun itemPlacementSupplyAiming(
|
||||||
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
||||||
|
@ -500,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"
|
||||||
|
@ -515,10 +564,10 @@ interface SalixService {
|
||||||
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
||||||
): Call<Any>
|
): Call<Any>
|
||||||
|
|
||||||
@POST("Applications/machine_getWorkerPlate/execute-proc")
|
/* @POST("Applications/machine_getWorkerPlate/execute-proc")
|
||||||
fun machineGetWorkerPlate(
|
fun machineGetWorkerPlate(
|
||||||
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
||||||
): Call<List<JsonObject>>
|
): Call<List<JsonObject>>*/
|
||||||
|
|
||||||
@POST("Applications/sectorCollection_get/execute-proc")
|
@POST("Applications/sectorCollection_get/execute-proc")
|
||||||
fun sectorCollectionGet(
|
fun sectorCollectionGet(
|
||||||
|
@ -540,9 +589,34 @@ interface SalixService {
|
||||||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||||
): Call<List<WorkerFromMistake>>
|
): Call<List<WorkerFromMistake>>
|
||||||
|
|
||||||
|
@GET("RouteActions")
|
||||||
|
fun getRouteAction(
|
||||||
|
@Query("filter") filter: Any = """{"fields": {"id": true,"name": true,"price":true},"order": "name"}"""
|
||||||
|
): Call<List<RouteAction>>
|
||||||
|
|
||||||
|
@GET("Expeditions")
|
||||||
|
fun getDataFromExpedition(
|
||||||
|
@Query("filter") filter: Any,
|
||||||
|
): Call<List<ExpeditionWithTicket>>
|
||||||
|
|
||||||
|
@POST("RouteComplements")
|
||||||
|
fun addRouteComplements(
|
||||||
|
@Body params: RouteComplementAdd
|
||||||
|
): Call<Any>
|
||||||
|
|
||||||
|
@GET("RouteComplements")
|
||||||
|
fun getRouteComplements(
|
||||||
|
@Query("filter") filter: Any
|
||||||
|
): Call<List<RouteComplement>>
|
||||||
|
|
||||||
|
@DELETE("RouteComplements/{id}")
|
||||||
|
fun routeComplementDelete(
|
||||||
|
@Path("id") id: Number
|
||||||
|
): Call<Any>
|
||||||
|
|
||||||
@POST("Applications/sectorCollection_new/execute-proc")
|
@POST("Applications/sectorCollection_new/execute-proc")
|
||||||
fun sectorCollectionNew(
|
fun sectorCollectionNew(
|
||||||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
@Query("params") filter: Any, @Query("schema") schema: String = "vn"
|
||||||
): Call<Any>
|
): Call<Any>
|
||||||
|
|
||||||
@POST("Applications/ticketStateToday_setState/execute-proc")
|
@POST("Applications/ticketStateToday_setState/execute-proc")
|
||||||
|
@ -560,6 +634,11 @@ interface SalixService {
|
||||||
@Query("filter") filter: Any, @Query("schema") schema: String = "vn"
|
@Query("filter") filter: Any, @Query("schema") schema: String = "vn"
|
||||||
): Call<List<TicketState>>
|
): Call<List<TicketState>>
|
||||||
|
|
||||||
|
@GET("Tickets")
|
||||||
|
fun ticketIsPickup(
|
||||||
|
@Query("filter") filter: Any, @Query("schema") schema: String = "vn"
|
||||||
|
): Call<List<PickupResponse>>
|
||||||
|
|
||||||
@POST("Applications/workerMachinery_isRegistered/execute-func")
|
@POST("Applications/workerMachinery_isRegistered/execute-func")
|
||||||
fun workerMachineryIsRegistered(
|
fun workerMachineryIsRegistered(
|
||||||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||||
|
@ -643,18 +722,27 @@ interface SalixService {
|
||||||
@Query("params") params: Any,
|
@Query("params") params: Any,
|
||||||
): Call<List<ItemLocationVO>>
|
): Call<List<ItemLocationVO>>
|
||||||
|
|
||||||
@POST("Applications/itemShelving_get/execute-proc")
|
|
||||||
fun itemShelvingList(
|
|
||||||
@Query("schema") schema: String = "vn",
|
|
||||||
@Query("params") params: Any,
|
|
||||||
): Call<List<ItemUbicadorVO>>
|
|
||||||
|
|
||||||
@POST("Applications/itemShelving_get/execute-proc")
|
@POST("Applications/itemShelving_get/execute-proc")
|
||||||
fun itemShelvingListNew(
|
fun itemShelvingListNew(
|
||||||
@Query("schema") schema: String = "vn",
|
@Query("schema") schema: String = "vn",
|
||||||
@Query("params") params: Any,
|
@Query("params") params: Any,
|
||||||
): Call<List<ItemUbicador>>
|
): Call<List<ItemUbicador>>
|
||||||
|
|
||||||
|
@GET("Shelvings/findOne")
|
||||||
|
fun shelvingGet(
|
||||||
|
@Query("filter") filter: Any,
|
||||||
|
): 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(
|
||||||
@Query("schema") schema: String = "srt",
|
@Query("schema") schema: String = "srt",
|
||||||
|
@ -936,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>
|
||||||
|
@ -1031,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
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
package es.verdnatura.domain.userCases
|
package es.verdnatura.domain.userCases
|
||||||
|
|
||||||
|
|
||||||
import es.verdnatura.domain.SalixService
|
import es.verdnatura.domain.SalixService
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
|
|
||||||
|
|
||||||
class GetItemFromBarcodeUseCase(private val salixService: SalixService) {
|
class GetItemFromBarcodeUseCase(private val salixService: SalixService) {
|
||||||
fun execute(barcode: String): Call<Int?> {
|
fun execute(barcode: String): Call<Int?> {
|
||||||
return salixService.barcodesToItem(barcode)
|
return salixService.barcodesToItem(barcode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class GetItemPrintItemUseCase(private val salixService: SalixService) {
|
||||||
|
fun execute(params: Any?): Call<Unit> {
|
||||||
|
return salixService.printItem(params)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun executeBuyUltimate(params: Any): Call<Long> {
|
||||||
|
return salixService.buyGetLastWithoutInventory(params)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ import com.google.android.gms.location.LocationCallback
|
||||||
import com.google.android.gms.location.LocationResult
|
import com.google.android.gms.location.LocationResult
|
||||||
import com.google.android.gms.location.Priority
|
import com.google.android.gms.location.Priority
|
||||||
import es.verdnatura.MobileApplication
|
import es.verdnatura.MobileApplication
|
||||||
import timber.log.Timber.d
|
import es.verdnatura.domain.toast
|
||||||
|
|
||||||
interface LocationUpdateCallback {
|
interface LocationUpdateCallback {
|
||||||
fun onLocationReceived(location: LocationResult)
|
fun onLocationReceived(location: LocationResult)
|
||||||
|
@ -36,7 +36,7 @@ abstract class BaseActivity<T : ViewDataBinding> : AppCompatActivity() {
|
||||||
var locationUpdateCallback: LocationUpdateCallback? = null
|
var locationUpdateCallback: LocationUpdateCallback? = null
|
||||||
|
|
||||||
protected lateinit var binding: T
|
protected lateinit var binding: T
|
||||||
private lateinit var fusedLocationClient:FusedLocationProviderClient
|
private lateinit var fusedLocationClient: FusedLocationProviderClient
|
||||||
private val locationRequest =
|
private val locationRequest =
|
||||||
com.google.android.gms.location.LocationRequest.Builder(
|
com.google.android.gms.location.LocationRequest.Builder(
|
||||||
Priority.PRIORITY_LOW_POWER,
|
Priority.PRIORITY_LOW_POWER,
|
||||||
|
@ -50,8 +50,8 @@ abstract class BaseActivity<T : ViewDataBinding> : AppCompatActivity() {
|
||||||
setContentView(getLayoutId())
|
setContentView(getLayoutId())
|
||||||
try {
|
try {
|
||||||
initDataBinding()
|
initDataBinding()
|
||||||
}catch (ex:Exception){
|
} catch (ex: Exception) {
|
||||||
d(ex.message.toString())
|
ex.message!!.toast(context = this)
|
||||||
}
|
}
|
||||||
mobileApplication = application as MobileApplication
|
mobileApplication = application as MobileApplication
|
||||||
init()
|
init()
|
||||||
|
@ -62,7 +62,6 @@ abstract class BaseActivity<T : ViewDataBinding> : AppCompatActivity() {
|
||||||
open fun addBindingVariables() {}
|
open fun addBindingVariables() {}
|
||||||
abstract fun init()
|
abstract fun init()
|
||||||
|
|
||||||
|
|
||||||
private fun initDataBinding() {
|
private fun initDataBinding() {
|
||||||
binding = DataBindingUtil.setContentView(this, getLayoutId())
|
binding = DataBindingUtil.setContentView(this, getLayoutId())
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
|
|
|
@ -69,10 +69,10 @@ abstract class BaseFragment<T : ViewDataBinding, V : BaseViewModel>(
|
||||||
addBindingVariables()
|
addBindingVariables()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun textScanned_filterDouble(textScanned: String): String {
|
fun textScannedFilterDouble(textScanned: String): String {
|
||||||
|
|
||||||
if (textScanned.length > 13) {
|
if (textScanned.length > 13) {
|
||||||
var size = textScanned.length
|
val size = textScanned.length
|
||||||
if (textScanned.substring((size / 2), size) == textScanned.substring(0, size / 2)
|
if (textScanned.substring((size / 2), size) == textScanned.substring(0, size / 2)
|
||||||
) {
|
) {
|
||||||
return textScanned.substring(0, size / 2)
|
return textScanned.substring(0, size / 2)
|
||||||
|
@ -149,8 +149,8 @@ abstract class BaseFragment<T : ViewDataBinding, V : BaseViewModel>(
|
||||||
fun getInfoVersionNameApp(): String {
|
fun getInfoVersionNameApp(): String {
|
||||||
val manager: PackageManager = requireContext().packageManager
|
val manager: PackageManager = requireContext().packageManager
|
||||||
val info: PackageInfo = manager.getPackageInfo(requireContext().packageName, 0)
|
val info: PackageInfo = manager.getPackageInfo(requireContext().packageName, 0)
|
||||||
mobileApplication.versionName = info.versionName
|
mobileApplication.versionName = info.versionName.toString()
|
||||||
return info.versionName
|
return mobileApplication.versionName
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDevicePDA(): Int? {
|
fun getDevicePDA(): Int? {
|
||||||
|
|
|
@ -7,9 +7,10 @@ import androidx.recyclerview.widget.RecyclerView
|
||||||
import es.verdnatura.databinding.ItemGeneralRowBinding
|
import es.verdnatura.databinding.ItemGeneralRowBinding
|
||||||
|
|
||||||
class GeneralAdapter(
|
class GeneralAdapter(
|
||||||
private val items: List<GeneralItem>,
|
private var items: List<GeneralItem>,
|
||||||
private val OnGeneralItemRowClickListener: OnGeneralItemRowClickListener,
|
private val onDeleteItemRowClickListener: OnGeneralItemRowClickListener? = null,
|
||||||
// private var showDelete: Boolean = false
|
private var showDelete: Boolean = false,
|
||||||
|
private val onRowClickListener: OnGeneralRowClickListener? = null
|
||||||
) : RecyclerView.Adapter<GeneralAdapter.ItemHolder>() {
|
) : RecyclerView.Adapter<GeneralAdapter.ItemHolder>() {
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
|
||||||
|
@ -23,10 +24,6 @@ class GeneralAdapter(
|
||||||
override fun onBindViewHolder(holder: ItemHolder, position: Int) {
|
override fun onBindViewHolder(holder: ItemHolder, position: Int) {
|
||||||
holder.bind(items[position])
|
holder.bind(items[position])
|
||||||
|
|
||||||
holder.binding.root.setOnClickListener {
|
|
||||||
OnGeneralItemRowClickListener.onGeneralItemRowClickListener(items[position])
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ItemHolder(
|
inner class ItemHolder(
|
||||||
|
@ -36,11 +33,31 @@ class GeneralAdapter(
|
||||||
fun bind(item: GeneralItem) {
|
fun bind(item: GeneralItem) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
this.item = item
|
this.item = item
|
||||||
/*if (showDelete) itemImage.visibility = View.VISIBLE
|
if (showDelete) itemImage.visibility = View.VISIBLE
|
||||||
else itemImage.visibility = View.GONE*/
|
else itemImage.visibility = View.GONE
|
||||||
|
|
||||||
itemCode.visibility = View.GONE
|
itemCode.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
binding.itemImage.setOnClickListener {
|
||||||
|
onDeleteItemRowClickListener?.onGeneralItemRowClickListener(item)
|
||||||
|
}
|
||||||
|
binding.itemCode.setOnClickListener {
|
||||||
|
onRowClickListener?.onRowClickListener(item)
|
||||||
|
}
|
||||||
|
binding.itemTitle.setOnClickListener {
|
||||||
|
onRowClickListener?.onRowClickListener(item)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updateItems(list: List<GeneralItem>) {
|
||||||
|
items = list
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setShowDelete(hasVisibility: Boolean) {
|
||||||
|
showDelete = hasVisibility
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
package es.verdnatura.presentation.common
|
||||||
|
|
||||||
|
import android.app.AlertDialog
|
||||||
|
import android.content.Context
|
||||||
|
import android.text.InputType
|
||||||
|
import android.view.View
|
||||||
|
import es.verdnatura.R
|
||||||
|
import es.verdnatura.domain.toast
|
||||||
|
import es.verdnatura.presentation.view.component.CustomDialogList
|
||||||
|
|
||||||
|
class PrinterDialogManager(private val context: Context) {
|
||||||
|
fun showPrintDialog(
|
||||||
|
item: Long, itemName: String, onPrintClick: (Long, String, Int?, Int) -> Unit
|
||||||
|
) {
|
||||||
|
val customDialogList = CustomDialogList(context)
|
||||||
|
customDialogList.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER)
|
||||||
|
customDialogList.getEditTextThree().setRawInputType(InputType.TYPE_CLASS_NUMBER)
|
||||||
|
|
||||||
|
customDialogList.setTitle(context.getString(R.string.itemName, item, itemName))
|
||||||
|
.setOkButton(context.getString(R.string.printQr)) {
|
||||||
|
handlePrintClick(item, customDialogList, onPrintClick, "qr")
|
||||||
|
customDialogList.dismiss()
|
||||||
|
}.setOkTwoButton(context.getString(R.string.printBarcode)) {
|
||||||
|
handlePrintClick(item, customDialogList, onPrintClick, "barcode")
|
||||||
|
customDialogList.dismiss()
|
||||||
|
|
||||||
|
}.setKoButton(context.getString(R.string.cancel)) {
|
||||||
|
customDialogList.dismiss()
|
||||||
|
}.setHintValueThree(context.getString(R.string.labelNumber))
|
||||||
|
.setHintValue(context.getString(R.string.optionalPacking)).setTextThree(View.VISIBLE)
|
||||||
|
.show()
|
||||||
|
customDialogList.getFocusThree()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun handlePrintClick(
|
||||||
|
item: Long,
|
||||||
|
customDialogList: CustomDialogList,
|
||||||
|
onPrintClick: (Long, String, Int?, Int) -> Unit,
|
||||||
|
labelType: String
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
onPrintClick(
|
||||||
|
item,
|
||||||
|
labelType,
|
||||||
|
if (customDialogList.getValue().isEmpty()) null else customDialogList.getValue()
|
||||||
|
.toInt(),
|
||||||
|
if (customDialogList.getValueOptional()
|
||||||
|
.isEmpty()
|
||||||
|
) 1 else customDialogList.getValueOptional().toInt()
|
||||||
|
)
|
||||||
|
customDialogList.dismiss()
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
context.getString(R.string.errorInput).toast(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class LabelDialogHelper(private val context: Context) {
|
||||||
|
fun showLabelDialog(
|
||||||
|
onItemSelected: (Int) -> Unit,
|
||||||
|
) {
|
||||||
|
val builder = AlertDialog.Builder(context)
|
||||||
|
builder.setTitle(context.getString(R.string.selectLabeltoPrint))
|
||||||
|
val labelCount = Array(10) { (it + 1).toString() }
|
||||||
|
builder.setItems(labelCount) { _, which ->
|
||||||
|
onItemSelected(which + 1)
|
||||||
|
}
|
||||||
|
builder.create().show()
|
||||||
|
}
|
||||||
|
}
|
|
@ -96,4 +96,26 @@ data class ExpeditionPrintOut(
|
||||||
val expeditionFk: Long,
|
val expeditionFk: Long,
|
||||||
val itemFk: Int,
|
val itemFk: Int,
|
||||||
val isChecked: Boolean
|
val isChecked: Boolean
|
||||||
|
)
|
||||||
|
|
||||||
|
data class PickupResponse(
|
||||||
|
val routeFk: Int,
|
||||||
|
val route: Route?
|
||||||
|
)
|
||||||
|
|
||||||
|
data class Route(
|
||||||
|
val id: Int,
|
||||||
|
val agencyModeFk: Int,
|
||||||
|
val agencyMode: AgencyMode?
|
||||||
|
)
|
||||||
|
|
||||||
|
data class AgencyMode(
|
||||||
|
val id: Int,
|
||||||
|
val deliveryMethodFk: Int,
|
||||||
|
val deliveryMethod: DeliveryMethod?
|
||||||
|
)
|
||||||
|
|
||||||
|
data class DeliveryMethod(
|
||||||
|
val id: Int,
|
||||||
|
val code: String?
|
||||||
)
|
)
|
|
@ -10,6 +10,7 @@ import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO
|
||||||
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.delivery.model.ClientTicketSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplement
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.Ticket
|
import es.verdnatura.presentation.view.feature.delivery.model.Ticket
|
||||||
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO
|
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO
|
||||||
|
@ -30,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
|
||||||
|
@ -50,6 +52,10 @@ interface OnMistakeWorkerClickListener {
|
||||||
fun onMistakeWorkerClickListener(item: WorkerFromMistake)
|
fun onMistakeWorkerClickListener(item: WorkerFromMistake)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface OnSalarySupplementClickListener {
|
||||||
|
fun onSalarySupplementClickListener(item: RouteComplement)
|
||||||
|
}
|
||||||
|
|
||||||
interface HideBottomNavigation {
|
interface HideBottomNavigation {
|
||||||
fun hideBottomNavigation(entryPoint: String)
|
fun hideBottomNavigation(entryPoint: String)
|
||||||
}
|
}
|
||||||
|
@ -102,6 +108,10 @@ interface OnGeneralItemRowClickListener {
|
||||||
fun onGeneralItemRowClickListener(item: GeneralItem)
|
fun onGeneralItemRowClickListener(item: GeneralItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface OnGeneralRowClickListener {
|
||||||
|
fun onRowClickListener(item: GeneralItem)
|
||||||
|
}
|
||||||
|
|
||||||
interface OnImageTrashClickListener {
|
interface OnImageTrashClickListener {
|
||||||
fun onImageTrashClickListener(item: Any)
|
fun onImageTrashClickListener(item: Any)
|
||||||
}
|
}
|
||||||
|
@ -158,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)
|
||||||
}
|
}
|
||||||
|
@ -170,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)
|
||||||
}
|
}
|
||||||
|
@ -263,6 +281,10 @@ interface OnTicketClickListener {
|
||||||
fun onTicketClickListener(sale: SaleVO)
|
fun onTicketClickListener(sale: SaleVO)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface OnTicketColorListener {
|
||||||
|
fun onTicketColorListener(sale: SaleVO)
|
||||||
|
}
|
||||||
|
|
||||||
interface OnTicketClickSaleListener {
|
interface OnTicketClickSaleListener {
|
||||||
fun onTicketClickListener(sale: Sale)
|
fun onTicketClickListener(sale: Sale)
|
||||||
}
|
}
|
||||||
|
@ -271,6 +293,10 @@ interface OnSaleReserveClickListener {
|
||||||
fun onSaleReserveListener(sale: Sale)
|
fun onSaleReserveListener(sale: Sale)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface OnAddItemClickListener {
|
||||||
|
fun onAddItemClickListener(sale: Sale)
|
||||||
|
}
|
||||||
|
|
||||||
interface OnBuyerSelectedListener {
|
interface OnBuyerSelectedListener {
|
||||||
fun onBuyerSelected(userFk: String)
|
fun onBuyerSelected(userFk: String)
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@ import android.graphics.drawable.Drawable
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import android.text.InputType
|
import android.text.InputType
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
@ -27,6 +29,10 @@ import com.bumptech.glide.request.transition.Transition
|
||||||
import java.text.DecimalFormat
|
import java.text.DecimalFormat
|
||||||
import java.text.ParseException
|
import java.text.ParseException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.LocalTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
|
@ -153,8 +159,12 @@ fun Activity.showKeyboardIn() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.hideKeyboard(view: View) {
|
fun Context.hideKeyboard(view: View) {
|
||||||
val inputMethodManager = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
|
Handler(Looper.getMainLooper()).postDelayed({
|
||||||
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
|
val inputMethodManager =
|
||||||
|
getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
|
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
|
||||||
|
}, 100L)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.showKeyboard() {
|
fun Context.showKeyboard() {
|
||||||
|
@ -213,7 +223,7 @@ fun PackageManager.getPackageInfoCompat(packageName: String, flags: Int = 0): Pa
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong()))
|
getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong()))
|
||||||
} else {
|
} else {
|
||||||
getPackageInfo(packageName, flags)
|
getPackageInfo(packageName, flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun convertToDateString(date: String?): String? {
|
fun convertToDateString(date: String?): String? {
|
||||||
|
@ -221,8 +231,18 @@ fun convertToDateString(date: String?): String? {
|
||||||
if (date.isNullOrEmpty()) {
|
if (date.isNullOrEmpty()) {
|
||||||
return date
|
return date
|
||||||
}
|
}
|
||||||
val formatoEntrada = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault()) // Formato de entrada
|
val formatoEntrada =
|
||||||
val formatoSalida = SimpleDateFormat("yyyy-MM-dd",Locale.getDefault()) // Formato de salida
|
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault()) // Formato de entrada
|
||||||
|
val formatoSalida = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) // Formato de salida
|
||||||
val dateToConvert = formatoEntrada.parse(date) // Convertir fecha de String a objeto Date
|
val dateToConvert = formatoEntrada.parse(date) // Convertir fecha de String a objeto Date
|
||||||
return formatoSalida.format(dateToConvert!!) // Convertir fecha a String con formato deseado
|
return formatoSalida.format(dateToConvert!!) // Convertir fecha a String con formato deseado
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getDayBounds(dateString: String): Pair<LocalDateTime, LocalDateTime> {
|
||||||
|
val formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")
|
||||||
|
val date = LocalDate.parse(dateString, formatter)
|
||||||
|
val startOfDay = date.atTime(LocalTime.MIN)
|
||||||
|
val endOfDay = date.atTime(LocalTime.MAX)
|
||||||
|
|
||||||
|
return Pair(startOfDay, endOfDay)
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
package es.verdnatura.presentation.view.commom
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.text.Spannable
|
||||||
|
import android.text.SpannableString
|
||||||
|
import android.text.style.ForegroundColorSpan
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.appcompat.widget.SearchView
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import es.verdnatura.domain.toast
|
||||||
|
|
||||||
|
class SearchableAdapter(
|
||||||
|
private var listElements: MutableList<NameWithId>,
|
||||||
|
private var context: Context,
|
||||||
|
private val onItemClick: (NameWithId) -> Unit,
|
||||||
|
) : RecyclerView.Adapter<SearchableAdapter.NameViewHolder>() {
|
||||||
|
|
||||||
|
private var listElementsFiltered = listElements.toMutableList()
|
||||||
|
private var currentQuery: String = ""
|
||||||
|
private lateinit var searchView: SearchView
|
||||||
|
|
||||||
|
inner class NameViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||||
|
private val nameText: TextView = itemView.findViewById(android.R.id.text1)
|
||||||
|
|
||||||
|
fun bind(nameWithId: NameWithId, query: String) {
|
||||||
|
val spannableString = SpannableString(nameWithId.name)
|
||||||
|
try {
|
||||||
|
if (query.isNotEmpty()) {
|
||||||
|
val startIndex = nameWithId.name.indexOf(query, ignoreCase = true)
|
||||||
|
if (startIndex >= 0) {
|
||||||
|
val endIndex = startIndex + query.length
|
||||||
|
spannableString.setSpan(
|
||||||
|
ForegroundColorSpan(Color.RED),
|
||||||
|
startIndex,
|
||||||
|
endIndex,
|
||||||
|
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nameText.text = spannableString
|
||||||
|
itemView.setOnClickListener {
|
||||||
|
onItemClick(nameWithId)
|
||||||
|
}
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
ex.message?.toast(context)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NameViewHolder {
|
||||||
|
val view = LayoutInflater.from(parent.context)
|
||||||
|
.inflate(android.R.layout.simple_list_item_1, parent, false)
|
||||||
|
return NameViewHolder(view)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBindViewHolder(holder: NameViewHolder, position: Int) {
|
||||||
|
val nameWithId = listElementsFiltered[position]
|
||||||
|
holder.bind(nameWithId, currentQuery)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun filter(query: String) {
|
||||||
|
currentQuery = query
|
||||||
|
listElementsFiltered = if (query.isEmpty()) {
|
||||||
|
listElements.toMutableList()
|
||||||
|
} else {
|
||||||
|
listElements.filter { it.name.contains(query, ignoreCase = true) }
|
||||||
|
.toMutableList()
|
||||||
|
}
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemCount(): Int = listElementsFiltered.size
|
||||||
|
|
||||||
|
fun updateList(newList: MutableList<NameWithId>) {
|
||||||
|
listElements = newList
|
||||||
|
filter("")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class NameWithId(
|
||||||
|
val id: Number,
|
||||||
|
val name: String
|
||||||
|
)
|
|
@ -0,0 +1,80 @@
|
||||||
|
package es.verdnatura.presentation.view.commom
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.LinearLayout
|
||||||
|
import androidx.appcompat.widget.SearchView
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import es.verdnatura.R
|
||||||
|
|
||||||
|
class SearchableRecyclerView @JvmOverloads constructor(
|
||||||
|
context: Context,
|
||||||
|
attrs: AttributeSet? = null,
|
||||||
|
defStyleAttr: Int = 0
|
||||||
|
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||||
|
|
||||||
|
val searchView: SearchView
|
||||||
|
private val recyclerView: RecyclerView
|
||||||
|
lateinit var adapter: SearchableAdapter
|
||||||
|
private var allItems: MutableList<NameWithId> = mutableListOf()
|
||||||
|
|
||||||
|
init {
|
||||||
|
LayoutInflater.from(context).inflate(R.layout.component_searchable_dialog, this, true)
|
||||||
|
searchView = findViewById(R.id.search_view)
|
||||||
|
recyclerView = findViewById(R.id.recycler_viewer)
|
||||||
|
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||||
|
recyclerView.setBackgroundColor(Color.WHITE)
|
||||||
|
searchView.setBackgroundColor(Color.WHITE)
|
||||||
|
searchView.setOnCloseListener {
|
||||||
|
visibility = View.GONE
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||||
|
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onQueryTextChange(newText: String?): Boolean {
|
||||||
|
if (::adapter.isInitialized) adapter.filter(newText ?: "")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setAdapter(adapter: SearchableAdapter, items: MutableList<NameWithId>) {
|
||||||
|
this.adapter = adapter
|
||||||
|
this.allItems = items
|
||||||
|
recyclerView.adapter = adapter
|
||||||
|
adapter.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setOnCloseListener(listener: () -> Boolean) {
|
||||||
|
searchView.setOnCloseListener { listener() }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setVisibility() {
|
||||||
|
searchView.visibility = View.VISIBLE
|
||||||
|
recyclerView.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setSearchHint(searchHint: String): SearchableRecyclerView {
|
||||||
|
searchView.queryHint = searchHint
|
||||||
|
searchView.setIconifiedByDefault(true)
|
||||||
|
searchView.isIconified = false
|
||||||
|
searchView.post {
|
||||||
|
searchView.requestFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setSearchHintWithoutFocus(searchHint: String): SearchableRecyclerView {
|
||||||
|
searchView.queryHint = searchHint
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,49 +8,43 @@ import com.google.android.material.textfield.TextInputEditText
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.ComponentCustomListDialogBinding
|
import es.verdnatura.databinding.ComponentCustomListDialogBinding
|
||||||
|
|
||||||
//import kotlinx.android.synthetic.main.component_custom_list_dialog.*
|
|
||||||
|
|
||||||
|
|
||||||
class CustomDialogList(context: Context) : Dialog(context, R.style.DialogTheme) {
|
class CustomDialogList(context: Context) : Dialog(context, R.style.DialogTheme) {
|
||||||
|
|
||||||
|
|
||||||
private var binding: ComponentCustomListDialogBinding =
|
private var binding: ComponentCustomListDialogBinding =
|
||||||
ComponentCustomListDialogBinding.inflate(layoutInflater)
|
ComponentCustomListDialogBinding.inflate(layoutInflater)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
getEditText().requestFocus()
|
getEditText().requestFocus()
|
||||||
//setContentView(R.layout.component_custom_list_dialog)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRecyclerView(): RecyclerView {
|
fun getRecyclerView(): RecyclerView {
|
||||||
|
|
||||||
return binding.itemRecyclerview
|
return binding.itemRecyclerview
|
||||||
//return item_recyclerview
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEditText(): TextInputEditText {
|
fun getEditText(): TextInputEditText {
|
||||||
return binding.customDialogValue
|
return binding.customDialogValue
|
||||||
//return custom_dialog_value
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEditTextTwo(): TextInputEditText {
|
fun getEditTextTwo(): TextInputEditText {
|
||||||
return binding.customDialogValueTwo
|
return binding.customDialogValueTwo
|
||||||
//return custom_dialog_value_two
|
}
|
||||||
|
|
||||||
|
fun getEditTextThree(): TextInputEditText {
|
||||||
|
return binding.customDialogValueThree
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getValue(): String {
|
fun getValue(): String {
|
||||||
return binding.customDialogValue.text.toString()
|
return binding.customDialogValue.text.toString()
|
||||||
//return custom_dialog_value.text.toString()
|
}
|
||||||
|
|
||||||
|
fun getValueOptional(): String {
|
||||||
|
return binding.customDialogValueThree.text.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setValue(value: String): CustomDialogList {
|
fun setValue(value: String): CustomDialogList {
|
||||||
binding.customDialogValue.setText(value)
|
binding.customDialogValue.setText(value)
|
||||||
binding.textinputlayoutUsername.visibility = View.VISIBLE
|
binding.textinputlayoutUsername.visibility = View.VISIBLE
|
||||||
|
|
||||||
/*custom_dialog_value.setText(value)
|
|
||||||
textinputlayout_username.visibility = View.VISIBLE*/
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,96 +55,97 @@ class CustomDialogList(context: Context) : Dialog(context, R.style.DialogTheme)
|
||||||
|
|
||||||
fun getValueTwo(): String {
|
fun getValueTwo(): String {
|
||||||
return binding.customDialogValueTwo.text.toString()
|
return binding.customDialogValueTwo.text.toString()
|
||||||
//return custom_dialog_value_two.text.toString()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setValueTwo(value: String): CustomDialogList {
|
fun setValueTwo(value: String): CustomDialogList {
|
||||||
binding.customDialogValueTwo.setText(value)
|
binding.customDialogValueTwo.setText(value)
|
||||||
binding.textinputlayoutTwo.visibility = View.VISIBLE
|
binding.textinputlayoutTwo.visibility = View.VISIBLE
|
||||||
|
|
||||||
/* custom_dialog_value_two.setText(value)
|
|
||||||
textinputlayout_two.visibility = View.VISIBLE*/
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setTitle(title: String): CustomDialogList {
|
fun setTitle(title: String): CustomDialogList {
|
||||||
binding.customDialogTitle.visibility = View.VISIBLE
|
binding.customDialogTitle.visibility = View.VISIBLE
|
||||||
binding.customDialogTitle.text = title
|
binding.customDialogTitle.text = title
|
||||||
/* custom_dialog_title.visibility = View.VISIBLE
|
|
||||||
custom_dialog_title.text = title*/
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setDescription(title: String): CustomDialogList {
|
fun setDescription(title: String): CustomDialogList {
|
||||||
binding.customDialogDescription.visibility = View.VISIBLE
|
binding.customDialogDescription.visibility = View.VISIBLE
|
||||||
binding.customDialogDescription.text = title
|
binding.customDialogDescription.text = title
|
||||||
|
|
||||||
/*custom_dialog_description.visibility = View.VISIBLE
|
|
||||||
custom_dialog_description.text = title*/
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogList {
|
fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogList {
|
||||||
|
|
||||||
binding.customDialogButtonOk.visibility = View.VISIBLE
|
binding.customDialogButtonOk.visibility = View.VISIBLE
|
||||||
binding.customDialogButtonOk.text = text
|
binding.customDialogButtonOk.text = text
|
||||||
|
|
||||||
/*custom_dialog_button_ok.visibility = View.VISIBLE
|
|
||||||
custom_dialog_button_ok.text = text
|
|
||||||
custom_dialog_button_ok.setOnClickListener { onButtonClicked() }*/
|
|
||||||
binding.customDialogButtonOk.setOnClickListener { onButtonClicked() }
|
binding.customDialogButtonOk.setOnClickListener { onButtonClicked() }
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setKoButton(text: String, onButtonClicked: () -> Unit): CustomDialogList {
|
fun setOkTwoButton(text: String, onButtonClicked: () -> Unit): CustomDialogList {
|
||||||
|
binding.customDialogButtonOkTwo.visibility = View.VISIBLE
|
||||||
|
binding.customDialogButtonOkTwo.text = text
|
||||||
|
binding.customDialogButtonOkTwo.setOnClickListener { onButtonClicked() }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setKoButton(text: String, onButtonClicked: () -> Unit): CustomDialogList {
|
||||||
binding.customDialogButtonKo.visibility = View.VISIBLE
|
binding.customDialogButtonKo.visibility = View.VISIBLE
|
||||||
binding.customDialogButtonKo.text = text
|
binding.customDialogButtonKo.text = text
|
||||||
/*custom_dialog_button_ko.visibility = View.VISIBLE
|
|
||||||
custom_dialog_button_ko.text = text*/
|
|
||||||
binding.customDialogButtonKo.setOnClickListener {
|
binding.customDialogButtonKo.setOnClickListener {
|
||||||
onButtonClicked()
|
onButtonClicked()
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setHintValue(text: String): CustomDialogList {
|
fun setHintValue(text: String): CustomDialogList {
|
||||||
|
|
||||||
binding.customDialogValue.hint = text
|
binding.customDialogValue.hint = text
|
||||||
// custom_dialog_value.hint = text
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setHintValueTwo(text: String): CustomDialogList {
|
fun setHintValueTwo(text: String): CustomDialogList {
|
||||||
binding.customDialogValueTwo.hint = text
|
binding.customDialogValueTwo.hint = text
|
||||||
//custom_dialog_value_two.hint = text
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setTextTwoGone(): CustomDialogList {
|
fun setHintValueThree(text: String): CustomDialogList {
|
||||||
binding.textinputlayoutTwo.visibility = View.GONE
|
binding.customDialogValueThree.hint = text
|
||||||
//textinputlayout_two.visibility = View.GONE
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setTextTwoVisibility(visibility: Int): CustomDialogList {
|
||||||
|
binding.textinputlayoutTwo.visibility = visibility
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setTextThree(visibility: Int): CustomDialogList {
|
||||||
|
binding.textinputlayoutThree.visibility = visibility
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hideDialog(): CustomDialogList {
|
fun hideDialog(): CustomDialogList {
|
||||||
binding.customDialogValue.visibility = View.GONE
|
binding.customDialogValue.visibility = View.GONE
|
||||||
//custom_dialog_value.visibility = View.GONE
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun showDialog(): CustomDialogList {
|
||||||
|
binding.customDialogValue.visibility = View.VISIBLE
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hideDescription(): CustomDialogList {
|
fun hideDescription(): CustomDialogList {
|
||||||
binding.customDialogDescription.visibility = View.GONE
|
binding.customDialogDescription.visibility = View.GONE
|
||||||
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hideTextInput(visibility:Int = View.INVISIBLE): CustomDialogList {
|
fun hideTextInput(visibility: Int = View.INVISIBLE): CustomDialogList {
|
||||||
binding.textinputlayoutUsername.visibility = visibility
|
binding.textinputlayoutUsername.visibility = visibility
|
||||||
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getFocusThree() {
|
||||||
|
binding.customDialogValueThree.requestFocus()
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -7,10 +7,10 @@ import com.google.android.material.textfield.TextInputEditText
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.ComponentCustomThreeDialogBinding
|
import es.verdnatura.databinding.ComponentCustomThreeDialogBinding
|
||||||
|
|
||||||
|
class CustomDialogThreeButtons(context: Context) : Dialog(context, R.style.DialogTheme) {
|
||||||
|
|
||||||
class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.DialogTheme) {
|
private var binding: ComponentCustomThreeDialogBinding =
|
||||||
|
ComponentCustomThreeDialogBinding.inflate(layoutInflater)
|
||||||
private var binding: ComponentCustomThreeDialogBinding = ComponentCustomThreeDialogBinding.inflate(layoutInflater)
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
||||||
|
@ -18,53 +18,52 @@ class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.Dial
|
||||||
//setContentView(R.layout.component_custom_three_dialog)
|
//setContentView(R.layout.component_custom_three_dialog)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun setTitle(title: String): CustomDialogThreeButtons {
|
fun setTitle(title: String): CustomDialogThreeButtons {
|
||||||
|
|
||||||
binding.customDialogTitle.visibility= View.VISIBLE
|
binding.customDialogTitle.visibility = View.VISIBLE
|
||||||
binding.customDialogTitle.text=title
|
binding.customDialogTitle.text = title
|
||||||
/* custom_dialog_title.visibility = View.VISIBLE
|
/* custom_dialog_title.visibility = View.VISIBLE
|
||||||
custom_dialog_title.text = title*/
|
custom_dialog_title.text = title*/
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setDescription(description: String): CustomDialogThreeButtons {
|
fun setDescription(description: String): CustomDialogThreeButtons {
|
||||||
binding.customDialogDescription.visibility= View.VISIBLE
|
binding.customDialogDescription.visibility = View.VISIBLE
|
||||||
binding.customDialogDescription.text=description
|
binding.customDialogDescription.text = description
|
||||||
|
|
||||||
/* custom_dialog_description.visibility = View.VISIBLE
|
/* custom_dialog_description.visibility = View.VISIBLE
|
||||||
custom_dialog_description.text = description*/
|
custom_dialog_description.text = description*/
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogThreeButtons {
|
fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogThreeButtons {
|
||||||
|
|
||||||
binding.customDialogButtonOk.visibility = View.VISIBLE
|
binding.customDialogButtonOk.visibility = View.VISIBLE
|
||||||
binding.customDialogButtonOk.text =text
|
binding.customDialogButtonOk.text = text
|
||||||
binding.customDialogButtonOk.setOnClickListener { onButtonClicked() }
|
binding.customDialogButtonOk.setOnClickListener { onButtonClicked() }
|
||||||
|
|
||||||
/* custom_dialog_button_ok.visibility = View.VISIBLE
|
/* custom_dialog_button_ok.visibility = View.VISIBLE
|
||||||
custom_dialog_button_ok.text = text
|
custom_dialog_button_ok.text = text
|
||||||
custom_dialog_button_ok.setOnClickListener { onButtonClicked() }*/
|
custom_dialog_button_ok.setOnClickListener { onButtonClicked() }*/
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getValue(): String {
|
||||||
fun getValue() : String {
|
|
||||||
return binding.customDialogValue.text.toString()
|
return binding.customDialogValue.text.toString()
|
||||||
//return custom_dialog_value.text.toString()
|
//return custom_dialog_value.text.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEditText() : TextInputEditText {
|
fun getEditText(): TextInputEditText {
|
||||||
return binding.customDialogValue
|
return binding.customDialogValue
|
||||||
//return custom_dialog_value
|
//return custom_dialog_value
|
||||||
}
|
}
|
||||||
fun setValue(value : String): CustomDialogThreeButtons{
|
|
||||||
|
fun setValue(value: String): CustomDialogThreeButtons {
|
||||||
|
|
||||||
binding.customDialogValue.setText(value)
|
binding.customDialogValue.setText(value)
|
||||||
binding.textinputlayout.visibility = View.VISIBLE
|
binding.textinputlayout.visibility = View.VISIBLE
|
||||||
/* custom_dialog_value.setText(value)
|
/* custom_dialog_value.setText(value)
|
||||||
textinputlayout.visibility = View.VISIBLE*/
|
textinputlayout.visibility = View.VISIBLE*/
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,10 +116,15 @@ class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.Dial
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setCustomDialogValue(visibility:Int){
|
fun setCustomDialogValue(visibility: Int) {
|
||||||
binding.customDialogValue.visibility=visibility
|
binding.customDialogValue.visibility = visibility
|
||||||
}
|
}
|
||||||
fun setFocusDialogValue(){
|
|
||||||
|
fun setFocusDialogValue() {
|
||||||
binding.customDialogValue.requestFocus()
|
binding.customDialogValue.requestFocus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setHintDialogValue(text: String) {
|
||||||
|
binding.customDialogValue.hint = text
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -32,6 +32,8 @@ import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.OnAjustesItemClickListener
|
import es.verdnatura.presentation.common.OnAjustesItemClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||||
|
import es.verdnatura.presentation.view.commom.NameWithId
|
||||||
|
import es.verdnatura.presentation.view.commom.SearchableAdapter
|
||||||
import es.verdnatura.presentation.view.component.CustomDialog
|
import es.verdnatura.presentation.view.component.CustomDialog
|
||||||
import es.verdnatura.presentation.view.feature.ajustes.adapter.SettingsAdapter
|
import es.verdnatura.presentation.view.feature.ajustes.adapter.SettingsAdapter
|
||||||
import es.verdnatura.presentation.view.feature.ajustes.model.AjustesItemVO
|
import es.verdnatura.presentation.view.feature.ajustes.model.AjustesItemVO
|
||||||
|
@ -75,51 +77,97 @@ class AjustesFragment :
|
||||||
binding.mainToolbar.toolbarTitle.text = getString(R.string.settings)
|
binding.mainToolbar.toolbarTitle.text = getString(R.string.settings)
|
||||||
hideBackButton(binding.mainToolbar)
|
hideBackButton(binding.mainToolbar)
|
||||||
getUserData()
|
getUserData()
|
||||||
binding.userText.text = mobileApplication.userName
|
|
||||||
binding.itemVersion.text = requireActivity().packageManager.getPackageInfo(
|
|
||||||
requireActivity().packageName, 0
|
|
||||||
).versionName!!
|
|
||||||
binding.androididText.text =
|
|
||||||
mobileApplication.dataStoreApp.readDataStoreKey<String>(ANDROID_ID)
|
|
||||||
binding.serialNumber.text = mobileApplication.serialNumber
|
|
||||||
pasilleroViewModel = PasilleroViewModel(mobileApplication)
|
pasilleroViewModel = PasilleroViewModel(mobileApplication)
|
||||||
setToolBar()
|
setToolBar()
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setSearchable(listNames: MutableList<NameWithId>) {
|
||||||
|
val adapter =
|
||||||
|
SearchableAdapter(
|
||||||
|
listElements = listNames,
|
||||||
|
context = requireContext()
|
||||||
|
) { elementSelected ->
|
||||||
|
sectorListVO.forEach {
|
||||||
|
if (it.id == elementSelected.id) {
|
||||||
|
runBlocking {
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
PRINTERNAME, getString(R.string.noprinter)
|
||||||
|
)
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(PRINTERFK, -1)
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
SECTORDESCRIP, it.description
|
||||||
|
)
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
SECTORFK, it.id
|
||||||
|
)
|
||||||
|
it.warehouseFk?.let { it1 ->
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
WAREHOUSEFK, it1
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
viewModel.settingsItem[0].sectorFk = it.id
|
||||||
|
viewModel.settingsItem[0].selected = it.description
|
||||||
|
viewModel.workerUpdateOperatorSalix(
|
||||||
|
"sector", mobileApplication.userId!!, it.id, null
|
||||||
|
)
|
||||||
|
settingsAdapter!!.notifyItemChanged(0)
|
||||||
|
return@forEach
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.searchableRecyclerView.visibility = View.GONE
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.searchableRecyclerView.setAdapter(adapter, listNames)
|
||||||
|
binding.searchableRecyclerView.visibility = View.VISIBLE
|
||||||
|
binding.searchableRecyclerView.setSearchHint(getString(R.string.sectorSearch))
|
||||||
|
ma.hideKeyboard(binding.searchableRecyclerView)
|
||||||
|
}
|
||||||
|
|
||||||
private fun setToolBar() {
|
private fun setToolBar() {
|
||||||
|
|
||||||
val listIcons: ArrayList<ImageView> = ArrayList()
|
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||||
val iconInfo = ImageView(context)
|
val iconInfo = ImageView(context)
|
||||||
iconInfo.setImageResource(R.drawable.ic_info_delivery)
|
iconInfo.setImageResource(R.drawable.ic_info_delivery)
|
||||||
|
val iconLogout = ImageView(context)
|
||||||
|
iconLogout.setImageResource(R.drawable.ic_logout)
|
||||||
|
|
||||||
listIcons.add(iconInfo)
|
listIcons.add(iconInfo)
|
||||||
|
listIcons.add(iconLogout)
|
||||||
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) {
|
||||||
|
|
||||||
customDialog.setTitle(getString(R.string.info))
|
when (item) {
|
||||||
.setDescription(
|
iconInfo.drawable -> {
|
||||||
getString(R.string.version) + ":\t" +
|
customDialog.setTitle(getString(R.string.info))
|
||||||
requireActivity().packageManager.getPackageInfo(
|
.setDescription(
|
||||||
requireActivity().packageName, 0
|
getString(R.string.version) + ":\t" +
|
||||||
).versionName!! + "(${getVersionCode()})" + "\n" +
|
requireActivity().packageManager.getPackageInfo(
|
||||||
getString(R.string.user) + ":\t" +
|
requireActivity().packageName, 0
|
||||||
mobileApplication.userName + "\n" +
|
).versionName!! + "(${getVersionCode()})" + "\n" +
|
||||||
getString(R.string.androidid) + ":\t" +
|
getString(R.string.user) + ":\t" +
|
||||||
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
mobileApplication.userName + "\n" +
|
||||||
ANDROID_ID
|
getString(R.string.androidid) + ":\t" +
|
||||||
) + "\n" +
|
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
if (!mobileApplication.serialNumber.isNullOrBlank()) {
|
ANDROID_ID
|
||||||
getString(R.string.serialNumber) + "\t" +
|
) + "\n" +
|
||||||
mobileApplication.serialNumber
|
if (!mobileApplication.serialNumber.isNullOrBlank()) {
|
||||||
} else ""
|
getString(R.string.serialNumber) + "\t" +
|
||||||
|
mobileApplication.serialNumber
|
||||||
|
} else ""
|
||||||
|
|
||||||
)
|
)
|
||||||
.setOkButton(getString(R.string.Close)) {
|
.setOkButton(getString(R.string.Close)) {
|
||||||
customDialog.dismiss()
|
customDialog.dismiss()
|
||||||
}.show()
|
}.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
iconLogout.drawable -> {
|
||||||
|
ma.onMyBackPressed()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
binding.mainToolbar.toolbarIcons.layoutManager =
|
binding.mainToolbar.toolbarIcons.layoutManager =
|
||||||
|
@ -177,6 +225,23 @@ class AjustesFragment :
|
||||||
CodeWorkerAction.STOP
|
CodeWorkerAction.STOP
|
||||||
)
|
)
|
||||||
|
|
||||||
|
getString(R.string.holdpositionAuto) -> {
|
||||||
|
|
||||||
|
runBlocking {
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
HOLDPOSITION,
|
||||||
|
viewModel.settingsItem[5].selected != getString(R.string.yes)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
viewModel.settingsItem[5].holdPosition =
|
||||||
|
!viewModel.settingsItem[5].holdPosition
|
||||||
|
viewModel.settingsItem[5].selected =
|
||||||
|
if (viewModel.settingsItem[5].holdPosition) getString(R.string.yes) else getString(
|
||||||
|
R.string.no
|
||||||
|
)
|
||||||
|
settingsAdapter!!.notifyItemChanged(5)
|
||||||
|
}
|
||||||
|
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,11 +271,13 @@ class AjustesFragment :
|
||||||
}
|
}
|
||||||
// modificar
|
// modificar
|
||||||
listSectores.sort()
|
listSectores.sort()
|
||||||
val array = arrayOfNulls<String>(listSectores.size)
|
|
||||||
sectorListVO = it.list
|
sectorListVO = it.list
|
||||||
showDialogForAll(
|
setSearchable(sectorListVO.map {
|
||||||
listSectores.toArray(array), getString(R.string.selectSector)
|
NameWithId(
|
||||||
)
|
id = it.id,
|
||||||
|
name = it.description
|
||||||
|
)
|
||||||
|
} as MutableList<NameWithId>)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
customDialog.setTitle(getString(R.string.sectors))
|
customDialog.setTitle(getString(R.string.sectors))
|
||||||
|
@ -297,16 +364,6 @@ class AjustesFragment :
|
||||||
private fun getUserData() {
|
private fun getUserData() {
|
||||||
|
|
||||||
loginViewModel = LoginViewModel(requireActivity().applicationContext)
|
loginViewModel = LoginViewModel(requireActivity().applicationContext)
|
||||||
/* try {
|
|
||||||
loginViewModel.operatorGetData(mobileApplication.userId!!)
|
|
||||||
} catch (_: Exception) {
|
|
||||||
ma.messageWithSound(
|
|
||||||
message = getString(R.string.errorGetData), isError = true, isPlayed = true
|
|
||||||
)
|
|
||||||
}
|
|
||||||
loginViewModel.workerOperator.observe(this@AjustesFragment) { iti ->
|
|
||||||
runBlocking { mobileApplication.dataStoreApp.saveDataOperator(iti) }
|
|
||||||
}*/
|
|
||||||
handleUserCall()
|
handleUserCall()
|
||||||
loginViewModel.handleUserResponse.observe(this@AjustesFragment) { iti ->
|
loginViewModel.handleUserResponse.observe(this@AjustesFragment) { iti ->
|
||||||
runBlocking { mobileApplication.dataStoreApp.saveWorkerData(iti) }
|
runBlocking { mobileApplication.dataStoreApp.saveWorkerData(iti) }
|
||||||
|
|
|
@ -100,14 +100,17 @@ class AjustesViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
action = false
|
action = false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
/*Tarea 5443
|
//Tarea 5443
|
||||||
_settingsItem.add(
|
_settingsItem.add(
|
||||||
AjustesItemVO(
|
AjustesItemVO(
|
||||||
"Bajar línea al revisar",
|
context.getString(R.string.holdpositionAuto),
|
||||||
holdPosition = holdPosition,
|
holdPosition = holdPosition,
|
||||||
action = true
|
selected = if (holdPosition) context.getString(R.string.yes) else context.getString(
|
||||||
)
|
R.string.no
|
||||||
)*/
|
),
|
||||||
|
action = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
_settingsItem.add(
|
_settingsItem.add(
|
||||||
AjustesItemVO(
|
AjustesItemVO(
|
||||||
|
@ -124,11 +127,11 @@ class AjustesViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
context.getString(R.string.runActivityStop), action = true
|
context.getString(R.string.runActivityStop), action = true
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
_settingsItem.add(
|
/* _settingsItem.add(
|
||||||
AjustesItemVO(
|
AjustesItemVO(
|
||||||
context.getString(R.string.closeSession), action = true
|
context.getString(R.string.closeSession), action = true
|
||||||
)
|
)
|
||||||
)
|
)*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
@ -11,6 +12,8 @@ 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.FragmentItemCardBinding
|
import es.verdnatura.databinding.FragmentItemCardBinding
|
||||||
|
import es.verdnatura.domain.ConstAndValues.PRINTERFK
|
||||||
|
import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
|
||||||
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
|
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
|
||||||
import es.verdnatura.domain.notNull
|
import es.verdnatura.domain.notNull
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
|
@ -19,7 +22,9 @@ import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnClickDynamic
|
import es.verdnatura.presentation.common.OnClickDynamic
|
||||||
import es.verdnatura.presentation.common.OnItemCardRowClickListener
|
import es.verdnatura.presentation.common.OnItemCardRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
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.itemScanValue
|
import es.verdnatura.presentation.common.itemScanValue
|
||||||
import es.verdnatura.presentation.common.loadUrl
|
import es.verdnatura.presentation.common.loadUrl
|
||||||
import es.verdnatura.presentation.view.component.CustomDialogDynamicButtons
|
import es.verdnatura.presentation.view.component.CustomDialogDynamicButtons
|
||||||
|
@ -34,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 = ""
|
||||||
|
@ -53,6 +59,8 @@ 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: Long? = null
|
||||||
|
private var buyToPrint: Long? = null
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance(entryPoint: String) = ItemCardFragment(entryPoint)
|
fun newInstance(entryPoint: String) = ItemCardFragment(entryPoint)
|
||||||
|
@ -95,16 +103,20 @@ class ItemCardFragment(
|
||||||
iconHistory.setImageResource(R.drawable.ic_history_black_24dp)
|
iconHistory.setImageResource(R.drawable.ic_history_black_24dp)
|
||||||
val iconSalix = ImageView(context)
|
val iconSalix = ImageView(context)
|
||||||
iconSalix.setImageResource(R.drawable.ic_logo_salix)
|
iconSalix.setImageResource(R.drawable.ic_logo_salix)
|
||||||
|
val iconPrint = ImageView(context)
|
||||||
|
iconPrint.setImageResource(R.drawable.ic_print_black_24dp)
|
||||||
|
|
||||||
|
|
||||||
iconReload.tooltipText = getTooltip(R.drawable.ic_autorenew_black_24dp)
|
iconReload.tooltipText = getTooltip(R.drawable.ic_autorenew_black_24dp)
|
||||||
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
|
||||||
|
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)
|
||||||
|
|
||||||
binding.mainToolbar.toolbarIcons.adapter =
|
binding.mainToolbar.toolbarIcons.adapter =
|
||||||
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
||||||
|
@ -112,6 +124,25 @@ class ItemCardFragment(
|
||||||
override fun onOptionsItemSelected(item: Drawable) {
|
override fun onOptionsItemSelected(item: Drawable) {
|
||||||
|
|
||||||
when (item) {
|
when (item) {
|
||||||
|
|
||||||
|
iconPrint.drawable -> {
|
||||||
|
|
||||||
|
if (buyToPrint != null) {
|
||||||
|
|
||||||
|
val printerDialogManager = PrinterDialogManager(requireContext())
|
||||||
|
printerDialogManager.showPrintDialog(
|
||||||
|
buyToPrint ?: itemInfoG!!.id.toLong(),
|
||||||
|
itemInfoG?.longName ?: ""
|
||||||
|
) { id, labelType, copies, packing ->
|
||||||
|
printItem(id, labelType, copies, packing)
|
||||||
|
}
|
||||||
|
} else ma.messageWithSound(
|
||||||
|
getString(R.string.errorPrintBuy),
|
||||||
|
isError = true,
|
||||||
|
isPlayed = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
iconReload.drawable -> {
|
iconReload.drawable -> {
|
||||||
getItemCard(itemInfoG!!.id.toString())
|
getItemCard(itemInfoG!!.id.toString())
|
||||||
}
|
}
|
||||||
|
@ -152,20 +183,77 @@ class ItemCardFragment(
|
||||||
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setEvents() {
|
private fun printItem(id: Long, labelType: String, packing: Int?, copies: Int?) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
viewModel.printItem(
|
||||||
|
reportName = "LabelBuy",
|
||||||
|
printerFk = mobileApplication.dataStoreApp.readDataStoreKey<Int>(
|
||||||
|
PRINTERFK
|
||||||
|
),
|
||||||
|
userFk = mobileApplication.userId!!,
|
||||||
|
priority = "normal",
|
||||||
|
params = JSONObject().apply {
|
||||||
|
put("copies", copies)
|
||||||
|
put("id", id)
|
||||||
|
put("labelType", labelType)
|
||||||
|
put("packing", packing)
|
||||||
|
}.toString().replace("\"", "\\\"")
|
||||||
|
)
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
|
||||||
|
}
|
||||||
|
customDialogList.dismiss()
|
||||||
|
hideKeyboard()
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
if (binding.editItemFk.text.toString().isNotEmpty()) try {
|
if (binding.editItemFk.text.toString().isNotEmpty())
|
||||||
getItemCard(
|
try {
|
||||||
itemScanValue(
|
originalScan = itemScanValue(
|
||||||
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
|
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
|
||||||
).toString()
|
).toString().toLong()
|
||||||
)
|
getItemCard(
|
||||||
} catch (ex: Exception) {
|
originalScan!!.toString()
|
||||||
ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
|
)
|
||||||
}
|
} catch (ex: Exception) {
|
||||||
|
ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
|
||||||
|
}
|
||||||
|
|
||||||
binding.editItemFk.setText("")
|
binding.editItemFk.setText("")
|
||||||
ma.hideKeyboard(binding.editItemFk)
|
ma.hideKeyboard(binding.editItemFk)
|
||||||
|
@ -196,7 +284,6 @@ class ItemCardFragment(
|
||||||
|
|
||||||
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) as Int
|
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) as Int
|
||||||
itemFk = itemValueFk
|
itemFk = itemValueFk
|
||||||
|
|
||||||
viewModel.getItemCard(itemFk.toLong(), warehouseFk!!)
|
viewModel.getItemCard(itemFk.toLong(), warehouseFk!!)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -210,6 +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
|
||||||
|
if (originalScan == null || it.id == originalScan!!.toInt()) {
|
||||||
|
viewModel.buyGetLastWithoutInventory(
|
||||||
|
itemFk = it.id,
|
||||||
|
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
|
||||||
|
WAREHOUSEFK
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
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)
|
||||||
|
@ -237,6 +335,11 @@ class ItemCardFragment(
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
loadBuyUltimateResponse.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
buyToPrint = it
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import androidx.lifecycle.map
|
||||||
import es.verdnatura.domain.SalixCallback
|
import es.verdnatura.domain.SalixCallback
|
||||||
import es.verdnatura.domain.formatWithQuotes
|
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.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.ItemBarCodeSalix
|
import es.verdnatura.presentation.common.ItemBarCodeSalix
|
||||||
|
@ -25,6 +26,7 @@ import java.io.File
|
||||||
class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
||||||
|
|
||||||
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
||||||
|
private val printItemUseCase = GetItemPrintItemUseCase(salix)
|
||||||
|
|
||||||
private val _itemCard by lazy { MutableLiveData<ItemCardVO>() }
|
private val _itemCard by lazy { MutableLiveData<ItemCardVO>() }
|
||||||
val itemCard: LiveData<ItemCardVO>
|
val itemCard: LiveData<ItemCardVO>
|
||||||
|
@ -48,6 +50,10 @@ class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
||||||
val loadAddressLosesList: LiveData<Event<AddressLosesList>> =
|
val loadAddressLosesList: LiveData<Event<AddressLosesList>> =
|
||||||
_addressLosesList.map { Event(it) }
|
_addressLosesList.map { Event(it) }
|
||||||
|
|
||||||
|
private val _buyUltimateResponse by lazy { MutableLiveData<Long>() }
|
||||||
|
val buyUltimateResponse: LiveData<Long> = _buyUltimateResponse
|
||||||
|
val loadBuyUltimateResponse: LiveData<Event<Long>> = _buyUltimateResponse.map { Event(it) }
|
||||||
|
|
||||||
fun getItemCard(
|
fun getItemCard(
|
||||||
itemFk: Number,
|
itemFk: Number,
|
||||||
warehouseFk: Int,
|
warehouseFk: Int,
|
||||||
|
@ -63,6 +69,28 @@ class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun printItem(
|
||||||
|
reportName: String,
|
||||||
|
printerFk: Int,
|
||||||
|
userFk: Int,
|
||||||
|
params: Any,
|
||||||
|
priority: String
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
printItemUseCase.execute(
|
||||||
|
params = arrayListOf(
|
||||||
|
reportName,
|
||||||
|
printerFk,
|
||||||
|
userFk,
|
||||||
|
params,
|
||||||
|
priority
|
||||||
|
).formatWithQuotes()
|
||||||
|
)
|
||||||
|
.enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
fun itemGetSimilar(
|
fun itemGetSimilar(
|
||||||
itemFk: Int,
|
itemFk: Int,
|
||||||
warehouseFk: Int,
|
warehouseFk: Int,
|
||||||
|
@ -210,4 +238,20 @@ class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun buyGetLastWithoutInventory(
|
||||||
|
itemFk: Int, warehouseFk: Int,
|
||||||
|
) {
|
||||||
|
salix.buyGetLastWithoutInventory(
|
||||||
|
params = arrayListOf(
|
||||||
|
itemFk,
|
||||||
|
warehouseFk
|
||||||
|
).formatWithQuotes()
|
||||||
|
)
|
||||||
|
.enqueue(object : SalixCallback<Long>(context) {
|
||||||
|
override fun onSuccess(response: Response<Long>) {
|
||||||
|
_buyUltimateResponse.value = response.body()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ class ItemCardVO(
|
||||||
var size: Int? = null,
|
var size: Int? = null,
|
||||||
var stems: String? = null,
|
var stems: String? = null,
|
||||||
var itemCost: String? = null,
|
var itemCost: String? = null,
|
||||||
var category:String? = null,
|
var category: String? = null,
|
||||||
var producer: String? = null,
|
var producer: String? = null,
|
||||||
var origin: String? = null,
|
var origin: String? = null,
|
||||||
var reserva: Int? = null,
|
var reserva: Int? = null,
|
||||||
|
@ -46,13 +46,20 @@ class ItemCardRowVO(
|
||||||
class BarcodeVO(
|
class BarcodeVO(
|
||||||
var code: String?
|
var code: String?
|
||||||
)
|
)
|
||||||
|
|
||||||
data class ItemDetails(
|
data class ItemDetails(
|
||||||
var itemFk: Int? = null,
|
var itemFk: Int? = null,
|
||||||
var vShelvingFK: String = "",
|
var vShelvingFK: String = "",
|
||||||
var itemCost: Double = 0.0,
|
var itemCost: Double = 0.0,
|
||||||
var visible: Int = 0,
|
var visible: Int = 0,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ItemPrint(
|
||||||
|
val id: Int,
|
||||||
|
val labelType: String,
|
||||||
|
val packing: Int? = null,
|
||||||
|
val copies: Int? = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ class BuscarItemFragment(
|
||||||
if (binding.editItemFk.text.toString().isNotEmpty()) try {
|
if (binding.editItemFk.text.toString().isNotEmpty()) try {
|
||||||
getLocations(
|
getLocations(
|
||||||
itemScanValue(
|
itemScanValue(
|
||||||
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
|
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
|
|
|
@ -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
|
||||||
|
)
|
|
@ -6,6 +6,8 @@ import android.graphics.Color
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.View.GONE
|
||||||
|
import android.view.View.VISIBLE
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat.getColor
|
import androidx.core.content.ContextCompat.getColor
|
||||||
import androidx.core.graphics.drawable.DrawableCompat
|
import androidx.core.graphics.drawable.DrawableCompat
|
||||||
|
@ -13,6 +15,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.ItemArticleRowFragmentBinding
|
import es.verdnatura.databinding.ItemArticleRowFragmentBinding
|
||||||
|
import es.verdnatura.domain.ConstAndValues.CONTROLADOR
|
||||||
import es.verdnatura.domain.ConstAndValues.SACADOR
|
import es.verdnatura.domain.ConstAndValues.SACADOR
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnPackingClickListener
|
import es.verdnatura.presentation.common.OnPackingClickListener
|
||||||
|
@ -20,11 +23,12 @@ import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||||
import es.verdnatura.presentation.common.OnQuantityClickListener
|
import es.verdnatura.presentation.common.OnQuantityClickListener
|
||||||
import es.verdnatura.presentation.common.OnSaleClickListener
|
import es.verdnatura.presentation.common.OnSaleClickListener
|
||||||
import es.verdnatura.presentation.common.OnTicketClickListener
|
import es.verdnatura.presentation.common.OnTicketClickListener
|
||||||
|
import es.verdnatura.presentation.common.OnTicketColorListener
|
||||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||||
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
|
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
|
||||||
|
|
||||||
class SaleAdapter(
|
class SaleAdapter(
|
||||||
private val items: List<SaleVO>,
|
private var items: MutableList<SaleVO>,
|
||||||
private val onPasillerosItemClickListener: OnPasillerosItemClickListener,
|
private val onPasillerosItemClickListener: OnPasillerosItemClickListener,
|
||||||
private val onQuantityClick: OnQuantityClickListener,
|
private val onQuantityClick: OnQuantityClickListener,
|
||||||
private val onSaleClickListener: OnSaleClickListener,
|
private val onSaleClickListener: OnSaleClickListener,
|
||||||
|
@ -33,8 +37,9 @@ class SaleAdapter(
|
||||||
private var onTicketClick: OnTicketClickListener? = null,
|
private var onTicketClick: OnTicketClickListener? = null,
|
||||||
private var SaleAdapter: SaleAdapter? = null,
|
private var SaleAdapter: SaleAdapter? = null,
|
||||||
private var type: String? = null,
|
private var type: String? = null,
|
||||||
|
private var onTicketColorClickListener: OnTicketColorListener? = null
|
||||||
|
|
||||||
) : RecyclerView.Adapter<SaleAdapter.AjustesItemHolder>() {
|
) : RecyclerView.Adapter<SaleAdapter.AjustesItemHolder>() {
|
||||||
var context: Context? = null
|
var context: Context? = null
|
||||||
var position: Int = 0
|
var position: Int = 0
|
||||||
|
|
||||||
|
@ -396,8 +401,32 @@ class SaleAdapter(
|
||||||
} else {
|
} else {
|
||||||
View.GONE
|
View.GONE
|
||||||
}*/
|
}*/
|
||||||
|
println("sale ${sale.parkingCode} : ${sale.isAdvanced}")
|
||||||
//ASIGNAMOS VALOR A LA VSITA
|
//ASIGNAMOS VALOR A LA VSITA
|
||||||
|
ticketFk.setTextColor(
|
||||||
|
getColor(
|
||||||
|
context!!,
|
||||||
|
if (sale.isAdvanced != null && sale.isAdvanced == 1) {
|
||||||
|
R.color.verdnatura_red_salix
|
||||||
|
} else {
|
||||||
|
R.color.verdnatura_black
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
parkingCode.visibility = if (sale.parkingCode == null) GONE else VISIBLE
|
||||||
|
|
||||||
|
itemTicketColor.setOnClickListener {
|
||||||
|
onTicketColorClickListener?.onTicketColorListener(sale)
|
||||||
|
}
|
||||||
|
if (type == SACADOR || type == CONTROLADOR) {
|
||||||
|
itemTicketColor.tooltipText = context!!.getString(R.string.filterLevelColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ticketFk.paintFlags = ticketFk.paintFlags or Paint.UNDERLINE_TEXT_FLAG
|
||||||
|
itemArticleItemFk.paintFlags =
|
||||||
|
itemArticleItemFk.paintFlags or Paint.UNDERLINE_TEXT_FLAG*/
|
||||||
|
|
||||||
|
|
||||||
this.sale = sale
|
this.sale = sale
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -468,4 +497,14 @@ class SaleAdapter(
|
||||||
// itemTicketColor.setBackgroundResource((R.drawable.rectangle))
|
// itemTicketColor.setBackgroundResource((R.drawable.rectangle))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updateSales(newSales: List<SaleVO>) {
|
||||||
|
items = newSales.toMutableList()
|
||||||
|
notifyDataSetChanged() // Notifica al adaptador que los datos han cambiado
|
||||||
|
}
|
||||||
|
|
||||||
|
fun orderSales(newSales: List<SaleVO>) {
|
||||||
|
|
||||||
|
notifyDataSetChanged() // Notifica al adaptador que los datos han cambiado
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -7,7 +7,6 @@ import android.graphics.drawable.Drawable
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.View.GONE
|
import android.view.View.GONE
|
||||||
import android.view.View.INVISIBLE
|
|
||||||
import android.view.View.VISIBLE
|
import android.view.View.VISIBLE
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat.getColor
|
import androidx.core.content.ContextCompat.getColor
|
||||||
|
@ -20,6 +19,7 @@ import es.verdnatura.domain.ConstAndValues.PREITEMPICKERTEST
|
||||||
import es.verdnatura.domain.ConstAndValues.PREPARED
|
import es.verdnatura.domain.ConstAndValues.PREPARED
|
||||||
import es.verdnatura.domain.ConstAndValues.SACADOR
|
import es.verdnatura.domain.ConstAndValues.SACADOR
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
|
import es.verdnatura.presentation.common.OnAddItemClickListener
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnPackingClickSaleListener
|
import es.verdnatura.presentation.common.OnPackingClickSaleListener
|
||||||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||||
|
@ -38,6 +38,7 @@ class SaleAdapterNew(
|
||||||
private var onTicketClick: OnTicketClickSaleListener? = null,
|
private var onTicketClick: OnTicketClickSaleListener? = null,
|
||||||
private var saleAdapter: SaleAdapterNew? = null,
|
private var saleAdapter: SaleAdapterNew? = null,
|
||||||
private var onReserveSaleClick: OnSaleReserveClickListener? = null,
|
private var onReserveSaleClick: OnSaleReserveClickListener? = null,
|
||||||
|
private var onAddItemClickListener: OnAddItemClickListener? = null,
|
||||||
private var type: String? = null,
|
private var type: String? = null,
|
||||||
|
|
||||||
) : RecyclerView.Adapter<SaleAdapterNew.AjustesItemHolder>() {
|
) : RecyclerView.Adapter<SaleAdapterNew.AjustesItemHolder>() {
|
||||||
|
@ -70,7 +71,6 @@ class SaleAdapterNew(
|
||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(sale: Sale) {
|
fun bind(sale: Sale) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
// if (sale.reservedQuantity == null) sale.reservedQuantity = 0
|
|
||||||
|
|
||||||
val childLayoutManager =
|
val childLayoutManager =
|
||||||
LinearLayoutManager(context!!, RecyclerView.HORIZONTAL, false)
|
LinearLayoutManager(context!!, RecyclerView.HORIZONTAL, false)
|
||||||
|
@ -148,12 +148,15 @@ class SaleAdapterNew(
|
||||||
layoutError.visibility = VISIBLE
|
layoutError.visibility = VISIBLE
|
||||||
txtError.text =
|
txtError.text =
|
||||||
binding.root.context.getString(R.string.originalQuantity) + sale.originalQuantity
|
binding.root.context.getString(R.string.originalQuantity) + sale.originalQuantity
|
||||||
|
binding.addItem.visibility = VISIBLE
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
layoutError.visibility = GONE
|
layoutError.visibility = GONE
|
||||||
|
binding.addItem.visibility = GONE
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.deleteReserve.visibility = if (sale.isAdded == 1) VISIBLE else INVISIBLE
|
binding.deleteReserve.visibility = if (sale.isAdded == 1) VISIBLE else GONE
|
||||||
|
|
||||||
if (sale.isAdded == 1) {
|
if (sale.isAdded == 1) {
|
||||||
layoutError.visibility = VISIBLE
|
layoutError.visibility = VISIBLE
|
||||||
|
@ -183,16 +186,7 @@ class SaleAdapterNew(
|
||||||
View.GONE
|
View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sale.isParent) {/* itemArticleItemFk.visibility = View.INVISIBLE
|
if (sale.isParent) {
|
||||||
itemPackingText.visibility = View.INVISIBLE
|
|
||||||
itemPackingItemFk.visibility = View.INVISIBLE
|
|
||||||
itemArticleCel1.visibility = View.INVISIBLE
|
|
||||||
itemArticleCel2.visibility = View.INVISIBLE
|
|
||||||
itemArticleCel3.visibility = View.INVISIBLE
|
|
||||||
itemArticleQuantity.visibility = View.INVISIBLE
|
|
||||||
txtdeNew.visibility = View.INVISIBLE
|
|
||||||
itemArticleQuantityPicked.visibility = View.INVISIBLE
|
|
||||||
itemArticleQuantityLine3.visibility = View.VISIBLE*/
|
|
||||||
packingTopicker.visibility = View.INVISIBLE
|
packingTopicker.visibility = View.INVISIBLE
|
||||||
quantityReserved.visibility = View.INVISIBLE
|
quantityReserved.visibility = View.INVISIBLE
|
||||||
itemArticleItemFkNew.visibility = View.INVISIBLE
|
itemArticleItemFkNew.visibility = View.INVISIBLE
|
||||||
|
@ -200,16 +194,7 @@ class SaleAdapterNew(
|
||||||
imageErrorMessage.visibility = View.INVISIBLE
|
imageErrorMessage.visibility = View.INVISIBLE
|
||||||
ivArrow.visibility = View.VISIBLE
|
ivArrow.visibility = View.VISIBLE
|
||||||
|
|
||||||
} else {/*itemArticleItemFk.visibility = View.VISIBLE
|
} else {
|
||||||
itemPackingText.visibility = View.VISIBLE
|
|
||||||
itemPackingItemFk.visibility = View.VISIBLE
|
|
||||||
itemArticleCel1.visibility = View.VISIBLE
|
|
||||||
itemArticleCel2.visibility = View.VISIBLE
|
|
||||||
itemArticleCel3.visibility = View.VISIBLE
|
|
||||||
itemArticleQuantity.visibility = View.VISIBLE
|
|
||||||
txtdeNew.visibility = View.VISIBLE
|
|
||||||
itemArticleQuantityPicked.visibility = View.VISIBLE
|
|
||||||
itemArticleQuantityLine3.visibility = View.VISIBLE*/
|
|
||||||
|
|
||||||
imageErrorMessage.visibility = View.GONE
|
imageErrorMessage.visibility = View.GONE
|
||||||
if (type != SACADOR && type != PREITEMPICKERTEST) {
|
if (type != SACADOR && type != PREITEMPICKERTEST) {
|
||||||
|
@ -326,9 +311,22 @@ class SaleAdapterNew(
|
||||||
if (sale.isPicked == 1) {
|
if (sale.isPicked == 1) {
|
||||||
if (type == PREPARED) {
|
if (type == PREPARED) {
|
||||||
contentLayout.setBackgroundColor(
|
contentLayout.setBackgroundColor(
|
||||||
getColor(
|
|
||||||
context!!, R.color.verdnatura_orange_salix
|
if (sale.saleGroupFk == null) {
|
||||||
)
|
getColor(
|
||||||
|
context!!, R.color.verdnatura_orange_salix
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
if (sale.stateCode != null && sale.stateCode == "PREPARED") {
|
||||||
|
getColor(
|
||||||
|
context!!, R.color.verdnatura_orange_salix
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
getColor(
|
||||||
|
context!!, R.color.verdnatura_dark_sky_blue
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
contentLayout.setBackgroundColor(
|
contentLayout.setBackgroundColor(
|
||||||
|
@ -347,9 +345,12 @@ class SaleAdapterNew(
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.itemParkingCode.text =
|
binding.itemParkingCode.text =
|
||||||
// if (type == PREITEMPICKERTEST) sale.parkingCodePrevia else sale.parkingCode
|
// if (type == PREPARED) sale.parkingCodePrevia else sale.parkingCode
|
||||||
sale.parkingCodePrevia
|
sale.parkingCode ?: sale.parkingCodePrevia
|
||||||
|
|
||||||
|
binding.addItem.setOnClickListener {
|
||||||
|
onAddItemClickListener!!.onAddItemClickListener(sale)
|
||||||
|
}
|
||||||
|
|
||||||
println("parkingCodePrevia ${sale.parkingCodePrevia}")
|
println("parkingCodePrevia ${sale.parkingCodePrevia}")
|
||||||
println("parkingCode ${sale.parkingCode}")
|
println("parkingCode ${sale.parkingCode}")
|
||||||
|
|
|
@ -0,0 +1,362 @@
|
||||||
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import androidx.lifecycle.map
|
||||||
|
import com.google.gson.JsonObject
|
||||||
|
import es.verdnatura.MobileApplication
|
||||||
|
import es.verdnatura.domain.SalixCallback
|
||||||
|
import es.verdnatura.domain.formatWithQuotes
|
||||||
|
import es.verdnatura.domain.toast
|
||||||
|
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
|
||||||
|
import es.verdnatura.presentation.base.BaseViewModel
|
||||||
|
import es.verdnatura.presentation.base.getMessageFromAllResponse
|
||||||
|
import es.verdnatura.presentation.base.nameofFunction
|
||||||
|
import es.verdnatura.presentation.common.Event
|
||||||
|
import es.verdnatura.presentation.common.PickupResponse
|
||||||
|
import es.verdnatura.presentation.common.SaleTrackingReplaceSalix
|
||||||
|
import es.verdnatura.presentation.common.TicketState
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.SalixSaleQuantity
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.mapper.map
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.MistakeTypeListVO
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.MistakeTypeVO
|
||||||
|
import es.verdnatura.presentation.view.feature.workermistake.model.SaleMistakeSalix
|
||||||
|
import retrofit2.Response
|
||||||
|
|
||||||
|
class CollectionCheckerViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
|
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
||||||
|
|
||||||
|
//var isPaused: Boolean = false
|
||||||
|
|
||||||
|
private val _isPaused = MutableLiveData<Boolean>()
|
||||||
|
val isPaused: LiveData<Boolean> get() = _isPaused
|
||||||
|
|
||||||
|
private val _collectionTicketList by lazy { MutableLiveData<CollectionVO>() }
|
||||||
|
val collectionTicketList: LiveData<CollectionVO> = _collectionTicketList
|
||||||
|
val loadTicketList: LiveData<Event<CollectionVO>> = _collectionTicketList.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseSaleReplace by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseSaleReplace: LiveData<Boolean> = _responseSaleReplace
|
||||||
|
val loadSaleReplace: LiveData<Event<Boolean>> = _responseSaleReplace.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseCollectionAddItem by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseCollectionAddItem: LiveData<Boolean> = _responseCollectionAddItem
|
||||||
|
val loadResponseAddItem: LiveData<Event<Boolean>> = _responseCollectionAddItem.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responsePrint by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responsePrint: LiveData<Boolean> = _responsePrint
|
||||||
|
val loadPrint: LiveData<Event<Boolean>> = _responsePrint.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseTicketState by lazy { MutableLiveData<TicketState>() }
|
||||||
|
val responseTicketState: LiveData<TicketState> = _responseTicketState
|
||||||
|
val loadTicketState: LiveData<Event<TicketState>> = _responseTicketState.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseTicketSetState by lazy { MutableLiveData<TicketState>() }
|
||||||
|
val responseTicketSetState: LiveData<TicketState> = _responseTicketSetState
|
||||||
|
val loadTicketSetState: LiveData<Event<TicketState>> = _responseTicketSetState.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseTicketIsPickup by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseTicketIsPickup: LiveData<Boolean> = _responseTicketIsPickup
|
||||||
|
val loadTicketIsPickup: LiveData<Event<Boolean>> = _responseTicketIsPickup.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseTicketClosure by lazy { MutableLiveData<String>() }
|
||||||
|
val responseTicketClosure: LiveData<String> = _responseTicketClosure
|
||||||
|
val loadTicketClousure: LiveData<Event<String>> = _responseTicketClosure.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseCollectionUnchecked by lazy { MutableLiveData<String>() }
|
||||||
|
val responseCollectionUnchecked: LiveData<String> = _responseCollectionUnchecked
|
||||||
|
val loadCollectionUnchecked: LiveData<Event<String>> =
|
||||||
|
_responseCollectionUnchecked.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseNew by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseNew: LiveData<Boolean> = _responseNew
|
||||||
|
val loadAddNew: LiveData<Event<Boolean>> = _responseNew.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseIncQuantity by lazy { MutableLiveData<Number>() }
|
||||||
|
val responseIncQuantity: LiveData<Number> = _responseIncQuantity
|
||||||
|
val loadIncQuantity: LiveData<Event<Number>> = _responseIncQuantity.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseParking by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseParking: LiveData<Boolean> = _responseParking
|
||||||
|
val loadParking: LiveData<Event<Boolean>> = _responseParking.map { Event(it) }
|
||||||
|
|
||||||
|
private val _mistakeList by lazy { MutableLiveData<MistakeTypeListVO>() }
|
||||||
|
val mistakeList: LiveData<MistakeTypeListVO> = _mistakeList
|
||||||
|
val loadMistakes: LiveData<Event<MistakeTypeListVO>> = _mistakeList.map { Event(it) }
|
||||||
|
|
||||||
|
fun getSales(
|
||||||
|
collectionFk: Number, print: String, source: String
|
||||||
|
|
||||||
|
) {
|
||||||
|
salix.getSalesFromTicketOrCollection(
|
||||||
|
collectionOrTicketFk = collectionFk, print = print != "0", source = source
|
||||||
|
).enqueue(object : SalixCallback<CollectionVO>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_collectionTicketList.value = CollectionVO(
|
||||||
|
0,
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<CollectionVO>) {
|
||||||
|
try {
|
||||||
|
_collectionTicketList.value = response.body()?.let { it.map(context) }
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
ex.toast(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionGetId(
|
||||||
|
ticketFk: Int, print: String, type: String
|
||||||
|
) {
|
||||||
|
salix.getCollectionId(
|
||||||
|
filter = """{"where":{"ticketFk":$ticketFk},"fields":"collectionFk"}"""
|
||||||
|
).enqueue(object : SalixCallback<List<JsonObject>>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_collectionTicketList.value = CollectionVO(
|
||||||
|
0,
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<List<JsonObject>>) {
|
||||||
|
|
||||||
|
if (response.body()!!.isNotEmpty()) {
|
||||||
|
|
||||||
|
getSales(
|
||||||
|
response.body()!![0].entrySet().first().value.toString().toInt(),
|
||||||
|
print,
|
||||||
|
type
|
||||||
|
)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
_collectionTicketList.value = CollectionVO(
|
||||||
|
0, isError = false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleTrackingUpdate(
|
||||||
|
saleFk: Int,
|
||||||
|
originalQuantity: Int,
|
||||||
|
code: String,
|
||||||
|
isChecked: String,
|
||||||
|
buyFk: Long,
|
||||||
|
isScanned: Boolean?
|
||||||
|
) {
|
||||||
|
salix.saleTrackingUpdate(
|
||||||
|
SaleTrackingReplaceSalix(
|
||||||
|
saleFk, originalQuantity, code, isChecked != "0", buyFk, isScanned!!
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseSaleReplace.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseSaleReplace.value = false
|
||||||
|
super.onError(t)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionStickerPrint(
|
||||||
|
collectionFk: Int, labelCount: Int?
|
||||||
|
) {
|
||||||
|
salix.collectionStickerPrint(
|
||||||
|
arrayListOf(
|
||||||
|
collectionFk, labelCount
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responsePrint.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionAddItem(
|
||||||
|
itemFk: Int, quantity: Int, ticketFk: Int
|
||||||
|
) {
|
||||||
|
|
||||||
|
salix.addSale(
|
||||||
|
id = ticketFk, barcode = itemFk.toString(), quantity = quantity
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
|
||||||
|
_responseNew.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseNew.value = true
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setParking(
|
||||||
|
ticketFk: Int, parking: String
|
||||||
|
) {
|
||||||
|
salix.setParking(arrayListOf(ticketFk, parking).formatWithQuotes())
|
||||||
|
.enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseParking.value = true
|
||||||
|
super.onSuccess(response)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketStateTodaySetState(
|
||||||
|
ticketFk: Int, state: String
|
||||||
|
) {
|
||||||
|
salix.ticketStateTodaySetState(arrayListOf(ticketFk, state).formatWithQuotes())
|
||||||
|
.enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
override fun onSuccess(response: Response<Unit>) {
|
||||||
|
_responseTicketSetState.value = TicketState(code = state, ticketFk = ticketFk)
|
||||||
|
super.onSuccess(response)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionIncreaseQuantitySalix(
|
||||||
|
saleFk: Int, quantity: String
|
||||||
|
) {
|
||||||
|
salix.collectionIncreaseQuantitySalix(
|
||||||
|
SalixSaleQuantity(saleId = saleFk, quantity = quantity.toInt())
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
super.onSuccess(response)
|
||||||
|
_responseIncQuantity.value = saleFk
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleMistakeAdd(
|
||||||
|
saleFk: Int, typeFk: Int
|
||||||
|
) {
|
||||||
|
salix.saleMistakeAdd(
|
||||||
|
SaleMistakeSalix(
|
||||||
|
userFk = (context as MobileApplication).userId!!, saleFk = saleFk, typeFk = typeFk
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mistakeType() {
|
||||||
|
salix.getMistakeTypes().enqueue(object : SalixCallback<List<MistakeTypeVO>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<MistakeTypeVO>>) {
|
||||||
|
if (response.body() != null) {
|
||||||
|
_mistakeList.value = response.body()?.let { MistakeTypeListVO(it) }
|
||||||
|
} else {
|
||||||
|
val listError: ArrayList<MistakeTypeVO> = ArrayList()
|
||||||
|
listError.add(MistakeTypeVO(0, ""))
|
||||||
|
_mistakeList.value = MistakeTypeListVO(listError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketIsOutClosureZone(
|
||||||
|
ticketFk: Int
|
||||||
|
) {
|
||||||
|
salix.ticketIsOutClosureZone(
|
||||||
|
arrayListOf(ticketFk)
|
||||||
|
).enqueue(object : SalixCallback<Any?>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any?>) {
|
||||||
|
_responseTicketClosure.value = response.body()?.toString() ?: "false"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketState(
|
||||||
|
ticketFk: Int
|
||||||
|
) {
|
||||||
|
salix.ticketState(
|
||||||
|
"""{"where": {"ticketFk": "$ticketFk"},"include":[{"relation":"user","scope":{"fields":["username"]}}]}"""
|
||||||
|
|
||||||
|
).enqueue(object : SalixCallback<List<TicketState>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<TicketState>>) {
|
||||||
|
_responseTicketState.value = if (response.body()!!.isEmpty()) {
|
||||||
|
TicketState()
|
||||||
|
} else {
|
||||||
|
response.body()!![0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketIsPickup(
|
||||||
|
ticketFk: Number
|
||||||
|
) {
|
||||||
|
salix.ticketIsPickup(
|
||||||
|
"""{
|
||||||
|
"where": {
|
||||||
|
"id": $ticketFk
|
||||||
|
},
|
||||||
|
"fields": ["id", "routeFk"],
|
||||||
|
"include": [
|
||||||
|
{
|
||||||
|
"relation": "route",
|
||||||
|
"scope": {
|
||||||
|
"fields": ["id", "agencyModeFk"],
|
||||||
|
"include": {
|
||||||
|
"relation": "agencyMode",
|
||||||
|
"scope": {
|
||||||
|
"fields": ["id", "deliveryMethodFk","code"],
|
||||||
|
"where": {"code": "REC_ALG"},
|
||||||
|
"include": {
|
||||||
|
"relation": "deliveryMethod",
|
||||||
|
"scope": {
|
||||||
|
"fields": ["id", "code"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}""".trim()
|
||||||
|
|
||||||
|
).enqueue(object : SalixCallback<List<PickupResponse>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<PickupResponse>>) {
|
||||||
|
|
||||||
|
_responseTicketIsPickup.value =
|
||||||
|
response.body()
|
||||||
|
?.firstOrNull()?.route?.agencyMode?.deliveryMethod?.code == "PICKUP"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun hasUncheckedTicket(
|
||||||
|
collectionFk: Int
|
||||||
|
) {
|
||||||
|
salix.hasUncheckedTicket(collectionFk).enqueue(object : SalixCallback<String>(context) {
|
||||||
|
override fun onSuccess(response: Response<String>) {
|
||||||
|
_responseCollectionUnchecked.value = response.body()!!.toString()
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setPausedState(paused: Boolean) {
|
||||||
|
_isPaused.value = paused
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package es.verdnatura.presentation.view.feature.collection.fragment
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
import android.app.AlertDialog
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
|
@ -37,6 +36,7 @@ import es.verdnatura.domain.notNull
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.ItemScanned
|
import es.verdnatura.presentation.common.ItemScanned
|
||||||
|
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
@ -410,7 +410,7 @@ class CollectionFragment(
|
||||||
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
||||||
binding.mainToolbar.toolbarIcons.visibility = VISIBLE
|
binding.mainToolbar.toolbarIcons.visibility = VISIBLE
|
||||||
//sergio:para ver si ha marcado dos veces el mismo ticket
|
//sergio:para ver si ha marcado dos veces el mismo ticket
|
||||||
binding.scanInput.setText(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||||
|
|
||||||
//de momento solo está el qr de artículo
|
//de momento solo está el qr de artículo
|
||||||
isScanned =
|
isScanned =
|
||||||
|
@ -969,7 +969,7 @@ class CollectionFragment(
|
||||||
myGroupList
|
myGroupList
|
||||||
},*/
|
},*/
|
||||||
saleAdapter = SaleAdapter(
|
saleAdapter = SaleAdapter(
|
||||||
myGroupList,
|
myGroupList as MutableList,
|
||||||
pasillerosItemClickListener!!,
|
pasillerosItemClickListener!!,
|
||||||
object : OnQuantityClickListener {
|
object : OnQuantityClickListener {
|
||||||
|
|
||||||
|
@ -2035,7 +2035,7 @@ class CollectionFragment(
|
||||||
"" + totalMark + "/" + total
|
"" + totalMark + "/" + total
|
||||||
|
|
||||||
if (totalMark == sales.size) {
|
if (totalMark == sales.size) {
|
||||||
getString(R.string.Coleccióncompleta).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()
|
||||||
|
@ -2276,20 +2276,20 @@ class CollectionFragment(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isTicket) {
|
if (isTicket) {
|
||||||
val builder = AlertDialog.Builder(context)
|
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
labelDialogHelper.showLabelDialog(
|
||||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
onItemSelected = { labelCount ->
|
||||||
builder.setItems(labelCount) { dialog, which ->
|
viewModel.collectionStickerPrint(
|
||||||
viewModel.collectionStickerPrint(
|
collectionFk = collection.collectionFk,
|
||||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
labelCount = labelCount
|
||||||
)
|
)
|
||||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
|
||||||
PRINTERNAME
|
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
)).toast(requireContext())
|
PRINTERNAME
|
||||||
|
)).toast(requireContext())
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
}
|
|
||||||
val dialog = builder.create()
|
|
||||||
dialog.show()
|
|
||||||
} else {
|
} else {
|
||||||
viewModel.collectionStickerPrint(
|
viewModel.collectionStickerPrint(
|
||||||
collectionFk = collection.collectionFk, null
|
collectionFk = collection.collectionFk, null
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,870 @@
|
||||||
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.media.MediaPlayer
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.text.InputType
|
||||||
|
import android.view.KeyEvent
|
||||||
|
import android.view.View
|
||||||
|
import android.view.WindowManager
|
||||||
|
import android.view.inputmethod.EditorInfo
|
||||||
|
import android.widget.EditText
|
||||||
|
import android.widget.ImageView
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import es.verdnatura.R
|
||||||
|
import es.verdnatura.databinding.FragmentCollectionNewBinding
|
||||||
|
import es.verdnatura.domain.ConstAndValues.BASEURLSALIX
|
||||||
|
import es.verdnatura.domain.ConstAndValues.SECTORFK
|
||||||
|
import es.verdnatura.domain.notNull
|
||||||
|
import es.verdnatura.domain.showToastCenterWithBackground
|
||||||
|
import es.verdnatura.domain.toast
|
||||||
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
|
import es.verdnatura.presentation.common.ItemScanned
|
||||||
|
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
import es.verdnatura.presentation.common.OnPackingClickSaleListener
|
||||||
|
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||||
|
import es.verdnatura.presentation.common.OnSaleClickSaleListener
|
||||||
|
import es.verdnatura.presentation.common.OnTicketClickSaleListener
|
||||||
|
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||||
|
import es.verdnatura.presentation.common.hideKeyboard
|
||||||
|
import es.verdnatura.presentation.common.itemScanIsQr
|
||||||
|
import es.verdnatura.presentation.common.itemScanValue
|
||||||
|
import es.verdnatura.presentation.view.component.CustomDialog
|
||||||
|
import es.verdnatura.presentation.view.component.CustomDialogInput
|
||||||
|
import es.verdnatura.presentation.view.component.CustomDialogList
|
||||||
|
import es.verdnatura.presentation.view.component.CustomDialogThreeButtons
|
||||||
|
import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter
|
||||||
|
import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.ItemVO
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.adapter.SaleAdapterNew
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.mapper.map
|
||||||
|
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
|
||||||
|
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.Sale
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import org.json.JSONObject
|
||||||
|
|
||||||
|
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||||
|
class CollectionFragmentCheckerPreviousNew(
|
||||||
|
) : BaseFragment<FragmentCollectionNewBinding, CollectionViewModelCheckerPreviosNew>(
|
||||||
|
CollectionViewModelCheckerPreviosNew::class
|
||||||
|
) {
|
||||||
|
private var sales: List<Sale> = listOf()
|
||||||
|
private var saleAdapter: SaleAdapterNew? = null
|
||||||
|
private var lm: LinearLayoutManager? = null
|
||||||
|
private var storedPosition: Int = 0
|
||||||
|
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
|
||||||
|
private lateinit var customDialogList: CustomDialogList
|
||||||
|
private var placementSupplyAdapter: BarcodeAdapter? = null
|
||||||
|
private var listPlacementSupply: ArrayList<BarcodeVO> = ArrayList()
|
||||||
|
private lateinit var customDialogInput: CustomDialogInput
|
||||||
|
private lateinit var customDialogThreeButtons: CustomDialogThreeButtons
|
||||||
|
private lateinit var customDialogThreeButtonsQuantity: CustomDialogThreeButtons
|
||||||
|
private var ticketSelected: Int = 0
|
||||||
|
private lateinit var customDialog: CustomDialog
|
||||||
|
var mperror: MediaPlayer? = null
|
||||||
|
var mpok: MediaPlayer? = null
|
||||||
|
private var storedBackPosition: Int = 0
|
||||||
|
private var tickets: ArrayList<String> = ArrayList()
|
||||||
|
private var lastScanned: Int = 0
|
||||||
|
private var positionUnmarked = -1
|
||||||
|
private var isScanned: Boolean? = null
|
||||||
|
private var positionConfirm = 0
|
||||||
|
private var quantityConfirm = 0
|
||||||
|
private lateinit var myGroupList: List<Sale>
|
||||||
|
private var quantityReserveToCheckItemScan = 0
|
||||||
|
private lateinit var collection: CollectionTicket
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun newInstance(
|
||||||
|
) = CollectionFragmentCheckerPreviousNew()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAttach(context: Context) {
|
||||||
|
if (context is OnPasillerosItemClickListener) pasillerosItemClickListener = context
|
||||||
|
super.onAttach(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getLayoutId(): Int = R.layout.fragment_collection_new
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
mperror = MediaPlayer.create((activity as MainActivity), R.raw.error)
|
||||||
|
mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok)
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
scanRequest()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun init() {
|
||||||
|
customDialogList = CustomDialogList(requireContext())
|
||||||
|
customDialogInput = CustomDialogInput(requireContext())
|
||||||
|
customDialog = CustomDialog(requireContext())
|
||||||
|
customDialogThreeButtons = CustomDialogThreeButtons(requireContext())
|
||||||
|
customDialogThreeButtonsQuantity = CustomDialogThreeButtons(requireContext())
|
||||||
|
ma.hideBottomNavigation(View.GONE)
|
||||||
|
setEvents()
|
||||||
|
setToolBar()
|
||||||
|
if (::collection.isInitialized) {
|
||||||
|
viewModel.getCollectionTickets(
|
||||||
|
collection.collectionFk, print = false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setToolBar() {
|
||||||
|
binding.mainToolbar.toolbarSubtitle.visibility = View.VISIBLE
|
||||||
|
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||||
|
binding.mainToolbar.backButton.visibility = View.VISIBLE
|
||||||
|
binding.mainToolbar.toolbarTitle.text = getString(R.string.preControlNew)
|
||||||
|
|
||||||
|
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||||
|
val iconAdd = ImageView(context)
|
||||||
|
iconAdd.setImageResource(R.drawable.ic_playlist_add_black_24dp)
|
||||||
|
val iconParking = ImageView(context)
|
||||||
|
iconParking.setImageResource(R.drawable.ic_local_parking_black_24dp)
|
||||||
|
val iconUpdate = ImageView(context)
|
||||||
|
iconUpdate.setImageResource(R.drawable.ic_autorenew_black_24dp)
|
||||||
|
|
||||||
|
iconAdd.tooltipText = getTooltip(R.drawable.ic_playlist_add_black_24dp)
|
||||||
|
iconParking.tooltipText = getTooltip(R.drawable.ic_local_parking_black_24dp)
|
||||||
|
iconUpdate.tooltipText = getTooltip(R.drawable.ic_autorenew_black_24dp)
|
||||||
|
|
||||||
|
listIcons.add(iconAdd)
|
||||||
|
listIcons.add(iconParking)
|
||||||
|
listIcons.add(iconUpdate)
|
||||||
|
|
||||||
|
binding.mainToolbar.toolbarIcons.adapter =
|
||||||
|
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
||||||
|
override fun onOptionsItemSelected(item: Drawable) {
|
||||||
|
|
||||||
|
when (item) {
|
||||||
|
iconAdd.drawable -> addItem()
|
||||||
|
iconUpdate.drawable -> updateScreen()
|
||||||
|
iconParking.drawable -> pasillerosItemClickListener?.onPasillerosItemClickListener(
|
||||||
|
PasillerosItemVO(
|
||||||
|
title = R.string.Parking
|
||||||
|
), ""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
binding.mainToolbar.toolbarIcons.layoutManager =
|
||||||
|
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateScreen() {
|
||||||
|
viewModel.getCollectionTickets(
|
||||||
|
collection.collectionFk, print = false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun scanRequest() {
|
||||||
|
binding.scanInput.requestFocus()
|
||||||
|
hideKeyboards()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setEvents() {
|
||||||
|
|
||||||
|
binding.mainToolbar.backButton.setOnClickListener {
|
||||||
|
ma.onMyBackPressed()
|
||||||
|
}
|
||||||
|
//ESCANER =========
|
||||||
|
|
||||||
|
binding.scanInput.requestFocus()
|
||||||
|
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
|
||||||
|
if (binding.scanInput.text.toString().isNotEmpty()) {
|
||||||
|
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||||
|
isScanned =
|
||||||
|
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
||||||
|
if (itemScanIsQr(binding.scanInput.text.toString())) {
|
||||||
|
val myQr = ItemScanned(JSONObject(binding.scanInput.text.toString()))
|
||||||
|
when (myQr.table) {
|
||||||
|
"saleGroup" -> {
|
||||||
|
binding.scanInput.setText(myQr.id.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
"buy" -> binding.scanInput.setText(myQr.more)
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ma.hideKeyboard(binding.scanInput)
|
||||||
|
if (::collection.isInitialized) {
|
||||||
|
findSale(binding.scanInput.text.toString())
|
||||||
|
} else {
|
||||||
|
viewModel.getCollectionTickets(
|
||||||
|
collectionFk = binding.scanInput.text.toString().toLong(), false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.scanInput.setText("")
|
||||||
|
hideKeyboards()
|
||||||
|
return@setOnEditorActionListener true
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
hideKeyboards()
|
||||||
|
|
||||||
|
//LISTA =========
|
||||||
|
binding.collectionSwipe.setOnRefreshListener {
|
||||||
|
binding.collectionSwipe.isRefreshing = false
|
||||||
|
updateScreen()
|
||||||
|
binding.collectionSwipe.isRefreshing = false
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun hideKeyboards() {
|
||||||
|
try {
|
||||||
|
requireActivity().hideKeyboard()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
println(e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun observeViewModel() {
|
||||||
|
|
||||||
|
with(viewModel) {
|
||||||
|
|
||||||
|
loadCollectionTicketSalix.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
if (!it.isError) {
|
||||||
|
|
||||||
|
if (it.tickets.isNotEmpty()) {
|
||||||
|
collection = it
|
||||||
|
createCollectionList()
|
||||||
|
|
||||||
|
} else {
|
||||||
|
binding.mainToolbar.toolbarSubtitle.text = "0/0"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
customDialog.setTitle(getString(R.string.error))
|
||||||
|
.setDescription(it.errorMessage)
|
||||||
|
.setOkButton(getString(R.string.accept)) {
|
||||||
|
customDialog.dismiss()
|
||||||
|
if (activity != null) ma.onMyBackPressed()
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
loadExistsResponse.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
if (it.exists) {
|
||||||
|
markLine(it.position, it.quantity, true)
|
||||||
|
} else {
|
||||||
|
getString(R.string.updateSalesReserve).toast(
|
||||||
|
requireContext()
|
||||||
|
)
|
||||||
|
viewModel.getCollectionTickets(collection.collectionFk, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadResponseAddItem.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
updateScreen()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
loadPicked.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
myGroupList[positionConfirm].isPicked = 1
|
||||||
|
saleAdapter!!.notifyItemChanged(positionConfirm)
|
||||||
|
lm!!.scrollToPositionWithOffset(positionConfirm, 0)
|
||||||
|
//lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0)
|
||||||
|
setTotalLines()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadUnpicked.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
|
||||||
|
myGroupList[positionUnmarked].isPicked = 0
|
||||||
|
myGroupList[positionUnmarked].reservedQuantity = quantityConfirm
|
||||||
|
saleAdapter!!.notifyItemChanged(positionUnmarked)
|
||||||
|
lm!!.scrollToPositionWithOffset(positionUnmarked, 0)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
responseCode.observe(viewLifecycleOwner) {
|
||||||
|
|
||||||
|
if (it == null) {
|
||||||
|
showErrorMessage(text = getString(R.string.codeNotExist))
|
||||||
|
if (mperror != null) mperror?.start()
|
||||||
|
} else {
|
||||||
|
if (checkItemScan(it.toString(), positionConfirm)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialogList.dismiss()
|
||||||
|
mpok?.start()
|
||||||
|
markLine(positionConfirm, quantityReserveToCheckItemScan, false)
|
||||||
|
} else {
|
||||||
|
customDialogList.setValueTwo("")
|
||||||
|
showErrorMessage(text = getString(R.string.lineNotExist))
|
||||||
|
if (mperror != null) mperror?.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createCollectionList() {
|
||||||
|
binding.mainToolbar.toolbarTitle.text = collection.collectionFk.toString()
|
||||||
|
|
||||||
|
collection.map(requireContext())
|
||||||
|
val salesList: ArrayList<Sale> = ArrayList()
|
||||||
|
|
||||||
|
tickets = ArrayList()
|
||||||
|
var observations = ""
|
||||||
|
|
||||||
|
collection.tickets.forEach { ticket ->
|
||||||
|
|
||||||
|
if (observations.isNotEmpty()) observations = observations + " " + ticket.observations
|
||||||
|
ticket.sales.forEach { sale ->
|
||||||
|
|
||||||
|
salesList.add(sale)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
myGroupList =
|
||||||
|
salesList.sortedWith(compareBy<Sale> { it.pickingOrderPrevia }.thenBy { it.itemFk })
|
||||||
|
saleAdapter = SaleAdapterNew(myGroupList, pasillerosItemClickListener!!,
|
||||||
|
|
||||||
|
object : OnSaleClickSaleListener {
|
||||||
|
override fun onSaleClick(sale: Sale) {
|
||||||
|
|
||||||
|
val position =
|
||||||
|
myGroupList.indexOfFirst { it.itemShelvingSaleFk == sale.itemShelvingSaleFk }
|
||||||
|
if (position > -1) {
|
||||||
|
if (sale.isPicked == 1) {
|
||||||
|
unMarkLine(position, myGroupList[position])
|
||||||
|
} else {
|
||||||
|
showScanner(position, sale)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}, object : OnMistakeClickListener {
|
||||||
|
override fun onMistakeClickListener(sale: SaleVO) {
|
||||||
|
}
|
||||||
|
}, object : OnPackingClickSaleListener {
|
||||||
|
override fun onPackingClick(sale: Sale) {
|
||||||
|
|
||||||
|
if (!sale.code.isNullOrEmpty()) ma.onPasillerosItemClickListener(
|
||||||
|
PasillerosItemVO(
|
||||||
|
title = R.string.titleUbicator,
|
||||||
|
), entryPoint = sale.code
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}, object : OnTicketClickSaleListener {
|
||||||
|
override fun onTicketClickListener(sale: Sale) {
|
||||||
|
val entryPoint = Gson().toJson(
|
||||||
|
mutableMapOf(
|
||||||
|
"entryPoint" to sale.ticketFk, "web" to "${
|
||||||
|
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
|
BASEURLSALIX
|
||||||
|
)
|
||||||
|
}/#!/ticket/${sale.ticketFk}/sale"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
ma.onPasillerosItemClickListener(
|
||||||
|
PasillerosItemVO(
|
||||||
|
title = R.string.titleWebViewer,
|
||||||
|
), entryPoint = entryPoint
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}, type = "PRESACADOR"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
|
binding.fragmentSacadorCollections.adapter = saleAdapter
|
||||||
|
binding.fragmentSacadorCollections.layoutManager = lm
|
||||||
|
|
||||||
|
setTotalLines()
|
||||||
|
setListPosition()
|
||||||
|
setScrollListener(lm!!)
|
||||||
|
printObservations(observations)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setScrollListener(lm: LinearLayoutManager) {
|
||||||
|
binding.fragmentSacadorCollections.clearOnScrollListeners()
|
||||||
|
binding.fragmentSacadorCollections.addOnScrollListener(object :
|
||||||
|
RecyclerView.OnScrollListener() {
|
||||||
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
|
// storedBackPosition = lm.findFirstVisibleItemPosition()
|
||||||
|
storedPosition = lm.findFirstVisibleItemPosition()
|
||||||
|
super.onScrolled(recyclerView, dx, dy)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun printObservations(observations: String) {
|
||||||
|
if (observations.trim().isNotEmpty()) {
|
||||||
|
customDialog.setTitle(getString(R.string.observations)).setDescription(observations)
|
||||||
|
.setOkButton(getString(R.string.accept)) {
|
||||||
|
customDialog.hide()
|
||||||
|
customDialog.dismiss()
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun findSale(txtscan: String) {
|
||||||
|
/*
|
||||||
|
for (tickets in collection.tickets) {
|
||||||
|
//0-Salegroup
|
||||||
|
for (sale in tickets.sales){
|
||||||
|
if (sale == "0") {
|
||||||
|
//1- Por itemFk
|
||||||
|
if (txtscan == saleVO.itemFk.toString()) {
|
||||||
|
if (mpok != null) mpok!!.start()
|
||||||
|
isOk = true
|
||||||
|
markLine(index, type)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
//2- Por barcode
|
||||||
|
if (saleVO.barcodes.isNotEmpty())
|
||||||
|
saleVO.barcodes.forEach { barcode ->
|
||||||
|
|
||||||
|
if (txtscan == barcode) {
|
||||||
|
if (mpok != null) mpok!!.start()
|
||||||
|
isOk = true
|
||||||
|
markLine(index, type)
|
||||||
|
isBreak = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isBreak) break
|
||||||
|
}
|
||||||
|
index += 1
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun findSale(txtscan: String, position: Int, sale: Sale) {
|
||||||
|
|
||||||
|
storedPosition = position
|
||||||
|
|
||||||
|
if (sale.code!!.uppercase() == txtscan.uppercase()) {
|
||||||
|
mpok!!.start()
|
||||||
|
printShelvingResult(position)
|
||||||
|
} else {
|
||||||
|
mperror!!.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun markLine(position: Int, quantity: Int, isItemShelvingSaleEmpty: Boolean?) {
|
||||||
|
|
||||||
|
isScanned = null
|
||||||
|
positionConfirm = position
|
||||||
|
quantityConfirm = quantity
|
||||||
|
|
||||||
|
runBlocking {
|
||||||
|
val sectorFk = mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
||||||
|
viewModel.itemShelvingSaleSetQuantity(
|
||||||
|
myGroupList[position].itemShelvingSaleFk,
|
||||||
|
quantity,
|
||||||
|
isItemShelvingSaleEmpty = isItemShelvingSaleEmpty,
|
||||||
|
sectorFk = if (sectorFk == -1) null else sectorFk,
|
||||||
|
shelvingFk = myGroupList[position].code!!
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// storedBackPosition = position
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setListPosition() {
|
||||||
|
|
||||||
|
//if (storedPosition == 0 && storedBackPosition == 0) { // se inicia lista, se busca porqué item vamos.
|
||||||
|
if (storedPosition == 0) {
|
||||||
|
for (indice in myGroupList.indices) {
|
||||||
|
if (myGroupList[indice].isPicked == 0) {
|
||||||
|
//storedPosition = indice
|
||||||
|
lm!!.scrollToPositionWithOffset(indice - 1, 0)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// lm!!.scrollToPositionWithOffset(storedBackPosition, 0)
|
||||||
|
lm!!.scrollToPositionWithOffset(storedPosition, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun unMarkLine(position: Int, sale: Sale) {
|
||||||
|
|
||||||
|
customDialog.setTitle(getString(R.string.unmarkLine)).setDescription(
|
||||||
|
getString(R.string.goUnmark) + sale.itemFk + getString(
|
||||||
|
R.string.sure
|
||||||
|
)
|
||||||
|
).setOkButton(getString(R.string.unmark)) {
|
||||||
|
if (!sale.isParent && sale.reservedQuantity == 0 && sale.originalQuantity != sale.saleQuantity) {
|
||||||
|
getString(R.string.unmarkError).toast(requireContext())
|
||||||
|
} else {
|
||||||
|
//storedBackPosition = position
|
||||||
|
//storedPosition = position
|
||||||
|
// setListPosition()
|
||||||
|
viewModel.itemShelvingSaleUnpicked(myGroupList[position].itemShelvingSaleFk)
|
||||||
|
sale.isPicked = 0
|
||||||
|
positionUnmarked = position
|
||||||
|
setTotalLines()
|
||||||
|
scanRequest()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
customDialog.dismiss()
|
||||||
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialog.dismiss()
|
||||||
|
}.show()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun printShelvingResult(pos: Int) {
|
||||||
|
|
||||||
|
storedPosition = pos
|
||||||
|
customDialogList.getEditTextTwo().inputType = InputType.TYPE_CLASS_TEXT
|
||||||
|
customDialogList.getEditTextTwo().setRawInputType(InputType.TYPE_CLASS_NUMBER)
|
||||||
|
customDialogList.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER)
|
||||||
|
customDialogList.getEditTextTwo().requestFocus()
|
||||||
|
val shelving = myGroupList[pos].code
|
||||||
|
val item = myGroupList[pos].itemFk
|
||||||
|
val longName = myGroupList[pos].longName
|
||||||
|
val totalReserved = myGroupList[pos].reservedQuantity
|
||||||
|
|
||||||
|
try {
|
||||||
|
customDialogList.setTitle("$shelving($item) $totalReserved de $longName").setOkButton(
|
||||||
|
getString(
|
||||||
|
R.string.take
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
customDialogTakeAction(pos, totalReserved, false)
|
||||||
|
|
||||||
|
}.setKoButton(getString(R.string.close)) {
|
||||||
|
requireActivity().hideKeyboard(customDialogList.getEditTextTwo())
|
||||||
|
customDialogList.dismiss()
|
||||||
|
scanRequest()
|
||||||
|
|
||||||
|
}.setHintValue(getString(R.string.quantitySelect)).setValue(totalReserved.toString())
|
||||||
|
.setHintValueTwo(getString(R.string.scanItem)).setValueTwo("").show()
|
||||||
|
|
||||||
|
customDialogList.getEditTextTwo().setOnEditorActionListener { v, actionId, event ->
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||||
|
|
||||||
|
customDialogTakeAction(
|
||||||
|
pos,
|
||||||
|
totalReserved,
|
||||||
|
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
||||||
|
)
|
||||||
|
|
||||||
|
return@setOnEditorActionListener true
|
||||||
|
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
ma.messageWithSound(e.message.toString(), isError = true, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun customDialogTakeAction(
|
||||||
|
position: Int, totalReserved: Int, isItemScanned: Boolean?
|
||||||
|
) {
|
||||||
|
isScanned = isItemScanned
|
||||||
|
if (customDialogList.getValueTwo().isNotEmpty()) {
|
||||||
|
|
||||||
|
customDialogList.setValueTwo(
|
||||||
|
itemScanValue(
|
||||||
|
customDialogList.getValueTwo(), arrayOf("buy"), "more"
|
||||||
|
).toString()
|
||||||
|
)
|
||||||
|
val quantityToReserve = customDialogList.getValue().toInt()
|
||||||
|
|
||||||
|
if (quantityToReserve < totalReserved) {
|
||||||
|
|
||||||
|
if (customDialogList.getValueTwo() in myGroupList[position].Barcodes || customDialogList.getValueTwo() == myGroupList[position].itemFk.toString()) {
|
||||||
|
customDialogList.dismiss()
|
||||||
|
showQuestionUbicationEmpty(position, quantityToReserve)
|
||||||
|
} else {
|
||||||
|
ma.messageWithSound(
|
||||||
|
message = getString(R.string.errorItem),
|
||||||
|
isError = true,
|
||||||
|
isPlayed = true,
|
||||||
|
isToasted = false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (quantityToReserve > totalReserved) {
|
||||||
|
ma.hideKeyboard(customDialogList.getEditTextTwo())
|
||||||
|
getString(R.string.quantityHigh).toast(requireContext())
|
||||||
|
}
|
||||||
|
if (quantityToReserve == totalReserved) {
|
||||||
|
try {
|
||||||
|
if (checkItemScan(customDialogList.getValueTwo(), position)) {
|
||||||
|
|
||||||
|
markLine(position, quantityToReserve, false)
|
||||||
|
|
||||||
|
mpok?.start()
|
||||||
|
ma.hideKeyboard(customDialogList.getEditTextTwo())
|
||||||
|
customDialogList.dismiss()
|
||||||
|
requireContext().showToastCenterWithBackground(myGroupList[position].ticketFk.toString())
|
||||||
|
scanRequest()
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
quantityReserveToCheckItemScan = quantityToReserve
|
||||||
|
viewModel.getIdFromCodeSalix(
|
||||||
|
code = customDialogList.getValueTwo(),
|
||||||
|
)
|
||||||
|
customDialogList.dismiss()
|
||||||
|
}
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
getString(R.string.errorInput).toast(requireContext())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
getString(R.string.scanItemValidate).toast(requireContext())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun checkItemScan(valueToCheck: String, position: Int): Boolean {
|
||||||
|
println("CheckItemScan $valueToCheck")
|
||||||
|
val saleToCheck = myGroupList[position]
|
||||||
|
println("CheckItemScan saleTocheck$saleToCheck")
|
||||||
|
println("CheckItemScan saleTocheck Item ${saleToCheck.itemFk}")
|
||||||
|
println("CheckItemScan saleTocheck ItemBarcodes ${saleToCheck.Barcodes}")
|
||||||
|
if (saleToCheck.itemFk.toString() == valueToCheck) return true
|
||||||
|
else {
|
||||||
|
saleToCheck.Barcodes.forEach { barcode ->
|
||||||
|
if (barcode == valueToCheck) return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showQuestionUbicationEmpty(position: Int, quantity: Int = 0) {
|
||||||
|
customDialogThreeButtonsQuantity.setTitle(
|
||||||
|
getString(
|
||||||
|
R.string.changeQuantity, quantity, myGroupList[position].itemFk
|
||||||
|
)
|
||||||
|
).setDescription(getString(R.string.questionItemShelving, myGroupList[position].itemFk))
|
||||||
|
.setValue("").setCustomDialogValue(View.GONE)
|
||||||
|
customDialogThreeButtonsQuantity.setOkButtonAdd(text = getString(R.string.yes)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
|
getString(R.string.errorQuantityShelving).toast(requireContext())
|
||||||
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
|
showQuestionUbicationEmpty(position, quantity)
|
||||||
|
}.setOkButtonTwo(getString(R.string.no)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
|
if (quantity == 0) {
|
||||||
|
viewModel.itemShelvingSaleExists(
|
||||||
|
myGroupList[position].itemShelvingSaleFk, position, quantity
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
markLine(position, quantity, true)
|
||||||
|
}
|
||||||
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
|
}.show()
|
||||||
|
customDialogThreeButtons.setFocusDialogValue()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addItem() {
|
||||||
|
listPlacementSupply = ArrayList()
|
||||||
|
collection.tickets.forEach {
|
||||||
|
listPlacementSupply.add(BarcodeVO(code = it.ticketFk.toString()))
|
||||||
|
}
|
||||||
|
if (listPlacementSupply.size == 1) {
|
||||||
|
ticketSelected = listPlacementSupply[0].code!!.toInt()
|
||||||
|
}
|
||||||
|
customDialogList.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
|
||||||
|
customDialogList.getEditTextTwo().inputType = InputType.TYPE_CLASS_NUMBER
|
||||||
|
customDialogList.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER)
|
||||||
|
customDialogList.setTitle(getString(R.string.Agregarartículoparaticket) + " " + ticketSelected)
|
||||||
|
.setOkButton(getString(R.string.Agregar)) {
|
||||||
|
customDialogAddItem()
|
||||||
|
}.setKoButton(getString(R.string.close)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialogList.dismiss()
|
||||||
|
}.setHintValue(getString(R.string.Artículo)).setValue("")
|
||||||
|
.setHintValueTwo(getString(R.string.Cantidad)).setValueTwo("").show()
|
||||||
|
customDialogList.getEditText().requestFocus()
|
||||||
|
requireActivity().hideKeyboard()
|
||||||
|
|
||||||
|
customDialogList.getEditText().setOnEditorActionListener { v, actionId, event ->
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||||
|
if (customDialogList.getValue().isNotEmpty()) {
|
||||||
|
try {
|
||||||
|
customDialogList.setValue(
|
||||||
|
itemScanValue(
|
||||||
|
customDialogList.getValue(), arrayOf("buy"), "more"
|
||||||
|
).toString()
|
||||||
|
)
|
||||||
|
|
||||||
|
} catch (e: Exception) {
|
||||||
|
ma.messageWithSound(e.message.toString(), isError = true, true)
|
||||||
|
}
|
||||||
|
customDialogList.getEditTextTwo().requestFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
return@setOnEditorActionListener true
|
||||||
|
|
||||||
|
}
|
||||||
|
false
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
customDialogList.getEditTextTwo().setOnEditorActionListener { v, actionId, event ->
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||||
|
customDialogAddItem()
|
||||||
|
return@setOnEditorActionListener true
|
||||||
|
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
placementSupplyAdapter =
|
||||||
|
BarcodeAdapter(listPlacementSupply, object : OnBarcodeRowClickListener {
|
||||||
|
override fun onBarcodeRowClickListener(item: BarcodeVO) {
|
||||||
|
customDialogInput.setTitle(getString(R.string.ArtículoparaTicket) + " " + item.code!!)
|
||||||
|
ticketSelected = item.code!!.toInt()
|
||||||
|
customDialogList.setTitle(getString(R.string.Agregarartículoparaticket) + " " + ticketSelected)
|
||||||
|
}
|
||||||
|
}, showDelete = false)
|
||||||
|
|
||||||
|
customDialogList.getRecyclerView().adapter = placementSupplyAdapter
|
||||||
|
|
||||||
|
customDialogList.getRecyclerView().layoutManager =
|
||||||
|
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun customDialogAddItem() {
|
||||||
|
|
||||||
|
if (customDialogList.getValueTwo().isNotEmpty()) {
|
||||||
|
if (ticketSelected == 0) {
|
||||||
|
getString(R.string.Seleccionaunticketdelaista).toast(requireContext())
|
||||||
|
} else if (customDialogList.getValue().isEmpty() || customDialogList.getValueTwo()
|
||||||
|
.isEmpty()
|
||||||
|
) {
|
||||||
|
getString(R.string.Todosloscampossonobligatorios).toast(requireContext())
|
||||||
|
} else {
|
||||||
|
val saleGroupSelected =
|
||||||
|
collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get(0)?.saleGroupFk
|
||||||
|
?: 0
|
||||||
|
|
||||||
|
runBlocking {
|
||||||
|
viewModel.collectionAddWithReservation(
|
||||||
|
customDialogList.getValue().toInt(),
|
||||||
|
customDialogList.getValueTwo().toInt(),
|
||||||
|
ticketSelected,
|
||||||
|
saleGroupFk = saleGroupSelected,
|
||||||
|
sectorFk = mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
customDialogList.dismiss()
|
||||||
|
hideKeyboards()
|
||||||
|
scanRequest()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
getString(R.string.scanItem).toast(requireContext())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun toastDisponibility(item: ItemVO) {
|
||||||
|
if (item.available.isEmpty()) {
|
||||||
|
item.available = "0"
|
||||||
|
}
|
||||||
|
customDialog.setTitle(getString(R.string.itemPoints) + item.id)
|
||||||
|
.setDescription(getString(R.string.available) + ":" + item.available)
|
||||||
|
.setOkButton(getString(R.string.accept)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialog.dismiss()
|
||||||
|
}.show()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setTotalLines() {
|
||||||
|
val totalMark = myGroupList.count { it.isPicked == 1 }
|
||||||
|
binding.mainToolbar.toolbarTitle.text =
|
||||||
|
if (collection.collectionFk != 0) collection.collectionFk.toString() else ""
|
||||||
|
binding.mainToolbar.toolbarSubtitle.text =
|
||||||
|
getString(R.string.totalsPicker, totalMark, myGroupList.size)
|
||||||
|
if (totalMark == myGroupList.size) {
|
||||||
|
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
|
||||||
|
viewModel.saleTrackingAddPrevOK(collection.collectionFk)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showScanner(index: Int, sale: Sale) {
|
||||||
|
customDialogInput.getEditText().inputType = InputType.TYPE_CLASS_TEXT
|
||||||
|
customDialogInput.setTitle("" + sale.itemFk)
|
||||||
|
.setDescription(getString(R.string.scanWagonForItem))
|
||||||
|
.setOkButton(getString(R.string.accept)) {
|
||||||
|
findSaleAction(index, sale)
|
||||||
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
|
closeCustomDialog(binding.scanInput, customDialogInput)
|
||||||
|
}.setValue("").show()
|
||||||
|
|
||||||
|
|
||||||
|
customDialogInput.getEditText().setOnEditorActionListener { v, actionId, event ->
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
|
||||||
|
findSaleAction(index, sale)
|
||||||
|
return@setOnEditorActionListener false
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
customDialogInput.getEditText().requestFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun findSaleAction(index: Int, sale: Sale) {
|
||||||
|
if (customDialogInput.getValue().isNotEmpty()) {
|
||||||
|
findSale(customDialogInput.getValue(), index, sale)
|
||||||
|
}
|
||||||
|
closeCustomDialog(binding.scanInput, customDialogInput)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun closeCustomDialog(scanInput: EditText, customDialogInput: CustomDialogInput) {
|
||||||
|
requireContext().hideKeyboard(customDialogInput.getEditText())
|
||||||
|
scanInput.requestFocus()
|
||||||
|
customDialogInput.dismiss()
|
||||||
|
scanInput.requestFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showErrorMessage(title: String = getString(R.string.errorMarkLine), text: String) {
|
||||||
|
customDialog.setTitle(title).setDescription(text).setKoButton(getString(R.string.close)) {
|
||||||
|
customDialog.dismiss()
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package es.verdnatura.presentation.view.feature.collection.fragment
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
import android.app.AlertDialog
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
|
@ -38,6 +37,7 @@ import es.verdnatura.domain.notNull
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.ItemScanned
|
import es.verdnatura.presentation.common.ItemScanned
|
||||||
|
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
@ -46,6 +46,7 @@ import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||||
import es.verdnatura.presentation.common.OnQuantityClickListener
|
import es.verdnatura.presentation.common.OnQuantityClickListener
|
||||||
import es.verdnatura.presentation.common.OnSaleClickListener
|
import es.verdnatura.presentation.common.OnSaleClickListener
|
||||||
import es.verdnatura.presentation.common.OnTicketClickListener
|
import es.verdnatura.presentation.common.OnTicketClickListener
|
||||||
|
import es.verdnatura.presentation.common.OnTicketColorListener
|
||||||
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.itemScanIsQr
|
import es.verdnatura.presentation.common.itemScanIsQr
|
||||||
|
@ -126,11 +127,14 @@ class CollectionFragmentPicker(
|
||||||
private var recylerViewState: Parcelable? = null
|
private var recylerViewState: Parcelable? = null
|
||||||
private var isScanned: Boolean? = null
|
private var isScanned: Boolean? = null
|
||||||
private var myPosition: Int = 0
|
private var myPosition: Int = 0
|
||||||
|
private var changePosition = false
|
||||||
|
|
||||||
private lateinit var myGroupList: List<SaleVO>
|
private lateinit var myGroupList: List<SaleVO>
|
||||||
private var canChangeState = true
|
private var canChangeState = true
|
||||||
private var isVerifiedCollection = false
|
private var isVerifiedCollection = false
|
||||||
|
|
||||||
|
private var hasFilterByLevel = false
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance(collection: CollectionVO, type: String) =
|
fun newInstance(collection: CollectionVO, type: String) =
|
||||||
CollectionFragmentPicker(collection, type)
|
CollectionFragmentPicker(collection, type)
|
||||||
|
@ -293,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()
|
||||||
)
|
)
|
||||||
|
@ -377,7 +380,7 @@ class CollectionFragmentPicker(
|
||||||
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
||||||
|
|
||||||
//sergio:para ver si ha marcado dos veces el mismo ticket
|
//sergio:para ver si ha marcado dos veces el mismo ticket
|
||||||
binding.scanInput.setText(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||||
|
|
||||||
//de momento solo está el qr de artículo
|
//de momento solo está el qr de artículo
|
||||||
isScanned =
|
isScanned =
|
||||||
|
@ -841,7 +844,7 @@ class CollectionFragmentPicker(
|
||||||
} else {
|
} else {
|
||||||
// pintar línea
|
// pintar línea
|
||||||
saleAdapter!!.notifyDataSetChanged()
|
saleAdapter!!.notifyDataSetChanged()
|
||||||
myPosition = storedPosition
|
myPosition = storedBackPosition
|
||||||
|
|
||||||
ReviewQuantityForRefreshingAndSorting(
|
ReviewQuantityForRefreshingAndSorting(
|
||||||
sales[storedPosition].quantity!!.toInt(),
|
sales[storedPosition].quantity!!.toInt(),
|
||||||
|
@ -926,7 +929,7 @@ class CollectionFragmentPicker(
|
||||||
}
|
}
|
||||||
|
|
||||||
saleAdapter = SaleAdapter(
|
saleAdapter = SaleAdapter(
|
||||||
myGroupList,
|
myGroupList as MutableList,
|
||||||
pasillerosItemClickListener!!,
|
pasillerosItemClickListener!!,
|
||||||
object : OnQuantityClickListener {
|
object : OnQuantityClickListener {
|
||||||
|
|
||||||
|
@ -1001,17 +1004,25 @@ class CollectionFragmentPicker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
type = type
|
type = type,
|
||||||
|
onTicketColorClickListener = object : OnTicketColorListener {
|
||||||
|
override fun onTicketColorListener(sale: SaleVO) {
|
||||||
|
hasFilterByLevel = !hasFilterByLevel
|
||||||
|
|
||||||
|
if (hasFilterByLevel) {
|
||||||
|
saleAdapter!!.updateSales(myGroupList.filter { it.level == sale.level } as MutableList)
|
||||||
|
myGroupList = myGroupList.filter { it.level == sale.level }
|
||||||
|
} else {
|
||||||
|
createCollectionList()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
|
|
||||||
|
|
||||||
binding.fragmentSacadorCollections.adapter = saleAdapter
|
binding.fragmentSacadorCollections.adapter = saleAdapter
|
||||||
|
|
||||||
binding.fragmentSacadorCollections.layoutManager = lm
|
binding.fragmentSacadorCollections.layoutManager = lm
|
||||||
setTotalLines()
|
setTotalLines()
|
||||||
//Tarea #4628
|
//Tarea #4628
|
||||||
|
@ -1111,6 +1122,7 @@ class CollectionFragmentPicker(
|
||||||
RecyclerView.OnScrollListener() {
|
RecyclerView.OnScrollListener() {
|
||||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
storedBackPosition = lm.findFirstVisibleItemPosition()
|
storedBackPosition = lm.findFirstVisibleItemPosition()
|
||||||
|
myPosition = lm.findFirstVisibleItemPosition()
|
||||||
super.onScrolled(recyclerView, dx, dy)
|
super.onScrolled(recyclerView, dx, dy)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -1368,7 +1380,7 @@ class CollectionFragmentPicker(
|
||||||
}
|
}
|
||||||
|
|
||||||
//nuevo
|
//nuevo
|
||||||
var mySale = sales[position].saleFk
|
val mySale = sales[position].saleFk
|
||||||
for (indice in myGroupList.indices) {
|
for (indice in myGroupList.indices) {
|
||||||
|
|
||||||
if (!myGroupList[indice].isParent && myGroupList[indice].saleFk == mySale) {
|
if (!myGroupList[indice].isParent && myGroupList[indice].saleFk == mySale) {
|
||||||
|
@ -1533,11 +1545,11 @@ class CollectionFragmentPicker(
|
||||||
|
|
||||||
if (!myGroupList[indice].isParent && myGroupList[indice].saleFk == mySale) {
|
if (!myGroupList[indice].isParent && myGroupList[indice].saleFk == mySale) {
|
||||||
storedBackPosition = indice
|
storedBackPosition = indice
|
||||||
|
myPosition = storedBackPosition
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
storedBackPosition = position
|
storedBackPosition = position
|
||||||
myPosition = position
|
|
||||||
setListPosition(position, false)
|
setListPosition(position, false)
|
||||||
if (type != PRECHECKER) {
|
if (type != PRECHECKER) {
|
||||||
|
|
||||||
|
@ -2075,7 +2087,7 @@ class CollectionFragmentPicker(
|
||||||
"" + totalMark + "/" + total
|
"" + totalMark + "/" + total
|
||||||
|
|
||||||
if (totalMark == sales.size) {
|
if (totalMark == sales.size) {
|
||||||
getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT)
|
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
|
||||||
saleAdapter!!.notifyDataSetChanged()
|
saleAdapter!!.notifyDataSetChanged()
|
||||||
|
|
||||||
if (!goBack) ticketCollection_setUsedShelves()
|
if (!goBack) ticketCollection_setUsedShelves()
|
||||||
|
@ -2341,20 +2353,19 @@ class CollectionFragmentPicker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isTicket) {
|
if (isTicket) {
|
||||||
val builder = AlertDialog.Builder(context)
|
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
labelDialogHelper.showLabelDialog(
|
||||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
onItemSelected = { labelCount ->
|
||||||
builder.setItems(labelCount) { dialog, which ->
|
viewModel.collectionStickerPrint(
|
||||||
viewModel.collectionStickerPrint(
|
collectionFk = collection.collectionFk,
|
||||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
labelCount = labelCount
|
||||||
)
|
)
|
||||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
|
||||||
PRINTERNAME
|
|
||||||
)).toast(requireContext())
|
|
||||||
|
|
||||||
}
|
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
val dialog = builder.create()
|
PRINTERNAME
|
||||||
dialog.show()
|
)).toast(requireContext())
|
||||||
|
}
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
viewModel.collectionStickerPrint(
|
viewModel.collectionStickerPrint(
|
||||||
collectionFk = collection.collectionFk, null
|
collectionFk = collection.collectionFk, null
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package es.verdnatura.presentation.view.feature.collection.fragment
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
import android.app.AlertDialog
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
|
@ -27,6 +26,7 @@ import es.verdnatura.domain.notNull
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.ItemScanned
|
import es.verdnatura.presentation.common.ItemScanned
|
||||||
|
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
@ -259,7 +259,7 @@ class CollectionFragmentPickerNew(
|
||||||
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
|
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
|
||||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
|
||||||
if (binding.scanInput.text.toString().isNotEmpty()) {
|
if (binding.scanInput.text.toString().isNotEmpty()) {
|
||||||
binding.scanInput.setText(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||||
isScanned =
|
isScanned =
|
||||||
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
||||||
if (itemScanIsQr(binding.scanInput.text.toString())) {
|
if (itemScanIsQr(binding.scanInput.text.toString())) {
|
||||||
|
@ -405,29 +405,6 @@ class CollectionFragmentPickerNew(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
responseConfirmReservedItemShelvingSale.observe(viewLifecycleOwner) {
|
|
||||||
|
|
||||||
myGroupList[positionConfirm].isPicked = 1
|
|
||||||
saleAdapter!!.notifyDataSetChanged()
|
|
||||||
lm!!.scrollToPositionWithOffset(storedPosition, 0)
|
|
||||||
/* viewModel.collectionTicketGetSalix(
|
|
||||||
collection.collectionFk, print = false
|
|
||||||
)*/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
responseItemShelvingSale.observe(viewLifecycleOwner) {
|
|
||||||
myGroupList[positionConfirm].isPicked = 1
|
|
||||||
myGroupList[positionConfirm].reservedQuantity = quantityConfirm
|
|
||||||
viewModel.collectionTicketGetSalix(
|
|
||||||
collection.collectionFk, print = false
|
|
||||||
)
|
|
||||||
lm!!.scrollToPositionWithOffset(positionConfirm, 0)
|
|
||||||
ma.messageWithSound(
|
|
||||||
getString(R.string.operationSuccess), it.isError, !it.isError, isToasted = false
|
|
||||||
)
|
|
||||||
}*/
|
|
||||||
loadUnpicked.observe(viewLifecycleOwner) { event ->
|
loadUnpicked.observe(viewLifecycleOwner) { event ->
|
||||||
event.getContentIfNotHandled().notNull {
|
event.getContentIfNotHandled().notNull {
|
||||||
|
|
||||||
|
@ -439,6 +416,18 @@ class CollectionFragmentPickerNew(
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
loadPicked.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
if (it) {
|
||||||
|
myGroupList[positionConfirm].isPicked = 1
|
||||||
|
saleAdapter!!.notifyItemChanged(positionConfirm)
|
||||||
|
lm!!.scrollToPositionWithOffset(positionConfirm, 0)
|
||||||
|
setTotalLines()
|
||||||
|
} else {
|
||||||
|
updateScreen()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
responseItemShelvingSaleGroup.observe(viewLifecycleOwner) {
|
responseItemShelvingSaleGroup.observe(viewLifecycleOwner) {
|
||||||
|
|
||||||
viewModel.collectionTicketGetSalix(
|
viewModel.collectionTicketGetSalix(
|
||||||
|
@ -658,7 +647,10 @@ class CollectionFragmentPickerNew(
|
||||||
isMarking = true
|
isMarking = true
|
||||||
|
|
||||||
viewModel.itemShelvingSaleSetQuantity(
|
viewModel.itemShelvingSaleSetQuantity(
|
||||||
myGroupList[position].itemShelvingSaleFk, quantity, isItemShelvingSaleEmpty
|
myGroupList[position].itemShelvingSaleFk,
|
||||||
|
quantity,
|
||||||
|
isItemShelvingSaleEmpty,
|
||||||
|
shelvingFk = myGroupList[position].code!!
|
||||||
)
|
)
|
||||||
|
|
||||||
val mySale = sales[position].itemShelvingSaleFk
|
val mySale = sales[position].itemShelvingSaleFk
|
||||||
|
@ -869,22 +861,7 @@ class CollectionFragmentPickerNew(
|
||||||
}.setOkButtonTwo(getString(R.string.no)) {
|
}.setOkButtonTwo(getString(R.string.no)) {
|
||||||
scanRequest()
|
scanRequest()
|
||||||
customDialogThreeButtonsQuantity.dismiss()
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
viewModel.itemShelvingSaleExists(
|
markLine(position, quantity, true)
|
||||||
myGroupList[position].itemShelvingSaleFk,
|
|
||||||
myGroupList[position].itemShelvingFk,
|
|
||||||
position,
|
|
||||||
quantity
|
|
||||||
)
|
|
||||||
/* if (quantity == 0) {
|
|
||||||
viewModel.itemShelvingSaleExists(
|
|
||||||
myGroupList[position].itemShelvingSaleFk,
|
|
||||||
myGroupList[position].itemShelvingFk,
|
|
||||||
position,
|
|
||||||
quantity
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
markLine(position, quantity, true)
|
|
||||||
}*/
|
|
||||||
}.setKoButton(getString(R.string.cancel)) {
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
scanRequest()
|
scanRequest()
|
||||||
customDialogThreeButtonsQuantity.dismiss()
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
|
@ -1045,7 +1022,7 @@ class CollectionFragmentPickerNew(
|
||||||
getString(R.string.totalsPicker, totalMark, total)
|
getString(R.string.totalsPicker, totalMark, total)
|
||||||
|
|
||||||
if (totalMark == sales.size) {
|
if (totalMark == sales.size) {
|
||||||
getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT)
|
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
|
||||||
saleAdapter!!.notifyDataSetChanged()
|
saleAdapter!!.notifyDataSetChanged()
|
||||||
changeTicketState()
|
changeTicketState()
|
||||||
|
|
||||||
|
@ -1108,20 +1085,19 @@ class CollectionFragmentPickerNew(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isTicket) {
|
if (isTicket) {
|
||||||
val builder = AlertDialog.Builder(context)
|
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
labelDialogHelper.showLabelDialog(
|
||||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
onItemSelected = { labelCount ->
|
||||||
builder.setItems(labelCount) { dialog, which ->
|
viewModel.collectionStickerPrint(
|
||||||
viewModel.collectionStickerPrint(
|
collectionFk = collection.collectionFk,
|
||||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
labelCount = labelCount
|
||||||
)
|
)
|
||||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
|
||||||
PRINTERNAME
|
|
||||||
)).toast(requireContext())
|
|
||||||
|
|
||||||
}
|
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
val dialog = builder.create()
|
PRINTERNAME
|
||||||
dialog.show()
|
)).toast(requireContext())
|
||||||
|
}
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
viewModel.collectionStickerPrint(
|
viewModel.collectionStickerPrint(
|
||||||
collectionFk = collection.collectionFk, null
|
collectionFk = collection.collectionFk, null
|
||||||
|
|
|
@ -1,42 +1,41 @@
|
||||||
package es.verdnatura.presentation.view.feature.collection.fragment
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
import android.app.AlertDialog
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.graphics.drawable.GradientDrawable
|
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
import android.os.Bundle
|
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.view.Gravity
|
import android.util.Log.d
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
import android.view.LayoutInflater
|
|
||||||
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
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.FragmentCollectionNewBinding
|
import es.verdnatura.databinding.FragmentCollectionNewBinding
|
||||||
import es.verdnatura.domain.ConstAndValues
|
|
||||||
import es.verdnatura.domain.ConstAndValues.BASEURLSALIX
|
import es.verdnatura.domain.ConstAndValues.BASEURLSALIX
|
||||||
import es.verdnatura.domain.ConstAndValues.PREITEMPICKERTEST
|
import es.verdnatura.domain.ConstAndValues.PREITEMPICKERTEST
|
||||||
import es.verdnatura.domain.ConstAndValues.PREPARED
|
import es.verdnatura.domain.ConstAndValues.PREPARED
|
||||||
import es.verdnatura.domain.ConstAndValues.PRESACADOR
|
import es.verdnatura.domain.ConstAndValues.PRESACADOR
|
||||||
|
import es.verdnatura.domain.ConstAndValues.PRINTERNAME
|
||||||
import es.verdnatura.domain.ConstAndValues.SACADOR
|
import es.verdnatura.domain.ConstAndValues.SACADOR
|
||||||
import es.verdnatura.domain.ConstAndValues.SECTORFK
|
import es.verdnatura.domain.ConstAndValues.SECTORFK
|
||||||
import es.verdnatura.domain.notNull
|
import es.verdnatura.domain.notNull
|
||||||
|
import es.verdnatura.domain.showToastCenterWithBackground
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.ItemScanned
|
import es.verdnatura.presentation.common.ItemScanned
|
||||||
|
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||||
|
import es.verdnatura.presentation.common.OnAddItemClickListener
|
||||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
@ -73,6 +72,8 @@ import org.json.JSONObject
|
||||||
2- AL AÑADIR ITEM A A LA COLECCIÓN , EL SACADOR SALEGROUPFK Y SECTORFK SON NULOS.
|
2- AL AÑADIR ITEM A A LA COLECCIÓN , EL SACADOR SALEGROUPFK Y SECTORFK SON NULOS.
|
||||||
3-VERIFICAR COLECCIÓN
|
3-VERIFICAR COLECCIÓN
|
||||||
4-IMPRIMIR
|
4-IMPRIMIR
|
||||||
|
5-EL SACADOR PUEDE MARCAR PREVIA, EL PRESACADOR NO.
|
||||||
|
6-EL PRE marca los estados del saleGroup con OK PREVIOUS (26) y el SACADOR con PREPARED (14)
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
isVerifiedCollection
|
isVerifiedCollection
|
||||||
|
@ -109,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(
|
||||||
|
@ -141,12 +143,12 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
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()
|
||||||
}
|
}
|
||||||
|
@ -223,7 +225,7 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
|
binding.scanInput.setOnEditorActionListener { v, actionId, event ->
|
||||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
|
||||||
if (binding.scanInput.text.toString().isNotEmpty()) {
|
if (binding.scanInput.text.toString().isNotEmpty()) {
|
||||||
binding.scanInput.setText(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||||
isScanned =
|
isScanned =
|
||||||
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
||||||
if (itemScanIsQr(binding.scanInput.text.toString())) {
|
if (itemScanIsQr(binding.scanInput.text.toString())) {
|
||||||
|
@ -328,12 +330,15 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
|
|
||||||
loadPicked.observe(viewLifecycleOwner) { event ->
|
loadPicked.observe(viewLifecycleOwner) { event ->
|
||||||
event.getContentIfNotHandled().notNull {
|
event.getContentIfNotHandled().notNull {
|
||||||
myGroupList[positionConfirm].isPicked = 1
|
if (it) {
|
||||||
saleAdapter!!.notifyItemChanged(positionConfirm)
|
myGroupList[positionConfirm].isPicked = 1
|
||||||
lm!!.scrollToPositionWithOffset(positionConfirm, 0)
|
saleAdapter!!.notifyItemChanged(positionConfirm)
|
||||||
//lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0)
|
lm!!.scrollToPositionWithOffset(positionConfirm, 0)
|
||||||
setTotalLines()
|
//lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0)
|
||||||
|
setTotalLines()
|
||||||
|
} else {
|
||||||
|
updateScreen()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,25 +352,40 @@ 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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
responseCode.observe(viewLifecycleOwner) {
|
loadResponseCode.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
|
||||||
if (it == null) {
|
if (it == null) {
|
||||||
showErrorMessage(text = getString(R.string.codeNotExist))
|
showErrorMessage(text = getString(R.string.codeNotExist))
|
||||||
if (mperror != null) mperror?.start()
|
|
||||||
} else {
|
|
||||||
if (checkItemScan(it.toString(), positionConfirm)) {
|
|
||||||
scanRequest()
|
|
||||||
customDialogList.dismiss()
|
|
||||||
mpok?.start()
|
|
||||||
markLine(positionConfirm, quantityReserveToCheckItemScan, false)
|
|
||||||
} else {
|
|
||||||
customDialogList.setValueTwo("")
|
|
||||||
showErrorMessage(text = getString(R.string.lineNotExist))
|
|
||||||
if (mperror != null) mperror?.start()
|
if (mperror != null) mperror?.start()
|
||||||
|
} else {
|
||||||
|
if (checkItemScan(it.toString(), positionConfirm)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialogList.dismiss()
|
||||||
|
mpok?.start()
|
||||||
|
markLine(positionConfirm, quantityReserveToCheckItemScan, false)
|
||||||
|
} else {
|
||||||
|
customDialogList.setValueTwo("")
|
||||||
|
showErrorMessage(text = getString(R.string.lineNotExist))
|
||||||
|
if (mperror != null) mperror?.start()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -402,7 +422,7 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
when (type) {
|
when (type) {
|
||||||
PREITEMPICKERTEST -> {
|
PREITEMPICKERTEST -> {
|
||||||
myGroupList =
|
myGroupList =
|
||||||
salesList.sortedWith(compareBy<Sale> { it.pickingOrderPrevia }.thenBy { it.itemFk })
|
salesList.sortedWith(compareBy<Sale> { it.pickingOrder }.thenBy { it.itemFk })
|
||||||
}
|
}
|
||||||
|
|
||||||
SACADOR -> {
|
SACADOR -> {
|
||||||
|
@ -464,6 +484,12 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
showDeleteItemShelving(sale)
|
showDeleteItemShelving(sale)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}, onAddItemClickListener = object : OnAddItemClickListener {
|
||||||
|
|
||||||
|
override fun onAddItemClickListener(sale: Sale) {
|
||||||
|
customDialogAddItemFromSale(sale)
|
||||||
|
}
|
||||||
|
|
||||||
}, type = type
|
}, type = type
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -483,21 +509,20 @@ 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
|
)
|
||||||
)
|
).setOkButton(getString(R.string.delete)) {
|
||||||
).setOkButton(getString(R.string.delete)) {
|
|
||||||
|
|
||||||
viewModel.itemShelvingSaleDeleteIsAdded(sale.itemShelvingSaleFk)
|
viewModel.itemShelvingSaleDeleteIsAdded(sale.itemShelvingSaleFk)
|
||||||
scanRequest()
|
scanRequest()
|
||||||
customDialog.dismiss()
|
customDialog.dismiss()
|
||||||
|
|
||||||
}.setKoButton(getString(R.string.cancel)) {
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
scanRequest()
|
scanRequest()
|
||||||
customDialog.dismiss()
|
customDialog.dismiss()
|
||||||
}.show()
|
}.show()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -528,29 +553,79 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
var isFoundSale = false
|
var isFoundSale = false
|
||||||
//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á
|
||||||
|
try {
|
||||||
|
if (myGroupList[indice].isParent && myGroupList[indice].saleGroupFk == txtscan.toInt() || (type == PREPARED && myGroupList[indice].saleGroupFk == txtscan.toInt())) {
|
||||||
|
isFoundSale = true
|
||||||
|
storedPosition = indice
|
||||||
|
viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt())
|
||||||
|
setStateSaleGroup(txtscan.toInt())
|
||||||
|
myGroupList[indice].stateCode =
|
||||||
|
if (myGroupList[indice].stateCode == "PREPARED") {
|
||||||
|
"OK PREVIOUS"
|
||||||
|
} else {
|
||||||
|
"PREPARED"
|
||||||
|
}
|
||||||
|
saleAdapter!!.notifyDataSetChanged()
|
||||||
|
break
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
d("Verdnatura", "not find")
|
||||||
|
}
|
||||||
if (myGroupList[indice].isPicked != 1 && myGroupList[indice].code != null && myGroupList[indice].code!!.uppercase() == txtscan.uppercase()) {
|
if (myGroupList[indice].isPicked != 1 && myGroupList[indice].code != null && myGroupList[indice].code!!.uppercase() == txtscan.uppercase()) {
|
||||||
mpok!!.start()
|
|
||||||
isFoundSale = true
|
isFoundSale = true
|
||||||
printShelvingResult(indice)
|
printShelvingResult(indice)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isFoundSale) mperror!!.start()
|
if (!isFoundSale) mperror!!.start() else mpok!!.start()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun markPrevia(saleGroupScanned: String): Boolean {
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (indice in sales.indices) {
|
||||||
|
if (sales[indice].saleGroupFk != null && sales[indice].saleGroupFk == saleGroupScanned.toInt()) {
|
||||||
|
viewModel.itemShelvingSaleSetSaleGroup(saleGroupScanned.toInt())
|
||||||
|
setStateSaleGroup(saleGroupScanned.toInt())
|
||||||
|
storedPosition = indice
|
||||||
|
mpok!!.start()
|
||||||
|
return true
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
private fun findSale(txtscan: String, position: Int, sale: Sale) {
|
private fun findSale(txtscan: String, position: Int, sale: Sale) {
|
||||||
|
|
||||||
storedPosition = position
|
storedPosition = position
|
||||||
|
|
||||||
if (sale.code!!.uppercase() == txtscan.uppercase()) {
|
val isOk = markPrevia(txtscan)
|
||||||
mpok!!.start()
|
|
||||||
printShelvingResult(position)
|
|
||||||
} else {
|
|
||||||
mperror!!.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (isOk) {
|
||||||
|
//Se ha escanado un ticket y se ha marcado la previa
|
||||||
|
ma.messageWithSound(
|
||||||
|
getString(R.string.previousCollected),
|
||||||
|
isPlayed = false,
|
||||||
|
isError = false,
|
||||||
|
isToasted = true
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (sale.code!!.uppercase() == txtscan.uppercase()) {
|
||||||
|
mpok!!.start()
|
||||||
|
printShelvingResult(position)
|
||||||
|
} else {
|
||||||
|
mperror!!.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun markLine(position: Int, quantity: Int, isItemShelvingSaleEmpty: Boolean?) {
|
private fun markLine(position: Int, quantity: Int, isItemShelvingSaleEmpty: Boolean?) {
|
||||||
|
@ -565,7 +640,8 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
myGroupList[position].itemShelvingSaleFk,
|
myGroupList[position].itemShelvingSaleFk,
|
||||||
quantity,
|
quantity,
|
||||||
isItemShelvingSaleEmpty = isItemShelvingSaleEmpty,
|
isItemShelvingSaleEmpty = isItemShelvingSaleEmpty,
|
||||||
sectorFk = if (sectorFk == -1) null else sectorFk
|
sectorFk = if (sectorFk == -1) null else sectorFk,
|
||||||
|
shelvingFk = myGroupList[position].code!!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
// storedBackPosition = position
|
// storedBackPosition = position
|
||||||
|
@ -708,8 +784,7 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
mpok?.start()
|
mpok?.start()
|
||||||
ma.hideKeyboard(customDialogList.getEditTextTwo())
|
ma.hideKeyboard(customDialogList.getEditTextTwo())
|
||||||
customDialogList.dismiss()
|
customDialogList.dismiss()
|
||||||
showTicket(myGroupList[position].ticketFk)
|
requireContext().showToastCenterWithBackground(myGroupList[position].ticketFk.toString())
|
||||||
|
|
||||||
scanRequest()
|
scanRequest()
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -731,24 +806,6 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showTicket(ticketFk: Int) {
|
|
||||||
val inflater = LayoutInflater.from(requireContext())
|
|
||||||
val layout = inflater.inflate(R.layout.ticket_toast_layout, null)
|
|
||||||
val text = layout.findViewById<TextView>(R.id.toast_text)
|
|
||||||
text.text = "$ticketFk"
|
|
||||||
text.setTextColor(requireContext().getColor(R.color.verdnatura_orange_salix))
|
|
||||||
text.textSize = 18f
|
|
||||||
val background = GradientDrawable()
|
|
||||||
background.setColor(Color.parseColor("#000000"))
|
|
||||||
background.cornerRadius = 16f
|
|
||||||
layout.background = background
|
|
||||||
val toast = Toast(requireContext())
|
|
||||||
toast.duration = Toast.LENGTH_LONG
|
|
||||||
toast.view = layout
|
|
||||||
toast.setGravity(Gravity.CENTER, 0, 0)
|
|
||||||
toast.show()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun checkItemScan(valueToCheck: String, position: Int): Boolean {
|
private fun checkItemScan(valueToCheck: String, position: Int): Boolean {
|
||||||
println("CheckItemScan $valueToCheck")
|
println("CheckItemScan $valueToCheck")
|
||||||
val saleToCheck = myGroupList[position]
|
val saleToCheck = myGroupList[position]
|
||||||
|
@ -780,14 +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)/* if (quantity == 0) {
|
||||||
/* if (quantity == 0) {
|
|
||||||
|
|
||||||
/* viewModel.itemShelvingGet(
|
/* viewModel.itemShelvingGet(
|
||||||
myGroupList[position].itemShelvingFk,
|
myGroupList[position].itemShelvingFk,
|
||||||
|
@ -896,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
|
||||||
)
|
)
|
||||||
|
@ -914,6 +969,44 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun customDialogAddItemFromSale(sale: Sale) {
|
||||||
|
|
||||||
|
customDialogThreeButtonsQuantity.setTitle(
|
||||||
|
"${getString(R.string.ticket)}${sale.ticketFk}"
|
||||||
|
).setDescription(
|
||||||
|
getString(
|
||||||
|
R.string.addItemQuantity, sale.itemFk
|
||||||
|
)
|
||||||
|
)
|
||||||
|
customDialogThreeButtonsQuantity.setCustomDialogValue(VISIBLE)
|
||||||
|
customDialogThreeButtonsQuantity.setOkButtonAdd(text = getString(R.string.add)) {
|
||||||
|
ticketSelected = sale.ticketFk
|
||||||
|
if (customDialogThreeButtonsQuantity.getValue().isNotEmpty()) {
|
||||||
|
viewModel.collectionAddWithReservation(
|
||||||
|
sale.itemFk,
|
||||||
|
customDialogThreeButtonsQuantity.getValue().toInt(),
|
||||||
|
ticketSelected = sale.ticketFk,
|
||||||
|
saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get(
|
||||||
|
0
|
||||||
|
)?.saleGroupFk ?: 0,
|
||||||
|
sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey<Int>(
|
||||||
|
SECTORFK
|
||||||
|
)
|
||||||
|
)
|
||||||
|
customDialogThreeButtonsQuantity.setValue("")
|
||||||
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
|
hideKeyboardFragment()
|
||||||
|
} else {
|
||||||
|
getString(R.string.indicateQuantity).toast(requireContext())
|
||||||
|
}
|
||||||
|
|
||||||
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
|
scanRequest()
|
||||||
|
customDialogThreeButtonsQuantity.dismiss()
|
||||||
|
}.show()
|
||||||
|
customDialogThreeButtonsQuantity.getEditText().requestFocus()
|
||||||
|
}
|
||||||
|
|
||||||
private fun hideKeyboardFragment() {
|
private fun hideKeyboardFragment() {
|
||||||
Handler(Looper.getMainLooper()).postDelayed({
|
Handler(Looper.getMainLooper()).postDelayed({
|
||||||
val inputMethodManager =
|
val inputMethodManager =
|
||||||
|
@ -936,15 +1029,13 @@ 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 ""
|
||||||
binding.mainToolbar.toolbarSubtitle.text =
|
binding.mainToolbar.toolbarSubtitle.text =
|
||||||
getString(R.string.totalsPicker, totalMark, myGroupList.size)
|
getString(R.string.totalsPicker, totalMark, myGroupList.size)
|
||||||
if (totalMark == myGroupList.size) {
|
if (totalMark == myGroupList.size) {
|
||||||
getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT)
|
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
|
||||||
when (type) {
|
when (type) {
|
||||||
PREPARED -> {
|
PREPARED -> {
|
||||||
tickets.forEach {
|
tickets.forEach {
|
||||||
|
@ -952,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)
|
||||||
|
@ -1090,10 +1198,9 @@ 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) {
|
||||||
isVerifiedCollection = true
|
isVerifiedCollection = true
|
||||||
ma.hideKeyboard(customDialogList.getEditText())
|
ma.hideKeyboard(customDialogList.getEditText())
|
||||||
|
@ -1149,20 +1256,15 @@ class CollectionFragmentPickerPreviousNew(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isTicket) {
|
if (isTicket) {
|
||||||
val builder = AlertDialog.Builder(context)
|
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
|
||||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
|
||||||
builder.setItems(labelCount) { dialog, which ->
|
|
||||||
viewModel.collectionStickerPrint(
|
viewModel.collectionStickerPrint(
|
||||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
collectionFk = collection.collectionFk, labelCount = labelCount
|
||||||
)
|
)
|
||||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
ConstAndValues.PRINTERNAME
|
PRINTERNAME
|
||||||
)).toast(requireContext())
|
)).toast(requireContext())
|
||||||
|
})
|
||||||
}
|
|
||||||
val dialog = builder.create()
|
|
||||||
dialog.show()
|
|
||||||
} else {
|
} else {
|
||||||
viewModel.collectionStickerPrint(
|
viewModel.collectionStickerPrint(
|
||||||
collectionFk = collection.collectionFk, null
|
collectionFk = collection.collectionFk, null
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package es.verdnatura.presentation.view.feature.collection.fragment
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
import android.app.AlertDialog
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
|
@ -38,6 +37,7 @@ import es.verdnatura.domain.toLong
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.ItemScanned
|
import es.verdnatura.presentation.common.ItemScanned
|
||||||
|
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
@ -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)
|
||||||
|
@ -205,8 +205,8 @@ class CollectionFragmentPreChecker(
|
||||||
val listIcons: ArrayList<ImageView> = ArrayList()
|
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||||
val iconPrint = ImageView(context)
|
val iconPrint = ImageView(context)
|
||||||
iconPrint.setImageResource(R.drawable.ic_print_black_24dp)
|
iconPrint.setImageResource(R.drawable.ic_print_black_24dp)
|
||||||
val iconAdd = ImageView(context)
|
// val iconAdd = ImageView(context)
|
||||||
iconAdd.setImageResource(R.drawable.ic_playlist_add_black_24dp)
|
// iconAdd.setImageResource(R.drawable.ic_playlist_add_black_24dp)
|
||||||
val iconViewCollection = ImageView(context)
|
val iconViewCollection = ImageView(context)
|
||||||
iconViewCollection.setImageResource(R.drawable.ic_collection)
|
iconViewCollection.setImageResource(R.drawable.ic_collection)
|
||||||
val iconWorker = ImageView(context)
|
val iconWorker = ImageView(context)
|
||||||
|
@ -220,7 +220,7 @@ class CollectionFragmentPreChecker(
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp)
|
iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp)
|
||||||
iconAdd.tooltipText = getTooltip(R.drawable.ic_playlist_add_black_24dp)
|
// iconAdd.tooltipText = getTooltip(R.drawable.ic_playlist_add_black_24dp)
|
||||||
iconViewCollection.tooltipText = getTooltip(R.drawable.ic_collection)
|
iconViewCollection.tooltipText = getTooltip(R.drawable.ic_collection)
|
||||||
iconPhone.tooltipText = getTooltip(R.drawable.phone_call)
|
iconPhone.tooltipText = getTooltip(R.drawable.phone_call)
|
||||||
iconParking.tooltipText = getTooltip(R.drawable.ic_local_parking_black_24dp)
|
iconParking.tooltipText = getTooltip(R.drawable.ic_local_parking_black_24dp)
|
||||||
|
@ -237,7 +237,7 @@ class CollectionFragmentPreChecker(
|
||||||
listIcons.add(iconWorker)
|
listIcons.add(iconWorker)
|
||||||
}
|
}
|
||||||
|
|
||||||
listIcons.add(iconAdd)
|
// listIcons.add(iconAdd)
|
||||||
|
|
||||||
if (type == SACADOR) {
|
if (type == SACADOR) {
|
||||||
listIcons.add(iconUpdate)
|
listIcons.add(iconUpdate)
|
||||||
|
@ -255,7 +255,7 @@ class CollectionFragmentPreChecker(
|
||||||
|
|
||||||
when (item) {
|
when (item) {
|
||||||
iconPrint.drawable -> print()
|
iconPrint.drawable -> print()
|
||||||
iconAdd.drawable -> addItem()
|
// iconAdd.drawable -> addItem()
|
||||||
iconWorker.drawable -> showUser()
|
iconWorker.drawable -> showUser()
|
||||||
iconUpdate.drawable -> updateScreen()
|
iconUpdate.drawable -> updateScreen()
|
||||||
iconParking.drawable -> pasillerosItemClickListener?.onPasillerosItemClickListener(
|
iconParking.drawable -> pasillerosItemClickListener?.onPasillerosItemClickListener(
|
||||||
|
@ -362,7 +362,7 @@ class CollectionFragmentPreChecker(
|
||||||
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
||||||
|
|
||||||
//sergio:para ver si ha marcado dos veces el mismo ticket
|
//sergio:para ver si ha marcado dos veces el mismo ticket
|
||||||
binding.scanInput.setText(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||||
|
|
||||||
//de momento solo está el qr de artículo
|
//de momento solo está el qr de artículo
|
||||||
isScanned =
|
isScanned =
|
||||||
|
@ -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())
|
||||||
|
@ -399,10 +399,10 @@ class CollectionFragmentPreChecker(
|
||||||
it.sales.forEach { at ->
|
it.sales.forEach { at ->
|
||||||
if (at.saleGroupFk != saleGroup) {
|
if (at.saleGroupFk != saleGroup) {
|
||||||
viewModel.setParking(
|
viewModel.setParking(
|
||||||
ticketFk = at.saleGroupFk.toInt(),
|
ticketFk = at.saleGroupFk!!.toInt(),
|
||||||
parking = myQr.more
|
parking = myQr.more
|
||||||
)
|
)
|
||||||
saleGroup = at.saleGroupFk
|
saleGroup = at.saleGroupFk!!
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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(
|
||||||
|
@ -964,15 +964,16 @@ class CollectionFragmentPreChecker(
|
||||||
|
|
||||||
val isOnReservationMode = mobileApplication.dataStoreApp.readDataStoreKey<Boolean>(
|
val isOnReservationMode = mobileApplication.dataStoreApp.readDataStoreKey<Boolean>(
|
||||||
ConstAndValues.RESERVATIONMODE
|
ConstAndValues.RESERVATIONMODE
|
||||||
)
|
) || (mobileApplication.dataStoreApp.readDataStoreKey<Boolean?>(
|
||||||
//lolass
|
ConstAndValues.SECTORISONRESERVATIONMODE
|
||||||
if (isOnReservationMode) {
|
) == true)
|
||||||
|
|
||||||
sales = salesList.filter {
|
sales = if (isOnReservationMode) {
|
||||||
|
salesList.filter {
|
||||||
it.sectorFk == mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
it.sectorFk == mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
||||||
}.sortedWith(compareBy({ it.saleOrder }))
|
}.sortedWith(compareBy({ it.saleOrder }))
|
||||||
} else {
|
} else {
|
||||||
sales = salesList.filter {
|
salesList.filter {
|
||||||
it.sectorFk == mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
it.sectorFk == mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
||||||
}.sortedWith(compareBy({ it.picked }))
|
}.sortedWith(compareBy({ it.picked }))
|
||||||
}
|
}
|
||||||
|
@ -983,7 +984,7 @@ class CollectionFragmentPreChecker(
|
||||||
|
|
||||||
saleAdapter =
|
saleAdapter =
|
||||||
SaleAdapter(
|
SaleAdapter(
|
||||||
sales,
|
sales as MutableList,
|
||||||
pasillerosItemClickListener!!,
|
pasillerosItemClickListener!!,
|
||||||
object : OnQuantityClickListener {
|
object : OnQuantityClickListener {
|
||||||
|
|
||||||
|
@ -1742,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 {
|
||||||
|
@ -2014,7 +2015,7 @@ class CollectionFragmentPreChecker(
|
||||||
"" + totalMark + "/" + total
|
"" + totalMark + "/" + total
|
||||||
|
|
||||||
if (totalMark == sales.size) {
|
if (totalMark == sales.size) {
|
||||||
getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT)
|
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
|
||||||
saleAdapter!!.notifyDataSetChanged()
|
saleAdapter!!.notifyDataSetChanged()
|
||||||
|
|
||||||
if (!goBack)
|
if (!goBack)
|
||||||
|
@ -2266,21 +2267,19 @@ class CollectionFragmentPreChecker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isTicket) {
|
if (isTicket) {
|
||||||
val builder = AlertDialog.Builder(context)
|
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
labelDialogHelper.showLabelDialog(
|
||||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
onItemSelected = { labelCount ->
|
||||||
builder.setItems(labelCount) { dialog, which ->
|
viewModel.collectionStickerPrint(
|
||||||
viewModel.collectionStickerPrint(
|
collectionFk = collection.collectionFk,
|
||||||
collectionFk = collection.collectionFk,
|
labelCount = labelCount
|
||||||
labelCount = (which + 1)
|
)
|
||||||
)
|
|
||||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
|
||||||
PRINTERNAME
|
|
||||||
)).toast(requireContext())
|
|
||||||
|
|
||||||
}
|
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
val dialog = builder.create()
|
PRINTERNAME
|
||||||
dialog.show()
|
)).toast(requireContext())
|
||||||
|
}
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
viewModel.collectionStickerPrint(
|
viewModel.collectionStickerPrint(
|
||||||
collectionFk = collection.collectionFk,
|
collectionFk = collection.collectionFk,
|
||||||
|
|
|
@ -180,14 +180,18 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
val loadAddNew: LiveData<Event<ResponseItemVO>> = _responseNew.map { Event(it) }
|
val loadAddNew: LiveData<Event<ResponseItemVO>> = _responseNew.map { Event(it) }
|
||||||
|
|
||||||
private val _responseCode by lazy { MutableLiveData<Int?>() }
|
private val _responseCode by lazy { MutableLiveData<Int?>() }
|
||||||
val responseCode: LiveData<Int?>
|
val responseCode: LiveData<Int?> = _responseCode
|
||||||
get() = _responseCode
|
val loadResponseCode: LiveData<Event<Int?>> = _responseCode.map { Event(it) }
|
||||||
|
|
||||||
private val _responseIncQuantity by lazy { MutableLiveData<ResponseItemVO>() }
|
private val _responseIncQuantity by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
val responseIncQuantity: LiveData<ResponseItemVO>
|
val responseIncQuantity: LiveData<ResponseItemVO>
|
||||||
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
|
||||||
|
|
||||||
|
@ -431,10 +445,18 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
itemShelvingSaleFk: Int,
|
itemShelvingSaleFk: Int,
|
||||||
quantity: Int,
|
quantity: Int,
|
||||||
isItemShelvingSaleEmpty: Boolean?,
|
isItemShelvingSaleEmpty: Boolean?,
|
||||||
sectorFk: Int? = null
|
sectorFk: Int? = null,
|
||||||
|
shelvingFk: String
|
||||||
) {
|
) {
|
||||||
salix.itemShelvingSaleSetquantitySalix(
|
salix.itemShelvingSaleSetquantitySalix(
|
||||||
params = arrayListOf(itemShelvingSaleFk, quantity, isItemShelvingSaleEmpty, sectorFk)
|
params = arrayListOf(
|
||||||
|
itemShelvingSaleFk,
|
||||||
|
quantity,
|
||||||
|
isItemShelvingSaleEmpty,
|
||||||
|
sectorFk,
|
||||||
|
shelvingFk
|
||||||
|
|
||||||
|
).formatWithQuotes()
|
||||||
).enqueue(object : SalixCallback<Any>(context) {
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
|
||||||
override fun onSuccess(response: Response<Any>) {
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
@ -444,6 +466,12 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
_responseCollectionAddItem.value = true
|
_responseCollectionAddItem.value = true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseConfirmReservedItemShelvingSale.value = false
|
||||||
|
super.onError(t)
|
||||||
|
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,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
|
||||||
) {
|
) {
|
||||||
|
@ -612,7 +669,7 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun itemShelvingSaleSetSaleGroup(
|
fun itemShelvingSaleSetSaleGroup(
|
||||||
saleGroupFk: Int
|
saleGroupFk: Int,
|
||||||
) {
|
) {
|
||||||
salix.itemShelvingSaleSetSaleGroup(
|
salix.itemShelvingSaleSetSaleGroup(
|
||||||
arrayListOf(
|
arrayListOf(
|
||||||
|
@ -628,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)
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -753,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
|
||||||
) {
|
) {
|
||||||
|
@ -783,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) {
|
||||||
|
@ -974,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()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,922 @@
|
||||||
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import androidx.lifecycle.map
|
||||||
|
import com.google.gson.JsonObject
|
||||||
|
import es.verdnatura.MobileApplication
|
||||||
|
import es.verdnatura.domain.SalixCallback
|
||||||
|
import es.verdnatura.domain.formatWithQuotes
|
||||||
|
import es.verdnatura.domain.toast
|
||||||
|
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
|
||||||
|
import es.verdnatura.presentation.base.BaseViewModel
|
||||||
|
import es.verdnatura.presentation.base.getMessageFromAllResponse
|
||||||
|
import es.verdnatura.presentation.base.nameofFunction
|
||||||
|
import es.verdnatura.presentation.common.Event
|
||||||
|
import es.verdnatura.presentation.common.ResponseItemExistsItemShelvingSale
|
||||||
|
import es.verdnatura.presentation.common.ResponseItemVO
|
||||||
|
import es.verdnatura.presentation.common.SaleTrackingReplaceSalix
|
||||||
|
import es.verdnatura.presentation.common.SaleTrackingSalix
|
||||||
|
import es.verdnatura.presentation.common.TicketState
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.ItemVO
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.SalixSaleQuantity
|
||||||
|
import es.verdnatura.presentation.view.feature.collection.mapper.map
|
||||||
|
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.MistakeTypeListVO
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.MistakeTypeVO
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.PlacementSupplyListVO
|
||||||
|
import es.verdnatura.presentation.view.feature.sacador.model.PlacementSupplyVO
|
||||||
|
import es.verdnatura.presentation.view.feature.workermistake.model.SaleMistakeSalix
|
||||||
|
import es.verdnatura.presentation.view.feature.workermistake.model.SaleTrackingDelSalix
|
||||||
|
import retrofit2.Response
|
||||||
|
|
||||||
|
class CollectionViewModelCheckerPreviosNew(val context: Context) : BaseViewModel(context) {
|
||||||
|
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
||||||
|
private val contextApp = context
|
||||||
|
|
||||||
|
private val _responseState by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseState: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseState
|
||||||
|
|
||||||
|
private val _collectionTicketList by lazy { MutableLiveData<CollectionVO>() }
|
||||||
|
val collectionTicketList: LiveData<CollectionVO>
|
||||||
|
get() = _collectionTicketList
|
||||||
|
|
||||||
|
private val _responseExistsItemShelvingSale by lazy { MutableLiveData<ResponseItemExistsItemShelvingSale>() }
|
||||||
|
val responseExistsItemShelvingSale: LiveData<ResponseItemExistsItemShelvingSale>
|
||||||
|
get() = _responseExistsItemShelvingSale
|
||||||
|
|
||||||
|
val loadExistsResponse: LiveData<Event<ResponseItemExistsItemShelvingSale>> =
|
||||||
|
_responseExistsItemShelvingSale.map { Event(it) }
|
||||||
|
|
||||||
|
private val _collectionTicketSalix by lazy { MutableLiveData<CollectionTicket>() }
|
||||||
|
val collectionTicketSalix: LiveData<CollectionTicket>
|
||||||
|
get() = _collectionTicketSalix
|
||||||
|
|
||||||
|
private val _getSalesResponse by lazy { MutableLiveData<CollectionVO>() }
|
||||||
|
val getSalesResponse: LiveData<CollectionVO>
|
||||||
|
get() = _getSalesResponse
|
||||||
|
|
||||||
|
val loadCollectionTicketSalix: LiveData<Event<CollectionTicket>> =
|
||||||
|
_collectionTicketSalix.map { Event(it) }
|
||||||
|
|
||||||
|
private val _placementSuppleyList by lazy { MutableLiveData<PlacementSupplyListVO>() }
|
||||||
|
val placementSuppleyList: LiveData<PlacementSupplyListVO>
|
||||||
|
get() = _placementSuppleyList
|
||||||
|
|
||||||
|
private val _response by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val response: LiveData<ResponseItemVO>
|
||||||
|
get() = _response
|
||||||
|
|
||||||
|
private val _responseSaleMistakeAdd by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseSaleMistakeAdd: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseSaleMistakeAdd
|
||||||
|
val loadSaleMistakeAdd: LiveData<Event<ResponseItemVO>> =
|
||||||
|
_responseSaleMistakeAdd.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseItemShelvingSaleSupplyAdd by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseItemShelvingSaleSupplyAdd: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseItemShelvingSaleSupplyAdd
|
||||||
|
|
||||||
|
private val _responseSaleReplace by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseSaleReplace: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseSaleReplace
|
||||||
|
|
||||||
|
private val _responseSaleTracking_mark by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseSaleTracking_mark: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseSaleTracking_mark
|
||||||
|
|
||||||
|
private val _responseConfirmReservedItemShelvingSale by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseConfirmReservedItemShelvingSale: LiveData<Boolean>
|
||||||
|
get() = _responseConfirmReservedItemShelvingSale
|
||||||
|
|
||||||
|
val loadPicked: LiveData<Event<Boolean>> =
|
||||||
|
_responseConfirmReservedItemShelvingSale.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseItemShelvingSale by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseItemShelvingSale: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseItemShelvingSale
|
||||||
|
|
||||||
|
private val _responseItemShelvingSaleUnPicked by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseItemShelvingSaleUnPicked: LiveData<Boolean>
|
||||||
|
get() = _responseItemShelvingSaleUnPicked
|
||||||
|
|
||||||
|
val loadUnpicked: LiveData<Event<Boolean>> = _responseItemShelvingSaleUnPicked.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseCollectionAddItem by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val responseCollectionAddItem: LiveData<Boolean>
|
||||||
|
get() = _responseCollectionAddItem
|
||||||
|
|
||||||
|
private val _responseParking by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseParking: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseParking
|
||||||
|
|
||||||
|
val loadParking: LiveData<Event<ResponseItemVO>> = _responseParking.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responsePrint by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responsePrint: LiveData<ResponseItemVO>
|
||||||
|
get() = _responsePrint
|
||||||
|
|
||||||
|
private val _responseDel by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseDel: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseDel
|
||||||
|
|
||||||
|
private val _responseItemShelvingUpdate by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseItemShelvingUpdate: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseItemShelvingUpdate
|
||||||
|
|
||||||
|
private val _responseTicketState by lazy { MutableLiveData<TicketState>() }
|
||||||
|
val responseTicketState: LiveData<TicketState> = _responseTicketState
|
||||||
|
|
||||||
|
val loadTicketState: LiveData<Event<TicketState>> = _responseTicketState.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseUsedShelves by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseUsedShelves: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseUsedShelves
|
||||||
|
|
||||||
|
private val _responseSaleGroup by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseSaleGroup: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseSaleGroup
|
||||||
|
|
||||||
|
val loadResponseSaleGroup: LiveData<Event<ResponseItemVO>> =
|
||||||
|
_responseSaleGroup.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseItemShelvingSaleGroup by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseItemShelvingSaleGroup: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseItemShelvingSaleGroup
|
||||||
|
|
||||||
|
private val _responseTicketClosure by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseTicketClosure: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseTicketClosure
|
||||||
|
val loadTicketClousure: LiveData<Event<ResponseItemVO>> =
|
||||||
|
_responseTicketClosure.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseCollectionUnchecked by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseCollectionUnchecked: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseCollectionUnchecked
|
||||||
|
|
||||||
|
private val _responseSplit by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseSplit: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseSplit
|
||||||
|
|
||||||
|
private val _responseNew by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseNew: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseNew
|
||||||
|
|
||||||
|
val loadAddNew: LiveData<Event<ResponseItemVO>> = _responseNew.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseCode by lazy { MutableLiveData<Int?>() }
|
||||||
|
val responseCode: LiveData<Int?>
|
||||||
|
get() = _responseCode
|
||||||
|
|
||||||
|
private val _responseIncQuantity by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseIncQuantity: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseIncQuantity
|
||||||
|
val loadIncQuantity: LiveData<Event<ResponseItemVO>> = _responseIncQuantity.map { Event(it) }
|
||||||
|
|
||||||
|
private val _mistakeList by lazy { MutableLiveData<MistakeTypeListVO>() }
|
||||||
|
val mistakeList: LiveData<MistakeTypeListVO>
|
||||||
|
get() = _mistakeList
|
||||||
|
|
||||||
|
private val _item by lazy { MutableLiveData<ItemVO>() }
|
||||||
|
val item: LiveData<ItemVO>
|
||||||
|
get() = _item
|
||||||
|
|
||||||
|
val loadResponseDel: LiveData<Event<ResponseItemVO>> = _responseDel.map { Event(it) }
|
||||||
|
|
||||||
|
val loadResponseAddItem: LiveData<Event<Boolean>> =
|
||||||
|
_responseCollectionAddItem.map { Event(it) }
|
||||||
|
|
||||||
|
val loadResponseSaleTrackingMark: LiveData<Event<ResponseItemVO>> =
|
||||||
|
_responseSaleTracking_mark.map { Event(it) }
|
||||||
|
|
||||||
|
val loadResponseItemShelvingUpdate: LiveData<Event<ResponseItemVO>> =
|
||||||
|
_responseItemShelvingUpdate.map { Event(it) }
|
||||||
|
|
||||||
|
private val _responseSaleAddPrevOK by lazy { MutableLiveData<ResponseItemVO>() }
|
||||||
|
val responseSaleAddPrevOK: LiveData<ResponseItemVO>
|
||||||
|
get() = _responseSaleAddPrevOK
|
||||||
|
|
||||||
|
fun getSales(
|
||||||
|
collectionFk: Number, print: String, source: String
|
||||||
|
|
||||||
|
) {
|
||||||
|
salix.getSalesFromTicketOrCollection(
|
||||||
|
collectionOrTicketFk = collectionFk, print = print != "0", source = source
|
||||||
|
).enqueue(object : SalixCallback<CollectionVO>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_collectionTicketList.value = CollectionVO(
|
||||||
|
0,
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<CollectionVO>) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
_collectionTicketList.value = response.body()?.let { it.map(contextApp) }
|
||||||
|
} catch (
|
||||||
|
ex: Exception
|
||||||
|
) {
|
||||||
|
ex.toast(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionTicketGet(
|
||||||
|
collectionFk: Int, sectorFk: Int, print: String, type: String
|
||||||
|
) {
|
||||||
|
|
||||||
|
getSales(collectionFk, print, type)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getCollectionTickets(
|
||||||
|
collectionFk: Number,
|
||||||
|
print: Boolean,
|
||||||
|
|
||||||
|
) {
|
||||||
|
salix.getCollectionTickets(
|
||||||
|
collectionFk, hashMapOf("print" to print)
|
||||||
|
).enqueue(object : SalixCallback<CollectionTicket>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_collectionTicketSalix.value = CollectionTicket(
|
||||||
|
0,
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<CollectionTicket>) {
|
||||||
|
|
||||||
|
if (response.body() != null) {
|
||||||
|
_collectionTicketSalix.value = response.body()?.let { it.map(contextApp) }
|
||||||
|
} else {
|
||||||
|
_collectionTicketSalix.value = CollectionTicket(
|
||||||
|
0, isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), response.message()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionGetId(
|
||||||
|
ticketFk: Int, sectorFk: Int, print: String, type: String
|
||||||
|
) {
|
||||||
|
salix.getCollectionId(
|
||||||
|
filter = """{"where":{"ticketFk":$ticketFk},"fields":"collectionFk"}"""
|
||||||
|
).enqueue(object : SalixCallback<List<JsonObject>>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_collectionTicketList.value = CollectionVO(
|
||||||
|
0,
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<List<JsonObject>>) {
|
||||||
|
|
||||||
|
if (response.body()!!.isNotEmpty()) {
|
||||||
|
collectionTicketGet(
|
||||||
|
response.body()!![0].entrySet().first().value.toString().toInt(),
|
||||||
|
sectorFk,
|
||||||
|
print,
|
||||||
|
type
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
_collectionTicketList.value = CollectionVO(
|
||||||
|
0, isError = false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun itemShelvingSaleExists(
|
||||||
|
itemShelvingSaleFk: Number, position: Int, quantity: Int
|
||||||
|
|
||||||
|
) {
|
||||||
|
salix.itemShelvingSaleExists(
|
||||||
|
itemShelvingSaleFk
|
||||||
|
).enqueue(object : SalixCallback<JsonObject>(context) {
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<JsonObject>) {
|
||||||
|
_responseExistsItemShelvingSale.value = ResponseItemExistsItemShelvingSale(
|
||||||
|
response.body()!!.entrySet().first().value.asBoolean, position, quantity
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleTrackingReplace(
|
||||||
|
saleFk: Int,
|
||||||
|
originalQuantity: Int,
|
||||||
|
code: String,
|
||||||
|
isChecked: String,
|
||||||
|
buyFk: Long,
|
||||||
|
isScanned: Boolean?
|
||||||
|
) {
|
||||||
|
salix.saleTrackingUpdate(
|
||||||
|
SaleTrackingReplaceSalix(
|
||||||
|
saleFk, originalQuantity, code, isChecked != "0", buyFk, isScanned!!
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseSaleReplace.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseSaleReplace.value = ResponseItemVO(isError = false, response = "")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleTracking_mark(
|
||||||
|
saleFk: Int,
|
||||||
|
originalQuantity: Int,
|
||||||
|
code: String,
|
||||||
|
isChecked: String,
|
||||||
|
buyFk: Long,
|
||||||
|
itemShelvingFk: Int,
|
||||||
|
quantity: Int,
|
||||||
|
isScanned: Boolean?
|
||||||
|
) {
|
||||||
|
salix.saleTrackingMark(
|
||||||
|
SaleTrackingSalix(
|
||||||
|
saleFk = saleFk,
|
||||||
|
originalQuantity = originalQuantity,
|
||||||
|
code = code,
|
||||||
|
isChecked = isChecked != "0",
|
||||||
|
buyFk = buyFk,
|
||||||
|
itemShelvingFk = itemShelvingFk,
|
||||||
|
quantity = quantity,
|
||||||
|
isScanned = isScanned!!
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseSaleTracking_mark.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
if (!response.isSuccessful) {
|
||||||
|
_responseSaleTracking_mark.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), response.message()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
_responseSaleTracking_mark.value =
|
||||||
|
ResponseItemVO(isError = false, response = "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun itemShelvingSaleSetQuantity(
|
||||||
|
itemShelvingSaleFk: Int,
|
||||||
|
quantity: Int,
|
||||||
|
isItemShelvingSaleEmpty: Boolean?,
|
||||||
|
sectorFk: Int? = null,
|
||||||
|
shelvingFk: String
|
||||||
|
) {
|
||||||
|
salix.itemShelvingSaleSetquantitySalix(
|
||||||
|
params = arrayListOf(
|
||||||
|
itemShelvingSaleFk,
|
||||||
|
quantity,
|
||||||
|
isItemShelvingSaleEmpty,
|
||||||
|
sectorFk,
|
||||||
|
shelvingFk
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseConfirmReservedItemShelvingSale.value = true
|
||||||
|
|
||||||
|
if (isItemShelvingSaleEmpty == true)
|
||||||
|
_responseCollectionAddItem.value = true
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionAddWithReservation(
|
||||||
|
item: Int, quantity: Int, ticketSelected: Int, saleGroupFk: Int?, sectorFk: Int?
|
||||||
|
) {
|
||||||
|
salix.collectionAddWithReservation(
|
||||||
|
params = arrayListOf(
|
||||||
|
item, quantity, ticketSelected, saleGroupFk, if (sectorFk == -1) null else sectorFk
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseCollectionAddItem.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun itemPlacementSupplyAiming(
|
||||||
|
shelvingFk: String, quantity: Int, itemFk: Int
|
||||||
|
) {
|
||||||
|
salix.itemPlacementSupplyAiming(
|
||||||
|
arrayListOf(
|
||||||
|
shelvingFk, quantity, itemFk
|
||||||
|
).formatWithQuotes()
|
||||||
|
).enqueue(object : SalixCallback<List<PlacementSupplyVO>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<PlacementSupplyVO>>) {
|
||||||
|
if (response.body() != null) {
|
||||||
|
_placementSuppleyList.value = response.body()?.let { PlacementSupplyListVO(it) }
|
||||||
|
} else {
|
||||||
|
val listError: ArrayList<PlacementSupplyVO> = ArrayList()
|
||||||
|
listError.add(
|
||||||
|
PlacementSupplyVO(
|
||||||
|
itemShelvingFk = 0,
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), response.message()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
_placementSuppleyList.value = PlacementSupplyListVO(listError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
val listError: ArrayList<PlacementSupplyVO> = ArrayList()
|
||||||
|
listError.add(
|
||||||
|
PlacementSupplyVO(
|
||||||
|
itemShelvingFk = 0,
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
_placementSuppleyList.value = PlacementSupplyListVO(listError)
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionStickerPrint(
|
||||||
|
collectionFk: Int, labelCount: Int?
|
||||||
|
) {
|
||||||
|
salix.collectionStickerPrint(
|
||||||
|
arrayListOf(
|
||||||
|
collectionFk, labelCount
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responsePrint.value =
|
||||||
|
ResponseItemVO(isError = false, response = response.message())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responsePrint.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketCollection_setUsedShelves(
|
||||||
|
ticketFk: Int, usedShelves: Int
|
||||||
|
) {
|
||||||
|
salix.ticketCollectionUpdate(
|
||||||
|
"""where={"ticketFk":$ticketFk}""", hashMapOf("usedShelves" to usedShelves)
|
||||||
|
).enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
|
||||||
|
_responseUsedShelves.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Unit>) {
|
||||||
|
_responseUsedShelves.value = ResponseItemVO(isError = false)
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun itemShelvingSaleUnpicked(
|
||||||
|
itemShelvingSaleFk: Int
|
||||||
|
) {
|
||||||
|
salix.itemShelvingSaleUnpicked(
|
||||||
|
arrayListOf(
|
||||||
|
itemShelvingSaleFk
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Unit>) {
|
||||||
|
_responseItemShelvingSaleUnPicked.value = true
|
||||||
|
super.onSuccess(response)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleTrackingAddPreparedSaleGroup(
|
||||||
|
saleGroupFk: Int
|
||||||
|
) {
|
||||||
|
salix.saleTrackingAddPreparedSaleGroup(
|
||||||
|
arrayListOf(
|
||||||
|
saleGroupFk
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseSaleGroup.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Unit>) {
|
||||||
|
//Tarea 7926
|
||||||
|
updateParkingFromSaleGroup(saleGroupFk)
|
||||||
|
_responseSaleGroup.value = ResponseItemVO(isError = false)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateParkingFromSaleGroup(
|
||||||
|
saleGroupFk: Number
|
||||||
|
) {
|
||||||
|
salix.saleGroupUpdate(
|
||||||
|
id = saleGroupFk, params = hashMapOf("parkingFk" to null)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun itemShelvingSaleSetSaleGroup(
|
||||||
|
saleGroupFk: Int
|
||||||
|
) {
|
||||||
|
salix.itemShelvingSaleSetSaleGroup(
|
||||||
|
arrayListOf(
|
||||||
|
saleGroupFk
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseItemShelvingSaleGroup.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Unit>) {
|
||||||
|
_responseItemShelvingSaleGroup.value = ResponseItemVO(isError = false)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionAddItem(
|
||||||
|
itemFk: Int, quantity: Int, ticketFk: Int
|
||||||
|
) {
|
||||||
|
|
||||||
|
//Tarea 6889
|
||||||
|
salix.addSale(
|
||||||
|
id = ticketFk, barcode = itemFk.toString(), quantity = quantity
|
||||||
|
)/* salix.addSaleByCode(
|
||||||
|
CollectionItemSalix(
|
||||||
|
itemFk.toString(),
|
||||||
|
quantityFk,
|
||||||
|
ticketFk,
|
||||||
|
warehouseFk
|
||||||
|
)
|
||||||
|
)*/
|
||||||
|
|
||||||
|
.enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
|
||||||
|
_responseNew.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseNew.value =
|
||||||
|
ResponseItemVO(isError = false, response = response.message()!!)
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleTrackingDel(saleFk: Int) {
|
||||||
|
|
||||||
|
salix.saleTrackingDel(
|
||||||
|
SaleTrackingDelSalix(
|
||||||
|
saleFk = saleFk, stateCodes = listOf("CHECKED", "OK", "PREPARED")
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseDel.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseDel.value =
|
||||||
|
ResponseItemVO(isError = false, response = response.message())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun itemShelvingUpdateFromSale(
|
||||||
|
saleFk: Int
|
||||||
|
) {
|
||||||
|
salix.itemShelvingUpdateFromSale(hashMapOf("saleFk" to saleFk))
|
||||||
|
// silex.itemShelving_updateFromSale(saleFk)
|
||||||
|
.enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseItemShelvingUpdate.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
|
||||||
|
_responseItemShelvingUpdate.value =
|
||||||
|
ResponseItemVO(isError = false, response = response.message()!!)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setParking(
|
||||||
|
ticketFk: Int, parking: String
|
||||||
|
) {
|
||||||
|
salix.setParking(arrayListOf(ticketFk, parking).formatWithQuotes())
|
||||||
|
.enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseParking.value =
|
||||||
|
ResponseItemVO(isError = false, response = response.message())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseParking.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketStateTodaySetState(
|
||||||
|
ticketFk: Int, state: String
|
||||||
|
) {
|
||||||
|
salix.ticketStateTodaySetState(arrayListOf(ticketFk, state).formatWithQuotes())
|
||||||
|
.enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
override fun onSuccess(response: Response<Unit>) {
|
||||||
|
_response.value = ResponseItemVO(isError = false, response = "")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_response.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getIdFromCodeSalix(code: String) {
|
||||||
|
getItemFromBarcodeUseCase.execute(code).enqueue(object : SalixCallback<Int?>(context) {
|
||||||
|
override fun onSuccess(response: Response<Int?>) {
|
||||||
|
_responseCode.value = response.body()
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collectionIncreaseQuantitySalix(
|
||||||
|
saleFk: Int, quantity: String
|
||||||
|
) {
|
||||||
|
salix.collectionIncreaseQuantitySalix(
|
||||||
|
SalixSaleQuantity(saleId = saleFk, quantity = quantity.toInt())
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseIncQuantity.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), t.message!!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
super.onSuccess(response)
|
||||||
|
|
||||||
|
_responseIncQuantity.value = ResponseItemVO(
|
||||||
|
isError = false, response = response.message().toString()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleMistakeAdd(
|
||||||
|
saleFk: Int, typeFk: Int
|
||||||
|
) {
|
||||||
|
|
||||||
|
salix.saleMistakeAdd(
|
||||||
|
SaleMistakeSalix(
|
||||||
|
userFk = (context as MobileApplication).userId!!, saleFk = saleFk, typeFk = typeFk
|
||||||
|
)
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseSaleMistakeAdd.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), t.message!!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
super.onSuccess(response)
|
||||||
|
_responseSaleMistakeAdd.value =
|
||||||
|
ResponseItemVO(isError = false, response = response.message())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mistakeType() {
|
||||||
|
salix.getMistakeTypes().enqueue(object : SalixCallback<List<MistakeTypeVO>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<MistakeTypeVO>>) {
|
||||||
|
if (response.body() != null) {
|
||||||
|
_mistakeList.value = response.body()?.let { MistakeTypeListVO(it) }
|
||||||
|
} else {
|
||||||
|
val listError: ArrayList<MistakeTypeVO> = ArrayList()
|
||||||
|
listError.add(MistakeTypeVO(0, ""))
|
||||||
|
_mistakeList.value = MistakeTypeListVO(listError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
val listError: ArrayList<MistakeTypeVO> = ArrayList()
|
||||||
|
listError.add(MistakeTypeVO(0, ""))
|
||||||
|
_mistakeList.value = MistakeTypeListVO(listError)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketIsOutClosureZone(
|
||||||
|
ticketFk: Int
|
||||||
|
) {
|
||||||
|
salix.ticketIsOutClosureZone(
|
||||||
|
arrayListOf(ticketFk)
|
||||||
|
).enqueue(object : SalixCallback<Any?>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any?>) {
|
||||||
|
_responseTicketClosure.value = ResponseItemVO(
|
||||||
|
isError = false,
|
||||||
|
response = response.body()?.toString() ?: "false",
|
||||||
|
errorMessage = ""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseTicketClosure.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), t.message!!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ticketState(
|
||||||
|
ticketFk: Int
|
||||||
|
) {
|
||||||
|
salix.ticketState(
|
||||||
|
"""{"where": {"ticketFk": "$ticketFk"},"include":[{"relation":"user","scope":{"fields":["username"]}}]}"""
|
||||||
|
|
||||||
|
).enqueue(object : SalixCallback<List<TicketState>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<TicketState>>) {
|
||||||
|
_responseTicketState.value = if (response.body()!!.isEmpty()) {
|
||||||
|
TicketState()
|
||||||
|
} else {
|
||||||
|
response.body()!![0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun callBackSalix(function: String, params: ArrayList<Any>) {
|
||||||
|
salix.executeFunc(
|
||||||
|
routine = function, params = params
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseTicketClosure.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), t.message!!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseTicketClosure.value = ResponseItemVO(
|
||||||
|
isError = false, response = response.body()!!.toString(), errorMessage = ""
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun hasUncheckedTicket(
|
||||||
|
collectionFk: Int
|
||||||
|
) {
|
||||||
|
salix.hasUncheckedTicket(collectionFk)
|
||||||
|
//silex.collection_getUncheckedTicket(collectionFk)
|
||||||
|
.enqueue(object : SalixCallback<String>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseCollectionUnchecked.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), t.message!!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<String>) {
|
||||||
|
if (response.body() != null) {
|
||||||
|
|
||||||
|
_responseCollectionUnchecked.value = ResponseItemVO(
|
||||||
|
isError = false, response = response.body()!!, errorMessage = ""
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
_responseCollectionUnchecked.value = ResponseItemVO(
|
||||||
|
isError = true,
|
||||||
|
response = response.body()!!.toString(),
|
||||||
|
errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), response.message()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun collection_setState(
|
||||||
|
collectionFk: Int, state: String
|
||||||
|
) {
|
||||||
|
salix.collectionSetState(
|
||||||
|
params = arrayListOf(
|
||||||
|
collectionFk, state
|
||||||
|
).formatWithQuotes()
|
||||||
|
).enqueue(object : SalixCallback<Any?>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
|
||||||
|
_responseState.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), t.message!!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
super.onError(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any?>) {
|
||||||
|
_responseState.value = ResponseItemVO(isError = false, response = "")
|
||||||
|
super.onSuccess(response)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saleTrackingAddPrevOK(
|
||||||
|
sectorCollectionFk: Int
|
||||||
|
) {
|
||||||
|
salix.saleTrackingAddPrevOK(arrayListOf(sectorCollectionFk))
|
||||||
|
.enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onError(t: Throwable) {
|
||||||
|
_responseSaleAddPrevOK.value = ResponseItemVO(
|
||||||
|
isError = true, errorMessage = getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), t.message!!
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
_responseSaleAddPrevOK.value = ResponseItemVO(
|
||||||
|
isError = false, errorMessage = "" + getMessageFromAllResponse(
|
||||||
|
nameofFunction(this), response.message()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package es.verdnatura.presentation.view.feature.collection.fragment
|
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||||
|
|
||||||
import android.app.AlertDialog
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
@ -8,7 +7,6 @@ import android.view.View.VISIBLE
|
||||||
import android.view.inputmethod.EditorInfo
|
import android.view.inputmethod.EditorInfo
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.FragmentCollectionBinding
|
import es.verdnatura.databinding.FragmentCollectionBinding
|
||||||
|
@ -17,6 +15,7 @@ import es.verdnatura.domain.ConstAndValues.SECTORFK
|
||||||
import es.verdnatura.domain.ConstAndValues.VERTICKET
|
import es.verdnatura.domain.ConstAndValues.VERTICKET
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
|
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
import es.verdnatura.presentation.common.OnPackingClickListener
|
import es.verdnatura.presentation.common.OnPackingClickListener
|
||||||
|
@ -138,16 +137,20 @@ class CollectionShowTicketFragment(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isTicket) {
|
if (isTicket) {
|
||||||
val builder = AlertDialog.Builder(context)
|
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
labelDialogHelper.showLabelDialog(
|
||||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
onItemSelected = { labelCount ->
|
||||||
builder.setItems(labelCount) { dialog, which ->
|
viewModel.collectionStickerPrint(
|
||||||
viewModel.collectionStickerPrint(
|
collectionFk = collection.collectionFk,
|
||||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
labelCount = labelCount
|
||||||
)
|
)
|
||||||
}
|
|
||||||
val dialog = builder.create()
|
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
dialog.show()
|
PRINTERNAME
|
||||||
|
)).toast(requireContext())
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
viewModel.collectionStickerPrint(
|
viewModel.collectionStickerPrint(
|
||||||
|
|
||||||
|
@ -166,22 +169,18 @@ class CollectionShowTicketFragment(
|
||||||
|
|
||||||
binding.scanInput.setOnEditorActionListener { _, actionId, _ ->
|
binding.scanInput.setOnEditorActionListener { _, actionId, _ ->
|
||||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {//ID=0 ACTION_NEXT ID=5 ACTION_UNESPECEFIED)
|
||||||
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
if (binding.scanInput.text.toString().isNotEmpty()) {
|
||||||
buttonPushedGetCollection = false
|
buttonPushedGetCollection = false
|
||||||
try {
|
try {
|
||||||
viewModel.getSales(
|
viewModel.getSales(
|
||||||
collectionFk = itemScanValue(
|
collectionFk = itemScanValue(
|
||||||
binding.scanInput.text.toString(), arrayOf("ticket","saleGroup"), "id"
|
binding.scanInput.text.toString(),
|
||||||
|
arrayOf("ticket", "saleGroup"),
|
||||||
|
"id"
|
||||||
).toString().toInt(),
|
).toString().toInt(),
|
||||||
print = "0",
|
print = "0",
|
||||||
source = type
|
source = type
|
||||||
)
|
)
|
||||||
|
|
||||||
println("qrTest2")
|
|
||||||
|
|
||||||
/* viewModel.getSales(
|
|
||||||
binding.scanInput.text.toString().toInt(), print = "0", type
|
|
||||||
)*/
|
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
getString(R.string.scanLabelTicket).toast(requireContext())
|
getString(R.string.scanLabelTicket).toast(requireContext())
|
||||||
}
|
}
|
||||||
|
@ -213,13 +212,14 @@ class CollectionShowTicketFragment(
|
||||||
try {
|
try {
|
||||||
requireActivity().hideKeyboard()
|
requireActivity().hideKeyboard()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
e.message!!.toast(requireContext())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun observeViewModel() {
|
override fun observeViewModel() {
|
||||||
with(viewModel) {
|
with(viewModel) {
|
||||||
|
|
||||||
collectionTicketList.observe(viewLifecycleOwner, Observer {
|
collectionTicketList.observe(viewLifecycleOwner) {
|
||||||
|
|
||||||
if (!it.isError) {
|
if (!it.isError) {
|
||||||
if (it.tickets.isNotEmpty()) {
|
if (it.tickets.isNotEmpty()) {
|
||||||
|
@ -232,18 +232,18 @@ class CollectionShowTicketFragment(
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ma.messageWithSound(it.errorMessage, it.isError, false)
|
ma.messageWithSound(it.errorMessage, isError = true, false)
|
||||||
if (activity != null) ma.onMyBackPressed()
|
if (activity != null) ma.onMyBackPressed()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
}
|
||||||
|
|
||||||
responsePrint.observe(viewLifecycleOwner, Observer {
|
responsePrint.observe(viewLifecycleOwner) {
|
||||||
|
|
||||||
if (it.isError) {
|
if (it.isError) {
|
||||||
ma.messageWithSound(
|
ma.messageWithSound(
|
||||||
it.errorMessage, it.isError, true
|
it.errorMessage, isError = true, true
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
|
@ -251,7 +251,7 @@ class CollectionShowTicketFragment(
|
||||||
)).toast(requireContext())
|
)).toast(requireContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,27 +277,30 @@ class CollectionShowTicketFragment(
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sales = salesList.sortedWith(compareBy({ it.saleOrder }))
|
sales = salesList.sortedWith(compareBy { it.saleOrder })
|
||||||
/*salesList.sortedWith(compareBy<SaleVO> { it.isPrepared == "0" }
|
|
||||||
.thenBy { it.isControlled == "0" }*/
|
|
||||||
|
|
||||||
saleAdapter =
|
saleAdapter =
|
||||||
SaleAdapter(sales, pasillerosItemClickListener!!, object : OnQuantityClickListener {
|
SaleAdapter(
|
||||||
|
sales as MutableList,
|
||||||
|
pasillerosItemClickListener!!,
|
||||||
|
object : OnQuantityClickListener {
|
||||||
|
|
||||||
override fun onQuantityClick(sale: SaleVO) {
|
override fun onQuantityClick(sale: SaleVO) {
|
||||||
}
|
}
|
||||||
}, object : OnSaleClickListener {
|
},
|
||||||
override fun onSaleClick(sale: SaleVO) {
|
object : OnSaleClickListener {
|
||||||
}
|
override fun onSaleClick(sale: SaleVO) {
|
||||||
|
}
|
||||||
|
|
||||||
}, object : OnMistakeClickListener {
|
},
|
||||||
override fun onMistakeClickListener(sale: SaleVO) {
|
object : OnMistakeClickListener {
|
||||||
}
|
override fun onMistakeClickListener(sale: SaleVO) {
|
||||||
}, object : OnPackingClickListener {
|
}
|
||||||
override fun onPackingClick(sale: SaleVO) {
|
},
|
||||||
}
|
object : OnPackingClickListener {
|
||||||
|
override fun onPackingClick(sale: SaleVO) {
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
binding.fragmentSacadorCollections.adapter = saleAdapter
|
binding.fragmentSacadorCollections.adapter = saleAdapter
|
||||||
|
@ -310,8 +313,13 @@ class CollectionShowTicketFragment(
|
||||||
|
|
||||||
private fun setPosition() {
|
private fun setPosition() {
|
||||||
val firstIndex =
|
val firstIndex =
|
||||||
sales.indexOfFirst { it.isPreviousPrepared == "0" && (it.isPrepared == "0" || it.isControlled == "0") }
|
sales.indexOfFirst { it.isPreviousPrepared == "0" && it.isPrepared == "0" && it.isControlled == "0" }
|
||||||
lm!!.scrollToPositionWithOffset(firstIndex, 0)
|
val resultIndex = if (firstIndex != -1) {
|
||||||
|
firstIndex
|
||||||
|
} else {
|
||||||
|
sales.indexOfFirst { it.isPreviousPrepared == "0" && it.isPrepared == "0" }
|
||||||
|
}
|
||||||
|
lm!!.scrollToPositionWithOffset(resultIndex, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun printObservations(observations: String) {
|
private fun printObservations(observations: String) {
|
||||||
|
@ -331,9 +339,10 @@ class CollectionShowTicketFragment(
|
||||||
if (it.isControlled == "1") totalMark += 1
|
if (it.isControlled == "1") totalMark += 1
|
||||||
}
|
}
|
||||||
binding.mainToolbar.toolbarTitle.text = collection.collectionFk.toString()
|
binding.mainToolbar.toolbarTitle.text = collection.collectionFk.toString()
|
||||||
binding.mainToolbar.toolbarSubtitle.text = "" + totalMark + "/" + sales.size
|
binding.mainToolbar.toolbarSubtitle.text =
|
||||||
|
getString(R.string.totalsPicker, totalMark, sales.size)
|
||||||
if (totalMark == sales.size) {
|
if (totalMark == sales.size) {
|
||||||
getString(R.string.Coleccióncompleta).toast(this.context, Toast.LENGTH_SHORT)
|
getString(R.string.completCollection).toast(this.context, Toast.LENGTH_SHORT)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ fun CollectionVO.map(context: Context): CollectionVO {
|
||||||
this.tickets.forEach { ticket ->
|
this.tickets.forEach { ticket ->
|
||||||
// if (ticket.sales.size>0){
|
// if (ticket.sales.size>0){
|
||||||
ticket.sales.forEach {
|
ticket.sales.forEach {
|
||||||
|
it.parkingCode = ticket.parkingCode
|
||||||
|
it.isAdvanced = ticket.isAdvanced
|
||||||
it.ticketFk = ticket.ticketFk
|
it.ticketFk = ticket.ticketFk
|
||||||
it.level = ticket.level
|
it.level = ticket.level
|
||||||
it.rgb = ticket.rgb
|
it.rgb = ticket.rgb
|
||||||
|
|
|
@ -55,7 +55,7 @@ class ControladorFragment :
|
||||||
goBack = false
|
goBack = false
|
||||||
if (!binding.scanInput.text.isNullOrEmpty()) {
|
if (!binding.scanInput.text.isNullOrEmpty()) {
|
||||||
|
|
||||||
binding.scanInput.setText(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||||
try {
|
try {
|
||||||
binding.scanInput.setText(
|
binding.scanInput.setText(
|
||||||
itemScanValue(
|
itemScanValue(
|
||||||
|
|
|
@ -52,7 +52,7 @@ class ControlVehiculoUsuarioFragment(
|
||||||
|
|
||||||
if (userFk == vUserFK) {
|
if (userFk == vUserFK) {
|
||||||
val androidId: String = mobileApplication.dataStoreApp.readDataStoreKey(ANDROID_ID)
|
val androidId: String = mobileApplication.dataStoreApp.readDataStoreKey(ANDROID_ID)
|
||||||
viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
// viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
||||||
viewModel.deviceProductionGetnameDevice(
|
viewModel.deviceProductionGetnameDevice(
|
||||||
androidId
|
androidId
|
||||||
)
|
)
|
||||||
|
@ -64,7 +64,8 @@ class ControlVehiculoUsuarioFragment(
|
||||||
binding.userInformation.visibility = INVISIBLE
|
binding.userInformation.visibility = INVISIBLE
|
||||||
binding.nameVehiclecontrol.visibility = INVISIBLE
|
binding.nameVehiclecontrol.visibility = INVISIBLE
|
||||||
binding.userImage.setOnClickListener { binding.mainToolbar.backButton.performClick() }
|
binding.userImage.setOnClickListener { binding.mainToolbar.backButton.performClick() }
|
||||||
viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
// viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
||||||
|
binding.nameVehiclecontrol.visibility = VISIBLE
|
||||||
viewModel.getNameWorker(userFk)
|
viewModel.getNameWorker(userFk)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,35 +108,15 @@ class ControlVehiculoViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fun machineGetWorkerPlate(userId: Int) {
|
|
||||||
salix.machineGetWorkerPlate(
|
|
||||||
arrayListOf(userId)
|
|
||||||
).enqueue(object : SalixCallback<List<JsonObject>>(context) {
|
|
||||||
override fun onSuccess(response: Response<List<JsonObject>>) {
|
|
||||||
_responseMachine.value =
|
|
||||||
ResponseItemMachineControl(
|
|
||||||
response = if (response.body()!!.isEmpty()) {
|
|
||||||
""
|
|
||||||
} else {
|
|
||||||
response.body()!![0].entrySet().first().value.toString()
|
|
||||||
.replace("\"", "")
|
|
||||||
},
|
|
||||||
type = "getWorkerPlate"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getNameWorker(
|
fun getNameWorker(
|
||||||
workerId: Int
|
workerId: Int
|
||||||
) {
|
) {
|
||||||
salix.getNameWorker(
|
salix.getNameWorker(
|
||||||
"""{"fields": ["firstName","lastName"],"where": {"id":$workerId}}"""
|
"""{"limit":1, "where":{"id":$workerId},"skip":0,"fields":["firstName","lastName"]}"""
|
||||||
).enqueue(object : SalixCallback<NameWorker>(context) {
|
).enqueue(object : SalixCallback<List<NameWorker>>(context) {
|
||||||
|
|
||||||
override fun onSuccess(response: Response<NameWorker>) {
|
override fun onSuccess(response: Response<List<NameWorker>>) {
|
||||||
_responseGetName.value = response.body()
|
_responseGetName.value = response.body()?.get(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package es.verdnatura.presentation.view.feature.delivery.adapters
|
package es.verdnatura.presentation.view.feature.delivery.adapters
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat.getColor
|
import androidx.core.content.ContextCompat.getColor
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
@ -57,8 +58,14 @@ class ExpeditionLoadUnloadAdapter(
|
||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.scanOrderTxt.visibility =
|
||||||
|
if (item.scanOrder == null) View.GONE else View.VISIBLE
|
||||||
|
binding.scanOrderLabel.visibility =
|
||||||
|
if (item.scanOrder == null) View.GONE else View.VISIBLE
|
||||||
|
|
||||||
|
|
||||||
this.item = item
|
this.item = item
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
package es.verdnatura.presentation.view.feature.delivery.adapters
|
||||||
|
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import es.verdnatura.databinding.ItemSalaryComplementRowBinding
|
||||||
|
import es.verdnatura.presentation.common.OnSalarySupplementClickListener
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplement
|
||||||
|
|
||||||
|
class SalarySupplementAdapter(
|
||||||
|
private var items: List<RouteComplement>,
|
||||||
|
private val onSalarySupplementClickListener: OnSalarySupplementClickListener
|
||||||
|
) : RecyclerView.Adapter<SalarySupplementAdapter.ItemHolder>() {
|
||||||
|
|
||||||
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
|
||||||
|
return ItemHolder(
|
||||||
|
ItemSalaryComplementRowBinding.inflate(
|
||||||
|
LayoutInflater.from(parent.context),
|
||||||
|
parent,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemCount() = items.size
|
||||||
|
|
||||||
|
override fun onBindViewHolder(holder: ItemHolder, position: Int) {
|
||||||
|
holder.bind(items[position])
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateData(list: List<RouteComplement>) {
|
||||||
|
items = list
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class ItemHolder(
|
||||||
|
val binding: ItemSalaryComplementRowBinding
|
||||||
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
|
private val res = binding.root.context.resources
|
||||||
|
fun bind(item: RouteComplement) {
|
||||||
|
binding.apply {
|
||||||
|
this.item = item
|
||||||
|
}
|
||||||
|
binding.imageDelete.setOnClickListener {
|
||||||
|
onSalarySupplementClickListener.onSalarySupplementClickListener(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -24,12 +24,14 @@ import es.verdnatura.presentation.common.OnBackPressedListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||||
import es.verdnatura.presentation.view.component.CustomDialog
|
import es.verdnatura.presentation.view.component.CustomDialog
|
||||||
|
import es.verdnatura.presentation.view.component.CustomDialogThreeButtons
|
||||||
import es.verdnatura.presentation.view.feature.delivery.activity.SignedActivity
|
import es.verdnatura.presentation.view.feature.delivery.activity.SignedActivity
|
||||||
import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionLoadUnloadAdapter
|
import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionLoadUnloadAdapter
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoPending
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoPending
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSalix
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSalixPosition
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteLoaded
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteLoaded
|
||||||
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -51,12 +53,11 @@ class LoadUnloadFragment(
|
||||||
private var adapter: ExpeditionLoadUnloadAdapter? = null
|
private var adapter: ExpeditionLoadUnloadAdapter? = null
|
||||||
private var originalItem: Int = 0
|
private var originalItem: Int = 0
|
||||||
private lateinit var myList: MutableList<ExpeditionInfoLoadUnload>
|
private lateinit var myList: MutableList<ExpeditionInfoLoadUnload>
|
||||||
private var counterCalls = 0
|
|
||||||
private var counterResponse = 0
|
|
||||||
private var route = 0
|
private var route = 0
|
||||||
private var addressFk = 0
|
private var addressFk = 0
|
||||||
private lateinit var db: DeliveryDatabase
|
private lateinit var db: DeliveryDatabase
|
||||||
private lateinit var backDispatcher: OnBackPressedDispatcher
|
private lateinit var backDispatcher: OnBackPressedDispatcher
|
||||||
|
private lateinit var customDialogConfirmExpedition: CustomDialogThreeButtons
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
var scanned = false
|
var scanned = false
|
||||||
|
@ -75,8 +76,7 @@ class LoadUnloadFragment(
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
requireActivity().onBackPressedDispatcher.addCallback(
|
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner,
|
||||||
viewLifecycleOwner,
|
|
||||||
object : OnBackPressedCallback(true) {
|
object : OnBackPressedCallback(true) {
|
||||||
override fun handleOnBackPressed() {
|
override fun handleOnBackPressed() {
|
||||||
if (!onBackPressedHandled()) {
|
if (!onBackPressedHandled()) {
|
||||||
|
@ -101,6 +101,7 @@ class LoadUnloadFragment(
|
||||||
setSwitchButon()
|
setSwitchButon()
|
||||||
binding.scanInput.requestFocus()
|
binding.scanInput.requestFocus()
|
||||||
viewModel.getExpeditionFromRoute(route)
|
viewModel.getExpeditionFromRoute(route)
|
||||||
|
customDialogConfirmExpedition = CustomDialogThreeButtons(requireContext())
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,25 +179,43 @@ class LoadUnloadFragment(
|
||||||
|
|
||||||
private fun setExpeditionsState(list: MutableList<ExpeditionInfoLoadUnload>, state: String) {
|
private fun setExpeditionsState(list: MutableList<ExpeditionInfoLoadUnload>, state: String) {
|
||||||
scanning(false)
|
scanning(false)
|
||||||
val mlist = mutableListOf<ExpeditionSalix>()
|
/* val mlist = mutableListOf<ExpeditionSalix>()
|
||||||
|
for (l in list) {
|
||||||
|
mlist.add(
|
||||||
|
ExpeditionSalix(
|
||||||
|
expeditionFk = l.id,
|
||||||
|
stateCode = if (l.code != state && l.code != "FOUND" && l.code != "DELIVERED") {
|
||||||
|
if (state == "ON DELIVERY") "NOT SCANNED" else "LOST"
|
||||||
|
} else {
|
||||||
|
l.code
|
||||||
|
},
|
||||||
|
isScanned = l.isScanned
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}*/
|
||||||
|
val mlistPosition = mutableListOf<ExpeditionSalixPosition>()
|
||||||
for (l in list) {
|
for (l in list) {
|
||||||
mlist.add(
|
mlistPosition.add(
|
||||||
ExpeditionSalix(
|
ExpeditionSalixPosition(
|
||||||
expeditionFk = l.id,
|
expeditionFk = l.id,
|
||||||
stateCode = if (l.code != state && l.code != "FOUND" && l.code != "DELIVERED") {
|
stateCode = if (l.code == "FOUND") (l.code) else {
|
||||||
"LOST"
|
if (state == "ON DELIVERY" && l.code != "ON DELIVERY" && l.code != "DELIVERED" && l.code != "LOST") {
|
||||||
} else {
|
"NOT SCANNED"
|
||||||
l.code
|
} else {
|
||||||
|
if (state == "DELIVERED" && l.code != "DELIVERED") "LOST" else l.code
|
||||||
|
}
|
||||||
},
|
},
|
||||||
isScanned = l.isScanned
|
isScanned = l.isScanned,
|
||||||
|
scanOrder = l.scanOrder
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
val expeditionBack = hashMapOf("expeditions" to mlist as List<ExpeditionSalix>)
|
val expeditionBackPosition =
|
||||||
|
hashMapOf("expeditions" to mlistPosition as List<ExpeditionSalixPosition>)
|
||||||
|
//val expeditionBack = hashMapOf("expeditions" to mlist as List<ExpeditionSalix>)
|
||||||
if (list.any { it.code == state }) {
|
if (list.any { it.code == state }) {
|
||||||
if (list.filter { it.code == state }.size == list.size) {
|
if (list.filter { it.code == state }.size == list.size) {
|
||||||
viewModel.expeditionStateAddSalix(expeditionBack)
|
viewModel.expeditionStateAddSalix(expeditionBackPosition)
|
||||||
counterCalls = 1
|
|
||||||
} else {
|
} else {
|
||||||
val alertDialog = android.app.AlertDialog.Builder(requireContext()).create()
|
val alertDialog = android.app.AlertDialog.Builder(requireContext()).create()
|
||||||
alertDialog.setTitle(getString(R.string.info))
|
alertDialog.setTitle(getString(R.string.info))
|
||||||
|
@ -204,8 +223,7 @@ class LoadUnloadFragment(
|
||||||
alertDialog.setButton(
|
alertDialog.setButton(
|
||||||
android.app.AlertDialog.BUTTON_NEUTRAL, getString(R.string.save)
|
android.app.AlertDialog.BUTTON_NEUTRAL, getString(R.string.save)
|
||||||
) { _, _ ->
|
) { _, _ ->
|
||||||
counterCalls = 1
|
viewModel.expeditionStateAddSalix(expeditionBackPosition)
|
||||||
viewModel.expeditionStateAddSalix(expeditionBack)
|
|
||||||
}
|
}
|
||||||
alertDialog.setButton(
|
alertDialog.setButton(
|
||||||
android.app.AlertDialog.BUTTON_POSITIVE, getString(R.string.ordenar)
|
android.app.AlertDialog.BUTTON_POSITIVE, getString(R.string.ordenar)
|
||||||
|
@ -261,6 +279,8 @@ class LoadUnloadFragment(
|
||||||
if (!binding.scanInput.text.isNullOrEmpty()) {
|
if (!binding.scanInput.text.isNullOrEmpty()) {
|
||||||
val isScanned =
|
val isScanned =
|
||||||
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
||||||
|
//Tarea 8152
|
||||||
|
// showconfirmExpedition(binding.scanInput.text.toString().toInt(), isScanned)
|
||||||
try {
|
try {
|
||||||
markExpedition(
|
markExpedition(
|
||||||
binding.scanInput.text.toString().toInt(),
|
binding.scanInput.text.toString().toInt(),
|
||||||
|
@ -295,6 +315,70 @@ class LoadUnloadFragment(
|
||||||
binding.scanInput.requestFocus()
|
binding.scanInput.requestFocus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showconfirmExpedition(expeditionFk: Int, isScanned: Boolean) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
customDialogConfirmExpedition.setHintDialogValue("Indica expedición")
|
||||||
|
customDialogConfirmExpedition.setDescription("No está escanenado la caja. Escríbala de nuevo:")
|
||||||
|
.setValue("").setOkButtonAdd(getString(R.string.confirm)) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (expeditionFk == customDialogConfirmExpedition.getValue().toInt()) {
|
||||||
|
takeActionConfirmed(isScanned)
|
||||||
|
binding.scanInput.requestFocus()
|
||||||
|
customDialogConfirmExpedition.dismiss()
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
ma.messageWithSound(
|
||||||
|
message = getString(R.string.errorInputQuantity),
|
||||||
|
isPlayed = true,
|
||||||
|
isError = true,
|
||||||
|
isToasted = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
|
binding.scanInput.requestFocus()
|
||||||
|
binding.scanInput.setText("")
|
||||||
|
customDialogConfirmExpedition.dismiss()
|
||||||
|
|
||||||
|
}.show()
|
||||||
|
customDialogConfirmExpedition.setFocusDialogValue()
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
ex.message!!.toast(requireContext())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun takeActionConfirmed(isScanned: Boolean) {
|
||||||
|
try {
|
||||||
|
markExpedition(
|
||||||
|
binding.scanInput.text.toString().toInt(),
|
||||||
|
if (!binding.mainToolbar.switchButton.isChecked) {
|
||||||
|
state
|
||||||
|
} else {
|
||||||
|
"FOUND"
|
||||||
|
},
|
||||||
|
isScanned = if (isScanned) 1 else 0
|
||||||
|
)
|
||||||
|
if (state != "DELIVERED") {
|
||||||
|
|
||||||
|
binding.mainToolbar.toolbarTitle.text =
|
||||||
|
if (!binding.mainToolbar.switchButton.isChecked) {
|
||||||
|
getString(R.string.loading)
|
||||||
|
} else {
|
||||||
|
getString(R.string.unloading)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
getString(R.string.errorExpedition).toast(context, Toast.LENGTH_SHORT)
|
||||||
|
}
|
||||||
|
binding.scanInput.setText("")
|
||||||
|
}
|
||||||
|
|
||||||
private fun markExpedition(expedNumber: Int, state: String, isScanned: Int) {
|
private fun markExpedition(expedNumber: Int, state: String, isScanned: Int) {
|
||||||
|
|
||||||
var found = false
|
var found = false
|
||||||
|
@ -307,15 +391,14 @@ class LoadUnloadFragment(
|
||||||
found = true
|
found = true
|
||||||
exped.code = state
|
exped.code = state
|
||||||
exped.isScanned = isScanned
|
exped.isScanned = isScanned
|
||||||
|
if (state == "ON DELIVERY") exped.scanOrder =
|
||||||
|
myList.filter { it.code == state }.size
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
ma.messageWithSound(
|
ma.messageWithSound(
|
||||||
message = "",
|
message = "", isError = false, isPlayed = true, isToasted = false
|
||||||
isError = false,
|
|
||||||
isPlayed = true,
|
|
||||||
isToasted = false
|
|
||||||
)
|
)
|
||||||
scanning(true)
|
scanning(true)
|
||||||
} else {
|
} else {
|
||||||
|
@ -324,7 +407,6 @@ class LoadUnloadFragment(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (binding.mainToolbar.switchButton.isChecked) {
|
if (binding.mainToolbar.switchButton.isChecked) {
|
||||||
counterCalls = 1
|
|
||||||
val pendingExpeditionSend = myList.map { l ->
|
val pendingExpeditionSend = myList.map { l ->
|
||||||
ExpeditionSalix(
|
ExpeditionSalix(
|
||||||
expeditionFk = l.id, stateCode = l.code, isScanned = l.isScanned
|
expeditionFk = l.id, stateCode = l.code, isScanned = l.isScanned
|
||||||
|
@ -353,20 +435,17 @@ class LoadUnloadFragment(
|
||||||
}
|
}
|
||||||
responseStateAdd.observe(viewLifecycleOwner) {
|
responseStateAdd.observe(viewLifecycleOwner) {
|
||||||
if (it) {
|
if (it) {
|
||||||
counterResponse += 1
|
|
||||||
if (counterResponse == counterCalls) {
|
if (!binding.mainToolbar.switchButton.isChecked) {
|
||||||
if (!binding.mainToolbar.switchButton.isChecked) {
|
if (state == "DELIVERED") {
|
||||||
if (state == "DELIVERED") {
|
openSignActivity()
|
||||||
openSignActivity()
|
|
||||||
} else {
|
|
||||||
ma.onMyBackPressed()
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
binding.mainToolbar.switchButton.isChecked = false
|
ma.onMyBackPressed()
|
||||||
}
|
}
|
||||||
counterResponse = 0
|
} else {
|
||||||
counterCalls = 0
|
binding.mainToolbar.switchButton.isChecked = false
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
openSignActivity()
|
openSignActivity()
|
||||||
}
|
}
|
||||||
|
@ -456,6 +535,7 @@ class LoadUnloadFragment(
|
||||||
it.routeFk == route
|
it.routeFk == route
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
adapter = ExpeditionLoadUnloadAdapter(myList)
|
adapter = ExpeditionLoadUnloadAdapter(myList)
|
||||||
binding.expeditionloadunloadRecyclerview.adapter = adapter
|
binding.expeditionloadunloadRecyclerview.adapter = adapter
|
||||||
binding.expeditionloadunloadRecyclerview.layoutManager =
|
binding.expeditionloadunloadRecyclerview.layoutManager =
|
||||||
|
|
|
@ -175,7 +175,7 @@ class LogExpeditionFragment(
|
||||||
binding.routeLayout.visibility = View.VISIBLE
|
binding.routeLayout.visibility = View.VISIBLE
|
||||||
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||||
binding.route.text = routeDelivery.ticket.routeFk.toString()
|
binding.route.text = routeDelivery.ticket.routeFk.toString()
|
||||||
binding.agency.text = routeDelivery.ticket.route.agencyMode.agency.name ?: ""
|
binding.agency.text = routeDelivery.ticket.route?.agencyMode?.agency?.name ?: ""
|
||||||
binding.scanInput.setText("")
|
binding.scanInput.setText("")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,11 @@ import android.os.Bundle
|
||||||
import android.text.Editable
|
import android.text.Editable
|
||||||
import android.text.TextWatcher
|
import android.text.TextWatcher
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.inputmethod.EditorInfo
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.FragmentRouteBinding
|
import es.verdnatura.databinding.FragmentRouteBinding
|
||||||
|
@ -17,14 +19,21 @@ import es.verdnatura.domain.toDateString
|
||||||
import es.verdnatura.domain.toast
|
import es.verdnatura.domain.toast
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.base.database
|
import es.verdnatura.presentation.base.database
|
||||||
|
import es.verdnatura.presentation.common.GeneralAdapter
|
||||||
|
import es.verdnatura.presentation.common.GeneralItem
|
||||||
import es.verdnatura.presentation.common.ItemDescorationCustomized
|
import es.verdnatura.presentation.common.ItemDescorationCustomized
|
||||||
|
import es.verdnatura.presentation.common.OnGeneralItemRowClickListener
|
||||||
|
import es.verdnatura.presentation.common.OnGeneralRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnItemImageRouteRowClickListener
|
import es.verdnatura.presentation.common.OnItemImageRouteRowClickListener
|
||||||
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.ToolBarAdapterTooltip
|
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||||
|
import es.verdnatura.presentation.common.hideKeyboard
|
||||||
|
import es.verdnatura.presentation.common.itemScanValue
|
||||||
|
import es.verdnatura.presentation.view.component.CustomDialogList
|
||||||
import es.verdnatura.presentation.view.feature.delivery.adapters.RouteAdapter
|
import es.verdnatura.presentation.view.feature.delivery.adapters.RouteAdapter
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSalixPosition
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteLoaded
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteLoaded
|
||||||
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
||||||
|
@ -45,6 +54,34 @@ class RoutesFragment(
|
||||||
private lateinit var myListRoute: MutableList<RouteInfo>
|
private lateinit var myListRoute: MutableList<RouteInfo>
|
||||||
private lateinit var db: DeliveryDatabase
|
private lateinit var db: DeliveryDatabase
|
||||||
private lateinit var myListRouteLoaded: List<RouteLoaded>
|
private lateinit var myListRouteLoaded: List<RouteLoaded>
|
||||||
|
private val customDialogList: CustomDialogList by lazy {
|
||||||
|
CustomDialogList(requireContext())
|
||||||
|
}
|
||||||
|
private var listExpeditionScan: ArrayList<GeneralItem> = ArrayList()
|
||||||
|
private var listMyRoutes: ArrayList<GeneralItem> = ArrayList()
|
||||||
|
|
||||||
|
private val expeditionScanAdapter: GeneralAdapter? by lazy {
|
||||||
|
GeneralAdapter(listExpeditionScan, object : OnGeneralItemRowClickListener {
|
||||||
|
override fun onGeneralItemRowClickListener(item: GeneralItem) {
|
||||||
|
|
||||||
|
listExpeditionScan.remove(item)
|
||||||
|
expeditionScanAdapter?.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}, onRowClickListener = object : OnGeneralRowClickListener {
|
||||||
|
override fun onRowClickListener(item: GeneralItem) {
|
||||||
|
getDataForMoveExpeditions(item.code!!)
|
||||||
|
}
|
||||||
|
}, showDelete = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private val recyclerViewConfigured: RecyclerView by lazy {
|
||||||
|
customDialogList.getRecyclerView().apply {
|
||||||
|
layoutManager =
|
||||||
|
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
|
adapter = expeditionScanAdapter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance(title: String) = RoutesFragment(title)
|
fun newInstance(title: String) = RoutesFragment(title)
|
||||||
|
@ -78,30 +115,15 @@ class RoutesFragment(
|
||||||
}
|
}
|
||||||
val pendingExpedition = db.expedicionDao().getAllPendingExpeditions()
|
val pendingExpedition = db.expedicionDao().getAllPendingExpeditions()
|
||||||
|
|
||||||
val pendingExpeditionSend = pendingExpedition.map { l ->
|
if (pendingExpedition.isNotEmpty()) {
|
||||||
ExpeditionSalix(
|
val pendingExpeditionSend = pendingExpedition.map { l ->
|
||||||
expeditionFk = l.id, stateCode = l.code, l.isScanned
|
ExpeditionSalixPosition(
|
||||||
)
|
expeditionFk = l.id, stateCode = l.code, l.isScanned, l.scanOrder
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if (pendingExpeditionSend.any { it.stateCode == "DELIVERED" }) {
|
|
||||||
viewModel.expeditionStateAddSalix(
|
viewModel.expeditionStateAddSalix(
|
||||||
hashMapOf("expeditions" to pendingExpeditionSend.filter { it.stateCode == "DELIVERED" })
|
hashMapOf("expeditions" to pendingExpeditionSend)
|
||||||
)
|
|
||||||
}
|
|
||||||
if (pendingExpeditionSend.any { it.stateCode == "ON DELIVERY" }) {
|
|
||||||
viewModel.expeditionStateAddSalix(
|
|
||||||
hashMapOf("expeditions" to pendingExpeditionSend.filter { it.stateCode == "ON DELIVERY" })
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (pendingExpeditionSend.any { it.stateCode == "LOST" }) {
|
|
||||||
viewModel.expeditionStateAddSalix(
|
|
||||||
hashMapOf("expeditions" to pendingExpeditionSend.filter { it.stateCode == "LOST" })
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (pendingExpeditionSend.any { it.stateCode == "FOUND" }) {
|
|
||||||
viewModel.expeditionStateAddSalix(
|
|
||||||
hashMapOf("expeditions" to pendingExpeditionSend.filter { it.stateCode == "FOUND" })
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,10 +145,10 @@ class RoutesFragment(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteExpeditionsPending(codeState: String) {
|
private fun deleteExpeditionsPending() {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
db.expedicionDao().getDeleteByState(codeState)
|
db.expedicionDao().getDeleteAllState()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -152,6 +174,13 @@ class RoutesFragment(
|
||||||
iconInfo.tooltipText = getTooltip(R.drawable.ic_info_delivery)
|
iconInfo.tooltipText = getTooltip(R.drawable.ic_info_delivery)
|
||||||
iconRefresh.tooltipText = getTooltip(R.drawable.ic_info_refresh)
|
iconRefresh.tooltipText = getTooltip(R.drawable.ic_info_refresh)
|
||||||
iconSearch.tooltipText = getTooltip(R.drawable.expedition_find)
|
iconSearch.tooltipText = getTooltip(R.drawable.expedition_find)
|
||||||
|
|
||||||
|
val iconMove = ImageView(context)
|
||||||
|
iconMove.setImageResource(R.drawable.ic_move_expedition)
|
||||||
|
iconMove.tooltipText = getString(R.string.moveExpedition)
|
||||||
|
|
||||||
|
//Tarea 8150
|
||||||
|
listIcons.add(iconMove)
|
||||||
listIcons.add(iconInfo)
|
listIcons.add(iconInfo)
|
||||||
listIcons.add(iconRefresh)
|
listIcons.add(iconRefresh)
|
||||||
listIcons.add(iconSearch)
|
listIcons.add(iconSearch)
|
||||||
|
@ -179,6 +208,10 @@ class RoutesFragment(
|
||||||
getString(R.string.titleLog)
|
getString(R.string.titleLog)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iconMove.drawable -> {
|
||||||
|
showExpeditionScan()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -188,6 +221,82 @@ class RoutesFragment(
|
||||||
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showExpeditionScan() {
|
||||||
|
listExpeditionScan.clear()
|
||||||
|
listMyRoutes.clear()
|
||||||
|
expeditionScanAdapter!!.updateItems(listExpeditionScan)
|
||||||
|
expeditionScanAdapter!!.setShowDelete(true)
|
||||||
|
customDialogList.setTitle(getString(R.string.scanExpeditionForMove))
|
||||||
|
.setOkButton(getString(R.string.moveToRoute)) {
|
||||||
|
ma.hideKeyboard(customDialogList.getEditText())
|
||||||
|
customDialogList.dismiss()
|
||||||
|
showRoutes()
|
||||||
|
|
||||||
|
}.setKoButton(getString(R.string.cancel)) {
|
||||||
|
customDialogList.dismiss()
|
||||||
|
requireContext().hideKeyboard(binding.scanInput)
|
||||||
|
}.setValue("").showDialog().show()
|
||||||
|
|
||||||
|
customDialogList.getEditText().requestFocus()
|
||||||
|
ma.hideKeyboard(customDialogList.getEditText())
|
||||||
|
customDialogList.getEditText().setOnEditorActionListener { _, actionId, _ ->
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||||
|
if (customDialogList.getValue().isNotEmpty()) {
|
||||||
|
val expeditionScan = itemScanValue(
|
||||||
|
customDialogList.getValue(), arrayOf("expeditionPallet"), "id"
|
||||||
|
).toString()
|
||||||
|
listExpeditionScan.add(
|
||||||
|
GeneralItem(
|
||||||
|
expeditionScan, expeditionScan
|
||||||
|
)
|
||||||
|
)
|
||||||
|
expeditionScanAdapter?.notifyItemChanged(0)
|
||||||
|
}
|
||||||
|
customDialogList.setValue("")
|
||||||
|
ma.hideKeyboard(customDialogList.getEditText())
|
||||||
|
return@setOnEditorActionListener true
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
recyclerViewConfigured
|
||||||
|
requireContext().hideKeyboard(customDialogList.getEditText())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showRoutes() {
|
||||||
|
listMyRoutes.clear()
|
||||||
|
expeditionScanAdapter!!.updateItems(
|
||||||
|
ArrayList(myListRoute.map { routeInfo ->
|
||||||
|
GeneralItem(
|
||||||
|
code = routeInfo.id.toString(), text = routeInfo.id.toString()
|
||||||
|
)
|
||||||
|
})
|
||||||
|
)
|
||||||
|
expeditionScanAdapter!!.setShowDelete(false)
|
||||||
|
customDialogList.setTitle(getString(R.string.selectRoute))
|
||||||
|
.setKoButton(getString(R.string.cancel)) {
|
||||||
|
customDialogList.dismiss()
|
||||||
|
requireContext().hideKeyboard(binding.scanInput)
|
||||||
|
}.setValue("").hideDialog().show()
|
||||||
|
requireContext().hideKeyboard(customDialogList.getEditText())
|
||||||
|
recyclerViewConfigured
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getDataForMoveExpeditions(routeId: String) {
|
||||||
|
val routeItem = myListRoute.find { it.id == routeId.toLong() }
|
||||||
|
for (expedition in listExpeditionScan) {
|
||||||
|
viewModel.getDataFromExpedition(
|
||||||
|
routeId = routeId.toLong(),
|
||||||
|
expeditionId = expedition.code!!.toLong(),
|
||||||
|
// landed = routeItem!!.created.toString()
|
||||||
|
landed = routeItem!!.dated.toString()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
customDialogList.dismiss()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private fun setEvents() {
|
private fun setEvents() {
|
||||||
binding.mainToolbar.backButton.setOnClickListener {
|
binding.mainToolbar.backButton.setOnClickListener {
|
||||||
ma.onMyBackPressed()
|
ma.onMyBackPressed()
|
||||||
|
@ -204,7 +313,6 @@ class RoutesFragment(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun afterTextChanged(s: Editable?) {
|
override fun afterTextChanged(s: Editable?) {
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -262,7 +370,7 @@ class RoutesFragment(
|
||||||
|
|
||||||
if (it) {
|
if (it) {
|
||||||
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||||
deleteExpeditionsPending("")
|
deleteExpeditionsPending()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,8 +410,7 @@ class RoutesFragment(
|
||||||
|
|
||||||
"showTickets" -> {
|
"showTickets" -> {
|
||||||
ma.onPasillerosItemClickListener(
|
ma.onPasillerosItemClickListener(
|
||||||
PasillerosItemVO(title = R.string.tickets),
|
PasillerosItemVO(title = R.string.tickets), Gson().toJson(item)
|
||||||
Gson().toJson(item)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,175 @@
|
||||||
|
package es.verdnatura.presentation.view.feature.delivery.fragments
|
||||||
|
|
||||||
|
import android.app.DatePickerDialog
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.ImageView
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import es.verdnatura.R
|
||||||
|
import es.verdnatura.databinding.FragmentSalaryComplementBinding
|
||||||
|
import es.verdnatura.domain.toDateString
|
||||||
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
import es.verdnatura.presentation.common.OnSalarySupplementClickListener
|
||||||
|
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||||
|
import es.verdnatura.presentation.view.commom.NameWithId
|
||||||
|
import es.verdnatura.presentation.view.commom.SearchableAdapter
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.adapters.SalarySupplementAdapter
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteActionList
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplement
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplementAdd
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
import java.util.Calendar
|
||||||
|
import java.util.Date
|
||||||
|
|
||||||
|
class SalaryComplementFragment(
|
||||||
|
var entryPoint: String = ""
|
||||||
|
|
||||||
|
) : BaseFragment<FragmentSalaryComplementBinding, DeliveryViewModel>(
|
||||||
|
DeliveryViewModel::class
|
||||||
|
) {
|
||||||
|
|
||||||
|
private val adapterComplement: SalarySupplementAdapter by lazy {
|
||||||
|
SalarySupplementAdapter(emptyList(), object : OnSalarySupplementClickListener {
|
||||||
|
override fun onSalarySupplementClickListener(item: RouteComplement) {
|
||||||
|
viewModel.routeComplementDelete(
|
||||||
|
item.id,
|
||||||
|
binding.date.text.toString(),
|
||||||
|
mobileApplication.userId!!
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private val layoutManager: LinearLayoutManager by lazy {
|
||||||
|
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private lateinit var routeActionComplementsList: RouteActionList
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun newInstance(entryPoint: String) = SalaryComplementFragment(entryPoint)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getLayoutId(): Int = R.layout.fragment_salary_complement
|
||||||
|
|
||||||
|
private fun showDatePicker() {
|
||||||
|
val currentDate = Calendar.getInstance()
|
||||||
|
val year = currentDate[Calendar.YEAR]
|
||||||
|
val month = currentDate[Calendar.MONTH]
|
||||||
|
val day = currentDate[Calendar.DAY_OF_MONTH]
|
||||||
|
|
||||||
|
DatePickerDialog(
|
||||||
|
requireContext(), { _, selectedYear, selectedMonth, selectedDay ->
|
||||||
|
binding.date.text =
|
||||||
|
getString(R.string.dateDay, selectedDay, selectedMonth + 1, selectedYear)
|
||||||
|
viewModel.getRouteComplements(
|
||||||
|
binding.date.text.toString(),
|
||||||
|
mobileApplication.userId!!
|
||||||
|
)
|
||||||
|
}, year, month, day
|
||||||
|
).apply {
|
||||||
|
setTitle(getString(R.string.selectDate))
|
||||||
|
show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun init() {
|
||||||
|
viewModel.getRouteAction()
|
||||||
|
binding.date.text = toDateString(Date())
|
||||||
|
viewModel.getRouteComplements(binding.date.text.toString(), mobileApplication.userId!!)
|
||||||
|
ma.hideBottomNavigation(View.GONE)
|
||||||
|
setToolBar()
|
||||||
|
setEvents()
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setToolBar() {
|
||||||
|
binding.mainToolbar.toolbarTitle.text = getString(R.string.supplementDelivery)
|
||||||
|
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||||
|
val iconAdd = ImageView(context).apply {
|
||||||
|
setImageResource(R.drawable.ic_add_black_24dp)
|
||||||
|
tooltipText = getTooltip(R.drawable.ic_add_black_24dp)
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.mainToolbar.toolbarIcons.adapter =
|
||||||
|
ToolBarAdapterTooltip(listOf(iconAdd), object : OnOptionsSelectedListener {
|
||||||
|
|
||||||
|
override fun onOptionsItemSelected(item: Drawable) {
|
||||||
|
|
||||||
|
when (item) {
|
||||||
|
iconAdd.drawable -> {
|
||||||
|
binding.salarySearchableRecyclerView.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
binding.mainToolbar.toolbarIcons.layoutManager =
|
||||||
|
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setEvents() {
|
||||||
|
binding.mainToolbar.backButton.setOnClickListener {
|
||||||
|
ma.onMyBackPressed()
|
||||||
|
}
|
||||||
|
binding.date.setOnClickListener {
|
||||||
|
showDatePicker()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setSearchable(listElements: MutableList<NameWithId>) {
|
||||||
|
|
||||||
|
val searchableRecyclerView = binding.salarySearchableRecyclerView
|
||||||
|
val adapter =
|
||||||
|
SearchableAdapter(
|
||||||
|
listElements = listElements,
|
||||||
|
context = requireContext()
|
||||||
|
) { nameWithId ->
|
||||||
|
val foundItem = routeActionComplementsList.list.find { item ->
|
||||||
|
item.id == nameWithId.id
|
||||||
|
}
|
||||||
|
foundItem?.apply {
|
||||||
|
val dateFormatted = LocalDate.parse(
|
||||||
|
binding.date.text.toString(), DateTimeFormatter.ofPattern("dd-MM-yyyy")
|
||||||
|
).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
|
||||||
|
viewModel.addRouteComplements(
|
||||||
|
RouteComplementAdd(
|
||||||
|
workerFk = mobileApplication.userId!!,
|
||||||
|
routeActionFk = foundItem.id,
|
||||||
|
price = foundItem.price,
|
||||||
|
dated = dateFormatted,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
searchableRecyclerView.visibility = View.GONE
|
||||||
|
}
|
||||||
|
searchableRecyclerView.setAdapter(adapter, listElements)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun observeViewModel() {
|
||||||
|
with(viewModel) {
|
||||||
|
routeActionList.observe(viewLifecycleOwner) { list ->
|
||||||
|
routeActionComplementsList = list
|
||||||
|
setSearchable(list.list.map { item ->
|
||||||
|
NameWithId(
|
||||||
|
id = item.id,
|
||||||
|
name = item.name
|
||||||
|
)
|
||||||
|
}.toMutableList())
|
||||||
|
}
|
||||||
|
routeComplementList.observe(viewLifecycleOwner) {
|
||||||
|
adapterComplement.updateData(it.list)
|
||||||
|
binding.salaryComplementRecyclerview.adapter = adapterComplement
|
||||||
|
binding.salaryComplementRecyclerview.layoutManager = layoutManager
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,7 +22,7 @@ import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||||
import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionSummaryAdapter
|
import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionSummaryAdapter
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLoadUnload
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSalixPosition
|
||||||
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
||||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||||
|
|
||||||
|
@ -39,8 +39,6 @@ class SummaryFragment(
|
||||||
private var originalItem: Int = 0
|
private var originalItem: Int = 0
|
||||||
private lateinit var myList: MutableList<ExpeditionInfoLoadUnload>
|
private lateinit var myList: MutableList<ExpeditionInfoLoadUnload>
|
||||||
private lateinit var myListSummary: List<ExpeditionInfoSummary>
|
private lateinit var myListSummary: List<ExpeditionInfoSummary>
|
||||||
private var counterCalls = 0
|
|
||||||
private var counterResponse = 0
|
|
||||||
private var positionOnScreen = 0
|
private var positionOnScreen = 0
|
||||||
private var addressFkSelected = 0
|
private var addressFkSelected = 0
|
||||||
private var routeSelected = 0
|
private var routeSelected = 0
|
||||||
|
@ -151,19 +149,20 @@ class SummaryFragment(
|
||||||
list: MutableList<ExpeditionInfoLoadUnload>, state: String, address: Int
|
list: MutableList<ExpeditionInfoLoadUnload>, state: String, address: Int
|
||||||
) {
|
) {
|
||||||
val listExpedition = list.filter { it.addressFk == address }.map { l ->
|
val listExpedition = list.filter { it.addressFk == address }.map { l ->
|
||||||
ExpeditionSalix(
|
ExpeditionSalixPosition(
|
||||||
expeditionFk = l.id, stateCode = if (l.code == state && l.code != "DELIVERED") {
|
expeditionFk = l.id, stateCode = if (l.code == "FOUND") (l.code) else {
|
||||||
state
|
if (state == "ON DELIVERY" && l.code != "ON DELIVERY" && l.code != "DELIVERED" && l.code != "LOST") {
|
||||||
} else {
|
"NOT SCANNED"
|
||||||
"FOUND"
|
} else {
|
||||||
},
|
if (state == "DELIVERED" && l.code != "DELIVERED") "LOST" else l.code
|
||||||
isScanned = l.isScanned
|
}
|
||||||
|
}, isScanned = l.isScanned, scanOrder = l.scanOrder
|
||||||
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list.filter { it.addressFk == address }
|
if (list.filter { it.addressFk == address }
|
||||||
.filter { it.code == state }.size == list.filter { it.addressFk == address }.size) {
|
.filter { it.code == state }.size == list.filter { it.addressFk == address }.size) {
|
||||||
counterCalls = 1
|
|
||||||
viewModel.expeditionStateAddSalix(
|
viewModel.expeditionStateAddSalix(
|
||||||
hashMapOf("expeditions" to listExpedition.filter { it.stateCode == state })
|
hashMapOf("expeditions" to listExpedition.filter { it.stateCode == state })
|
||||||
)
|
)
|
||||||
|
@ -178,8 +177,7 @@ class SummaryFragment(
|
||||||
android.app.AlertDialog.BUTTON_POSITIVE, getString(R.string.save)
|
android.app.AlertDialog.BUTTON_POSITIVE, getString(R.string.save)
|
||||||
) { _, _ ->
|
) { _, _ ->
|
||||||
|
|
||||||
counterCalls = 1
|
viewModel.expeditionStateAddSalix(hashMapOf("expeditions" to listExpedition))
|
||||||
viewModel.expeditionStateAddSalix(hashMapOf("expeditions" to listExpedition.filter { it.stateCode == state }))
|
|
||||||
|
|
||||||
}
|
}
|
||||||
alertDialog.setButton(
|
alertDialog.setButton(
|
||||||
|
@ -235,15 +233,22 @@ class SummaryFragment(
|
||||||
found = true
|
found = true
|
||||||
exped.code = state
|
exped.code = state
|
||||||
exped.isScanned = isScanned
|
exped.isScanned = isScanned
|
||||||
|
|
||||||
|
println(
|
||||||
|
"scanOrder markExpedition${
|
||||||
|
myList.filter { it.addressFk == addressFkSelected }
|
||||||
|
.filter { it.code == state }.size
|
||||||
|
}"
|
||||||
|
)
|
||||||
|
|
||||||
|
exped.scanOrder = myList.filter { it.addressFk == addressFkSelected }
|
||||||
|
.filter { it.code == state }.size
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
ma.messageWithSound(
|
ma.messageWithSound(
|
||||||
message = "",
|
message = "", isError = false, isPlayed = true, isToasted = false
|
||||||
isError = false,
|
|
||||||
isPlayed = true,
|
|
||||||
isToasted = false
|
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
ma.messageWithSound(message = "", isError = true, isPlayed = true, isToasted = null)
|
ma.messageWithSound(message = "", isError = true, isPlayed = true, isToasted = null)
|
||||||
|
@ -279,13 +284,10 @@ class SummaryFragment(
|
||||||
}
|
}
|
||||||
responseStateAdd.observe(viewLifecycleOwner) {
|
responseStateAdd.observe(viewLifecycleOwner) {
|
||||||
if (it) {
|
if (it) {
|
||||||
counterResponse += 1
|
|
||||||
if (counterResponse == counterCalls) {
|
viewModel.routeGetExpeditionSummary(routeSelected)
|
||||||
viewModel.routeGetExpeditionSummary(routeSelected)
|
checkNextAddress()
|
||||||
counterResponse = 0
|
|
||||||
counterCalls = 0
|
|
||||||
checkNextAddress()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -340,7 +342,6 @@ class SummaryFragment(
|
||||||
}
|
}
|
||||||
if (addressFkSelected != item.addressFk && isScanning) {
|
if (addressFkSelected != item.addressFk && isScanning) {
|
||||||
setExpeditionsState(myList, state, addressFkSelected)
|
setExpeditionsState(myList, state, addressFkSelected)
|
||||||
|
|
||||||
}
|
}
|
||||||
addressFkSelected = item.addressFk
|
addressFkSelected = item.addressFk
|
||||||
isScanning = false
|
isScanning = false
|
||||||
|
|
|
@ -31,6 +31,7 @@ import es.verdnatura.presentation.common.GeneralAdapter
|
||||||
import es.verdnatura.presentation.common.GeneralItem
|
import es.verdnatura.presentation.common.GeneralItem
|
||||||
import es.verdnatura.presentation.common.ItemDescorationCustomized
|
import es.verdnatura.presentation.common.ItemDescorationCustomized
|
||||||
import es.verdnatura.presentation.common.OnGeneralItemRowClickListener
|
import es.verdnatura.presentation.common.OnGeneralItemRowClickListener
|
||||||
|
import es.verdnatura.presentation.common.OnGeneralRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnItemButtonCMRRowClickListener
|
import es.verdnatura.presentation.common.OnItemButtonCMRRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnItemButtonTicketRowClickListener
|
import es.verdnatura.presentation.common.OnItemButtonTicketRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||||
|
@ -102,7 +103,6 @@ class TicketsFragment : BaseFragment<FragmentTicketsBinding, DeliveryViewModel>(
|
||||||
binding.mainToolbar.toolbarTitle.text = route.name
|
binding.mainToolbar.toolbarTitle.text = route.name
|
||||||
viewModel.getTickets(route.id)
|
viewModel.getTickets(route.id)
|
||||||
db = database(requireContext().applicationContext)
|
db = database(requireContext().applicationContext)
|
||||||
println("tickets in ")
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
)
|
)
|
||||||
|
@ -608,32 +608,33 @@ class TicketsFragment : BaseFragment<FragmentTicketsBinding, DeliveryViewModel>(
|
||||||
customDialogList.dismiss()
|
customDialogList.dismiss()
|
||||||
}.hideDialog().show()
|
}.hideDialog().show()
|
||||||
|
|
||||||
val listPhonesAdapter = GeneralAdapter(phones, object : OnGeneralItemRowClickListener {
|
val listPhonesAdapter =
|
||||||
override fun onGeneralItemRowClickListener(item: GeneralItem) {
|
GeneralAdapter(phones, onRowClickListener = object : OnGeneralRowClickListener {
|
||||||
phones.forEach {
|
override fun onRowClickListener(item: GeneralItem) {
|
||||||
if (it.code == item.code) {
|
phones.forEach {
|
||||||
if (ContextCompat.checkSelfPermission(
|
if (it.code == item.code) {
|
||||||
requireContext(), Manifest.permission.CALL_PHONE
|
if (ContextCompat.checkSelfPermission(
|
||||||
) == PackageManager.PERMISSION_GRANTED
|
requireContext(), Manifest.permission.CALL_PHONE
|
||||||
) {
|
) == PackageManager.PERMISSION_GRANTED
|
||||||
val callIntent = Intent(Intent.ACTION_CALL)
|
) {
|
||||||
callIntent.data = Uri.parse("tel:${it.code}")
|
val callIntent = Intent(Intent.ACTION_CALL)
|
||||||
startActivity(callIntent)
|
callIntent.data = Uri.parse("tel:${it.code}")
|
||||||
return@forEach
|
startActivity(callIntent)
|
||||||
|
return@forEach
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ActivityCompat.requestPermissions(
|
||||||
|
context as Activity,
|
||||||
|
arrayOf(Manifest.permission.CALL_PHONE),
|
||||||
|
REQUEST_CALL_PERMISSION
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} else {
|
customDialogList.dismiss()
|
||||||
ActivityCompat.requestPermissions(
|
|
||||||
context as Activity,
|
|
||||||
arrayOf(Manifest.permission.CALL_PHONE),
|
|
||||||
REQUEST_CALL_PERMISSION
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
customDialogList.dismiss()
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
customDialogList.getRecyclerView().adapter = listPhonesAdapter
|
customDialogList.getRecyclerView().adapter = listPhonesAdapter
|
||||||
customDialogList.getRecyclerView().layoutManager =
|
customDialogList.getRecyclerView().layoutManager =
|
||||||
|
|
|
@ -5,6 +5,7 @@ import androidx.room.PrimaryKey
|
||||||
import androidx.room.TypeConverters
|
import androidx.room.TypeConverters
|
||||||
import com.google.gson.annotations.SerializedName
|
import com.google.gson.annotations.SerializedName
|
||||||
import es.verdnatura.db.MapTypeConverter
|
import es.verdnatura.db.MapTypeConverter
|
||||||
|
import es.verdnatura.domain.isoToString
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
class ClientTicketList(
|
class ClientTicketList(
|
||||||
|
@ -58,12 +59,13 @@ data class TicketObservation
|
||||||
(
|
(
|
||||||
var ticketFk: Long,
|
var ticketFk: Long,
|
||||||
var description: String,
|
var description: String,
|
||||||
var observationType:ObservationType?=null
|
var observationType: ObservationType? = null
|
||||||
)
|
)
|
||||||
|
|
||||||
data class ObservationType(
|
data class ObservationType(
|
||||||
var code:String?
|
var code: String?
|
||||||
)
|
)
|
||||||
|
|
||||||
@Entity(tableName = "signedPending")
|
@Entity(tableName = "signedPending")
|
||||||
data class SignedTickets(
|
data class SignedTickets(
|
||||||
@TypeConverters(MapTypeConverter::class) val queryMapList: MutableMap<String?, String?>,
|
@TypeConverters(MapTypeConverter::class) val queryMapList: MutableMap<String?, String?>,
|
||||||
|
@ -71,3 +73,48 @@ data class SignedTickets(
|
||||||
val fileName: String
|
val fileName: String
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class RouteActionList(
|
||||||
|
var list: List<RouteAction> = listOf()
|
||||||
|
)
|
||||||
|
|
||||||
|
data class RouteAction(
|
||||||
|
val id: Number,
|
||||||
|
val price: Double,
|
||||||
|
val name: String,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class RouteComplementList(
|
||||||
|
var list: List<RouteComplement> = listOf()
|
||||||
|
)
|
||||||
|
|
||||||
|
data class RouteComplement(
|
||||||
|
val id: Number,
|
||||||
|
val price: Number,
|
||||||
|
val workerFk: Number,
|
||||||
|
val routeAction: RouteAction
|
||||||
|
) {
|
||||||
|
var dated: String = ""
|
||||||
|
get() {
|
||||||
|
return field.isoToString(returnOnlyDate = true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class RouteComplementAdd(
|
||||||
|
val price: Number,
|
||||||
|
val workerFk: Number,
|
||||||
|
val routeActionFk: Number,
|
||||||
|
val dated: String,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ExpeditionWithTicket(
|
||||||
|
val id: Number,
|
||||||
|
val ticket: TicketExpedition,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
data class TicketExpedition(
|
||||||
|
val clientFk: Number,
|
||||||
|
val warehouseFk: Number,
|
||||||
|
val addressFk: Number,
|
||||||
|
val agencyModeFk: Number
|
||||||
|
)
|
||||||
|
|
|
@ -31,6 +31,17 @@ class ExpeditionSalix(
|
||||||
val isScanned: Int? = 0
|
val isScanned: Int? = 0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class ExpeditionsPosition(
|
||||||
|
val expeditions: List<ExpeditionSalixPosition> = listOf()
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ExpeditionSalixPosition(
|
||||||
|
val expeditionFk: Number,
|
||||||
|
val stateCode: String? = null,
|
||||||
|
val isScanned: Int? = 0,
|
||||||
|
val scanOrder: Int? = null
|
||||||
|
)
|
||||||
|
|
||||||
class ExpeditionInfoList(
|
class ExpeditionInfoList(
|
||||||
var list: List<ExpeditionInfoLog> = listOf()
|
var list: List<ExpeditionInfoLog> = listOf()
|
||||||
)
|
)
|
||||||
|
@ -67,7 +78,7 @@ data class Agency(
|
||||||
class TicketSalix(
|
class TicketSalix(
|
||||||
var id: Int,
|
var id: Int,
|
||||||
var routeFk: Int?,
|
var routeFk: Int?,
|
||||||
var route: RouteSalix,
|
var route: RouteSalix?,
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -106,7 +117,8 @@ class ExpeditionInfoLoadUnload(
|
||||||
var code: String?,
|
var code: String?,
|
||||||
var nickname: String,
|
var nickname: String,
|
||||||
var postalCode: String,
|
var postalCode: String,
|
||||||
var isScanned: Int? = null
|
var isScanned: Int? = null,
|
||||||
|
var scanOrder: Int? = null
|
||||||
) : Serializable
|
) : Serializable
|
||||||
|
|
||||||
@Entity(tableName = "expeditionPending")
|
@Entity(tableName = "expeditionPending")
|
||||||
|
@ -121,7 +133,8 @@ class ExpeditionInfoPending(
|
||||||
var code: String?,
|
var code: String?,
|
||||||
var nickname: String,
|
var nickname: String,
|
||||||
var postalCode: String,
|
var postalCode: String,
|
||||||
var isScanned: Int? = 0
|
var isScanned: Int? = 0,
|
||||||
|
var scanOrder: Int? = null
|
||||||
|
|
||||||
) : Serializable
|
) : Serializable
|
||||||
|
|
||||||
|
@ -155,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?,
|
||||||
|
@ -167,9 +180,10 @@ class RouteInfo(
|
||||||
var finished: String,
|
var finished: String,
|
||||||
var header: Boolean = false,
|
var header: Boolean = false,
|
||||||
//tarea 5867
|
//tarea 5867
|
||||||
var email: String? = null
|
var email: String? = null,
|
||||||
|
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$"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import es.verdnatura.presentation.base.BaseViewModel
|
||||||
import es.verdnatura.presentation.common.Event
|
import es.verdnatura.presentation.common.Event
|
||||||
import es.verdnatura.presentation.common.ExpeditionPrintOut
|
import es.verdnatura.presentation.common.ExpeditionPrintOut
|
||||||
import es.verdnatura.presentation.common.ResponseSign
|
import es.verdnatura.presentation.common.ResponseSign
|
||||||
|
import es.verdnatura.presentation.common.getDayBounds
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketList
|
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketList
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.DeliveryInfo
|
import es.verdnatura.presentation.view.feature.delivery.model.DeliveryInfo
|
||||||
|
@ -20,7 +21,13 @@ import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoLog
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionList
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionList
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSummaryList
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionSummaryList
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionWithTicket
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.FreeLanceDeliveryInfoList
|
import es.verdnatura.presentation.view.feature.delivery.model.FreeLanceDeliveryInfoList
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteAction
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteActionList
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplement
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplementAdd
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplementList
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteDelivery
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteDelivery
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteDeliveryList
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteDeliveryList
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||||
|
@ -35,6 +42,8 @@ import org.json.JSONObject
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
import retrofit2.Response
|
import retrofit2.Response
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
class DeliveryViewModel(val context: Context) : BaseViewModel(context) {
|
class DeliveryViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
|
|
||||||
|
@ -106,6 +115,143 @@ class DeliveryViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
|
|
||||||
private val _responseStateList by lazy { MutableLiveData<Boolean>() }
|
private val _responseStateList by lazy { MutableLiveData<Boolean>() }
|
||||||
val responseStateList: LiveData<Boolean> = _responseStateList
|
val responseStateList: LiveData<Boolean> = _responseStateList
|
||||||
|
|
||||||
|
private val _routeActionList by lazy { MutableLiveData<RouteActionList>() }
|
||||||
|
val routeActionList: LiveData<RouteActionList> = _routeActionList
|
||||||
|
|
||||||
|
private val _routeComplementList by lazy { MutableLiveData<RouteComplementList>() }
|
||||||
|
val routeComplementList: LiveData<RouteComplementList> = _routeComplementList
|
||||||
|
|
||||||
|
private val _routeActionAdd by lazy { MutableLiveData<Boolean>() }
|
||||||
|
val routeActionAdd: LiveData<Boolean> = _routeActionAdd
|
||||||
|
|
||||||
|
fun getRouteAction() {
|
||||||
|
salix.getRouteAction()
|
||||||
|
.enqueue(object : SalixCallback<List<RouteAction>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<RouteAction>>) {
|
||||||
|
_routeActionList.value =
|
||||||
|
response.body()?.let { RouteActionList(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getDataFromExpedition(expeditionId: Number, routeId: Number, landed: String) {
|
||||||
|
salix.getDataFromExpedition(
|
||||||
|
filter = """
|
||||||
|
|{
|
||||||
|
|"where":
|
||||||
|
|{"id":$expeditionId},
|
||||||
|
|"fields":["id","ticketFk"],
|
||||||
|
|"include":
|
||||||
|
|{
|
||||||
|
|"relation":"ticket",
|
||||||
|
|"scope":{
|
||||||
|
|"fields":["clientFk","addressFk","warehouseFk","agencyModeFk"]
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
|}""".trimMargin()
|
||||||
|
)
|
||||||
|
.enqueue(object : SalixCallback<List<ExpeditionWithTicket>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<ExpeditionWithTicket>>) {
|
||||||
|
val myTicketData = response.body()!![0]
|
||||||
|
moveExpeditions(
|
||||||
|
clientId = myTicketData.ticket.clientFk,
|
||||||
|
addressId = myTicketData.ticket.addressFk,
|
||||||
|
warehouseId = myTicketData.ticket.warehouseFk,
|
||||||
|
routeId = routeId,
|
||||||
|
agencyModeId = myTicketData.ticket.agencyModeFk,
|
||||||
|
expeditionsId = arrayListOf(expeditionId),
|
||||||
|
landed = landed
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun addRouteComplements(routeComplementAdd: RouteComplementAdd) {
|
||||||
|
salix.addRouteComplements(routeComplementAdd)
|
||||||
|
.enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
getRouteComplements(
|
||||||
|
LocalDate.parse(
|
||||||
|
routeComplementAdd.dated,
|
||||||
|
DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
||||||
|
)
|
||||||
|
.format(DateTimeFormatter.ofPattern("dd-MM-yyyy")),
|
||||||
|
workerFk = routeComplementAdd.workerFk
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun moveExpeditions(
|
||||||
|
clientId: Number,
|
||||||
|
warehouseId: Number,
|
||||||
|
addressId: Number,
|
||||||
|
agencyModeId: Number,
|
||||||
|
routeId: Number,
|
||||||
|
expeditionsId: ArrayList<Number>,
|
||||||
|
landed: String
|
||||||
|
) {
|
||||||
|
salix.moveExpeditions(
|
||||||
|
clientId, warehouseId, addressId, agencyModeId, routeId, expeditionsId, landed
|
||||||
|
|
||||||
|
).enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getRouteComplements(date: String, workerFk: Number) {
|
||||||
|
val (startOfDay, endOfDay) = getDayBounds(date)
|
||||||
|
salix.getRouteComplements(
|
||||||
|
"""{
|
||||||
|
|"where": {
|
||||||
|
|"and": [
|
||||||
|
|{
|
||||||
|
|"dated": {
|
||||||
|
|"between": ["$startOfDay", "$endOfDay"]
|
||||||
|
|}
|
||||||
|
|},
|
||||||
|
|{
|
||||||
|
|"workerFK": "$workerFk"
|
||||||
|
|}
|
||||||
|
|]
|
||||||
|
|},
|
||||||
|
|"include": [
|
||||||
|
|{
|
||||||
|
|"relation": "routeAction",
|
||||||
|
|"scope": {
|
||||||
|
|"fields": {
|
||||||
|
|"routeActionFk": true,
|
||||||
|
|"name": true
|
||||||
|
|}
|
||||||
|
|}
|
||||||
|
|}
|
||||||
|
|]
|
||||||
|
|}""".trimMargin()
|
||||||
|
)
|
||||||
|
.enqueue(object : SalixCallback<List<RouteComplement>>(context) {
|
||||||
|
override fun onSuccess(response: Response<List<RouteComplement>>) {
|
||||||
|
_routeComplementList.value =
|
||||||
|
response.body()?.let { RouteComplementList(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun routeComplementDelete(id: Number, date: String, workerFk: Number) {
|
||||||
|
salix.routeComplementDelete(id)
|
||||||
|
.enqueue(object : SalixCallback<Any>(context) {
|
||||||
|
override fun onSuccess(response: Response<Any>) {
|
||||||
|
getRouteComplements(date, workerFk)
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
fun getTicketObservations(
|
fun getTicketObservations(
|
||||||
listTickets: List<Long>
|
listTickets: List<Long>
|
||||||
|
|
||||||
|
|
|
@ -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) =
|
||||||
|
@ -43,17 +46,33 @@ class ShelvingLogFragment(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setToolBar(title:String) {
|
private fun setToolBar(title: String) {
|
||||||
|
|
||||||
if (logType == LogType.SHELVING) {
|
when (logType) {
|
||||||
binding.mainToolbar.toolbarTitle.text = title
|
LogType.SHELVING -> {
|
||||||
|
binding.mainToolbar.toolbarTitle.text = title
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
LogType.PREVIOUS -> {
|
||||||
binding.mainToolbar.toolbarTitle.text = title
|
binding.mainToolbar.toolbarTitle.text = title
|
||||||
binding.scanInput.setHint(getString(R.string.scanParkingTxt))
|
binding.scanInput.setHint(getString(R.string.scanParkingTxt))
|
||||||
|
}
|
||||||
|
|
||||||
|
LogType.ITEMSHELVING -> {
|
||||||
|
binding.mainToolbar.toolbarTitle.text = title
|
||||||
|
binding.scanInput.setHint("Escanea carro o item")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if (logType == LogType.SHELVING) {
|
||||||
|
binding.mainToolbar.toolbarTitle.text = title
|
||||||
|
|
||||||
|
} else {
|
||||||
|
binding.mainToolbar.toolbarTitle.text = title
|
||||||
|
binding.scanInput.setHint(getString(R.string.scanParkingTxt))
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setEvents() {
|
private fun setEvents() {
|
||||||
|
@ -62,6 +81,11 @@ class ShelvingLogFragment(
|
||||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
if (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,24 +140,65 @@ class ShelvingLogFragment(
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
loadResponseCode.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
setToolBar(getString(R.string.item) + itemScan)
|
||||||
|
if (it == -1) showMessage() else {
|
||||||
|
isitemFkScanned = true
|
||||||
|
openWebViewer(it, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
isitemFkScanned = false
|
||||||
|
super.onPause()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showMessage() {
|
||||||
|
customDialog.setTitle(getString(R.string.noResults))
|
||||||
|
.setDescription(getString(R.string.noDataLabelScanned))
|
||||||
|
.setOkButton(getString(R.string.close)) {
|
||||||
|
customDialog.dismiss()
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
|
|
||||||
private fun openWebViewer(param: Int, web: String) {
|
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) {
|
||||||
mutableMapOf(
|
Gson().toJson(
|
||||||
"entryPoint" to param,
|
mutableMapOf(
|
||||||
"web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
|
"entryPoint" to param,
|
||||||
|
"web" to "https://grafana.verdnatura.es/d/ce4b8ymvex4owa?${
|
||||||
|
if (isitemFkScanned) "var-itemFk=$param&var-vnToken=${
|
||||||
|
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||||
|
TOKENMULTIMEDIA
|
||||||
|
)
|
||||||
|
}"
|
||||||
|
else "var-shelvingCode=$itemScan"
|
||||||
|
}"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
} else {
|
||||||
|
Gson().toJson(
|
||||||
|
mutableMapOf(
|
||||||
|
"entryPoint" to param,
|
||||||
|
"web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -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,14 +14,18 @@ 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) }
|
||||||
|
|
||||||
private val _responseParkingId by lazy { MutableLiveData<Int?>() }
|
private val _responseParkingId by lazy { MutableLiveData<Int?>() }
|
||||||
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 :
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,7 @@ class InventoryParkingAdapter(
|
||||||
onPasillerosItemClickListener.onPasillerosItemClickListener(
|
onPasillerosItemClickListener.onPasillerosItemClickListener(
|
||||||
PasillerosItemVO(
|
PasillerosItemVO(
|
||||||
title =
|
title =
|
||||||
R.string.itemSearch
|
R.string.itemSearch
|
||||||
), item.itemFk.toString()
|
), item.itemFk.toString()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -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(
|
||||||
|
|
|
@ -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
|
||||||
|
@ -18,13 +19,14 @@ import es.verdnatura.presentation.common.OnInvetoryNichoClickListener
|
||||||
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.ToolBarAdapterTooltip
|
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||||
|
import es.verdnatura.presentation.view.commom.NameWithId
|
||||||
|
import es.verdnatura.presentation.view.commom.SearchableAdapter
|
||||||
import es.verdnatura.presentation.view.component.CustomDialogInput
|
import es.verdnatura.presentation.view.component.CustomDialogInput
|
||||||
import es.verdnatura.presentation.view.component.CustomDialogTwoButtons
|
import es.verdnatura.presentation.view.component.CustomDialogTwoButtons
|
||||||
import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO
|
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
|
||||||
import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||||
|
@ -39,10 +41,10 @@ class InventaryFragment :
|
||||||
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
|
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
|
||||||
private var layoutManager: LinearLayoutManager? = null
|
private var layoutManager: LinearLayoutManager? = null
|
||||||
private var firstVisiblePosition = 0
|
private var firstVisiblePosition = 0
|
||||||
private var secondVisiblePosition = 1
|
|
||||||
private lateinit var itemClicked: ItemInventaryVO
|
private lateinit var itemClicked: ItemInventaryVO
|
||||||
private val items = ArrayList<SearchBuyerModel>()
|
private var buyerId: Number = -1
|
||||||
private lateinit var buyerId: String
|
private var filterItemType: String? = null
|
||||||
|
private var myListBuyers = listOf<Buyer>()
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance() = InventaryFragment()
|
fun newInstance() = InventaryFragment()
|
||||||
|
@ -57,41 +59,41 @@ 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))
|
||||||
buyerId = mobileApplication.dataStoreApp.readDataStoreKey((BUYERID))
|
filterItemType =
|
||||||
if (buyerId.isNotBlank()) {
|
mobileApplication.dataStoreApp.readDataStoreKey<String>((ITEMPACKINGTYPEFILTER))
|
||||||
|
binding.filterItemType.setText(filterItemType!!.firstOrNull()?.toString() ?: "").toString()
|
||||||
|
buyerId = mobileApplication.dataStoreApp.readDataStoreKey<Int>((BUYERID))
|
||||||
|
if (buyerId != -1) {
|
||||||
viewModel.getInventory(
|
viewModel.getInventory(
|
||||||
buyerId.toInt(), mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
buyerId, mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
binding.filterBuyer.setOnClickListener {
|
binding.filterBuyer.setOnClickListener {
|
||||||
SimpleSearchDialogCompat(
|
val distinctPackingTypes = myListBuyers
|
||||||
context,
|
|
||||||
getString(R.string.compradores),
|
|
||||||
getString(R.string.escribirparteNombre),
|
|
||||||
null,
|
|
||||||
items
|
|
||||||
) { baseSearchDialogCompat, nombre, position ->
|
|
||||||
|
|
||||||
binding.filterBuyer.text = (nombre.title)
|
.filter { filterItemType == getString(R.string.allText) || filterItemType == "" || it.itemPackingTypeFk == filterItemType }
|
||||||
buyerId = nombre.getBuyerId()
|
.map {
|
||||||
|
NameWithId(
|
||||||
lifecycleScope.launch {
|
it.worker.user.id, it.worker.user.nickname
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
BUYER, nombre.getBuyerNickname()
|
|
||||||
)
|
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
BUYERID, nombre.getBuyerId()
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
viewModel.getInventory(
|
.distinct()
|
||||||
nombre.getBuyerId().toInt(),
|
.sortedBy { it.name }
|
||||||
mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
setSearchable(distinctPackingTypes as MutableList<NameWithId>)
|
||||||
)
|
binding.searchableRecyclerView.visibility = View.VISIBLE
|
||||||
baseSearchDialogCompat.dismiss()
|
binding.searchableRecyclerView.setSearchHint(getString(R.string.BuyerSearch))
|
||||||
}.show()
|
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())
|
||||||
customDialog = CustomDialogTwoButtons(requireContext())
|
customDialog = CustomDialogTwoButtons(requireContext())
|
||||||
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemShelvingRadar)
|
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemShelvingRadar)
|
||||||
|
@ -100,6 +102,59 @@ class InventaryFragment :
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setSearchable(listNames: MutableList<NameWithId>) {
|
||||||
|
|
||||||
|
val adapter =
|
||||||
|
SearchableAdapter(
|
||||||
|
listElements = listNames,
|
||||||
|
context = requireContext()
|
||||||
|
) { elementSelected ->
|
||||||
|
|
||||||
|
lifecycleScope.launch {
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
BUYER, elementSelected.name
|
||||||
|
)
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
BUYERID, elementSelected.id
|
||||||
|
)
|
||||||
|
}
|
||||||
|
viewModel.getInventory(
|
||||||
|
elementSelected.id,
|
||||||
|
mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||||
|
)
|
||||||
|
binding.filterBuyer.text = (elementSelected.name)
|
||||||
|
buyerId = elementSelected.id
|
||||||
|
binding.searchableRecyclerView.visibility = View.GONE
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.searchableRecyclerView.setAdapter(adapter, listNames)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
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()
|
||||||
|
@ -114,9 +169,9 @@ class InventaryFragment :
|
||||||
if (item == iconReload.drawable) {
|
if (item == iconReload.drawable) {
|
||||||
|
|
||||||
firstVisiblePosition = layoutManager?.findFirstVisibleItemPosition() ?: 0
|
firstVisiblePosition = layoutManager?.findFirstVisibleItemPosition() ?: 0
|
||||||
if (buyerId.isNotBlank()) {
|
if (buyerId != -1) {
|
||||||
viewModel.getInventory(
|
viewModel.getInventory(
|
||||||
buyerId.toInt(),
|
buyerId,
|
||||||
mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
@ -157,7 +212,7 @@ class InventaryFragment :
|
||||||
setFilterItem()
|
setFilterItem()
|
||||||
|
|
||||||
}
|
}
|
||||||
adapter!!.notifyDataSetChanged()
|
adapter?.notifyDataSetChanged()
|
||||||
return@setOnKeyListener false
|
return@setOnKeyListener false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,10 +233,31 @@ class InventaryFragment :
|
||||||
|
|
||||||
override fun observeViewModel() {
|
override fun observeViewModel() {
|
||||||
with(viewModel) {
|
with(viewModel) {
|
||||||
buyersList.observe(viewLifecycleOwner) {
|
|
||||||
createBuyerList(it.list)
|
buyersByItemPackingList.observe(viewLifecycleOwner) { list ->
|
||||||
|
myListBuyers = list.list
|
||||||
|
val distinctPackingTypes =
|
||||||
|
list?.list?.map {
|
||||||
|
NameWithId(
|
||||||
|
1, it.itemPackingTypeFk ?: getString(R.string.allText)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
?.distinct()
|
||||||
|
?: emptyList()
|
||||||
|
|
||||||
|
setSearchableItemPacking(distinctPackingTypes as MutableList<NameWithId>)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buyersList.observe(viewLifecycleOwner) { item ->
|
||||||
|
setSearchable(item.list.map {
|
||||||
|
NameWithId(
|
||||||
|
it.userFk,
|
||||||
|
it.nickname
|
||||||
|
)
|
||||||
|
} as MutableList<NameWithId>)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inventaryList.observe(viewLifecycleOwner) { it ->
|
inventaryList.observe(viewLifecycleOwner) { it ->
|
||||||
listInventory = ArrayList()
|
listInventory = ArrayList()
|
||||||
listInventoryAux = ArrayList()
|
listInventoryAux = ArrayList()
|
||||||
|
@ -191,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)
|
||||||
|
@ -265,13 +343,6 @@ class InventaryFragment :
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createBuyerList(list: List<BuyerVO>) {
|
|
||||||
items.clear()
|
|
||||||
if (list.isNotEmpty()) list.forEach { buyer ->
|
|
||||||
items.add(SearchBuyerModel(buyer.nickname, buyer.userFk))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,6 @@ import es.verdnatura.presentation.view.feature.inventario.model.ItemShelvingVisi
|
||||||
import es.verdnatura.presentation.view.feature.inventario.model.ItemShelvingVisibleZero
|
import es.verdnatura.presentation.view.feature.inventario.model.ItemShelvingVisibleZero
|
||||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
|
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import timber.log.Timber.d
|
|
||||||
|
|
||||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||||
class InventaryParkingFragment(
|
class InventaryParkingFragment(
|
||||||
|
@ -77,13 +76,15 @@ class InventaryParkingFragment(
|
||||||
override fun getLayoutId(): Int = R.layout.fragment_inventory_parking
|
override fun getLayoutId(): Int = R.layout.fragment_inventory_parking
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
|
||||||
try {
|
// try {
|
||||||
|
if (binding.inventoryParkingRecyclerview.layoutManager != null) {
|
||||||
val layoutManager =
|
val layoutManager =
|
||||||
binding.inventoryParkingRecyclerview.layoutManager as LinearLayoutManager
|
binding.inventoryParkingRecyclerview.layoutManager as LinearLayoutManager
|
||||||
scrollPosition = layoutManager.findFirstVisibleItemPosition()
|
scrollPosition = layoutManager.findFirstVisibleItemPosition()
|
||||||
} catch (exception: Exception) {
|
|
||||||
d(exception)
|
|
||||||
}
|
}
|
||||||
|
/* } catch (ex: Exception) {
|
||||||
|
ex.message!! + "hola".toast(requireContext())
|
||||||
|
}*/
|
||||||
|
|
||||||
isBack = true
|
isBack = true
|
||||||
super.onPause()
|
super.onPause()
|
||||||
|
@ -193,7 +194,7 @@ class InventaryParkingFragment(
|
||||||
)
|
)
|
||||||
|
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
d(ex)
|
ex.message!!.toast(requireContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -475,10 +476,14 @@ class InventaryParkingFragment(
|
||||||
ex.message!!.toast(requireContext())
|
ex.message!!.toast(requireContext())
|
||||||
|
|
||||||
}
|
}
|
||||||
|
positionShelvingChecking = try {
|
||||||
positionShelvingChecking = myListInventory.indexOfFirst { item ->
|
myListInventory.indexOfFirst { item ->
|
||||||
item.shelvingFk.uppercase() == binding.editMatricula.text.toString()
|
item.shelvingFk.uppercase() == binding.editMatricula.text.toString()
|
||||||
|
}
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
-1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (positionShelvingChecking != -1) {
|
if (positionShelvingChecking != -1) {
|
||||||
shelvingSaved =
|
shelvingSaved =
|
||||||
myListInventory[positionShelvingChecking].shelvingFk.uppercase()
|
myListInventory[positionShelvingChecking].shelvingFk.uppercase()
|
||||||
|
@ -611,7 +616,7 @@ class InventaryParkingFragment(
|
||||||
positionShelvingChecking = -1
|
positionShelvingChecking = -1
|
||||||
|
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
d(ex)
|
ex.message!!.toast(requireContext())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,9 +86,23 @@ 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: Int, warehouseFk: Int) {
|
fun getInventory(buyerFk: Number, warehouseFk: Int) {
|
||||||
salix.itemShelvingFilterBuyer(params = arrayListOf(buyerFk, warehouseFk))
|
salix.itemShelvingFilterBuyer(params = arrayListOf(buyerFk, warehouseFk))
|
||||||
.enqueue(object : SalixCallback<List<ItemInventaryVO>>(context) {
|
.enqueue(object : SalixCallback<List<ItemInventaryVO>>(context) {
|
||||||
override fun onSuccess(response: Response<List<ItemInventaryVO>>) {
|
override fun onSuccess(response: Response<List<ItemInventaryVO>>) {
|
||||||
|
@ -146,7 +166,7 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fun workerGetFromHasMistake(departmentFk: Int) {
|
fun workerGetFromHasMistake(departmentFk: Number) {
|
||||||
salix.workerGetFromHasMistake(arrayListOf(departmentFk))
|
salix.workerGetFromHasMistake(arrayListOf(departmentFk))
|
||||||
.enqueue(object : SalixCallback<List<WorkerFromMistake>>(context) {
|
.enqueue(object : SalixCallback<List<WorkerFromMistake>>(context) {
|
||||||
override fun onSuccess(response: Response<List<WorkerFromMistake>>) {
|
override fun onSuccess(response: Response<List<WorkerFromMistake>>) {
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
package es.verdnatura.presentation.view.feature.inventario.fragment
|
|
||||||
|
|
||||||
import ir.mirrajabi.searchdialog.core.Searchable
|
|
||||||
|
|
||||||
class SearchBuyerModel(private var nickname: String?, private var buyerId: Int?) : Searchable {
|
|
||||||
|
|
||||||
override fun getTitle(): String {
|
|
||||||
|
|
||||||
return nickname!!
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getBuyerId(): String {
|
|
||||||
return buyerId.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getBuyerNickname(): String {
|
|
||||||
return nickname!!
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
class SearchDepartmentModel(private var name: String?, private var departmentId: Int?) :
|
|
||||||
Searchable {
|
|
||||||
|
|
||||||
override fun getTitle(): String {
|
|
||||||
|
|
||||||
return name!!
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getDepartmentId(): Int {
|
|
||||||
return departmentId!!
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getDepartmentName(): String {
|
|
||||||
return name!!
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
class SearchSupplierModel(
|
|
||||||
private var name: String?,
|
|
||||||
private var id: String?,
|
|
||||||
private var observation: String?
|
|
||||||
) : Searchable {
|
|
||||||
|
|
||||||
fun getId(): String {
|
|
||||||
return id!!
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getName(): String {
|
|
||||||
return name!!
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getTitle(): String {
|
|
||||||
return name!!
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getObservation(): String {
|
|
||||||
return observation ?: ""
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,6 +3,7 @@ package es.verdnatura.presentation.view.feature.login.fragment
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Bundle
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.view.View.GONE
|
import android.view.View.GONE
|
||||||
import android.view.View.VISIBLE
|
import android.view.View.VISIBLE
|
||||||
|
@ -21,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
|
||||||
|
@ -41,7 +43,7 @@ import kotlinx.coroutines.runBlocking
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
class LoginFragment(private var imageUri: Uri?) :
|
class LoginFragment() :
|
||||||
BaseFragment<FragmentLoginBinding, LoginViewModel>(LoginViewModel::class) {
|
BaseFragment<FragmentLoginBinding, LoginViewModel>(LoginViewModel::class) {
|
||||||
|
|
||||||
private lateinit var customDialogInput: CustomDialogInput
|
private lateinit var customDialogInput: CustomDialogInput
|
||||||
|
@ -50,9 +52,23 @@ class LoginFragment(private var imageUri: Uri?) :
|
||||||
private var workFormAdapter: WorkFormAdapter? = null
|
private var workFormAdapter: WorkFormAdapter? = null
|
||||||
private lateinit var customDialogList: CustomDialogList
|
private lateinit var customDialogList: CustomDialogList
|
||||||
private lateinit var listForms: List<WorkForms>
|
private lateinit var listForms: List<WorkForms>
|
||||||
|
private var imageUri: Uri? = null
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance(imageUri: Uri?) = LoginFragment(imageUri)
|
private const val ARG_IMAGE_URI = "image_uri"
|
||||||
|
|
||||||
|
fun newInstance(imageUri: Uri?): LoginFragment {
|
||||||
|
return LoginFragment().apply {
|
||||||
|
arguments = Bundle().apply {
|
||||||
|
putParcelable(ARG_IMAGE_URI, imageUri)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
imageUri = arguments?.getParcelable(ARG_IMAGE_URI)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.fragment_login
|
override fun getLayoutId(): Int = R.layout.fragment_login
|
||||||
|
@ -469,6 +485,15 @@ class LoginFragment(private var imageUri: Uri?) :
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
multimediaTokenResponse.observe(viewLifecycleOwner) {
|
||||||
|
runBlocking {
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
TOKENMULTIMEDIA,
|
||||||
|
it.multimediaToken.id
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
loginSalixItem.observe(viewLifecycleOwner) {
|
loginSalixItem.observe(viewLifecycleOwner) {
|
||||||
|
@ -499,6 +524,7 @@ class LoginFragment(private var imageUri: Uri?) :
|
||||||
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 ->
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -18,8 +18,8 @@ data class WorkerData(
|
||||||
val labelerFk: Int,
|
val labelerFk: Int,
|
||||||
val sectorFk: Int,
|
val sectorFk: Int,
|
||||||
val sector: Sector?,
|
val sector: Sector?,
|
||||||
val printer: Printer,
|
val printer: Printer?,
|
||||||
val train: Train,
|
val train: Train?,
|
||||||
val id: Int,
|
val id: Int,
|
||||||
val name: String,
|
val name: String,
|
||||||
val nickname: String,
|
val nickname: String,
|
||||||
|
@ -115,4 +115,12 @@ 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,
|
||||||
)
|
)
|
|
@ -77,6 +77,7 @@ import es.verdnatura.presentation.view.feature.delivery.fragments.InfoFragment
|
||||||
import es.verdnatura.presentation.view.feature.delivery.fragments.LoadUnloadFragment
|
import es.verdnatura.presentation.view.feature.delivery.fragments.LoadUnloadFragment
|
||||||
import es.verdnatura.presentation.view.feature.delivery.fragments.LogExpeditionFragment
|
import es.verdnatura.presentation.view.feature.delivery.fragments.LogExpeditionFragment
|
||||||
import es.verdnatura.presentation.view.feature.delivery.fragments.RoutesFragment
|
import es.verdnatura.presentation.view.feature.delivery.fragments.RoutesFragment
|
||||||
|
import es.verdnatura.presentation.view.feature.delivery.fragments.SalaryComplementFragment
|
||||||
import es.verdnatura.presentation.view.feature.delivery.fragments.SummaryFragment
|
import es.verdnatura.presentation.view.feature.delivery.fragments.SummaryFragment
|
||||||
import es.verdnatura.presentation.view.feature.delivery.fragments.TicketsFragment
|
import es.verdnatura.presentation.view.feature.delivery.fragments.TicketsFragment
|
||||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||||
|
@ -134,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
|
||||||
|
@ -142,7 +143,6 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import timber.log.Timber.d
|
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
import java.util.concurrent.ScheduledExecutorService
|
import java.util.concurrent.ScheduledExecutorService
|
||||||
|
@ -543,24 +543,23 @@ 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) {
|
addFragmentOnTop(
|
||||||
println("Revisando nueva")
|
CollectionFragmentChecker.newInstance(
|
||||||
addFragmentOnTop(
|
CollectionVO(collectionFk = 0),
|
||||||
CollectionFragmentChecker.newInstance(
|
type = CONTROLADOR
|
||||||
CollectionVO(collectionFk = 0),
|
|
||||||
type = CONTROLADOR
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
} else {
|
)
|
||||||
println("Revisando vieja")
|
/* } else {
|
||||||
addFragmentOnTop(
|
println("Revisando vieja")
|
||||||
CollectionFragment.newInstance(
|
addFragmentOnTop(
|
||||||
CollectionVO(collectionFk = 0),
|
CollectionFragment.newInstance(
|
||||||
type = CONTROLADOR
|
CollectionVO(collectionFk = 0),
|
||||||
)
|
type = CONTROLADOR
|
||||||
)
|
)
|
||||||
}
|
)
|
||||||
|
}*/
|
||||||
/* addFragmentOnTop(
|
/* addFragmentOnTop(
|
||||||
CollectionFragment.newInstance(
|
CollectionFragment.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) -> {
|
||||||
|
@ -944,6 +952,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
||||||
addFragmentOnTop(PickerHelperFragment.newInstance(itemTitle))
|
addFragmentOnTop(PickerHelperFragment.newInstance(itemTitle))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getString(R.string.salarySupplementTitle) -> {
|
||||||
|
addFragmentOnTop(SalaryComplementFragment.newInstance(itemTitle))
|
||||||
|
}
|
||||||
|
|
||||||
"PREITEMPICKERTEST" -> {
|
"PREITEMPICKERTEST" -> {
|
||||||
addFragmentOnTop(
|
addFragmentOnTop(
|
||||||
CollectionFragmentPickerPreviousNew.newInstance(
|
CollectionFragmentPickerPreviousNew.newInstance(
|
||||||
|
@ -986,7 +998,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
d("$ex")
|
ex.message!!.toast(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1048,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(
|
||||||
|
@ -1217,7 +1228,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
||||||
userFk = (application as MobileApplication).userId!!
|
userFk = (application as MobileApplication).userId!!
|
||||||
)
|
)
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
d(ex.message.toString())
|
ex.message!!.toast(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,15 +12,13 @@ import es.verdnatura.domain.ConstAndValues.SUPPLIERID
|
||||||
import es.verdnatura.domain.ConstAndValues.SUPPLIERNAME
|
import es.verdnatura.domain.ConstAndValues.SUPPLIERNAME
|
||||||
import es.verdnatura.presentation.base.BaseFragment
|
import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||||
|
import es.verdnatura.presentation.view.commom.NameWithId
|
||||||
|
import es.verdnatura.presentation.view.commom.SearchableAdapter
|
||||||
import es.verdnatura.presentation.view.component.CustomDialog
|
import es.verdnatura.presentation.view.component.CustomDialog
|
||||||
import es.verdnatura.presentation.view.feature.inventario.fragment.SearchSupplierModel
|
|
||||||
import es.verdnatura.presentation.view.feature.packaging.model.EntrySalix
|
import es.verdnatura.presentation.view.feature.packaging.model.EntrySalix
|
||||||
import es.verdnatura.presentation.view.feature.packaging.model.Supplier
|
|
||||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||||
import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat
|
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
|
||||||
class SupplierFragment(
|
class SupplierFragment(
|
||||||
var entryPoint: String = ""
|
var entryPoint: String = ""
|
||||||
|
|
||||||
|
@ -31,8 +29,7 @@ class SupplierFragment(
|
||||||
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
|
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
|
||||||
private var layoutManager: LinearLayoutManager? = null
|
private var layoutManager: LinearLayoutManager? = null
|
||||||
private var onBack = false
|
private var onBack = false
|
||||||
private val suppliers = ArrayList<SearchSupplierModel>()
|
private val entries = ArrayList<EntrySalix>()
|
||||||
private val entries = ArrayList<SearchSupplierModel>()
|
|
||||||
private lateinit var customDialog: CustomDialog
|
private lateinit var customDialog: CustomDialog
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -59,27 +56,14 @@ class SupplierFragment(
|
||||||
|
|
||||||
override fun init() {
|
override fun init() {
|
||||||
binding.filterSupplier.setOnClickListener {
|
binding.filterSupplier.setOnClickListener {
|
||||||
SimpleSearchDialogCompat(
|
binding.searchableSuplierRecyclerView.visibility = View.VISIBLE
|
||||||
context,
|
binding.searchableSuplierRecyclerView.setSearchHint(getString(R.string.supplierSearch))
|
||||||
getString(R.string.suppliers),
|
|
||||||
getString(R.string.escribirparteNombre),
|
}
|
||||||
null,
|
binding.filterEntry.setOnClickListener {
|
||||||
suppliers
|
binding.searchableEntriesRecyclerView.visibility = View.VISIBLE
|
||||||
) { baseSearchDialogCompat, nombre, position ->
|
binding.searchableEntriesRecyclerView.setSearchHint(getString(R.string.entrySearch))
|
||||||
binding.filterSupplier.text = (nombre.getName())
|
|
||||||
runBlocking {
|
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
SUPPLIERNAME,
|
|
||||||
nombre.getName()
|
|
||||||
)
|
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
SUPPLIERID,
|
|
||||||
nombre.getId().toInt()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
viewModel.getEntriesFromSupplier(nombre.getId().toInt())
|
|
||||||
baseSearchDialogCompat.dismiss()
|
|
||||||
}.show()
|
|
||||||
}
|
}
|
||||||
customDialog = CustomDialog(requireContext())
|
customDialog = CustomDialog(requireContext())
|
||||||
ma.hideBottomNavigation(View.GONE)
|
ma.hideBottomNavigation(View.GONE)
|
||||||
|
@ -89,6 +73,64 @@ class SupplierFragment(
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setSearchable(listNames: MutableList<NameWithId>) {
|
||||||
|
|
||||||
|
val adapter =
|
||||||
|
SearchableAdapter(
|
||||||
|
listElements = listNames,
|
||||||
|
context = requireContext()
|
||||||
|
) { elementSelected ->
|
||||||
|
binding.filterSupplier.text = (elementSelected.name)
|
||||||
|
runBlocking {
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
SUPPLIERNAME,
|
||||||
|
elementSelected.name
|
||||||
|
)
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
SUPPLIERID,
|
||||||
|
elementSelected.id
|
||||||
|
)
|
||||||
|
}
|
||||||
|
viewModel.getEntriesFromSupplier(elementSelected.id)
|
||||||
|
binding.searchableSuplierRecyclerView.visibility = View.GONE
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.searchableSuplierRecyclerView.setAdapter(adapter, listNames)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setSearchableEntries(listNames: MutableList<NameWithId>) {
|
||||||
|
|
||||||
|
val adapter =
|
||||||
|
SearchableAdapter(
|
||||||
|
listElements = listNames,
|
||||||
|
context = requireContext()
|
||||||
|
) { elementSelected ->
|
||||||
|
binding.filterEntry.text = elementSelected.name
|
||||||
|
runBlocking {
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
ENTRYID,
|
||||||
|
elementSelected.id
|
||||||
|
)
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
ENTRYOBSERVATIONORIGINAL,
|
||||||
|
entries.find { it.id == elementSelected.id }?.observation ?: ""
|
||||||
|
)
|
||||||
|
mobileApplication.dataStoreApp.deleteImages()
|
||||||
|
}
|
||||||
|
ma.onPasillerosItemClickListener(
|
||||||
|
PasillerosItemVO(title = R.string.titlePackagingCount),
|
||||||
|
getString(R.string.titlePackagingCount)
|
||||||
|
)
|
||||||
|
binding.searchableEntriesRecyclerView.visibility = View.GONE
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.searchableEntriesRecyclerView.setAdapter(adapter, listNames)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private fun setToolBar() {
|
private fun setToolBar() {
|
||||||
binding.mainToolbar.toolbarTitle.text = entryPoint
|
binding.mainToolbar.toolbarTitle.text = entryPoint
|
||||||
}
|
}
|
||||||
|
@ -103,41 +145,18 @@ class SupplierFragment(
|
||||||
|
|
||||||
private fun setEntryDialog() {
|
private fun setEntryDialog() {
|
||||||
binding.filterEntry.visibility = View.VISIBLE
|
binding.filterEntry.visibility = View.VISIBLE
|
||||||
binding.filterEntry.setOnClickListener {
|
|
||||||
SimpleSearchDialogCompat(
|
|
||||||
context,
|
|
||||||
getString(R.string.entry),
|
|
||||||
getString(R.string.escribirparteNombre),
|
|
||||||
null,
|
|
||||||
entries
|
|
||||||
) { baseSearchDialogCompat, nombre, position ->
|
|
||||||
binding.filterEntry.text = nombre.getName()
|
|
||||||
runBlocking {
|
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
ENTRYID,
|
|
||||||
nombre.getId().toInt()
|
|
||||||
)
|
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
ENTRYOBSERVATIONORIGINAL,
|
|
||||||
nombre.getObservation()
|
|
||||||
)
|
|
||||||
mobileApplication.dataStoreApp.deleteImages()
|
|
||||||
}
|
|
||||||
ma.onPasillerosItemClickListener(
|
|
||||||
PasillerosItemVO(title = R.string.titlePackagingCount),
|
|
||||||
getString(R.string.titlePackagingCount)
|
|
||||||
)
|
|
||||||
// }
|
|
||||||
baseSearchDialogCompat.dismiss()
|
|
||||||
}.show()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun observeViewModel() {
|
override fun observeViewModel() {
|
||||||
with(viewModel) {
|
with(viewModel) {
|
||||||
supplierList.observe(viewLifecycleOwner) {
|
supplierList.observe(viewLifecycleOwner) { item ->
|
||||||
createSupplierList(it.list)
|
setSearchable(item.list.map {
|
||||||
|
NameWithId(
|
||||||
|
it.id!!,
|
||||||
|
it.name!!
|
||||||
|
)
|
||||||
|
} as MutableList<NameWithId>)
|
||||||
}
|
}
|
||||||
entryList.observe(viewLifecycleOwner) {
|
entryList.observe(viewLifecycleOwner) {
|
||||||
createEntryList(it.list)
|
createEntryList(it.list)
|
||||||
|
@ -162,57 +181,20 @@ class SupplierFragment(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createSupplierList(list: List<Supplier>) {
|
|
||||||
suppliers.clear()
|
|
||||||
if (list.isNotEmpty())
|
|
||||||
|
|
||||||
list.forEach { supplier ->
|
|
||||||
|
|
||||||
try {
|
|
||||||
suppliers.add(
|
|
||||||
SearchSupplierModel(
|
|
||||||
supplier.name,
|
|
||||||
supplier.id.toString(),
|
|
||||||
observation = ""
|
|
||||||
)
|
|
||||||
)
|
|
||||||
} catch (ex: Exception) {
|
|
||||||
ma.messageWithSound(
|
|
||||||
message = ex.message.toString(),
|
|
||||||
isError = true,
|
|
||||||
isPlayed = true
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createEntryList(list: List<EntrySalix>) {
|
private fun createEntryList(list: List<EntrySalix>) {
|
||||||
list.sortedBy { it.travel?.landed }
|
list.sortedBy { it.travel?.landed }
|
||||||
entries.clear()
|
entries.clear()
|
||||||
list.forEach { entry ->
|
if (list.isNotEmpty() && !list[0].isError) {
|
||||||
if (!entry.isError) {
|
setSearchableEntries(list.map { entry ->
|
||||||
|
NameWithId(
|
||||||
try {
|
entry.id!!,
|
||||||
entries.add(
|
entry.id.toString() + "->" + (entry.travel?.landed)
|
||||||
SearchSupplierModel(
|
)
|
||||||
entry.id.toString() + "->" + (entry.travel?.landed),
|
} as MutableList<NameWithId>)
|
||||||
id = entry.id.toString(),
|
entries.addAll(list.sortedBy { it.travel?.landed })
|
||||||
observation = entry.observation
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
} catch (ex: Exception) {
|
|
||||||
ma.messageWithSound(
|
|
||||||
message = ex.message.toString(),
|
|
||||||
isError = true,
|
|
||||||
isPlayed = true
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
binding.filterEntry.visibility = View.VISIBLE
|
||||||
|
|
||||||
setEntryDialog()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ class SupplierViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEntriesFromSupplier(supplier: Int) {
|
fun getEntriesFromSupplier(supplier: Number) {
|
||||||
val calendar = Calendar.getInstance()
|
val calendar = Calendar.getInstance()
|
||||||
calendar.add(Calendar.DAY_OF_YEAR, 0)
|
calendar.add(Calendar.DAY_OF_YEAR, 0)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package es.verdnatura.presentation.view.feature.paletizador.adapter
|
package es.verdnatura.presentation.view.feature.paletizador.adapter
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Log
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
@ -12,47 +11,63 @@ import es.verdnatura.presentation.common.OnComprobarPalletViewClickListener
|
||||||
import es.verdnatura.presentation.common.OnPalletClickListener
|
import es.verdnatura.presentation.common.OnPalletClickListener
|
||||||
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO
|
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO
|
||||||
import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO
|
import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO
|
||||||
import timber.log.Timber.d
|
|
||||||
|
|
||||||
class ExpeditionPalletAdapter (
|
class ExpeditionPalletAdapter(
|
||||||
private val items: List<ItemPalletVO>,
|
private val items: List<ItemPalletVO>,
|
||||||
private val onPalletClickListener: OnPalletClickListener,
|
private val onPalletClickListener: OnPalletClickListener,
|
||||||
private val onComprobarPalletViewClickListener: OnComprobarPalletViewClickListener,
|
private val onComprobarPalletViewClickListener: OnComprobarPalletViewClickListener,
|
||||||
private val itemExpeditionTruckVO: ItemExpeditionTruckVO
|
private val itemExpeditionTruckVO: ItemExpeditionTruckVO
|
||||||
): RecyclerView.Adapter<ExpeditionPalletAdapter.ItemHolder> () {
|
) : RecyclerView.Adapter<ExpeditionPalletAdapter.ItemHolder>() {
|
||||||
|
|
||||||
private var context:Context? = null
|
private var context: Context? = null
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
|
||||||
this.context = parent.context
|
this.context = parent.context
|
||||||
return ItemHolder(
|
return ItemHolder(
|
||||||
ItemExpeditionpalletRowBinding.inflate(LayoutInflater.from(parent.context),parent,false)
|
ItemExpeditionpalletRowBinding.inflate(
|
||||||
|
LayoutInflater.from(parent.context),
|
||||||
|
parent,
|
||||||
|
false
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() =items.size
|
override fun getItemCount() = items.size
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ItemHolder, position: Int) {
|
override fun onBindViewHolder(holder: ItemHolder, position: Int) {
|
||||||
holder.bind(items[position])
|
holder.bind(items[position])
|
||||||
holder.binding.root.setOnClickListener {
|
holder.binding.root.setOnClickListener {
|
||||||
onPalletClickListener.onPalletClickListener(itemExpeditionTruckVO,items[position])
|
onPalletClickListener.onPalletClickListener(itemExpeditionTruckVO, items[position])
|
||||||
}
|
}
|
||||||
holder.binding.root.setOnLongClickListener {
|
holder.binding.root.setOnLongClickListener {
|
||||||
onComprobarPalletViewClickListener.onComprobarPalletViewClickListener(itemExpeditionTruckVO,items[position])
|
onComprobarPalletViewClickListener.onComprobarPalletViewClickListener(
|
||||||
|
itemExpeditionTruckVO,
|
||||||
|
items[position]
|
||||||
|
)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ItemHolder(
|
inner class ItemHolder(
|
||||||
val binding: ItemExpeditionpalletRowBinding
|
val binding: ItemExpeditionpalletRowBinding
|
||||||
) : RecyclerView.ViewHolder(binding.root){
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
private val res = binding.root.context.resources
|
private val res = binding.root.context.resources
|
||||||
fun bind(item: ItemPalletVO) {
|
fun bind(item: ItemPalletVO) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
this.item = item
|
this.item = item
|
||||||
if (item.Rutas != 1){
|
if (item.Rutas != 1) {
|
||||||
expeditionPalletRutas.setTextColor(ContextCompat.getColor(context!!, R.color.verdnatura_red))
|
expeditionPalletRutas.setTextColor(
|
||||||
}else {
|
ContextCompat.getColor(
|
||||||
expeditionPalletRutas.setTextColor(ContextCompat.getColor(context!!, R.color.verdnatura_white))
|
context!!,
|
||||||
|
R.color.verdnatura_red
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
expeditionPalletRutas.setTextColor(
|
||||||
|
ContextCompat.getColor(
|
||||||
|
context!!,
|
||||||
|
R.color.verdnatura_white
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ class ExpeditionDeleteFragment(var title: String = "") :
|
||||||
if (binding.editMatricula.text.toString().isNotEmpty()) {
|
if (binding.editMatricula.text.toString().isNotEmpty()) {
|
||||||
try {
|
try {
|
||||||
val itemScaned = itemScanValue(
|
val itemScaned = itemScanValue(
|
||||||
textScanned_filterDouble(binding.editMatricula.text.toString()),
|
textScannedFilterDouble(binding.editMatricula.text.toString()),
|
||||||
arrayOf("expedition"),
|
arrayOf("expedition"),
|
||||||
"id"
|
"id"
|
||||||
).toString().toLong()
|
).toString().toLong()
|
||||||
|
@ -104,7 +104,7 @@ class ExpeditionDeleteFragment(var title: String = "") :
|
||||||
adapter!!.updateItems(listExpeditions.map { it.expeditionFk.toLong() } as ArrayList<Long>)
|
adapter!!.updateItems(listExpeditions.map { it.expeditionFk.toLong() } as ArrayList<Long>)
|
||||||
} else {
|
} else {
|
||||||
ma.messageWithSound(
|
ma.messageWithSound(
|
||||||
message = "Caja ya escaneada",
|
message = getString(R.string.boxScanned),
|
||||||
isError = true,
|
isError = true,
|
||||||
isPlayed = true,
|
isPlayed = true,
|
||||||
isToasted = true
|
isToasted = true
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -93,7 +93,7 @@ class ExpeditionPreparedStateFragment(var codeState: String = "PREPARED", var ti
|
||||||
if (binding.editMatricula.text.toString().isNotEmpty()) {
|
if (binding.editMatricula.text.toString().isNotEmpty()) {
|
||||||
try {
|
try {
|
||||||
val itemScaned = itemScanValue(
|
val itemScaned = itemScanValue(
|
||||||
textScanned_filterDouble(binding.editMatricula.text.toString()),
|
textScannedFilterDouble(binding.editMatricula.text.toString()),
|
||||||
arrayOf("expedition"),
|
arrayOf("expedition"),
|
||||||
"id"
|
"id"
|
||||||
).toString().toLong()
|
).toString().toLong()
|
||||||
|
|
|
@ -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 ->
|
||||||
|
|
|
@ -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(
|
||||||
|
@ -513,6 +522,14 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
|
||||||
R.drawable.ic_packaging, R.string.titlePackingHolland, R.string.titleUbicatorDescrip
|
R.drawable.ic_packaging, R.string.titlePackingHolland, R.string.titleUbicatorDescrip
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
//tarea 8099
|
||||||
|
_pasillerositem.add(
|
||||||
|
PasillerosItemVO(
|
||||||
|
R.drawable.ic_salary_supplement,
|
||||||
|
R.string.salarySupplementTitle,
|
||||||
|
R.string.salarySupplementTitle
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -520,10 +537,19 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
|
||||||
_pasillerositem.add(
|
_pasillerositem.add(
|
||||||
PasillerosItemVO(
|
PasillerosItemVO(
|
||||||
R.drawable.revision_icon,
|
R.drawable.revision_icon,
|
||||||
R.string.titleShelvingHistorical,
|
R.string.titleShelvingHistNew,
|
||||||
R.string.titleShelvingHistDescrip
|
R.string.titleShelvingHistNew
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/* _pasillerositem.add(
|
||||||
|
PasillerosItemVO(
|
||||||
|
R.drawable.revision_icon,
|
||||||
|
R.string.titleShelvingHistorical,
|
||||||
|
R.string.titleShelvingHistDescrip
|
||||||
|
)
|
||||||
|
)*/
|
||||||
|
|
||||||
_pasillerositem.add(
|
_pasillerositem.add(
|
||||||
PasillerosItemVO(
|
PasillerosItemVO(
|
||||||
R.drawable.ic_history_orange,
|
R.drawable.ic_history_orange,
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
|
@ -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))
|
||||||
|
|
|
@ -3,6 +3,7 @@ package es.verdnatura.presentation.view.feature.sacador.fragment
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.text.InputType
|
import android.text.InputType
|
||||||
|
import android.util.Log.d
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.EditorInfo
|
import android.view.inputmethod.EditorInfo
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
|
@ -242,7 +243,12 @@ class SacadorFragmentNew(
|
||||||
} else {
|
} else {
|
||||||
if (it.response.isNotBlank()) {
|
if (it.response.isNotBlank()) {
|
||||||
if (collectionsList.isNotEmpty()) {
|
if (collectionsList.isNotEmpty()) {
|
||||||
addCollectionToList(it.response.toInt())
|
try {
|
||||||
|
addCollectionToList(it.response.toInt())
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
d("vn", ex.message.toString())
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
callBack(type)
|
callBack(type)
|
||||||
}
|
}
|
||||||
|
@ -258,7 +264,6 @@ class SacadorFragmentNew(
|
||||||
}
|
}
|
||||||
|
|
||||||
"PREITEMPICKERTEST" -> {
|
"PREITEMPICKERTEST" -> {
|
||||||
println("SacadorFragmentNew sectorCollectionGET")
|
|
||||||
// viewModel.sectorCollectionGet()
|
// viewModel.sectorCollectionGet()
|
||||||
viewModel.sectorCollectionPartial()
|
viewModel.sectorCollectionPartial()
|
||||||
}
|
}
|
||||||
|
|
|
@ -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? = ""
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -89,7 +90,9 @@ class CollectionVO(
|
||||||
var errorMessage: String = "",
|
var errorMessage: String = "",
|
||||||
var itemPackingTypeFk: String = "",
|
var itemPackingTypeFk: String = "",
|
||||||
var rgb: String? = null,
|
var rgb: String? = null,
|
||||||
var ticketTotalCount: Int? = null
|
var ticketTotalCount: Int? = null,
|
||||||
|
var parkingCode: String? = null,
|
||||||
|
var idAdvanced: Boolean? = null
|
||||||
)
|
)
|
||||||
|
|
||||||
class CollectionSalix(
|
class CollectionSalix(
|
||||||
|
@ -110,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 = "",
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -154,7 +159,7 @@ class SaleVO(
|
||||||
var cel1: String = "",
|
var cel1: String = "",
|
||||||
var cel2: String = "",
|
var cel2: String = "",
|
||||||
var cel3: String = "",
|
var cel3: String = "",
|
||||||
var saleGroupFk: String = "",
|
var saleGroupFk: String? = "",
|
||||||
var picked: String? = "",
|
var picked: String? = "",
|
||||||
var isParent: Boolean = false,
|
var isParent: Boolean = false,
|
||||||
var totalSales: Int = 0,
|
var totalSales: Int = 0,
|
||||||
|
@ -162,7 +167,9 @@ class SaleVO(
|
||||||
var code: String? = "",
|
var code: String? = "",
|
||||||
var hasMistake: Any? = false,
|
var hasMistake: Any? = false,
|
||||||
var sectorFk: Int? = null,
|
var sectorFk: Int? = null,
|
||||||
var packingChecked: Int = 1
|
var packingChecked: Int = 1,
|
||||||
|
var isAdvanced: Int? = 0,
|
||||||
|
var parkingCode: String? = ""
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -173,10 +180,14 @@ 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 parkingCode: String? = ""
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
data class CollectionIdSalix(
|
data class CollectionIdSalix(
|
||||||
var id: Int
|
var id: Int
|
||||||
|
@ -273,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(
|
||||||
|
@ -286,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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -86,7 +86,7 @@ class AutomaticAddItemFragment(
|
||||||
listItems.add(
|
listItems.add(
|
||||||
0,
|
0,
|
||||||
itemScanValue(
|
itemScanValue(
|
||||||
textScanned_filterDouble(binding.editMatricula.text.toString()),
|
textScannedFilterDouble(binding.editMatricula.text.toString()),
|
||||||
arrayOf("buy"),
|
arrayOf("buy"),
|
||||||
"more"
|
"more"
|
||||||
).toString().toLong()
|
).toString().toLong()
|
||||||
|
@ -161,7 +161,7 @@ class AutomaticAddItemFragment(
|
||||||
customDialogList.setDescription(
|
customDialogList.setDescription(
|
||||||
getString(R.string.scanShelvingsLocate)
|
getString(R.string.scanShelvingsLocate)
|
||||||
).setOkButton(getString(R.string.locate)) {
|
).setOkButton(getString(R.string.locate)) {
|
||||||
|
listItems.clear()
|
||||||
listShelvings.forEach {
|
listShelvings.forEach {
|
||||||
viewModel.itemShelvingMakeMulti(
|
viewModel.itemShelvingMakeMulti(
|
||||||
it.code!!,
|
it.code!!,
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -15,6 +15,7 @@ import android.widget.Toast
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.FragmentUbicadorBinding
|
import es.verdnatura.databinding.FragmentUbicadorBinding
|
||||||
|
import es.verdnatura.domain.ConstAndValues
|
||||||
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
|
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
|
||||||
import es.verdnatura.domain.isShelving
|
import es.verdnatura.domain.isShelving
|
||||||
import es.verdnatura.domain.notNull
|
import es.verdnatura.domain.notNull
|
||||||
|
@ -27,7 +28,9 @@ 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.itemScanValue
|
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.component.CustomDialogInput
|
import es.verdnatura.presentation.view.component.CustomDialogInput
|
||||||
|
@ -39,6 +42,10 @@ 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
|
||||||
|
|
||||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||||
class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewModel>(
|
class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewModel>(
|
||||||
|
@ -117,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
|
||||||
|
@ -125,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()
|
||||||
}
|
}
|
||||||
|
@ -137,7 +144,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
} else {
|
} else {
|
||||||
GONE
|
GONE
|
||||||
}
|
}
|
||||||
|
setIcons(!showIcons)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setDialogs() {
|
private fun setDialogs() {
|
||||||
|
@ -216,19 +223,22 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
override fun onOptionsItemSelected(item: Drawable) {
|
override fun onOptionsItemSelected(item: Drawable) {
|
||||||
|
|
||||||
when (item) {
|
when (item) {
|
||||||
iconAdd.drawable -> showAddItemNew(
|
iconAdd.drawable -> {
|
||||||
isEditItem = false, null
|
showAddItemNew(
|
||||||
)
|
isEditItem = false, null
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
iconAddMultiple.drawable ->
|
iconAddMultiple.drawable -> {
|
||||||
ma.onPasillerosItemClickListener(
|
ma.onPasillerosItemClickListener(
|
||||||
PasillerosItemVO(
|
PasillerosItemVO(
|
||||||
title = R.string.addItemMultipleShelving,
|
title = R.string.addItemMultipleShelving,
|
||||||
), entryPoint = getString(R.string.addItemMultipleShelving)
|
), entryPoint = getString(R.string.addItemMultipleShelving)
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
iconReload.drawable -> {
|
iconReload.drawable -> {
|
||||||
|
listItems.clear()
|
||||||
if (shelvingFk.isNotBlank()) {
|
if (shelvingFk.isNotBlank()) {
|
||||||
binding.editPrioridad.setText("")
|
binding.editPrioridad.setText("")
|
||||||
viewModel.itemShelvingListNew(
|
viewModel.itemShelvingListNew(
|
||||||
|
@ -247,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()
|
||||||
|
@ -282,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())
|
||||||
) {
|
) {
|
||||||
|
@ -339,6 +350,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
|
|
||||||
|
|
||||||
binding.automaticImg.setOnClickListener {
|
binding.automaticImg.setOnClickListener {
|
||||||
|
|
||||||
if (shelvingFk.isNotBlank()) ma.onPasillerosItemClickListener(
|
if (shelvingFk.isNotBlank()) ma.onPasillerosItemClickListener(
|
||||||
PasillerosItemVO(title = R.string.titleAuto), entryPoint = shelvingFk
|
PasillerosItemVO(title = R.string.titleAuto), entryPoint = shelvingFk
|
||||||
)
|
)
|
||||||
|
@ -420,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(
|
||||||
|
//Tarea 7920
|
||||||
|
listItems[0].shelvingFk?.toString() ?: shelvingFk
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
viewModel.clearShelvingList(
|
|
||||||
shelvingFk
|
|
||||||
)
|
|
||||||
listItems.forEach {
|
listItems.forEach {
|
||||||
it.stickers = 0
|
it.stickers = 0
|
||||||
it.visible = 0
|
it.visible = 0
|
||||||
|
@ -454,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() {
|
||||||
viewModel.shelvingChangeSalix(
|
|
||||||
shelvingFk, customDialogInput.getValue()
|
//Tarea 7920
|
||||||
)
|
if (listItems.isNotEmpty() && listItems[0].shelvingFk == null) {
|
||||||
|
viewModel.shelvingChangeSalix(
|
||||||
|
shelvingFk, customDialogInput.getValue()
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
viewModel.getShelvingFkFromCode(
|
||||||
|
listItems[0].shelvingFk!!, customDialogInput.getValue()
|
||||||
|
)
|
||||||
|
}
|
||||||
shelvingFk = customDialogInput.getValue()
|
shelvingFk = customDialogInput.getValue()
|
||||||
|
|
||||||
customDialogInput.dismiss()
|
customDialogInput.dismiss()
|
||||||
|
@ -519,21 +542,28 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
with(viewModel) {
|
with(viewModel) {
|
||||||
|
|
||||||
loadShelvingListNew.observe(viewLifecycleOwner) { event ->
|
loadShelvingListNew.observe(viewLifecycleOwner) { event ->
|
||||||
event.getContentIfNotHandled().notNull {
|
listItems.clear()
|
||||||
|
event.getContentIfNotHandled().notNull { it ->
|
||||||
if (isShelvinLogfromMainScreen) {
|
if (isShelvinLogfromMainScreen) {
|
||||||
viewModel.shelvingLogAdd(shelvingFk)
|
viewModel.shelvingLogAdd(shelvingFk)
|
||||||
}
|
}
|
||||||
listItems = ArrayList()
|
|
||||||
val totalStickers = it.list.sumOf { item -> item.stickers }
|
|
||||||
parking = it.list.firstOrNull { item -> item.code != null }?.code ?: ""
|
|
||||||
listItems.addAll(it.list)
|
listItems.addAll(it.list)
|
||||||
|
listItems.forEach { item ->
|
||||||
|
if (item.description.isNullOrEmpty()) {
|
||||||
|
item.description =
|
||||||
|
item.longName ?: "${item.name ?: ""} ${item.size ?: ""}"
|
||||||
|
}
|
||||||
|
item.stickers =
|
||||||
|
if (item.packing == null) 0 else ceil((item.visible.toDouble() / item.packing!!.toDouble())).toInt()
|
||||||
|
}
|
||||||
|
val totalStickers = listItems.sumOf { item -> item.stickers }
|
||||||
|
parking = it.list.firstOrNull { item -> item.code != null }?.code ?: ""
|
||||||
|
|
||||||
binding.mainToolbar.toolbarTitle.text =
|
binding.mainToolbar.toolbarTitle.text =
|
||||||
shelvingFk.uppercase() + getString(R.string.pUppercase) + parking + getString(
|
shelvingFk.uppercase() + getString(R.string.pUppercase) + parking + getString(
|
||||||
R.string.label
|
R.string.label
|
||||||
) + totalStickers
|
) + totalStickers
|
||||||
if (listItems.isNotEmpty()) binding.editPrioridad.setText(it.list[0].priority.toString())
|
if (listItems.isNotEmpty()) binding.editPrioridad.setText(listItems[0].priority?.toString())
|
||||||
|
|
||||||
if (!binding.mainToolbar.switchButton.isChecked && listItems.isNotEmpty()) {
|
if (!binding.mainToolbar.switchButton.isChecked && listItems.isNotEmpty()) {
|
||||||
listItems = listItems.asReversed()
|
listItems = listItems.asReversed()
|
||||||
|
@ -572,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 {
|
||||||
|
@ -649,7 +683,13 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
}.show()
|
}.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
loadBuyUltimateResponse.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
ma.messageWithSound(
|
||||||
|
getString(R.string.errorPrintBuy), isError = true, isPlayed = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -759,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 {
|
||||||
|
@ -842,6 +881,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
customDialogUbicador.getPackingValue().toIntOrNull()
|
customDialogUbicador.getPackingValue().toIntOrNull()
|
||||||
|
|
||||||
) else {
|
) else {
|
||||||
|
|
||||||
viewModel.itemShelvingAdd(
|
viewModel.itemShelvingAdd(
|
||||||
shelving = shelvingFk,
|
shelving = shelvingFk,
|
||||||
item = customDialogUbicador.getItemValue().toLong(),
|
item = customDialogUbicador.getItemValue().toLong(),
|
||||||
|
@ -1031,7 +1071,6 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
if (!isAutoSelf) {
|
if (!isAutoSelf) {
|
||||||
listItems.remove(item)
|
listItems.remove(item)
|
||||||
adapter!!.notifyItemRemoved(listItems.indexOf(item))
|
adapter!!.notifyItemRemoved(listItems.indexOf(item))
|
||||||
//adapter!!.notifyDataSetChanged()
|
|
||||||
viewModel.itemShelvingDelete(
|
viewModel.itemShelvingDelete(
|
||||||
item.id
|
item.id
|
||||||
)
|
)
|
||||||
|
@ -1049,7 +1088,46 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
customDialogTwoButtons.dismiss()
|
customDialogTwoButtons.dismiss()
|
||||||
}
|
}
|
||||||
customDialogConfirm.show()
|
customDialogConfirm.show()
|
||||||
}//Tarea 7763
|
}
|
||||||
|
//Tarea 7266
|
||||||
|
.setOkButtonThree(getString(R.string.print)) {
|
||||||
|
val printerDialogManager = PrinterDialogManager(requireContext())
|
||||||
|
printerDialogManager.showPrintDialog(
|
||||||
|
item.item,
|
||||||
|
item.description ?: ""
|
||||||
|
) { id, labelType, packing, copies ->
|
||||||
|
|
||||||
|
if (item.buyFk == null) {
|
||||||
|
viewModel.buyUltimate(
|
||||||
|
itemFk = item.id,
|
||||||
|
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
|
||||||
|
WAREHOUSEFK
|
||||||
|
),
|
||||||
|
dated = LocalDate.now()
|
||||||
|
.format(
|
||||||
|
DateTimeFormatter.ofPattern("yyyy-dd-MM")
|
||||||
|
),
|
||||||
|
reportName = "LabelBuy",
|
||||||
|
printerFk = mobileApplication.dataStoreApp.readDataStoreKey<Int>(
|
||||||
|
ConstAndValues.PRINTERFK
|
||||||
|
),
|
||||||
|
userFk = mobileApplication.userId!!,
|
||||||
|
priority = "normal",
|
||||||
|
copies = copies,
|
||||||
|
labelType = labelType,
|
||||||
|
packing = packing
|
||||||
|
)
|
||||||
|
customDialogTwoButtons.dismiss()
|
||||||
|
} else {
|
||||||
|
printItem(
|
||||||
|
item.buyFk!!, labelType, packing, copies
|
||||||
|
)
|
||||||
|
customDialogTwoButtons.dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
customDialogInput.getEditText().requestFocus()
|
||||||
|
}
|
||||||
|
//Tarea 7763
|
||||||
/*
|
/*
|
||||||
.setOkButtonThree(getString(R.string.rename)) {
|
.setOkButtonThree(getString(R.string.rename)) {
|
||||||
customDialogInput.setTitle(getString(R.string.itemNew))
|
customDialogInput.setTitle(getString(R.string.itemNew))
|
||||||
|
@ -1080,6 +1158,29 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
||||||
customDialogTwoButtons.show()
|
customDialogTwoButtons.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun printItem(id: Number?, labelType: String, packing: Int?, copies: Int?) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
viewModel.printItem(
|
||||||
|
reportName = "LabelBuy",
|
||||||
|
printerFk = mobileApplication.dataStoreApp.readDataStoreKey<Int>(
|
||||||
|
ConstAndValues.PRINTERFK
|
||||||
|
),
|
||||||
|
userFk = mobileApplication.userId!!,
|
||||||
|
priority = "normal",
|
||||||
|
params = JSONObject().apply {
|
||||||
|
put("copies", copies)
|
||||||
|
put("id", id)
|
||||||
|
put("labelType", labelType)
|
||||||
|
put("packing", packing)
|
||||||
|
}.toString().replace("\"", "\\\"")
|
||||||
|
)
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
|
||||||
|
}
|
||||||
|
hideKeyboard()
|
||||||
|
}
|
||||||
|
|
||||||
private fun actionRename(item: ItemUbicador, itemScan: String) {
|
private fun actionRename(item: ItemUbicador, itemScan: String) {
|
||||||
|
|
||||||
if (itemScan.isNotEmpty()) {
|
if (itemScan.isNotEmpty()) {
|
||||||
|
@ -1108,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(),
|
||||||
|
|
|
@ -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
|
||||||
|
@ -9,9 +10,9 @@ import es.verdnatura.R
|
||||||
import es.verdnatura.domain.SalixCallback
|
import es.verdnatura.domain.SalixCallback
|
||||||
import es.verdnatura.domain.formatWithQuotes
|
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.presentation.base.BaseViewModel
|
import es.verdnatura.presentation.base.BaseViewModel
|
||||||
import es.verdnatura.presentation.base.getMessageFromAllResponse
|
import es.verdnatura.presentation.common.Action
|
||||||
import es.verdnatura.presentation.base.nameofFunction
|
|
||||||
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
|
||||||
|
@ -22,16 +23,15 @@ 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.ItemUbicadorListVO
|
import es.verdnatura.presentation.view.feature.ubicador.model.ShelvingItem
|
||||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
|
|
||||||
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
|
||||||
|
|
||||||
class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
||||||
|
private val printItemUseCase = GetItemPrintItemUseCase(salix)
|
||||||
private val _shelvingList by lazy { MutableLiveData<ItemUbicadorListVO>() }
|
|
||||||
|
|
||||||
private val _responseUbicator by lazy { MutableLiveData<Boolean>() }
|
private val _responseUbicator by lazy { MutableLiveData<Boolean>() }
|
||||||
val responseUbicator: LiveData<Boolean>
|
val responseUbicator: LiveData<Boolean>
|
||||||
|
@ -43,12 +43,18 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
val loadResponseHasOlder: LiveData<Event<ResponseHasOlder>> =
|
val loadResponseHasOlder: LiveData<Event<ResponseHasOlder>> =
|
||||||
_responseHasOlder.map { Event(it) }
|
_responseHasOlder.map { Event(it) }
|
||||||
|
|
||||||
val loadShelvingList: LiveData<Event<ItemUbicadorListVO>> = _shelvingList.map { Event(it) }
|
|
||||||
|
|
||||||
private val _shelvingListNew by lazy { MutableLiveData<ItemUbicadorListNew>() }
|
private val _shelvingListNew by lazy { MutableLiveData<ItemUbicadorListNew>() }
|
||||||
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) }
|
||||||
|
@ -65,45 +71,24 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
|
|
||||||
private val _responseAddList by lazy { MutableLiveData<Boolean>() }
|
private val _responseAddList by lazy { MutableLiveData<Boolean>() }
|
||||||
val responseAddList: LiveData<Boolean> = _responseAddList
|
val responseAddList: LiveData<Boolean> = _responseAddList
|
||||||
|
|
||||||
val loadAddList: LiveData<Event<Boolean>> = _responseAddList.map { Event(it) }
|
val loadAddList: LiveData<Event<Boolean>> = _responseAddList.map { Event(it) }
|
||||||
|
|
||||||
private val _responseLogAdd by lazy { MutableLiveData<Any>() }
|
private val _responseLogAdd by lazy { MutableLiveData<Any>() }
|
||||||
val responseLogAdd: LiveData<Any>
|
val responseLogAdd: LiveData<Any>
|
||||||
get() = _responseLogAdd
|
get() = _responseLogAdd
|
||||||
|
|
||||||
fun itemShelvingList(
|
private val _buyUltimateResponse by lazy { MutableLiveData<Boolean>() }
|
||||||
vShelvingFk: String
|
val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse
|
||||||
) {
|
val loadBuyUltimateResponse: LiveData<Event<Boolean>> = _buyUltimateResponse.map { Event(it) }
|
||||||
salix.itemShelvingList(params = listOf(vShelvingFk.uppercase()).formatWithQuotes()).enqueue(
|
|
||||||
object : SalixCallback<List<ItemUbicadorVO>>(context) {
|
|
||||||
override fun onSuccess(response: Response<List<ItemUbicadorVO>>) {
|
|
||||||
_shelvingList.value = response.body()?.let { ItemUbicadorListVO(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onError(t: Throwable) {
|
private val _getParkingResponse by lazy { MutableLiveData<Boolean>() }
|
||||||
val listError: ArrayList<ItemUbicadorVO> = ArrayList()
|
val getParkingResponse: LiveData<Boolean> = _getParkingResponse
|
||||||
listError.add(
|
val loadGetParkingResponse: LiveData<Event<Boolean>> = _getParkingResponse.map { Event(it) }
|
||||||
ItemUbicadorVO(
|
|
||||||
0,
|
|
||||||
isError = true,
|
|
||||||
errorMessage = getMessageFromAllResponse(
|
|
||||||
nameofFunction(this),
|
|
||||||
t.message!!,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
_shelvingList.value = ItemUbicadorListVO(listError)
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun itemShelvingListNew(
|
fun itemShelvingListNew(
|
||||||
vShelvingFk: String
|
shelvingFk: String
|
||||||
) {
|
) {
|
||||||
salix.itemShelvingListNew(params = listOf(vShelvingFk.uppercase()).formatWithQuotes())
|
salix.itemShelvingListNew(params = listOf(shelvingFk.uppercase()).formatWithQuotes())
|
||||||
.enqueue(
|
.enqueue(
|
||||||
object : SalixCallback<List<ItemUbicador>>(context) {
|
object : SalixCallback<List<ItemUbicador>>(context) {
|
||||||
override fun onSuccess(response: Response<List<ItemUbicador>>) {
|
override fun onSuccess(response: Response<List<ItemUbicador>>) {
|
||||||
|
@ -114,6 +99,48 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Tarea 6869
|
||||||
|
fun itemShelvingGet(
|
||||||
|
shelvingCode: String
|
||||||
|
) {
|
||||||
|
salix.shelvingGet(
|
||||||
|
filter = """{
|
||||||
|
"fields":
|
||||||
|
["priority","parkingFk","code","id"],
|
||||||
|
"include":[
|
||||||
|
{"relation":"parking",
|
||||||
|
"scope":{"fields":["code"]}},
|
||||||
|
{"relation":"itemShelving",
|
||||||
|
"scope":{"fields":["id","itemFk","visible","packing","grouping","isChecked","available","buyFk","shelvingFk"],
|
||||||
|
"include":
|
||||||
|
{"relation":"item",
|
||||||
|
"scope":{"fields":["name","longName","size"]}}}}],
|
||||||
|
"where":{"code":"$shelvingCode"}}""".trim()
|
||||||
|
).enqueue(
|
||||||
|
object : SalixCallback<ShelvingItem>(context) {
|
||||||
|
override fun onSuccess(response: Response<ShelvingItem>) {
|
||||||
|
_shelvingGet.value = response.body()
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getImageConfig(
|
||||||
|
) {
|
||||||
|
salix.getImageConfig(
|
||||||
|
).enqueue(
|
||||||
|
object : SalixCallback<JsonObject>(context) {
|
||||||
|
override fun onSuccess(response: Response<JsonObject>) {
|
||||||
|
|
||||||
|
_imageConfig.value =
|
||||||
|
response.body()!!.entrySet().first().value.asString
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun shelvingPriorityUpdate(
|
fun shelvingPriorityUpdate(
|
||||||
priority: Int, shelving: String
|
priority: Int, shelving: String
|
||||||
|
|
||||||
|
@ -222,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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,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
|
||||||
|
|
||||||
|
@ -266,7 +398,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun itemShelvingDeleteChecked(
|
fun itemShelvingDeleteChecked(
|
||||||
vShelvingFk: String
|
vShelvingFk: Number
|
||||||
|
|
||||||
) {
|
) {
|
||||||
salix.itemShelvingsUpdate(
|
salix.itemShelvingsUpdate(
|
||||||
|
@ -310,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
@ -369,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)
|
||||||
|
@ -382,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
|
||||||
|
@ -406,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
|
||||||
|
@ -430,6 +605,72 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun printItem(
|
||||||
|
reportName: String,
|
||||||
|
printerFk: Int,
|
||||||
|
userFk: Int,
|
||||||
|
params: Any,
|
||||||
|
priority: String
|
||||||
|
|
||||||
|
) {
|
||||||
|
|
||||||
|
printItemUseCase.execute(
|
||||||
|
params = arrayListOf(
|
||||||
|
reportName,
|
||||||
|
printerFk,
|
||||||
|
userFk,
|
||||||
|
params,
|
||||||
|
priority
|
||||||
|
).formatWithQuotes()
|
||||||
|
)
|
||||||
|
.enqueue(object : SalixCallback<Unit>(context) {
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buyUltimate(
|
||||||
|
itemFk: Number,
|
||||||
|
warehouseFk: Int,
|
||||||
|
dated: String,
|
||||||
|
reportName: String,
|
||||||
|
printerFk: Int,
|
||||||
|
priority: String,
|
||||||
|
userFk: Int,
|
||||||
|
copies: Int,
|
||||||
|
labelType: String,
|
||||||
|
packing: Int?
|
||||||
|
|
||||||
|
) {
|
||||||
|
printItemUseCase.executeBuyUltimate(
|
||||||
|
params = arrayListOf(
|
||||||
|
itemFk,
|
||||||
|
warehouseFk,
|
||||||
|
dated
|
||||||
|
).formatWithQuotes()
|
||||||
|
)
|
||||||
|
.enqueue(object : SalixCallback<Long>(context) {
|
||||||
|
override fun onSuccess(response: Response<Long>) {
|
||||||
|
|
||||||
|
if (response.body() == null) _buyUltimateResponse.value = false
|
||||||
|
else {
|
||||||
|
val params =
|
||||||
|
JSONObject().apply {
|
||||||
|
put("copies", copies)
|
||||||
|
put("id", response.body())
|
||||||
|
put("labelType", labelType)
|
||||||
|
put("packing", packing)
|
||||||
|
}.toString().replace("\"", "\\\"")
|
||||||
|
printItem(
|
||||||
|
reportName = reportName,
|
||||||
|
printerFk = printerFk,
|
||||||
|
priority = priority,
|
||||||
|
userFk = userFk,
|
||||||
|
params = params
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
fun itemShelvingMakeMulti(
|
fun itemShelvingMakeMulti(
|
||||||
shelvingFk: String, items: List<Long>, warehouseFk: Int
|
shelvingFk: String, items: List<Long>, warehouseFk: Int
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -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,12 +19,16 @@ 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(
|
||||||
var item: Long,
|
var item: Long,
|
||||||
var description: String = "",
|
var description: String? = null,
|
||||||
|
var size: Int? = null,
|
||||||
|
var name: String? = null,
|
||||||
|
var longName: String? = null,
|
||||||
var visible: Int = 0,
|
var visible: Int = 0,
|
||||||
var stickers: Int = 0,
|
var stickers: Int = 0,
|
||||||
var packing: Int? = null,
|
var packing: Int? = null,
|
||||||
|
@ -30,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,
|
||||||
|
@ -39,8 +45,10 @@ class ItemUbicador(
|
||||||
var isNew: Boolean = false,
|
var isNew: Boolean = false,
|
||||||
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,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
class ItemEscanerVO(
|
class ItemEscanerVO(
|
||||||
var item: Long
|
var item: Long
|
||||||
|
@ -55,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(
|
||||||
|
@ -71,4 +87,41 @@ data class ItemBuy(
|
||||||
val grouping: Int?,
|
val grouping: Int?,
|
||||||
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?
|
||||||
|
)
|
||||||
|
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.widget.addTextChangedListener
|
import androidx.core.widget.addTextChangedListener
|
||||||
import androidx.lifecycle.lifecycleScope
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import es.verdnatura.R
|
import es.verdnatura.R
|
||||||
import es.verdnatura.databinding.FragmentWorkermistakeBinding
|
import es.verdnatura.databinding.FragmentWorkermistakeBinding
|
||||||
|
@ -15,23 +14,19 @@ import es.verdnatura.presentation.base.BaseFragment
|
||||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||||
import es.verdnatura.presentation.common.OnMistakeWorkerClickListener
|
import es.verdnatura.presentation.common.OnMistakeWorkerClickListener
|
||||||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||||
|
import es.verdnatura.presentation.view.commom.NameWithId
|
||||||
|
import es.verdnatura.presentation.view.commom.SearchableAdapter
|
||||||
import es.verdnatura.presentation.view.component.CustomDialog
|
import es.verdnatura.presentation.view.component.CustomDialog
|
||||||
import es.verdnatura.presentation.view.component.CustomDialogInput
|
import es.verdnatura.presentation.view.component.CustomDialogInput
|
||||||
import es.verdnatura.presentation.view.component.CustomDialogList
|
import es.verdnatura.presentation.view.component.CustomDialogList
|
||||||
import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter
|
import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter
|
||||||
import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
|
import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
|
||||||
import es.verdnatura.presentation.view.feature.inventario.fragment.InventaryViewModel
|
import es.verdnatura.presentation.view.feature.inventario.fragment.InventaryViewModel
|
||||||
import es.verdnatura.presentation.view.feature.inventario.fragment.SearchDepartmentModel
|
|
||||||
import es.verdnatura.presentation.view.feature.workermistake.adapter.WorkermistakeAdapter
|
import es.verdnatura.presentation.view.feature.workermistake.adapter.WorkermistakeAdapter
|
||||||
import es.verdnatura.presentation.view.feature.workermistake.model.DepartmentMistake
|
|
||||||
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
|
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
|
||||||
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
|
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
|
||||||
import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
|
||||||
class WorkermistakeFragment(
|
class WorkermistakeFragment(
|
||||||
var entryPoint: String = ""
|
var entryPoint: String = ""
|
||||||
|
|
||||||
|
@ -49,7 +44,6 @@ class WorkermistakeFragment(
|
||||||
private var listMistakes: ArrayList<BarcodeVO> = ArrayList()
|
private var listMistakes: ArrayList<BarcodeVO> = ArrayList()
|
||||||
private var listMistakesAdapter: BarcodeAdapter? = null
|
private var listMistakesAdapter: BarcodeAdapter? = null
|
||||||
private var workerMistakeName: WorkerFromMistake? = null
|
private var workerMistakeName: WorkerFromMistake? = null
|
||||||
private val departments = ArrayList<SearchDepartmentModel>()
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance(entryPoint: String) = WorkermistakeFragment(entryPoint)
|
fun newInstance(entryPoint: String) = WorkermistakeFragment(entryPoint)
|
||||||
|
@ -83,32 +77,8 @@ class WorkermistakeFragment(
|
||||||
|
|
||||||
customDialogList = CustomDialogList(requireContext())
|
customDialogList = CustomDialogList(requireContext())
|
||||||
binding.filterDepartment.setOnClickListener {
|
binding.filterDepartment.setOnClickListener {
|
||||||
SimpleSearchDialogCompat(
|
binding.searchableRecyclerView.visibility = View.VISIBLE
|
||||||
context,
|
binding.searchableRecyclerView.setSearchHint(getString(R.string.departamentSearch))
|
||||||
getString(R.string.departamentos),
|
|
||||||
getString(R.string.escribirparteNombre),
|
|
||||||
null,
|
|
||||||
departments
|
|
||||||
) { baseSearchDialogCompat, nombre, position ->
|
|
||||||
|
|
||||||
binding.filterDepartment.text = (nombre.title)
|
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
DEPARTMENTMISTAKE,
|
|
||||||
nombre.getDepartmentName()
|
|
||||||
)
|
|
||||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
|
||||||
DEPARTMENTMISTAKEID,
|
|
||||||
nombre.getDepartmentId()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
viewModel.workerGetFromHasMistake(
|
|
||||||
nombre.getDepartmentId()
|
|
||||||
)
|
|
||||||
binding.filterItemFk.isEnabled = true
|
|
||||||
baseSearchDialogCompat.dismiss()
|
|
||||||
}.show()
|
|
||||||
}
|
}
|
||||||
customDialogInput = CustomDialogInput(requireContext())
|
customDialogInput = CustomDialogInput(requireContext())
|
||||||
customDialog = CustomDialog(requireContext())
|
customDialog = CustomDialog(requireContext())
|
||||||
|
@ -122,6 +92,36 @@ class WorkermistakeFragment(
|
||||||
binding.mainToolbar.toolbarTitle.text = entryPoint
|
binding.mainToolbar.toolbarTitle.text = entryPoint
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setSearchable(listNames: MutableList<NameWithId>) {
|
||||||
|
|
||||||
|
val adapter =
|
||||||
|
SearchableAdapter(
|
||||||
|
listElements = listNames,
|
||||||
|
context = requireContext()
|
||||||
|
) { elementSelected ->
|
||||||
|
|
||||||
|
runBlocking {
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
DEPARTMENTMISTAKE,
|
||||||
|
elementSelected.name
|
||||||
|
)
|
||||||
|
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||||
|
DEPARTMENTMISTAKEID,
|
||||||
|
elementSelected.id
|
||||||
|
)
|
||||||
|
viewModel.workerGetFromHasMistake(
|
||||||
|
elementSelected.id
|
||||||
|
)
|
||||||
|
}
|
||||||
|
binding.filterDepartment.text = elementSelected.name
|
||||||
|
binding.searchableRecyclerView.visibility = View.GONE
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.searchableRecyclerView.setAdapter(adapter, listNames)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private fun setEvents() {
|
private fun setEvents() {
|
||||||
binding.mainToolbar.backButton.setOnClickListener {
|
binding.mainToolbar.backButton.setOnClickListener {
|
||||||
ma.onMyBackPressed()
|
ma.onMyBackPressed()
|
||||||
|
@ -151,7 +151,12 @@ class WorkermistakeFragment(
|
||||||
override fun observeViewModel() {
|
override fun observeViewModel() {
|
||||||
with(viewModel) {
|
with(viewModel) {
|
||||||
mistakeDepartmentList.observe(viewLifecycleOwner) {
|
mistakeDepartmentList.observe(viewLifecycleOwner) {
|
||||||
createDepartmentList(it.list)
|
setSearchable(it.list.map { item ->
|
||||||
|
NameWithId(
|
||||||
|
id = item.id,
|
||||||
|
name = item.name
|
||||||
|
)
|
||||||
|
} as MutableList<NameWithId>)
|
||||||
}
|
}
|
||||||
workerFromMistakeList.observe(viewLifecycleOwner) {
|
workerFromMistakeList.observe(viewLifecycleOwner) {
|
||||||
createWorkerList(it.list)
|
createWorkerList(it.list)
|
||||||
|
@ -214,32 +219,20 @@ class WorkermistakeFragment(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createDepartmentList(list: List<DepartmentMistake>) {
|
|
||||||
departments.clear()
|
|
||||||
list.forEach { department ->
|
|
||||||
try {
|
|
||||||
departments.add(SearchDepartmentModel(department.name, department.id))
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.message!!.toast(requireContext())
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createWorkerList(list: List<WorkerFromMistake>) {
|
private fun createWorkerList(list: List<WorkerFromMistake>) {
|
||||||
listWorker.clear()
|
try {
|
||||||
|
listWorker.apply {
|
||||||
list.forEach { worker ->
|
clear()
|
||||||
try {
|
addAll(list)
|
||||||
listWorker.add(worker)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.message!!.toast(requireContext())
|
|
||||||
}
|
}
|
||||||
|
listWorkerAuxiliary.apply {
|
||||||
|
clear()
|
||||||
|
addAll(listWorker)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.message?.toast(requireContext())
|
||||||
}
|
}
|
||||||
listWorkerAuxiliary.clear()
|
|
||||||
listWorkerAuxiliary.addAll(listWorker)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ data class ExpeditionMistakeSalix(
|
||||||
)
|
)
|
||||||
|
|
||||||
data class DepartmentMistake(
|
data class DepartmentMistake(
|
||||||
var id: Int? = null,
|
var id: Int,
|
||||||
var name: String = ""
|
var name: String
|
||||||
)
|
)
|
||||||
|
|
||||||
data class WorkerFromMistake(
|
data class WorkerFromMistake(
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="960"
|
||||||
|
android:viewportHeight="960"
|
||||||
|
android:tint="?attr/colorPrimary">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M200,880Q167,880 143.5,856.5Q120,833 120,800L120,240Q120,207 143.5,183.5Q167,160 200,160L240,160L240,80L320,80L320,160L640,160L640,80L720,80L720,160L760,160Q793,160 816.5,183.5Q840,207 840,240L840,800Q840,833 816.5,856.5Q793,880 760,880L200,880ZM200,800L760,800Q760,800 760,800Q760,800 760,800L760,400L200,400L200,800Q200,800 200,800Q200,800 200,800ZM200,320L760,320L760,240Q760,240 760,240Q760,240 760,240L200,240Q200,240 200,240Q200,240 200,240L200,320ZM200,320L200,240Q200,240 200,240Q200,240 200,240L200,240Q200,240 200,240Q200,240 200,240L200,320ZM480,560Q463,560 451.5,548.5Q440,537 440,520Q440,503 451.5,491.5Q463,480 480,480Q497,480 508.5,491.5Q520,503 520,520Q520,537 508.5,548.5Q497,560 480,560ZM320,560Q303,560 291.5,548.5Q280,537 280,520Q280,503 291.5,491.5Q303,480 320,480Q337,480 348.5,491.5Q360,503 360,520Q360,537 348.5,548.5Q337,560 320,560ZM640,560Q623,560 611.5,548.5Q600,537 600,520Q600,503 611.5,491.5Q623,480 640,480Q657,480 668.5,491.5Q680,503 680,520Q680,537 668.5,548.5Q657,560 640,560ZM480,720Q463,720 451.5,708.5Q440,697 440,680Q440,663 451.5,651.5Q463,640 480,640Q497,640 508.5,651.5Q520,663 520,680Q520,697 508.5,708.5Q497,720 480,720ZM320,720Q303,720 291.5,708.5Q280,697 280,680Q280,663 291.5,651.5Q303,640 320,640Q337,640 348.5,651.5Q360,663 360,680Q360,697 348.5,708.5Q337,720 320,720ZM640,720Q623,720 611.5,708.5Q600,697 600,680Q600,663 611.5,651.5Q623,640 640,640Q657,640 668.5,651.5Q680,663 680,680Q680,697 668.5,708.5Q657,720 640,720Z"/>
|
||||||
|
</vector>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue