Compare commits
74 Commits
Author | SHA1 | Date |
---|---|---|
|
180c7bba8e | |
|
a4a9b1aa18 | |
|
daaf954def | |
|
f91a97e5e9 | |
|
07027e8a8c | |
|
f94cee238e | |
|
e6fc241e92 | |
|
64f2b9582e | |
|
b0dea86050 | |
|
3109611794 | |
|
86af06b3ce | |
|
19adf86f9f | |
|
8aa5a3b01a | |
|
241bd26b1f | |
|
88ef5230f9 | |
|
01aa6eaab6 | |
|
9e23313c3b | |
|
b6ad9a9122 | |
|
25cec0a709 | |
|
b4f811b7b8 | |
|
32edc951f2 | |
|
7e738a50d8 | |
|
8b101d5625 | |
|
40dedad49f | |
|
f16bb64b49 | |
|
a1c01d1154 | |
|
969660ae77 | |
|
d4a7789101 | |
|
442820db4e | |
|
7bde4f2939 | |
|
7a2249b6ce | |
|
6993d2af58 | |
|
f8a87de356 | |
|
7bfd17d1f7 | |
|
183b265ba9 | |
|
7f1ad2b049 | |
|
9306c6de4f | |
|
35fce7e656 | |
|
72ff345744 | |
|
1996cce12f | |
|
de57f6b132 | |
|
c45d9f4f09 | |
|
d4ed3d3a92 | |
|
84a2b8ca82 | |
|
41f9fb4a9a | |
|
7f0f69ae6f | |
|
e72acd21f3 | |
|
a960ff43a7 | |
|
bd4ffa35bf | |
|
2bfa6c8373 | |
|
622bb221ab | |
|
f2eb4d4c11 | |
|
2c32244617 | |
|
61e6aa2a5a | |
|
7837a11254 | |
|
59deb90428 | |
|
83bc9d9de4 | |
|
afc8abe090 | |
|
26e13bb7d0 | |
|
d0e5e5d748 | |
|
5f614e0d6d | |
|
c82c591c71 | |
|
7c2e418e87 | |
|
1f4663e68f | |
|
c2bdb0766f | |
|
233399dcb3 | |
|
ca91beddf3 | |
|
cb328f13a3 | |
|
9d84ce3a0d | |
|
071295c521 | |
|
ccf56fdebf | |
|
8cecd276b0 | |
|
8e0ffe8f49 | |
|
3f88449718 |
|
@ -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 🛠️
|
||||||
|
|
172
app/build.gradle
172
app/build.gradle
|
@ -1,172 +0,0 @@
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply plugin: 'kotlin-kapt'
|
|
||||||
apply plugin: 'com.google.gms.google-services'
|
|
||||||
apply plugin: 'com.google.firebase.crashlytics'
|
|
||||||
apply plugin: 'com.google.devtools.ksp'
|
|
||||||
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "es.verdnatura"
|
|
||||||
compileSdk 34
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "es.verdnatura"
|
|
||||||
minSdkVersion 26
|
|
||||||
targetSdkVersion 33 // se deja con target si no Play Protect la bloquea
|
|
||||||
versionCode 351
|
|
||||||
versionName = "24.40"
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
/*debuggable false
|
|
||||||
shrinkResources true
|
|
||||||
minifyEnabled true*/
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
||||||
}
|
|
||||||
|
|
||||||
//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 ->
|
|
||||||
def flavorName = variant.productFlavors[0].name
|
|
||||||
def apkName
|
|
||||||
|
|
||||||
if (flavorName == "beta") {
|
|
||||||
apkName = "vn-pickingBeta.apk"
|
|
||||||
} else if (flavorName == "general") {
|
|
||||||
apkName = "vn-picking.apk"
|
|
||||||
} else {
|
|
||||||
apkName = "vn-picking.apk"
|
|
||||||
}
|
|
||||||
|
|
||||||
output.outputFileName = apkName
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
flavorDimensions += "version"
|
|
||||||
productFlavors {
|
|
||||||
create("beta") {
|
|
||||||
applicationIdSuffix = ".sfusion"
|
|
||||||
}
|
|
||||||
create("general") {
|
|
||||||
//versionNameSuffix = "General"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
buildFeatures {
|
|
||||||
viewBinding = true
|
|
||||||
|
|
||||||
}
|
|
||||||
/*kotlinOptions {
|
|
||||||
jvmTarget = "1.8"
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
kotlin {
|
|
||||||
jvmToolchain(8)
|
|
||||||
}
|
|
||||||
composeOptions {
|
|
||||||
kotlinCompilerExtensionVersion = "1.4.3"
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
dataBinding {
|
|
||||||
enabled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_17
|
|
||||||
targetCompatibility JavaVersion.VERSION_17
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
implementation 'com.google.firebase:firebase-crashlytics-ktx:19.0.3'
|
|
||||||
implementation 'com.google.firebase:firebase-analytics-ktx:22.0.2'
|
|
||||||
implementation 'com.google.android.gms:play-services-location:21.3.0'
|
|
||||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.7.7'
|
|
||||||
implementation 'androidx.navigation:navigation-ui-ktx:2.7.7'
|
|
||||||
implementation 'androidx.core:core-ktx:1.13.1'
|
|
||||||
kapt "androidx.room:room-compiler:2.6.1"
|
|
||||||
implementation 'androidx.room:room-ktx:2.6.1'
|
|
||||||
debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar'])
|
|
||||||
releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar'])
|
|
||||||
|
|
||||||
//canvas
|
|
||||||
implementation 'com.simplify:ink:1.0.0'
|
|
||||||
|
|
||||||
// Kotlin and Android
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
|
||||||
implementation 'androidx.core:core-ktx:1.13.1'
|
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
|
||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
|
||||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
|
||||||
|
|
||||||
//tests
|
|
||||||
testImplementation 'junit:junit:4.13.2'
|
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
|
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
|
|
||||||
implementation 'com.google.android.material:material:1.12.0'
|
|
||||||
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
|
|
||||||
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
|
|
||||||
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
|
|
||||||
implementation "com.airbnb.android:lottie:$lottieVersion"
|
|
||||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
|
||||||
|
|
||||||
//Fragments
|
|
||||||
implementation("androidx.fragment:fragment-ktx:1.8.2")
|
|
||||||
|
|
||||||
// Architecture components
|
|
||||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4"
|
|
||||||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.8.4"
|
|
||||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
|
||||||
|
|
||||||
//Koin new resolve
|
|
||||||
implementation "io.insert-koin:koin-core:$koin"
|
|
||||||
implementation "io.insert-koin:koin-android:$koin"
|
|
||||||
implementation "io.insert-koin:koin-androidx-scope:$koin"
|
|
||||||
implementation "io.insert-koin:koin-androidx-viewmodel:$koin"
|
|
||||||
|
|
||||||
// Image libraries
|
|
||||||
implementation "io.coil-kt:coil:$coil"
|
|
||||||
implementation "com.github.bumptech.glide:glide:$glide"
|
|
||||||
implementation "com.github.bumptech.glide:okhttp3-integration:$glide"
|
|
||||||
//kapt "com.github.bumptech.glide:compiler:$glide"
|
|
||||||
ksp("com.github.bumptech.glide:ksp:$glide")
|
|
||||||
|
|
||||||
// Add the Firebase Crashlytics SDK.
|
|
||||||
implementation 'com.google.firebase:firebase-analytics:22.0.2'
|
|
||||||
|
|
||||||
//search
|
|
||||||
implementation 'com.github.mirrajabi:search-dialog:1.1'
|
|
||||||
|
|
||||||
//logs
|
|
||||||
implementation 'com.jakewharton.timber:timber:4.7.1'
|
|
||||||
|
|
||||||
//pickerImage
|
|
||||||
implementation 'com.github.esafirm:android-image-picker:3.0.0-beta5'
|
|
||||||
|
|
||||||
//preferences
|
|
||||||
implementation("androidx.datastore:datastore-preferences:1.1.1")
|
|
||||||
implementation 'androidx.datastore:datastore-core:1.1.1'
|
|
||||||
|
|
||||||
//qr
|
|
||||||
implementation('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false }
|
|
||||||
implementation 'com.google.zxing:core:3.3.0'
|
|
||||||
|
|
||||||
// Compose
|
|
||||||
/* implementation(platform("androidx.compose:compose-bom:2024.02.01"))
|
|
||||||
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")*/
|
|
||||||
}
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
@ -102,7 +114,7 @@ interface RoutesDao {
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
suspend fun insertLoaded(routeLoaded: RouteLoaded)
|
suspend fun insertLoaded(routeLoaded: RouteLoaded)
|
||||||
|
|
||||||
@Query("DELETE FROM routes WHERE created != :today")
|
@Query("DELETE FROM routes WHERE dated != :today")
|
||||||
suspend fun deleteLoaded(today: String)
|
suspend fun deleteLoaded(today: String)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -97,3 +97,25 @@ data class ExpeditionPrintOut(
|
||||||
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,21 +140,62 @@ class ShelvingLogFragment(
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
loadResponseCode.observe(viewLifecycleOwner) { event ->
|
||||||
|
event.getContentIfNotHandled().notNull {
|
||||||
|
setToolBar(getString(R.string.item) + itemScan)
|
||||||
|
if (it == -1) showMessage() else {
|
||||||
|
isitemFkScanned = true
|
||||||
|
openWebViewer(it, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
isitemFkScanned = false
|
||||||
|
super.onPause()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showMessage() {
|
||||||
|
customDialog.setTitle(getString(R.string.noResults))
|
||||||
|
.setDescription(getString(R.string.noDataLabelScanned))
|
||||||
|
.setOkButton(getString(R.string.close)) {
|
||||||
|
customDialog.dismiss()
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
|
|
||||||
private fun openWebViewer(param: Int, web: String) {
|
private fun openWebViewer(param: Int, web: String) {
|
||||||
|
|
||||||
|
//variableWeb = if (itemScan is Number) "var-itemFk=$param" else "var-shelvingCode=$param"
|
||||||
ma.onPasillerosItemClickListener(
|
ma.onPasillerosItemClickListener(
|
||||||
PasillerosItemVO(
|
PasillerosItemVO(
|
||||||
title = R.string.titleWebViewer,
|
title = R.string.titleWebViewer,
|
||||||
),
|
),
|
||||||
|
|
||||||
entryPoint = Gson().toJson(
|
entryPoint = if (logType == LogType.ITEMSHELVING) {
|
||||||
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,
|
||||||
|
@ -116,3 +116,11 @@ class LoginDevice(
|
||||||
data class NameWorker(
|
data class NameWorker(
|
||||||
val firstName: String, val lastName: String
|
val firstName: String, val lastName: String
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class MultimediaTokenResponse(
|
||||||
|
val multimediaToken: MultimediaToken
|
||||||
|
)
|
||||||
|
|
||||||
|
data class MultimediaToken(
|
||||||
|
val id: String,
|
||||||
|
)
|
|
@ -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(
|
||||||
|
@ -72,3 +88,40 @@ data class ItemBuy(
|
||||||
val packing: Int,
|
val packing: Int,
|
||||||
val packagingFk: String?
|
val packagingFk: String?
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class ShelvingItem(
|
||||||
|
val id: Int,
|
||||||
|
val code: String,
|
||||||
|
val priority: Int,
|
||||||
|
val parkingFk: Int? = null,//para findOne directo a Shelving
|
||||||
|
val parking: Parking?,
|
||||||
|
val itemShelving: MutableList<ItemShelving>?
|
||||||
|
)
|
||||||
|
|
||||||
|
data class Parking(
|
||||||
|
val id: Int,
|
||||||
|
val code: String
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ItemShelving(
|
||||||
|
val id: Int,
|
||||||
|
val shelvingFk: Int,
|
||||||
|
val itemFk: Int,
|
||||||
|
val grouping: Int?,
|
||||||
|
var isChecked: Int?,
|
||||||
|
val packing: Int,
|
||||||
|
var visible: Int,
|
||||||
|
var available: Int?,
|
||||||
|
val buyFk: Long?,
|
||||||
|
val item: Item,
|
||||||
|
var description: String? = null,
|
||||||
|
var stickers: Int? = null,
|
||||||
|
var url: String? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
data class Item(
|
||||||
|
val id: Long,
|
||||||
|
val name: String?,
|
||||||
|
val size: Int?,
|
||||||
|
val longName: String?
|
||||||
|
)
|
||||||
|
|
|
@ -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(
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue